Skip to content

Latest commit

 

History

History
3507 lines (2794 loc) · 283 KB

CHANGES.md

File metadata and controls

3507 lines (2794 loc) · 283 KB

Rebol 3 (Oldes' branch) Changes

This is just generated output from commits in this repository. For full log use GitHub commits.

2023 March

Fixes:

  • 73a481 TCP connection not working on Haiku OS

2023 February

Features:

  • 8a44ea Implemented passing a struct value to an extension

Changes:

  • 9c9fef Updated mbedTLS code to version 3.3.0
  • 9a327d Simplified use of TO_ defines and included Linux armv6 targets (and using armv7 instead of arm32 now)
  • 6e7fa5 Including system/build/os-version information (if known)
  • 1dbefc Using system/platform instead of system/build/os to get an extension url
  • 0d5d91 Better information in system/build/os about build on Linux
  • 759609 Modified version info
  • 937c97 Included system/build/libc info on systems where available
  • 555f89 Display directories before files in the list-dir output
  • f5016c JSON codec code cleanup
  • 3faac7 Including download link to Rebol/MathPresso extension
  • 5f4f43 Replaced crash report url

Fixes:

  • f5f6ae Make sure that os-info is always loadable
  • 4070cf Missing define from the previous change
  • b99a78 32bit builds crashes when struct is being recycled
  • de73f7 Crash when resolving file name containing a colon char on Posix systems
  • 1bc5cd Avoid overwriting sys
  • 417992 Make delta-time a little bit more precise
  • 29ada6 Regression related to the recent series changes

2023 January

Features:

  • 5b6e84 Including API_EXPORT define for the external extension use
  • 43c02f Handle's context accessible from an external extension
  • e6c778 New script which amalgamate Rebol extension related include files into a single one

Changes:

  • 4ef198 Enhanced number of possible series flags from 8 to 32 (could be lowered in the future and use some of these bits for something else)
  • a27822 Including download link to Rebol/Easing extension and updated Rebol/SQLite
  • e34c37 Updated ZLIB code to version 1.2.13
  • 71e7aa Not using _To_Upper_Case and _To_Lower_Case functions in debug buids
  • 053f84 Necessary changes related to having import's module argument not evaluated
  • bd09ce Using lit-word as a module argument of the import function, so one can just use import module-name (no need to use lit-word for the module's name)
  • 79c3e6 Associate p7s file suffix with the DER codec
  • 7680e4 Allow plain words as a log id argument

Fixes:

  • 4bac74 Removed unnecessary casting
  • ee9b2a Using read with a wildcard path without any result was throwing an error on macOS instead of an empty block
  • 8f9e3b Regression in crush compression
  • db3818 Invalid data in loaded images with an alpha channel on macOS
  • ff5e13 Safely handle a case when path to the exe is not resolved
  • 0cdee8 Regression in importing an unnamed module
  • 3725ef It was possible to modify a hidden value using extend
  • 78f683 Regression in debase 36
  • eae5e6 The info struct member is now called sizes
  • 6fb6e0 Disallowed loop variable context access
  • 8503e0 Clang warning: function declared 'noreturn' should not return
  • 7af6eb Crash when using foreach with a set-word and values not in a block
  • 87e010 Not using REB_NORETURN define inside a struct
  • 13e361 Mark OS_Exit and OS_Crash functions as noreturn
  • 0a0757 Warning: unreferenced local variable
  • f7a9e9 Warning: 'puts' undefined; assuming extern returning
  • a14b4b Allow bincode/init size value to be zero
  • dc9401 Warning: 'puts' undefined; assuming extern returning
  • 149789 Many unsigned/signed variable conflict warnings
  • 1742fa Warning: differs in levels of indirection
  • 6e8f18 Warning: unreferenced local variable
  • e28909 Not including winerror.h as it redefines IS_ERROR
  • 52cf02 Warning: unreferenced local variable
  • e86310 Msvc warning: conversion to a greater size
  • 6d914c Possible use of uninitialized variable
  • cacaf5 Avoid redefinition of typedef warnings when using amalgamated extension includes with -std=c99 compilation flag
  • e7273e Have reb-args.h included also in external Rebol extensions
  • 4ebb17 Make sure that there is REBARGS define as a part of extension include
  • b5179c RL defined in host-lib.c file, in all embedded extensions it must be used as extern
  • 47b542 RL defined in host-lib.c file, in all embedded extensions it must be used as extern
  • 16a4ea Silent compiler's warnings
  • 6d7fa4 Warning: incompatible pointer types passing
  • a12dd9 Warning C4018: signed/unsigned mismatch
  • 982a42 Warning: incompatible pointer types passing
  • 41a828 Don't redefine MIN/MAX
  • 5eb72e Silent dereferencing NULL pointer warnings
  • 287398 Clang warning: implicit conversion from 'long long' to 'double' changes value from 9223372036854775807 to 9223372036854775808
  • e347ad Using extern link to RL_LIB in the test extension (GCC was failing without it)
  • c337fe Warning C4003 (not enough arguments for function-like macro invocation)
  • b95505 Warning C6308 (possible memory leak)
  • 361b4d Silent "The prior call to 'wcsncpy' might not zero-terminate string" warnings
  • 3f3bea find/any failing in some cases

2022 December

Features:

  • 5337c8 New swap-endian native function for swapping binary byte order
  • 1b758a Register .docx file suffix with ZIP codec
  • 9c128d Added possibility to keep a track of a Rebol series in a handle's context (guarding this series from GC as long as the handle is referenced)
  • 36828a Fine tune memory pool sizes
  • 783309 New truncate native for shortening a series
  • c51876 Using built in WebSocket handshake function in the test server
  • bae6cf Minimalistic WebSocket support in the httpd scheme

Changes:

  • f94ebb Bitwise operation on binary: the shorter argument is used repeatedly

Fixes:

  • 76cb96 Visual Studio compiler not knowing uint*_t types
  • de9a63 Warning: incompatible pointer types initializing
  • e8a0f7 Warning: format specifies type
  • bda36a Warning: incompatible pointer types assigning
  • be4656 Warning: non-void function does not return a value
  • 05f7f9 Warning: incompatible integer to pointer conversion
  • aeeb6a Pair's area was not correctly computed for decimal values
  • 93b62c Warning: incompatible-pointer-types-discards-qualifiers
  • a1f8e8 Warning: for loop has empty body
  • 235ade Warning: expression result unused (in unused asserts)
  • dba08b Regression: failed boot of BASE build versions. Added tests to the Github workflow.
  • 4d3dd3 Creating a directory with a name containing Unicode chars on Posix platforms
  • 931ddf Missing include when used SHOW_SIZEOFS define
  • fb8a03 httpd scheme: correct timeout; updated header
  • 269032 Unnecessary series initialization
  • 31e72e Block-like series must be terminated with the END value

2022 October

Features:

Fixes:

  • 34df08 find/any returning incorrect result
  • 9a63e8 Not available image size when passed in to an extension (regression)

2022 September

Features:

  • bcaa10 Implemented set operations on map!
  • 603035 Optional LZW compression method
  • f8f551 Enable loading exact frame from an image on macOS
  • 381337 Cleaned system/catalog/datatypes initialization
  • dc48b3 Small code optimization (removing unnecessary SERIES_FULL check)
  • 469ba7 New Bincode dialect CROP command for shrinking buffers from the left side at the read buffer index position

Changes:

  • 2b5318 Don't allow binary input for set operations (does not work anyway)
  • 421b2f Updated ZLIB code to version 1.2.12
  • 972dcc Not setting datatypes value in the library context
  • 587c22 Shorter SMTP title and added one more log message
  • 646cb4 Using same error type for to-issue "a a" and to-issue "a^Aa"

Fixes:

  • 07e09a union/skip not working correctly in some cases
  • 00f44f Codecs/zip/verbose ignored by encode
  • 2f601f TAKE/part of offset gob! returning contents from head of gob!
  • 22b822 Lost index information when passing image value between core and extension
  • d915c0 Better port validation when dealing with native port actors
  • 664904 Loading unnamed modules was causing failing test
  • aacacc Incorrectly dealing with vector item's width
  • 22f793 Reverted leaked unwanted modification in the previous commit
  • 115099 Fixed regression with break in a reduce block

2022 August

Features:

  • b96911 Added switch/case option to make it use case-sensitive comparisons
  • 24faca Implemented reverse on a vector! value
  • 8951d9 Using Knuth's multiplicative hash for color tuples
  • 5e9b14 Implemented transcode/line for getting information about number of lines scanned
  • fe4495 Implemented transcode/one for translating just one value
  • 2e55f6 Allow string input to transcode

Changes:

  • fd8188 transcode used without any refinement returns only scanned data
  • e9990a Better construction syntax for typesets
  • ed5e1e Better construction syntax for datatypes (compatible with Red language)

Fixes:

  • 687167 Correcting datatype value detection logic
  • 8fb93e Required find/only when searching for a datatype value
  • 7c8549 reduce/only emits #[unset] for undefined word instead of an error
  • 67dfe1 Enable ripemd160 checksum
  • f229de transcode/error of an invalid serialized constructor triggers the error it should insert
  • 97496e Error throwing an error on empty input must be only when used /next or /one refinements
  • 9ea5fc Line numbering for error messages doesn't account for header
  • 047f03 Throwing an error when used transcode/next or transcode/one with an empty input
  • 769b5e Update transcode input position only when needed

2022 July

Features:

  • 1c0004 Using compose instead of slower join

  • 843fcc Implemented collect into and collect after parse's command

  • fe5df3 Allow lowering assertions level using ALEVEL define

  • 9d919b Implemented collect set parse's command

  • 4c14cd Initial implementation of parse's collect and keep commands.

  • 1a46e3 Cherry picked Ladislav Mecir's modifications

  • e2c232 daytime scheme: initial version of the Daytime Protocol (RFC-867)

  • 01ee80 Using mime-types module in httpd scheme for more complete list of mime types

  • 099275 Implemented query/mode on network ports

  • d7e55e New flush action for flushing console output stream buffers

  • 2005a7 Implemented read/all and write/all on url!, which returns also status code and headers and not just content. It also don't throws an error!

  • 74f3df Implemented read/seek on url!

  • a92ab7 pop3 scheme: initial version of the Post Office Protocol (v3)

  • 5dab0c Including first version of higher level mail scheme for sending emails So far it is possible to use Rebol2 like send function:

    import 'mail
    
    ; sending just a plain message:
    send [email protected] "Hello^/ this is just simple message"
    
    ; sending single file:
    send [email protected] %path/to/file
    
    ; sending more files:
    send [email protected] [%path/to/file1 %path/to/file2]
    
    ; sending more complete message:
    send friends [
        subject: "Invitation"
        message: "Hi friends, check the invitation!"
        attach:  %path/to/invitation
    ]

    It is also possible to use the scheme directly, like:

    write mail:// [
        From:   ["Oldes" [email protected]]
        To:     ["Bob" [email protected] "Eva" [email protected]]
        subject: "Invitation"
        message: "Hi friends, check the invitation!"
        attach:  %path/to/invitation
    ]
    

    In all cases above is expected, that system/user is configured and that there is available smtp specification (host/user/password) under system/users/data!

    This is still just the initial version. So far it works only in sync mode, but the idea is, to be able use it in async mode as well (for example from a server instance).

  • d906bf smtp scheme: recipient's address validation and possibility to have more than one; Better error handling.

  • b6108e Allow email! as system user's name

  • ab0c6a Using safe scheme to handle persistent encrypted system user's data

  • c0ff57 Included safe scheme as a persistent encrypted key/value data storage

  • 7329f5 Using put action in the extend mezzanine (no need of reduce call)

  • a04226 Implemented put action on object! (extending)

  • 8e00cc Allow definition of one function to multiple actions in scheme's actor dialect

  • fcdf59 Allow put action on port!

  • f20211 Included safe codec (for a simple data storage in encrypted files)

  • d84882 Allow making a scheme without specifying its title

  • 68cb9d Implemented indexz?, at and atz actions on file port

  • f0ecd1 Handle negative part values when reading from a file port

  • 3822b5 Less strict to-date conversion

  • 00008a Including mime-field codec

  • 592c36 Including system/catalog/bitsets/space bitset (TAB+SP)

  • cbc7b8 reduce paren! evaluate and generate paren!

  • b5fc6f Implemented case and no-case PARSE keywords

  • 6b47c2 Implemented odd? and even? on pair!

  • e4459c Replaced mezzanine with with a lightweight and faster native version

Changes:

  • c214c2 Including comma, dot and dbl-quote char constants
  • f84268 Using shorter url for links to Rebol module's sources
  • 46bc61 enbase using line breaks by default; new enbase/flat for old behavior.
  • 7644be Always using construction syntax when molding bitsets
  • 98ead9 Removed limit on kye value types in put action
  • b4787d system object reordered + included user
  • 901728 sys/make-scheme returns the created scheme's spec instead of system/schemes
  • 1a9db6 Removed /all refine from parse
  • 0ee3b5 Removed series-splitting functionality from parse
  • b7d6db Decoration removed by form and to-string from (lit/set/get)-words and (lit/set/get)-paths
  • 4dff72 do word! behavior made compatible with Rebol2 and Red
  • 2d91e5 do path! behavior made compatible with Rebol2 and Red

Fixes:

  • 6eff98 Crash in nested collect with an expression
  • 0ae1ba Missing new collect related errors
  • 29e86d fail parse's command must close collect if used
  • 8d3e13 Improved output of the ?? parse command (limited and flattened)
  • 8549ca Parse's reject working incorrectly
  • c1ce59 Resolved issue when used POP3 scheme without console output
  • 5f2b6a Including network mode words
  • da4f11 Improved UDP scheme server/client test scripts
  • b4d35e Output buffer tail extension must be done only for UDP
  • c5e159 Missing messages in UDP server
  • 40632b Moving the new RDC_FLUSH device command to the tail (so it does not breaks unsupported devices)
  • 90b975 Invalid data with the partial http response regression
  • 1171af There is no in_addr_t defined on Windows
  • fa9920 Resolved warnings
  • e6527b Writing data to smtp scheme must use chunks not higher than 16KiB (TLS limitation)
  • d044c2 Better doc-string for enbase/flat
  • 043512 Used external IP in the SMTP's EHLO message, when domain name is not available
  • ec9959 Make sure, that values from safe scheme are always copied, if possible
  • 0bf389 Protect system/user value
  • 17b485 Using split-lines native (until split will not be native as well)
  • 5de5f2 Regression in reword with none as an escape value
  • 0bad6f Equality of extended objects
  • 5bd5af Simplified code using the new no-case parse's keyword
  • 9a592d Removed now unused parse/all refine
  • 37b539 Use of escape char ^ must not be allowed in unquoted file notation
  • eef408 Removed series-splitting functionality from parse
  • 30569d Don't allow error! and task! to be a bind's context
  • 01a1f2 Some TLS code optimizations
  • 9e7aa5 Make trace output better aligned
  • 1093ae Tinny code optimization
  • e3a200 to integer! "00" failing on MacOS
  • 446a1e Crash when decoding image from invalid data on MacOS
  • 0b50d9 Better handling odd part values when using append/part on object! and map!
  • 1ca9df Implemented append/part and append/dup
  • 4bde88 Write file fails were silently ignored; closing port on read errors before throwing
  • 3c43f4 Error writing files of exact size 0xffffffff on Windows
  • d61afe Code cleanup
  • 8c92c8 Resolved implicit conversion warning

2022 June

Features:

  • 32dd19 New combine function as alternative to rejoin
  • 9ea810 Allow try to accept code as a paren!
  • 435e29 debase and enbase having /part handling compatible with copy/part
  • 3fd5b6 Automatically handle unicode non-binary dehex input
  • c6bbba quoted-printable codec with special space/no-space options
  • b24107 enhex/uri and dehex/uri for a special short variant of space encoding
  • 394370 Added date/time formatting
  • 53e3db Including quoted-printable codec
  • 4b7d14 Updated link to Rebol/Blend2D extension version 0.0.18.1
  • 05a616 Including link to Rebol/Triangulate extension
  • 53108a Including links to sources of optional modules
  • 33d32b Automatic download of the well known extension modules
  • 4a0d81 Counting an hourly money rate using division of time! with money!
  • 821962 Allow multiplication between time! and money! values

Changes:

  • 1a80f5 quoted-printable codec is delayed (required import 'quoted-printable before use)

Fixes:

  • 6ac01e Not using flattened source code
  • 6005b1 construct multiline unfolding missing space
  • 66bf62 enhex/uri and dehex/uri with an unicode input
  • 24bb10 Handle PLAIN SMTP authentication response
  • dc02d7 Correctly handle failed extension downloads
  • 8e0606 Using query on URL sometimes reports date: none
  • 19f638 Loaded/saved image data have reversed RGB colour order on macOS

2022 May

Features:

  • a63913 SMTP protocol scheme updated to work with the recent TLS changes
  • d70bab Fine-tunning what crypto features are included in base/core/bulk builds
  • 125fce Using only cipher modes, which are really supported in the TLS protocol
  • 8e3985 Converted original CSV-tools script to proper CSV/TSV codecs
  • 4d0841 Including Brian Hawley's CSV handling tools script downloaded from www.rebol.org
  • c8befe Added support for SHA384 cipher modes in the TLS protocol
  • c17863 Added support for GCM ciphers in the TLS protocol
  • f1a82b Added support for authentication in GCM (Galois/Counter mode) cipher mode
  • f6f7c6 Updated CCM (Counter with CBC-MAC) cipher mode
  • b08704 Added support for CCM (Counter with CBC-MAC) cipher mode
  • 7cb433 Added support to upgrade plain SMTP connection with a TLS layer (STARTTLS)
  • 5ae9b0 Tiny code optimization in the HTTP scheme
  • e89f4b Added possibility to start TLS connection reusing existing TCP port

Changes:

  • bef541 Deprecated chacha20, chacha20poly1305 and poly1305 natives are now completely removed

Fixes:

  • dd3f3e Host is not using os provided crypt device
  • 3f38fc Unreferenced local variable warning
  • 22794e Assignment from incompatible pointer type warning
  • dd9300 Incompatible pointer types warning
  • 9589ec Always false result warning
  • 5eedc5 Incompatible integer to pointer conversion warning
  • 13c4d3 Removed unused config include
  • 79ccb3 Incompatible pointer types warning
  • b527b1 import/check with an invalid checksum was failing with a wrong error (Oldes/Rebol-issues#1686)
  • 2660ab Updated ppk codec using the new crypt port
  • dd3651 Cleanup and better resolving code-page charset encoding
  • 5a29c1 Wrong length of the IV in the GCM cipher mode initialization
  • e4d80c Implicit declaration of function and incompatible pointer types
  • 9f3bdc CHACHA20-POLY1305 decryption in the TLS protocol was not correctly checking the mac
  • 6efd1d Missing CCM crypt mode source file
  • 6c8d19 ECDHE_ECDSA verification (ec public key may start with a zero byte)
  • 200a42 Trying to get a console width under CI on Windows trows an error
  • 0ca83b Using init-vector instead of just iv in crypt port specification; take on crypt port is now like read update; updated crypt port initialization to be compatible with the changes of decode-url function.
  • 975eb9 Comparing blocks with a 1.#NaN value
  • b75188 1.#NaN sorting inconsistency

2022 April

Features:

  • 8aa3f5 enbase/debase with base 36 (alphanumeric)
  • 0df0d4 Some useful responses from the test httpd server
  • 266b20 Allow conversion to word! from any string datatype (if don't have invalid chars)
  • 81699e Initial rewrite of the old smtp protocol
  • c4547d Included codec for Apple's Provision Profile files
  • 31dae9 Added optional codec (decoder) for plist files
  • 7447dc Added uid attribute as a known OID

Changes:

  • 98fd68 Improved fingerprint checksum counter in the crt codec

Fixes:

  • a4f4fc Wrong return value
  • 093c89 Reset unused parts of the http uri during redirection and some tiny optimizations
  • e2ef1a Updated http request construction to work with changes in decode-url
  • 3dd0df Regression related to the new output from decode-url function
  • 48a3fc Optimized url/file escape table initialization
  • 92c65f Special char escaping when molding a file (so it is backwards loadable)
  • 7bf61f Rewritten decode-url function, mold properly escaping urls
  • 9dc15a Regression in the httpd scheme
  • 347d73 split/at when the delimiter is not found
  • 4fb0ac Using shorter code variant for extending a series at its tail
  • 044c59 Using set-words in the dh parameters parse rule
  • 2ce523 Don't silently ignore leading zero byte in the der codec data

2022 February

Features:

  • 080cd3 Support for direct DH params initialization from .key files
  • f0d33e form-oid function for conversion of OID binary value into its numeric string format
  • 5868c1 Added (limited) support for a TLS server role
  • ace3ec Providing better info on port! values from help
  • 8c051b Added support to load X.509 encoded private RSA keys
  • 07f79c Allow read/lines on urls (HTTP scheme)
  • ab481c New split-lines native
  • 5ec4bb Allow char as an argument for writing to a file port
  • e22657 Added certificate's fingerprint calculation
  • 61609d tls scheme - using the new cryptography code
  • 9ea657 Simple crypt port test/example file
  • 7d0849 Added support for GCM (Galois/Counter Mode) cipher mode
  • d4614b Add /part refinement to remold function

Changes:

  • 070c6b Added new release native as an universal way how to release internal resources available thru handles. Removed all non universal ways of releasing crypt keys!
  • 3cdba9 Minor TLS code rearrangement
  • b2059c Removed the rest of the old legacy TLS code
  • f4ed6b Removed legacy TLS support, first steps to have a server side TLS
  • f66b9a Replaced port/spec/port-id with port/spec/port
  • c54b35 Replaced port/locals with port/extra
  • d19b88 Replaced load/type with load/as
  • 942d1a Renamed remove/part argument from length to range and allowed remove/part on bitset when the argument is string, binary, block or char
  • 2d9411 Allow to-decimal "1e"
  • 356292 Using range instead of length for the /part argument, as it may be negative.
  • 6c7fd4 Allow making error using error as a make's type

Fixes:

  • 811d22 set with any-block types
  • 18fdf2 Move elyptic curves on top (these are the most common now)
  • 60bfc8 RSA binary input values were expecting, that series are always at its head
  • e114d7 Warning: incompatible pointer types
  • c58fba Better error message when using unsupported port action
  • 6ca57f Correct width expansion when appending char in range 128-255
  • b633ce Leaked local variable
  • c6efa2 Using correct checksum method in the fingerprint calculation
  • bcb875 Minor TLS code optimization
  • 580ad3 http scheme - situation when server does not provide Content-Length and just closes connection
  • 1b6b88 Shortened doc-string
  • 756721 Large integer from string
  • acd983 Regression introduced in https://github.com/Oldes/Rebol3/commit/356292c3813fc196f4b2bad90183253c779676e4
  • 8892f7 make event! using existing event! as a make type
  • 56c14d save to string! needs mold

2022 January

Features:

  • c7e3d7 Optional definition of the message digest algorithm to sign/verify data using rsa
  • ef0280 profile function for easy code speed comparisons, like: profile [[wait 0.1][wait 0.2]]
  • ca4ddb Rewritten crypt port not to depend on mbedTLS's cipher-wrapping; included ARIA cipher and initial chacha20-poly1305 crypt's implementation (still WIP!)
  • d4bd52 Included CHACHA20 cipher with possibility to set initial block counter
  • a86c3e Added info about possible output limitation of probe
  • d9c7fb Simplified extension test definition
  • e9ed58 Updated mbedTLS code (used for checksums only so far) to version 3.1.0
  • aa70ed Added FreeBSD support

Changes:

  • e74518 Crypt port (work in progress)
  • 902eeb Report port error reasons as positive integers
  • f46f9b Replaced the old ECDH and ECDSA implementation with code from mbedTLS`
  • d6db6f Replaced the old DH implementation with code from mbedTLS
  • e12f0a Replaced the old RSA implementation with code from mbedTLS

Fixes:

  • 77aac4 Wrong context casting
  • 2077fb Static declaration of 'free_crypt_cipher_context' follows non-static declaration
  • bb08b5 Using unsigned integer
  • 799019 Improved precision of the profile function even more
  • b171da Improved precision of the profile function
  • 73c731 mbedtls/common.h file is only for private use
  • f4e8e6 Missing free call for ARIA cipher context
  • 95f974 Provide title and type for the QOI codec
  • 710e66 echo does not error on bad path
  • 5bbac3 trim on block! removing nones only from head and tail, trim/all everywhere
  • 6e0d26 trim on binary! should deal with NULL char instead of white-spaces like on string!
  • 13da59 Make sure that error message always starts on a new line
  • c41c33 'for' loop initial declarations
  • a8fbea 'for' loop initial declarations
  • 9ed043 Explicitly define all platform names (useful in the bootstrap phase)
  • c6ea2e Conflicting types
  • ecd379 Updated banner to year 2022 + including system/product info
  • 346412 Failing Base and Core builds
  • e7f2b6 Crash while using parse with non-utf-8 data from file
  • 989235 Macro redefinition
  • a84d39 Incorrect codepage id for CP819 alias IBM819 codepage name
  • 1fdda5 iconv on FreeBSD does not accept CP12000 for UTF-32LE codepage
  • 0c62ea iconv not accepting utf8 codepage on BSD systems
  • 5a8c6e Make sure that setenv is used on FreeBSD
  • a53862 Executable path not resolved correctly on OpenBSD and FreeBSD platforms
  • 734eda Occasional HTTPS read fails when server used ECDHE_ECDSA key method
  • 06425a Occasional HTTPS read fails when server used ECDHE_ECDSA key method

2021 December

Features:

  • c474d0 Updated optional qoi (Quite OK Image) codec
  • b26f9b COLLECT-WORDS /as type [datatype!] option
  • 3d83ca Errors and debug messages printed to stderr
  • 95d535 Added possibility to change console output from stdout to stderr (windows)
  • 9c4036 Added possibility to change console output from stdout to stderr (posix)
  • 53b04b New lcm native for resolving the least common multiple of two integers
  • 12794b New gcd native for resolving the greatest common divisor of two integers
  • f64cd3 Partial crush decompression
  • b7fb49 Optional custom LZ77-based compression algorithm (crush)
  • 3a3076 Bincode - added padding command PAD
  • fa46cb BinCode - added commands: F16LE, F16BE, F32LE, F32BE, F64LE and F64BE
  • 15de62 QOI codec (The "Quite OK Image" format for fast, lossless image compression)
  • cc1025 Added example how to prevent hacking attempts to the http test server
  • b4789f Added example how to server humans.txt data from the test server

Changes:

  • 061773 Have system/ports/output to be same as system/ports/input (instead of none)
  • 3139f4 Keep / at the head of the HTTP request target (httpd module)

Fixes:

2021 November

Features:

  • 5fa5b8 Updated ZIP codec
    • Access to comment and extra field of uncompressed data
    • Added support to include file comments, extras or insternal and external attributes
    • Added support to include uncompressed data (useful when making APK targeting version 30 and above)
  • b49781 Possibility to resolve context handle's type
  • 27ab5a Make context type handles comparable
  • e837a8 Allow insert on object!
  • cfe7e2 Allow select on module
  • 5ae487 Register .deb file extension fith AR codec
  • 3a5f9e Including last git commit version in the system/build/git and full version info when used -v boot argument
  • 4b321e Extended maximum number of tuple values to 12
  • 6f451f Tweaked doc-string of clear action
  • ab5ae7 Improved doc-string for at and atz actions

Changes:

  • f9fe06 Including some of modules as a delayed (required to import them before use)
  • 9458d4 Modified single-line doc string for modules in the help output
  • d4e947 Storing system/modules as an object!; added support to include delayed modules
  • 04c71d More detailed info about used compilation target; new build output names; rewritten build specification to be better prepared for a future cross-compilation possibility.

Fixes:

  • 5f9695 Enhanced precision in comparison of time with integer
  • b1a65b Using call/shell in the launch function
  • a14d3a Use user context filtering only for pattern matches and with strict-equal?
  • 74d0c3 There must be get-word! used in case that value is a function
  • e26d3d Include user context values in the help output
  • 067fee Length-specified script embedding
  • ef13db Improved resolving console width for help output trunctation
  • 43886c Improved resolving console width for help output trunctation
  • 7a4a44 Improved resolving console width for help output trunctation
  • a96c89 Improved resolving console width for help output trunctation
  • cd1afe Improved resolving console width for help output trunctation
  • e3520a Opening a library (extension import) requires absolute path
  • 2b7b6c Use default terminal width 80 chars when not resolved from system (CI)

2021 October

Features:

  • 60cc1f Simplified resolving of the path to the executable (as it is now resolved in C using OS_Get_Boot_Path)
  • 180dc3 Linux version of OS_Get_Boot_Path function
  • 39693b MacOS version of OS_Get_Boot_Path function
  • 11b46d Windows version of OS_Get_Boot_Path function
  • d99656 Win32 variant of to-real-file native
  • 31e7c2 New to-real-file native (posix version) for resolving canonicalized filenames (removing .. and . path components, simplification of sequences of multiple slashes, removal of trailing slashes, and the resolution of symbolic links).
  • e108cf Optionally truncate output of probe function
  • 2ee6c0 Improved ar codec to be able decode also System V (or GNU) variant files
  • aaa70e Minimalistic Unix Archive File (AR) decoder
  • fb0daa New ATz action returning the seriest at 0-based position (index)
  • 101284 New indexz? action returning 0-based position (index) of the series
  • 7d3a04 PICKZ and POKEZ functions for 0-based indexing
  • 877514 Don't allow clear on not opened port, allow size? on port

Changes:

  • 5d1a4c New wording for repend/only function doc string
  • 2cd3c8 Rewritten compress and decompress so it's now compatible with the recent Red language. Now it also correctly handles output buffer expansion. It does not store the uncompress length at the tail of compressed data anymore!
  • fb0daa at action on image with pair position was 0-based, now is 1-based
  • c8a593 Replaced internal boot-print and loud-print functions with system log calls
  • 117e16 Limit output of help to single line if used with some value types
  • c5c3b4 Made colors in console's prompt and result optional
  • e4b1a8 Fine-tune decimal non-strict comparison (to cover also percent datatype)

Fixes:

  • 502382 Generated RL defines were not counting with possibility of variadic arguments (like in RL_PRINT)
  • cd463f Make sure that TO_OSX define is used even for 64bit builds
  • 5fcb00 Using the new compress in build scripts
  • 720514 Wrong member name when RAW_MAIN_ARGS define is used
  • 180264 Don't treat zero value in mold/part as unlimited output
  • aaed74 Removed debug trace
  • 811bb3 Missing log traces in boot sequence
  • 14a003 Resolve correct canonized absolute path to main process executable
  • 4c6e88 Non-void function does not return a value
  • 226461 Convert TAB in the terminal input to 4 spaces (posix)
  • 2ac8c1 Update file info after clearing file-port (posix)
  • f1395c Update index after write into a file-port
  • c6276d Making sure that image codecs extensions are included after image codecs
  • 22de60 WRITE on file-port does not update file size (posix fix)
  • 4127a7 Non-void function does not return a value

2021 September

Features:

  • dedf26 Allow making op! from action!
  • d797a9 Support to date! integer! and to integer! date! using unixtime as an integer value
  • 10a5b4 Implemented copy of nested maps
  • 14bc42 PDF encoder input validation
  • cb0521 Initial implementation of the PDF codec
  • 770a06 Make PNG filter's native functions optional
  • e0d567 PNG's pre-compression filter algorithms exposed as filter and unfilter natives
  • 2947e8 Print a human friendly list of available codecs on help codecs
  • f27939 Define codec's types
  • 53167c Optimize powerof2 memory allocation
  • e5868f Made parse's ahead being a synonym for and for better compatibility with Red
  • 19974e MacOS support for DirectDraw Surface dds encoding/decoding
  • 5bf90d codecs/dds/size? function for resolving dds image size without need of decoding
  • 64734d codecs/bmp/size? function for resolving bmp image size without need of decoding
  • 1d3e2c codecs/gif/size? function for resolving gif image size without need of decoding

Changes:

  • 093728 Appending a word into an object sets its value to unset instead of none
  • 8bf1f2 Allow copy error!
  • 9ce9d9 Use plain text codec for .cgi files
  • 131090 Merged macOS and Windows OS codecs registrations
  • 62d8db Using Gregg Irwin's split updates

Fixes:

  • c8198a Invalid byte-size of protected vector! data
  • d40897 Handle loading 24bit WAV files + minor wav codec fixes
  • b6c9a3 Unexpected slowdown when processing deep recursive loops
  • ad2819 resolve/all bypassing protect/hide
  • 552ec9 Failed decompress when input data was not at head
  • 85de1d Corrected code for copy map!
  • 9d225e Resolved signed/unsigned mismatch warning
  • ab3288 Handle text encoded stream data
  • 5c7f72 Regression in alter function
  • 7d936d Silenced non-prototype definition warnings
  • c52c47 Silenced possibly uninitialized variables warnings
  • 244c5b Silenced non-prototype definition warnings
  • de3d53 Silenced possibly uninitialized variables warnings
  • 515149 Removed unused variables
  • 8857d4 Silenced lower precedence warning
  • f10ea4 Silenced discarding qualifiers warning
  • 431bb3 Silenced type specifier missing warning
  • b83216 Silenced macro redefined warnings
  • cfb060 Silenced incompatible pointer types passing warning
  • 218e5c Silenced discarding qualifiers warning
  • e97679 Silenced incompatible function pointer warning
  • f46546 Silenced incompatible pointer warnings
  • cf86e5 Recognize also older GIF87a version

2021 August

Features:

  • 7591f4 Allow FIND binary! char!
  • 547f35 Optimized parse when checking ref! and tag! datatypes
  • 384602 codecs/jpeg/size? function for resolving jpeg image size without need of decoding
  • b35117 MacOS basic clipboard port implementation
  • dbe8aa MacOS image codecs cleanup and added support for haif encoding/decoding
  • 894708 Using native system image codecs on macOS

Changes:

  • db5ebf FIND bitset! block! is looking for ALL of the values in the block by default
  • 807740 Make find/match not imply /tail

Fixes:

  • 458f59 Making find case-insensitive by default on BITSET when used with a CHAR
  • 9817d0 FIND string! tag! misses < and >
  • 9e0f24 Make struct! result visible in console
  • 6f9f15 Resolved some of the unused variable warnings
  • 1a3606 Some of xcode warnings
  • 9f0b07 Resolved some of possibly uninitialized variables warnings
  • 95016d Missing native jpeg codec on posix platforms

2021 July

Features:

  • 515c16 Conversion of struct! to binary!
  • 319531 Add support for word! struct fields
  • 476327 Including Atronix's source of struct! datatype implementation
  • af7772 Better deal with stack size definition while compilation
  • f1b74c Store last console result in system/state/last-result
  • 4fab4c REFLECT module! 'title could return the module header title

Changes:

  • e564c5 Using ! at the end of struct value type specification
  • 0248e8 Revisited vector construction syntax types Now accepting for example i16! and uint16! instead of previous si16! and ui16!.
  • 2cc8c7 Disable support for Rebol values in struct

Fixes:

  • 72d0d2 Don't allow code evaluation inside struct construction specification
  • d135f0 Removed debug traces
  • 49481f Allow pool size to be larger than series total length in evoke memory check
  • 6901c1 Validate missing struct initialization field value
  • 1fb779 Possible use of uninitialized variable
  • fb6624 Crash when using do on a function which returns itself
  • d1ff72 Crash when using context? on function's local word outside of its function

2021 June

Features:

  • c75649 New blur native function for fast Gaussian blur of images Based on Ivan Kuckir's Fastest Gaussian blur implementation algorithm from article: http://blog.ivank.net/fastest-gaussian-blur.html

    Usage example:

    image: load %some-image.jpg
    blur image 15                 ;@@ image is modified!
    save %blured-image.png image
    
    
  • 77426b Munge code updated using the new built-in ZIP encoder

  • 52b269 Added ZIP encoder

  • 13d7c9 Munge (quickly modified to be runnable from Oldes' R3 derivative)

Changes:

  • 9c5892 RL_Register_Handle from extension returns word's symbol id
  • 99a5c2 Swapped crc and data values in ZIP decoder's result

Fixes:

  • 99b5db Pass handle flags from external (extension) argument to the internal (host) value
  • cf1a20 Crash when using special handle's object (HOB)
  • a03a3b Munge - a little bit more optimizations
  • 7d8c10 Munge - make working loading excel sheet even in case when there is no info about number of columns
  • da902d Munge - sheets? function was not working
  • 73b7f3 Munge - replaced ZIP unarchive code with R3's ZIP codec

2021 May

Features:

  • a2bcfe Allow conversion from object! to map!
  • 933514 Reimplemented mod and modulo in C, // is now op! for modulo and % is now op! for remainder
  • 72a7b9 Allow making op! from function!
  • c9aa62 Allow slash words
  • 30b179 Added simple test extension + handling RXR_BAD_ARGS value from extension command call

Changes:

  • 6dad57 Don't protect system/dialects as it's not used anyway
  • bc48fe Allow direct comparison of time! with number! types
  • c31151 Rename MAXIMUM-OF and MINIMUM-OF to FIND-MAX and FIND-MIN
  • c72b15 Better sorting of specific runtime extension module values

Fixes:

  • e868db Not truncating random time to seconds only
  • 512505 Import of native extension (library) on Windows

2021 April

Fixes:

  • 69cd34 In cloud builds it's not possible to resolve console width
  • 1075e8 Not changing default definition of binary-base from prebol module
  • 6384bc Typo in ico's identify function
  • a7adc4 % is not an empty path anymore
  • 4167ab Allow various variants of arrow-like words (fixed CC warning)
  • 19f86b Make sure that console's input buffer is not growing over 2GB
  • cefbc9 Allow various variants of arrow-like words
  • 4b2eda Allow comparison of char! with integer!

2021 March

Features:

  • e9b0bb debase accepting any-string! for it's value
  • 5ed41d Allow creation of path! from any value
  • 46e3a2 Extended PNG codec with chunks function
  • a5ba0f Added a simple codec for decoding/encoding ICO files
  • fd67a5 Added a simple codec for decoding/encoding ICO files
  • 3f45b9 Updated prebol (Rebol Preprocessor) to be a real module working with current Rebol
  • 22a6d0 Added possibility not to process default application arguments on boot

Changes:

  • aece05 Have % to be a valid word and not an empty file
  • 1e71aa Removed ANSI related functions from colors mezzanine file

Fixes:

  • 277ab5 Parse rule fails when input is modified and so does not advance
  • ea3aab Crash on boot on Windows7 (regression since 3.4.0)
  • 452893 Crash on boot on Windows7 (regression since 3.4.0)
  • d83cf1 HTTP redirection does not handle correctly locations with url-encoded content

2021 February

Features:

  • 552e2c Parse string! using any-string!
  • 9249a3 Exporting new library functions for registering, creation and releasing handles (so these may be also used from external native modules.
  • c990e8 Simple TCP port scanner (module)
  • b6cbac Do some minimal extension's module protection
  • 4d44e9 When $SHELL is not set on POSIX OS, /bin/sh is used as a default

Changes:

  • bbf89c DELETE returning false if called on not existing file or directory
  • 6809c8 Registered new system ID 0.4.46 as a 64bit Linux using musl compiler (musl.libc.org)
  • d352af Renamed module's local context from local-lib to lib-local
  • 500d3d Force UTF-8 console output code page on Windows
  • f09840 Using NOT_FOUND instead of 0 in handle's registration

Fixes:

  • a2b1a4 Updating PWD system environment variable after each directory change
  • 9b5723 Resolved crash in lower level (debugging) value formatter
  • 1864b6 Better results from change-dir function (on error and also on success).
  • a90ee0 Crash when re-opening listening port multiple times
  • 98d66e Using at least one image in the ICO file as a PNG encoded in RGBA32 format
  • 82f0ae Updated banners look
  • be2463 Memory leak in list-env function
  • d1e316 to word! accepting delimiters in the input string
  • a81b86 to word! accepting delimiters in the input string

2021 January

Features:

  • 102488 POSIX wildcard support in read's file argument

  • b83660 Replaced dir? mezzanine as a native! with optional /check refinement

  • 0f71dd Macro for getting c-string from a symbol

  • 65ac08 Register *.key suffix for SSH keys

  • 15eaec Allow to decode *.crt files stored in PKIX format

  • 88086a Preliminary support for system managed handles

  • 2cd73c break/return now has priority over regular return value from remove-each

  • 355df8 Support map! in remove-each

  • 1ab00e Improved dealing with automatically collected natives from C sources

  • 775155 Replacing old checksum code with implementations from the Mbed TLS library (including optionally also SHA224, MD4 and RIPE-MD-160 checksums)

  • 40ddbf Introducing user defined config file for compile options

    Using INCLUDE_* instead of USE_* definition names for optional parts

Changes:

  • 0f4d26 REMOVE-EACH returns the modified series at the argument position as in Rebol2

    Added a REMOVE-EACH/count refinement, which toggles REMOVE-EACH to returning the removal count.

  • 8f30a4 Making CHECKSUM more compatible with Red language

    • removed /method; now method is always used as second argument
    • removed /tcp; now accessible as: checksum data 'tcp
    • removed /secure; now accessible as: checksum data 'sha1 (sha1 is not considered as too secure anyway these days)
    • removed /hash; now accessible as: checksum/with value 'hash 256
    • renamed /key to /with; given spec is used as a key for HMAC and or size of hash table

    Available checksum methods are now listed in: system/catalog/checksums

    Note: checksum port does not support these methods: adler32, crc24, crc32 and tcp

Fixes:

  • 5060ce HTTPD: allow target to be a none in decode-target
  • 040c9c POSIX: query not handling correctly file names with non ASCII chars
  • 2d5a75 Not possible to read url after failed lookup on posix
  • 676405 Disposing all handles on exit (so Valgrind doesn't report errors)
  • e29986 Invalid handle's spec offset
  • 681851 Updated build scripts to be compatible with the recent CHECKSUM change
  • 516dfe reword expecting that maps cannot accept none values
  • b7118b foreach not seeing none values in map!
  • 98b806 Update MIDI device code to use the new option's configuration
  • 9723d4 Add missing library dependency for request-dir function on Windows
  • 61ab30 Avoiding compiler warnings
  • a96958 Resolved redefinition warning

2020 December

Features:

  • 379072 Unified line breaks when converting map to block
  • 33e013 Implemented request-dir on Windows
  • d5efc5 Revisited delete-dir function
  • 6fc873 wildcard function - returns block of absolute path files filtered using * and ? wildcards.
  • 7b1ec8 Allowed to make block! using pair!
  • 52a67d Allow line-comments inside binary value specification.
  • 9ca83b Extended system's log function with /error refinement
  • b42fc9 Allow none as a map! value, implement remove/key

Changes:

  • 0688a1 Have EXISTS? return the type field or none instead of true/false

  • b71d81 Allow unset none to be a no-op instead of throwing an error

  • 0c7beb Replace bind? and bound? with context?

  • b19a10 Simplify TO BLOCK! and complex construct via MAKE BLOCK!

    This is major change which may break some things (in a few places there may be need to replace to block! with make block!), but it's good to do it now.

    See the included unit tests for currently expected results!

  • d07af9 Don't allow to conversion from logic! to integer!, money! and percent!

  • 54493f Evaluating user.reb file if found in user's home directory.

    Home directory (system/options/home) can be set by using one of REBOL_HOME, USERPROFILE or HOME environmental variables (preference in this order). If none of these is defined, as home is used same directory as directory with used executable.

Fixes:

  • 87c5fe MOLD NEW-LINE? behavior indents too much in BLOCK!s
  • d2583a Temporary fix for failed read of some HTTPS sites
  • 167eac request-dir not compiled on 32bit Windows
  • 70855c Including D2D related files
  • dbcb3d Removed memory dispose pool related debug traces
  • 851e2f Make old build script compatible with recent changes
  • 68beea Extra tokens at end of #endif directive
  • 2052b2 Move wildcard from base to mezz + test
  • 761b44 Comparison of blocks where one is past tail (missing file)
  • 85e592 Comparison of blocks where one is past tail
  • cedd82 Report full failed expression when assert fails
  • c167c2 Don't allow making a module! from integer! and map!
  • 10932d Possible fix of Valgrind's Source and destination overlap in memcpy error.
  • dba14b TO PAIR! causes an error with a "long" string
  • 577b45 PARSE's INSERT used after a seek puts data at the position before the seek
  • 1752e3 Don't use ANSI color sequence in formed error

2020 November

Features:

  • 030915 Add possibility to set date's /utc and /yearday
  • c49f86 Set local-lib to refer to the local import library
  • 52ee40 Added supplement mezzanine function which appends a value into a block if not yet present
  • 2aa6c6 Allow direct conversion from tag! to word! (if it has valid chars)
  • 08bded Way to combine DATE! and TIME! without a variable
  • 77a412 Extend PNG codec with size? function (returning image size of the binary)
  • 5455ee Including as-colors module with functions, which decorates any value with bright ANSI color sequences
  • fd1790 BinCode - match binary!

Changes:

  • 6ba777 Removed mention of boot in boot-print and loud-print doc-strings (these can be use also after boot)
  • a253f5 A plain, explicit QUIT from nested scripts returning UNSET! instead of 0
  • a6a07f Updated Windows' icon file
  • 42ef0d Updated banner and license output

Fixes:

  • 04d633 Removing leaked traces in posix version
  • 112c08 RSA related memory leak in TLS protocol
  • f6e480 Typo in PNG codec extension code
  • c7ffb5 Don't allow specific lit-word! and get-word! cases
  • 173968 Reset ANSI color after secure help output
  • f7e8e8 PROTECT and UNPROTECT bitset!
  • 7c409f Conversion of bitset to binary does not count with complement bitset state
  • ced591 Open does not reset the internal file pointer of a previously closed file port
  • 145ac8 Cause an error in PARSE for invalid args to TO

2020 October

Features:

  • 159b82 Bincode - added zero-based ATz and INDEXz commands

  • 08aa99 Support for read/part (using Range request with read/part/binary)

  • c5e33f sqrt native which accepts only decimals

  • b44fca Use default key event type when doing: make event! [key: #"A"]

  • b53caf find/same and select/same

  • c563d4 Optionally write any (molded) value into clipboard (by default disabled)

  • 5f28c9 Improve import/version error message in case when module has no name

    before:

    >> import/version module [version: 1.0.0][a: 1] 2.0.0
    ** syntax error: this script needs none 2.0.0 or better to run correctly
    

    now:

    ** syntax error: this script needs version 2.0.0 or better to run correctly
    
  • 57384f Improve shortened banner

  • eabe4a Take a percentage of a time! value

Fixes:

  • bdaca6 Crash when loading specially crafted binary
  • 6121a8 SAVE with /header true
  • c1594e UNIQUE/DIFFERENCE/INTERSECT/UNION/EXCLUDE do not accept some data types
  • 85fb9b Shortening ANSI escape code used in error messages
  • 8b2669 Throw error when trying to make invalid errors
  • 0e9d14 Fix of redirection broken in recent HTTP scheme changes
  • 3b5f3b Added os version into short banner and not using commit if not present any
  • 3acbfd Not using the new map syntax because old prebuild versions does not handle it yet
  • 1355fd log-* functions should not return positive number required errors
  • 216443 square-root -1 should return 1.#NaN instead of an error
  • 6129ec find/same and select/same working with any-word!
  • 3c006a Potentially SPA-vulnerability
  • ceed8d Fix static annotation for uECC_valid_point
  • 81e9e0 Quit after using --help startup option
  • b440b3 write/lines regression
  • fcc4fa date! is not listed as a scalar! value

2020 September

Features:

  • e82b70 ? /refinement should list function refinements

Fixes:

  • 688ecc Handle use of cd .. in console properly
  • 289829 ? allows functions with nonsensical refinements, which can be misleading
  • a2b61a Limit search only to refinements!

2020 August

Features:

  • 07fbf2 Simple premultiply function which premultiplies image's RGB channel with its ALPHA

Fixes:

  • 0bb90c POKE into vector! does not throw out of range error
  • ede6fd premultiply should affect all pixels of the input image (even when input is not at head)

2020 July

Features:

  • 260f59 Implement SORT/COMPARE on any-string! values

  • aedd6b Implemented shutdown sequence to release allocated memory on exit

    That is useful with tools like Valgrind to find possible memory leaks)

  • 2854c4 Tiny code optimization

  • c4162f Modified ENHEX again.

    • the /url refine was removed as I decided, that it should not be part of this encoding (ECMA-262 specification does not do it either)
    • added /except unescaped [bitset!] to be able specify, which chars must be encoded and which can be leave without encoding
    • added some predefined bitsets into new system/catalog/bitsets (will use them later in other places)
    • modified HTTP scheme to coop with these modifications
  • a63bfc Making ENHEX compatible with encodeURIComponent, adding /url refine and possibility to change escape character

  • 88cd91 Any TRY call resets system/state/last-error to none

  • 83cd93 Added experimental Spotify module for access to Spotify's Web API using OAuth2 authorization mechanism

  • 755e8e HTTPD - Added possibility to stop server and return data from client (useful for OAuth2)

Changes:

  • 3b9afc Remove found? mezzanine
  • d92049 Replacing some context usage with construct or object
  • 12454f Rename protect/permanently to protect/lock (wip)
  • 59576c Renamed httpd module to have .reb extension and small improvements in its test file

Fixes:

  • 8d2458 Force use of setenv function instead of putenv on Posix targets
  • 5a3cbe LOAD Unicode encoded text with BOM
  • 28b47d Add support for iconv UTF-32 conversion on Windows
  • 7c030c Crash when composing large block
  • 6191f4 Allow getting empty environmental string on Posix platforms
  • 30feb0 Sorting Unicode string not working correctly on Posix
  • 0465a5 Use case insensitivity when sorting a string by default
  • e84c99 Handle incomplete utf-8 sequences at tail
  • 8bd6d0 Use case insensitivity on word comparison by default
  • 2269b5 Better error message when using bad image construction
  • d0073c Throw an error on excess values in any-string construction syntax
  • 2babc5 Throw error on invalid image! construction syntax
  • cb7cf1 Not freeing ROOT_BOOT if it is already NONE.. adding some memory related traces
  • b687c2 Fine tune exit sequence to be nice with -v argument (early exit)
  • 7b39aa Improve delta-profile to use computed adjustments
  • 31f922 Normalize system/options/boot so the path is always absolute
  • 359ca0 Resolving some Unicode related compiler's warnings
  • b2fb60 Valgrind's warning: Use of uninitialised value
  • ed20ac Modify cd to accept cd /
  • 196256 Minor code improvements in Spotify module
  • 7525f8 Make UNSET of unbound words cause error vs. fail silently
  • c5b3de decode-url http://host?query
  • 7291eb print of objects truncating strings
  • 16bebe Spotify test file cleanup
  • f68e85 DO script with error should throw the error and not just pass it as a result
  • 2b1449 ICONV from UTF16 must ignore BOM
  • 64553a Small fix in HTTP scheme error reporting

2020 June

Features:

  • a7d02d Loading .txt files with unicode encodings Text files (.txt) are now loaded just as a string and not as a Rebol code. Unicode decoding is handled correctly if specified in BOM. Files (.txt) are always saved as UTF-8.

  • afebd2 Added a new ref! datatype like: @username

  • 36fee1 Added support for missing UTF-32 encoded binary to string conversion

  • 499a93 Added support for decimap pick on pair! and any-string!

  • b6ea7f Add enbase/part and debase/part

  • b78129 mold/part to limit the length of the result

  • 217fce Optionally execute user.r3 file in user's home directory on startup and removing temporary help functions which now may be defined in user's file.

  • 962382 Added ppk (PuTTY Private Key) codec (so far only RSA keys)

  • 4c07b7 Added ssh-key (Secure Shell Key) codec (so far only RSA keys)

  • 90ecb3 Added missing UI32BYTES and UI32LEBYTES bincode read commands

  • df2c2a Implemented proper ask/hide and input/hide

    That was not working well on Windows (with enabled virtual terminal processing), now it successfully hides user input.

    As a bonus this change contain a way how to turn off read-line console input and enter use the console as a key-stroke (and mouse as well) input. Simple use example is available here: https://gist.github.com/Oldes/face8a5790df7121a78ba606a3e150f4

Changes:

  • c8799b Using Bjoern Hoehrmann's UTF-8 decoder

    http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ It is shorter and faster.

  • 6416be Migrate extensions: *.r => *.reb & *.rx => *.rebx

    This change was proposed years ago by @onetom in rebol#140 and I agree, that the .r extension is lost in this century and so lets start with the new one. I'm personally still preferring .r3 for run-able scripts which requires Rebol3.

  • 1e1dfa Rename split/into to split/skip

  • 214790 Setup system/options/home to default user's system home location or to one defined in REBOL_HOME environment variable

    For example to define custom location one can use on Windows:

    set REBOL_HOME=C:\Rebol\
    

    or on Linux:

    export REBOL_HOME=~/Rebol/
    
  • 2b2352 Allow private RSA exponents optional (may be computed and are not in PPK files)

  • 3d1436 Using lowercase in codec names (it looks better)

  • db5b44 Replaced mezz-crypt module with pkix and utc-time codecs

  • 4d8866 Using append instead of insert tail when saving data to binary

Fixes:

  • 6f8324 Avoid making a new bitset! on each suffix? call
  • 2d1a66 exists %/ must return true and not none
  • 4774ea Better fix of reading list of logical drives on Windows
  • ea39f8 Update travis file and remove unrelated mezzanine file
  • 5e32c5 deline/lines and read/lines misinterprets UTF-8 character as newline
  • e7e72b Missing file with mold/part native specification
  • 3f4b93 Wrong macro in host calls (failed standalone library compilation)
  • 1317e1 Path expression with path! does not work with all supported key types
  • 652045 Using deline to normalize CRLF to LF when reading text HTML content
  • 6238d2 Allow incomplete tag in DER codec (because it looks it can happen)
  • 9f6b34 Allow to make bitset! from bitset!
  • e5442e Fixed special case of pick bitset! integer!
  • cb5867 Using rejoin instead of reduce for compatibility with newer R3 versions (write %f [..])
  • f09962 ENLINE does not convert line endings to native OS format (Posix)
  • 70c51b Crash in enline

2020 May

Features:

  • 55a8f9 Enable raw map! and binary! data in HTTP scheme's write action

    Using this:

    write http://localhost:8081/result/ #{0102}
    write http://localhost:8081/result/ #(a: 1)
    
    

    is now same like:

    write http://localhost:8081/result/ [POST #(Content-Type: "application/octet-stream") #{0102}]
    write http://localhost:8081/result/ [POST #(Content-Type: "application/json; charset=utf-8") #(a: 1)]
    
    
  • 01284d Ported Nenad's MySQL driver to be compatible with this Rebol3 version as a module/scheme

    It's just a quick rewrite, which replaces original debug function in the protocol with system logging and some of required modifications. There is also minnor change in error reporting. It would deserve better rewrite, but I don't have much need for this, so it's left for future or someone else.

    It was tested only with this so far:

    >> mysql: connect-sql mysql://root:rur@localhost/
     [MySQL] Connected: mysql://root@localhost:3306/
    >> send-sql mysql "show databases"
    == [["information_schema"] ["mysql"] ["performance_schema"] ["sys"] ["test"]]
    
    >> send-sql mysql "create database test"
    ** mysql error: [ 1007 ] "Can't create database 'test'; database exists"
    
    >> send-sql mysql "drop database test"
    == []
    
    >> send-sql/flat mysql "show databases"
    == ["information_schema" "mysql" "performance_schema" "sys"]
    
    >> close mysql
     [MySQL] Closed: mysql://root@localhost:3306/
    >>
    
  • 46810b Allow protocols to be modules accessible from user context, if exports some functions

  • f367ee It's again possible to read dns:// to resolve a hostname

    >> read dns://
    == "Oldes-Aero"
    

    It also fixes a bug introduce in rebol#66, that resolving domain name from ip was not possible at all. Now it's again working properly:

    >> read dns://rebol.com
    == 162.216.18.225
    >> read dns://162.216.18.225
    == "rebol.com"
    
    
  • 61596e HTML-entities decoder

    For decoding HTML entities into text:

    >> decode 'html-entities {Test: &spades; & &#162; &lt;a&gt;&#32;and &Delta;&delta; &frac34;}
    == "Test: ♠ & ¢ <a> and Δδ ¾"
    
  • 640f91 Including R2's version of the build-tag function

    (but not enabled by default in boot-files)

  • 09d560 Added pad mezzanine function

  • 3f08fa Updated HTTPD scheme with directory listing, logging and multipart POST processing

  • ae88f0 Enhanced DEHEX with /escape refinement for changing the escape character

    Can be used as:

    >> dehex/escape "a#20b" #"#"
    == "a b"
  • f4a1fc New resize native function for resizing images (without any external dependency)

    The code was ported from GraphicsMagick (www.graphicsmagick.org).

    Basic usage example:

    original-image: load %some-image.jpg
    resized-image-1: resize original-image 25%
    resized-image-2: resize original-image 100x200 ;- resized to exact size
    resized-image-3: resize original-image 100     ;- resized to width 100 (height is computed)
    resized-image-4: resize original-image 0x200   ;- resized to height 200 (width is computed)
    

    By default, Lanczos resize filter is used. It is possible to use one of filters, which are listed in system/catalog/filters:

    Here is example how to resize the original using width 250 with all filters. Results are saved as PNG files:

    foreach filter system/catalog/filters [
        save join %image- [filter %.png] resize/filter original-image 250 filter
    ]

Changes:

  • 8b0e6a Using system/platform just as a word!

    Before:

    >> system/platform
    == [Windows win32-x64]
    

    Now:

    >> system/platform
    == Windows
    
    >> system/build/os
    == win32-x64
    
    

    Reason is, that in most cases only the platform name is needed so one had to use for example switch system/platform/1 [...], which was a little bit cryptic. It is now also compatible with Red language.

  • a55673 Moved AS_DECIMAL define

    used to receive decimal value, when argument may be decimal or integer

Fixes:

  • 7ee3e3 Not using system/platform for zero-index? functionality
  • 9f2548 Improved error handling in HTTPd (catches invalid requests)
  • 3d068a TRY/except should store the last-error
  • c4c374 Resolve incompatible pointer type compilation warning on posix targets in browse native function
  • 447525 Optimized (and fixed regression) when appending char on string
  • b26700 Make sure that Linux ARM build is not trying to use not implemented MIDI device
  • 149aeb Minor modifications of MySQL protocol error messages.
  • 3360da WRITE should use MOLD instead of FORM when writing an object into a file
  • 0bb9d9 ICONV from UTF16 with BOM does not skip the BOM on Windows
  • 0020ec Make case [true []] return unset!
  • eaeb6c Using typeset should not found datatype value inside a block
  • 853cd8 Optimization of CHANGE/INSERT/APPEND integer! or char!
  • 47d904 DELTA-PROFILE includes profiler overhead
  • 625044 Insert/append/change binary! string!
  • 07d4e3 Small code refactoring of the httpd scheme
  • b75a0e Removed debug traces in HTTPD scheme
  • 95b454 Include USE_IMAGE_NATIVES define in VS build
  • b415fe Catch possible evaluation errors in in-dir call
  • 26b19a Catch base code even when comment is at file's head

2020 April

Features:

  • d4a138 New PROTECTED? function

    Which take all of the same argument types as PROTECT, and return TRUE if that immediate argument is protected from modification.

  • dd2ec1 Added new dir-tree function which prints a directory tree

    This function is based on Toomas Vooglaid's %dir-tree.red script, which is available here: https://gist.github.com/toomasv/f2bcf320800ca340379457c1c4036338

    It was modified for use in Rebol3 and improved to support user's callback for more advanced formating of values.

  • ba200f Including GIT info in system/build

    Before this commit, system/build was returning just a date, when the executable was compiled. Now it is an object, with keys date and git. If the executable is compiled from a valid git repository, git contains another object with info about actual repository, branch, commit and it's message.

    With this info it will be easier to localize possible regressions against older executables.

  • 0b3531 Added simple mobileprovision codec,

    which can be used to load Apple's mobile provisioning files as a string for examination (without need to use Apple's tools).

    >> print load %some.mobileprovision
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
            <key>AppIDName</key>
            <string>My App</string>
            <key>ApplicationIdentifierPrefix</key>
            <array>
  • 2e41df Added a few more names into OID decoder and using more optimal chars instead of single byte binaries

  • ad49c4 Registered certSigningRequest file extension with PKIX decoder

  • 1dca01 Added BBCode decoder for converting BBCode markup language into HTML

    For more info about BBCode you can visit: https://en.wikipedia.org/wiki/BBCode

  • 628e6b Added support for find on map!

    This feature was introduced in Red language so it is good to be compatible. Example:

    >> find #("a" 1 "b" "c") "A"
    == "a"
    
    >> find #("a" 1 "b" "c") 1
    == none
    
    >> find/case #("a" 1 "b" "c") "A"
    == none
  • a74222 Added support for zero? on bitsets.

    zero? return TRUE if no bits are set in a bitset!

    >> zero? make bitset! #{0000}
    == true
    
    >> zero? make bitset! #{1000}
    == false
  • fa8fc6 New native complement?

    Returns TRUE if the bitset is complemented. Like:

    >> complement? make bitset! [not]
    == true
    
    >> complement? make bitset! []
    == false
    
    >> complement? complement charset "abc"
    == true
  • 5d5bf7 Implemented query on date values

    So one can query multiple date parts with one call, for example:

    >> query/mode now [year day month time timezone]
    == [2020 8 4 12:24:54 2:00]

    If set words are used, the result is like:

    >> query/mode now [year: month:]
    == [
        year: 2020
        month: 4
    ]

    Simple query now would return object with all possible fields.

  • ae61eb Implemented basic user-defined OP!

    I'm not much fan of ops, but now it's possible to do code like:

    >> .: make op! [[a b][ join a b ]]
    >> "a"."b".(random 10)
    == "ab1"

    Current limitation is, that there is no runtime check of first argument's type!

  • 1e55b6 UNPROTECT/words object!

  • 309280 PROTECT/words supported for an object! value

    PROTECT object! now protects the object and its words, but not their values.

    PRODUCT/deep object! protects the object, its words, and their values.

    PROTECT/words object! only protects the words of the object!, but not the object itself or the values of the words.

    PROTECT/words/deep object! also protects any values assigned to the words, but still not protects the object itself.

Fixes:

  • e128de Crash when used protect/words/deep with block of values which are not series
  • f5df78 TAKE/DEEP does not copies series values within the block
  • 567f53 TAKE/part on any-block! must return same type like the source is
  • cabe48 Small changes in indentation from dir-tree and list-dir
  • cc96b3 Rewritten list-dir to use recent dir-tree function.
  • e7e8c6 Updating system banner
  • 2c6ac1 Get-git function used to collect information about current commit during compilation
  • 6e8233 Using old syntax for making a map (for compatibility with older prebuild executables)
  • 04cf27 Revisited XML codec to better handle more "XML prolog" versions (including 2 tests)
  • f66954 Fixed typos in the percent unit tests
  • c9dc63 Allowing H6 tag in BBCode decoder
  • 665141 Updated put's doc-string
  • 0ffc8f Using VAL_TYPE instead of direct type code
  • 7c2a11 Disallow subtracting date from integer
  • bb1668 Negative /SKIP with FIND causing a hang
  • 77a86d Bitset from empty string should have zero length
  • 3dfc00 zero? on complemented bitset
  • fbdab8 Fine-tune system object protection
  • d28f95 Fine-tune system object protection
  • 764cbe Protect lib/system value.
  • da722e Unset also native after boot.
  • 88de50 Unset action native after boot.
  • 110e9e None instead of error for an out-of-range ordinal date! selector
  • 0f4436 Re-factored date's accessors
  • 3ace82 Accessing and settings time parts of date without time
  • cd4675 Prevent too many refinements in now function
  • 1087f6 Throw error also when to-hex/size is using size = 0
  • 344646 Do not allow make a task! if not compiled with INCLUDE_TASK define
  • 44b13f Allow any value as a part of path!
  • 0ad97b Don't allow logic as a path part when using to-path
  • 2f2322 Not using line breaks when molding/forming empty map!
  • 6e48d7 Sys-state.h redefinition
  • 700045 Minor Expand_Stack modification
  • 0d9dd3 Check pointer against NULL
  • 3c5e97 Make APPLY :DO [:func …] work like DO :func …
  • 4b1148 Fix: Restore Saved_State/Halt_State when a longjmp happens
  • d2b8cd Ensure proper path component types during refinement processing
  • ef6931 Turn off all security by default
  • 03a08b Fix stack expansion

Changes:

  • f7193a Return FALSE instead of NONE when picking a non existing bit from a bitset

    Just for compatibility with Red language. It is still possible to revert it using PICK_BITSET_AS_NONE define.

  • c88857 Use partial system object protection

    At this stage it is not fully protecting system object, but it is a good start to see possible issues with it.. like Oldes/Rebol-issues#1348

  • 127a5a Move sys-state.h to be included by sys-core.h

2020 March

Features:

  • f913b2 Enable secure again (although not fully implemented yet)

  • 414799 FORM on a binary! creating a string without the "decoration"

    example: "DEADBEEF" = form #{DEADBEEF}

  • 4e4759 deduplicate mezzanine (modifying unique)

    related to: Oldes/Rebol-issues#1550

  • 61b39c Removing /base refinement from debase and enbase functions

    So eliminating ugly ??base/base code, for example instead of:

    debase/base data 16

    it is now just:

    debase data 16

    I'm still not sure if the base value should not be as a first argument, but so far I will just keep it as a second one.

  • 305ed8 Register %.jks file extension with DER codec

  • 628234 Support for Ascii85 (Base85) encoding

    Ascii85 is a form of binary-to-text encoding used for example in PDF files. One can now use 85 as a base value in debase and enbase functions:

    >> enbase/base "Lion" 85
    == "9PJE_"
    
    >> debase/base "9PJE_" 85
    == #{4C696F6E} ;== "Lion" if converted back to string

    This addition is optional, requires compilation with INCLUDE_BASE85 define.

  • 9d5a6f Added support for case-sensitivity of map! keys

    With this commit maps should be compatible with Red language, where creation is case sensitive, selection is by default case insensitive unless /case refinement is used.

  • dbc572 WAV codec updated (vector support)

    Now loaded WAV sound data are as a vector instead of raw binary. WAV encoder was improved for vector data input.

    Example of simple sine WAV file generator:

    samples: #[si16! 10000]
    repeat i 10000 [ samples/:i: 16000 * (sine i * 7.2) ]
    save %sine.wav samples ; by default mono with 44100Hz

Fixes:

  • 4911e0 Minor code change
  • 66e47d Do not set func word to be handle!
  • f4b30e Fix: TRACE ON shows bizarre parse behavior
  • 3f9ac4 Better SECURE error message with incorrectly formatted input block
  • 40083e PARSE position capture combined with SET or COPY
  • 5596b6 ENTAB strips first character from line
  • 53c991 Updating Eval_Count while processing parse's empty while block
  • fcd4dc Cannot interrupt empty parse's while rule with CTRL-C
  • 2a4f79 Read/lines on clipboard does not return a block of strings
  • db4537 Length? of any-word!
  • e29b73 Replace binary! integer! integer!
  • e60a7b change-dir %/ not working on Windows
  • 3b529e Minor cleanup in HTTPd script (not probing target on any request)
  • 1d0e67 Prevent crash when task with error is evaluated
  • 8a63f4 Minor cleanup in TLS protocol
  • 2dbcf3 Moved automatic decompression when reading HTML so it is not used when /binary refinement is used (to get raw, untouched data)
  • 599e94 Enhance max decompression limit for Zlib
  • b9723d Better handling large number tuple multiplication
  • 10aa48 Using 64bit integer in tuple math
  • a467d3 Include TASK! evaluation only with INCLUDE_TASK define
  • 663397 Change on image must return position just past the change
  • 082a31 Returned position after INSERT action on IMAGE must be at tail not before.
  • e81f18 FIND on images
  • 0d9e7d Adjusting tuple parts in images
  • 427733 Maximum uncompressed size for GZIP decompression was not large enough
  • 338a0f Added 'type reflector to datatype!

2020 February

Features:

  • 7c97bd Add single quote strings to tag! syntax

  • 798b06 Included to-degrees and to-radians native functions

  • 07379a Enable read/binary and write/binary in HTTP protocol

    By default, read automatically tries to convert text data according give specified charset in the received header info. This may be avoided using /binary refinement.

  • b755c7 Allowing @name to be a valid email! type

    For a compatibility with Red language and also because it may be useful in dialects. Although @name is not a valid real email according RFC, one can construct invalid email values in many ways and so in real use for email apps, there should be a real additional email validation anyway.

  • f3dfa7 Possible auto conversion to text if found charset specification in content-type

  • f45e86 Ported JSON codec from Red language

    Main credits belongs to: Gabriele Santilli and Gregg Irwin. See https://github.com/giesse/red-json for more details.

  • 796f30 Ported JSON codec from Red language

    Main credits belongs to: Gabriele Santilli and Gregg Irwin. See https://github.com/giesse/red-json for more details.

  • d27e4b New AS native function for series coercion into a compatible datatype without copying it

    Example:

    >> p: as path! b: [a b]
    == a/b
    
    >> append b 'c
    == [a b c]
    
    >> p
    == a/b/c
  • 14e4b9 Implemented MAP's own syntax (compatible with Red language)

    Example of a nested maps:

    >> m: #(a: 1 b: #(c: 3 d: 4))
    == #(
        a: 1
        b: #(
            c: 3
            d: 4
        )
    )
    
    >> m/b/d
    == 4
  • a84522 New PUT action for replacing the value following a key (in blocks and maps)

  • 9ab1b1 Improving HELP output on datatypes.

    It also displays different results if used directly on datatype, like:

    help char!

    or when used on value, which holds datatype, like in:

    my-value: char!
    help my-value

    First one displays:

    CHAR! is a datatype.
    It is defined as a 8bit and 16bit character.
    It is of the general type scalar.
    
    Found these related words:
      null            char!      #"^@"
      space           char!      #" "
      sp              char!      #" "
      backspace       char!      #"^H"
      bs              char!      #"^H"
      tab             char!      #"^-"
      newline         char!      #"^/"
      newpage         char!      #"^L"
      slash           char!      #"/"
      backslash       char!      #"\"
      escape          char!      #"^["
      cr              char!      #"^M"
      lf              char!      #"^/"
    

    while the second one just:

    MY-VALUE is a datatype of value: char!
    
  • 1162e7 Define a WHITESPACE charset

    mentioned: http://www.rebol.net/r3decide/0008.html

    Using just the most basic whitespace chars. Anyone may extended this charset if needed. This one is compatible with Red language.

Fixes:

  • 89e315 Use constant macros instead of suffix
  • c39291 Always use 32-bit integers for CRC
  • 761fba QUERY directory size now returns NONE instead of 0
  • 5a5ae7 Problem with externally modified keys of map!
  • bb4598 PARSE modifiers do not honor PROTECT status of series
  • 242ceb HTTP protocol - limit input data according Content-Length
  • 55d3ae Email does not handle non ascii chars correctly
  • bcf114 WHOIS lookup throws an error when used with IP
  • cd42c2 Exists? on not existing URL must return FALSE instead of error
  • fda0e6 Make-boot.r should wrap files marked as a module type into import module code
  • 9f6534 FOREACH works bad on image!
  • e1b451 [TLS] Error reading elyptic curve
  • 3b413f Remove the DO keyword from PARSE
  • b2e59d JSON codec - license & rights updated
  • e892a0 Allow expressions in parens as INSERT and CHANGE value argument
  • 47f7b4 READ %/ doesn't return the list of drives on Windows
  • 5ec25a MOLD/FLAT on MAP values does not remove line breaks
  • 5a4f0f Code refactoring
  • 15f6ea APPEND a word on object should set the value to NONE instead of UNSET
  • 70a331 Overprotective PROTECT for path access to maps
  • e81fb8 Code refactoring
  • 62af92 SAME? on VECTORs return TRUE even when vectors are not identical
  • 35815c COPY/part on VECTOR is silently ignored
  • 735454 Fix macros
  • 1d215f CRASH when removing 32768 or more bytes from the head of series

Changes:

  • 651219 Renaming CRC_Table to CRC24_Table, so it has same naming as CRC32_Table.

2020 January

Features:

  • 545dd9 VECTOR compact construction

    Example:

    >> #[ui8! [1 2 3]]
    == make vector! [unsigned integer! 8 3 [1 2 3]]
    
  • 65a068 MOLD on image using flat result if image is small enough (less than 10 pixels)

  • 09e8c4 Allow SIGNED word as a key word in vector construction dialect as a oposite to already supported UNSIGNED

  • 68b197 Very basic WAV encoder

Fixes:

  • 6ff512 Typo in a comment
  • c8510f MOLD/FLAT on image does not removes line breaks in the alpha channel
  • 181f5f MOLD/FORM on zero percent value
  • 2b1f17 SWF codec - missing bit aligning in fill style array
  • d076b3 Math error when multiplying negative integer with zero integer

2019 December

Features:

  • 661779 Releasing intermediate sources of modules and protocols after loading these on boot (to reduce memory use a little bit)

  • f101d9 empty? to accept typesets

    It was already accepting bitsets, so why not to support typesets too. Added a few typeset! unit tests (not complete)

2019 November

Features:

  • 6632c6 A little bit optimized JOIN mezzanine function (not using repend mezzanine)
  • 4ecd93 New tint native for color mixtures

2019 October

Features:

  • e74831 Added function for basic extra field data decoding into ZIP codec

  • 800115 Updated ZIP decoder

    • Refactored decoder so it is using central directory structure
    • Added decode/info refinement used to resolve just the info about files without decompressing
    • Added access to decompress-file function which may be used to decompress single file using info from the info records

    Initial ZIP decoder was just traversing the file searching for the ZIP related structures. But some ZIP files (like created on macOS) does not provide valid informations in local headers and central header must be used, as it is with this update.

Fixes:

  • 2c152b System crash when reading any http request

2019 September

Features:

  • f38d49 Possibility to count average image color using /color

    For example having black&white image:

    i: make image! 2x1 i/1: 0.0.0

    One can count average color using:

    i/color ;== 127.127.127.255

    Using /color: will set RGB components of all pixels (ignoring alpha channel)

  • 4f1680 More getters/setters for image! type

    Could be optimized and enhanced later. For example it would be good to add also HSV, Hue, Saturation, Lightness etc. For these it would be good not to support only binary!, but also vector! as an input/output.

  • d14793 Adding codecs as a shortcut for system/codecs and keys-of as an alias to words-of

    Because keys-of codecs looks better than words-of system/codecs

  • 6ca3c1 Added UNIXTIME codec for conversion of Rebol datetime! to Unix epoch number and back

    Example:

    encode 'unixtime 18-Sep-2019/9:06:45+2:00 ;== 1568790405
    decode 'unixtime 1568790405 ;== 18-Sep-2019/9:06:45+2:00

    string! and binary! is also supported as an input/output:

    encode/as 'unixtime 18-Sep-2019/9:06:45+2:00 string! ;==  "5D81D785"
    encode/as 'unixtime 18-Sep-2019/9:06:45+2:00 binary! ;== #{5D81D785}
    decode 'unixtime  "5D81D785" ;== 18-Sep-2019/9:06:45+2:00
    decode 'unixtime #{5D81D785} ;== 18-Sep-2019/9:06:45+2:00
  • f79560 Updating Windows' prebuild R3 executable

    The previous one was over year old, so it's time to update it into up-to-date version. Especially that now it by default does not enter console on error in evaluated script. (https://github.com/Oldes/Rebol3/commit/61c138334d9fd93ca5760fdf685080f285251193)

    Note that it is not fully featured version to keep the executable small.

Fixes:

  • e4841c Function source missing indentation
  • e03b3b MOLD/FLAT on binary values does not remove line breaks
  • 19257d MOLD/FLAT on image values does not remove line breaks
  • 060126 Invalid MOLD on empty image
  • 425fa5 MOLD/FLAT on block values does not remove line breaks
  • 2f5b50 MOLD/FLAT on event values does not remove line breaks
  • a6c966 EVENT! reports coordinates regardless of EVF_HAS_XY
  • a3f69e Fixed clang warnings in 64bit build when using debug output showing various struct sizes
  • 105772 Small cosmetic change in HELP output
  • 7c4680 WIC WINCODEC_ERR_BADHEADER only for JPEG images
  • 43f6d4 Adding missing type_traits include for casting macros with CPP11+
  • 08dc4e Embedded Extension Module test code included only if TEST_EXTENSIONS define is used

Changes:

  • 19bbfe XML codec by default does not trim/remove strings between tags.

    Example:

    third codecs/xml/decode  {<a>  <b/>  </a>} ;== [["a" none ["  " ["b" none none] "  "]]]
    third codecs/xml/decode/trim  {<a>  <b/>  </a>} ;== [["a" none [["b" none none]]]]
  • 80597e Renamed crc32_table to CRC32_Table so it has same case as similar CRC_Table

2019 August

Features:

  • 642086 Improving BinCode

    • added possibility to specify number to bytes to read directly: binary/read #{0102} 1
    • added possibility to write FILE! and URL! types
    • added few missing UI*BYTES variants (also with little/big endian) - but that must be revisited later!
  • 1f9199 Revisited original Carl's build scripts and improving these to be able create multiple products without modifying it too much.

    One could spend more time in these as they were originally written to be working also with old Rebol 2 in the bootstrap phase. There is a lot of improvement possibilities, but that is not too important for now.

    Main change is, that I stopped using REB_CORE define and instead use REB_VIEW when I want to build Rebol with early View functionality (not much stable/useful yet).

  • 224ea4 Preliminary use of image native OS codecs on Windows (using Windows Imaging Component)

    If USE_NATIVE_IMAGE_CODECS is defined, than WIC is used instead of the original code, which supported only PNG, BMP and partially for JPEG and GIF).

    Using OS to do image de/encoding adds more possibilities, but so far, it still needs some work, especially for encoding, when user may want to specify various output options.

    For more details what WIC is, check: https://docs.microsoft.com/en-us/windows/win32/wic/

Fixes:

  • 407aee Revisited TLS and HTTP protocols to be more stable in some cases
  • 99a6cd Several clang warnings fixed
  • 61c138 Errors should not HALT to the console but QUIT to the system
  • 89642e Warning: using the result of an assignment as a condition without parentheses

2019 July

Features:

  • 6df2ec Added /fmt refinement to DUMP function for displaying only internal information about series value without displaying its data
  • 25720e New native ecdsa = Elliptic Curve Digital Signature Algorithm
  • 39957a Updated TLS protocol to support TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 cipher suite
  • 6ec697 Added possible compiler's define EXCLUDE_CHACHA20POLY1305 if the chacha/poly code is not needed in the executable
  • a25f62 Modified Chacha20 and Poly1305 code to use types same like rest of the system.
  • 6a71ad Included macros for conversions from U8 to U32 and U64 (little endian) and back

Fixes:

  • 85bc4d Removed <ctype.h> dependency in PNG codec
  • 1d56a2 Several clang warnings fixed
  • 445ee8 Silence "loop has empty body" warning when used Clang
  • 3e9dce Separate Copy_Wide_Str from Copy_OS_Str
  • 362fe7 HELP was providing invalid info if value of path was of ERROR! type

2019 June

Features:

  • 76e91b New native Chacha20Poly1305

  • 0c166c Added poly1305 /finish refinement to return computed MAC of the data.

    Note: it clears internal state so only one call to /finish or /verify will return real result!

  • 87d6fb New native poly1305 for message authentication

  • 95bb58 New native chacha20 for cipher stream encryption/decryption

  • b9adfc Added support for TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA and TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA cipher suites in TLS protocol.

  • 1e9339 New native ecdh for Elliptic-curve Diffie-Hellman key exchange.

    Using Kenneth MacKay's micro-ecc project

    For usage example see the modified dh-test.r3 file.

  • 1bc566 Added ENHEX native (string conversion with chars converted to URL-ENCODED format when needed)

  • c57b31 Adding VAL_UNI_TAIL macro for getting tail of unicode encoded series

  • 679277 Added possibility to set User-Agent in HTTP scheme

    One can now for example pretend that HTTP requests are coming from Chrome on Windows 10, when use this code before reading URL(s):

    system/schemes/http/user-agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"

    This may be useful, because for example Google is serving different results, when default "REBOL" user agent is used.

Fixes:

  • 97334b In rare cases scanner was making null holes in strings, when the internal buffer was extended.
  • b99224 Adding missing dependency file for the last commit
  • 5e06fd Changing some of the log traces so they all starts with capital letter
  • aba986 Removing debug trace
  • 15cb76 Small code cleanup
  • cdd10e Improved TLS and HTTP protocol to correctly handle chunked data and case when TLS packed was not fully processed
  • 8215de Using the new ENHEX function in HTTP protocol so it correctly handles requests with unicode chars
  • 295be2 DECODE-URL does not support UNICODE
  • 7517d0 ENHEX - underscore char does not have to be encoded
  • a8b9ac MOLD of URL containing unicode chars is invalid
  • 76c87a Invalid ENHEX edge result
  • aa939b wide internal encoding was not used for strings containing chars in range >= 80h and <= FFh

Changes:

  • b774da SWF codec - all three read-PlaceObject* functions now returns first 6 values pointing to same data [Depth move/place ClassName CharacterId Matrix Cxform], to simplify its processing, event when the values may be NONE in older PlaceObject tag versions.

2019 May

Features:

  • 4e8896 SWF codec - allow none! as a valid input to decode-tag function

  • 4e3eef When value of string type is used to be written, it is converted to UTF-8 automatically

  • 4e3eef Added UI16LEBYTES command

  • 4a4418 Bincode - value to write defined as GET-WORD! or GET-PATH!

  • 1029ea Bincode - added support for writing FLOAT16, FLOAT and DOUBLE values

  • c1c1f2 Added support for ADLER32 checksum method

  • 935e61 Allow CHECKSUM again on strings

  • dcd405 Including WHOIS protocol

    Usage example:

    read whois://seznam.cz ;<- will do recursive lookup
    write whois://whois.nic.cz "seznam.cz" ;<- query a given whois server directly
  • 243300 CHANGE: enable any value as a data type for WRITE action

Fixes:

  • eef497 Using MOLD/ONLY instead of FORM when saving data as a *.txt file
  • 88ec45 Valgrind reporting errors when using ENCODING? in JPEG codec
  • f44442 SAVE broken with .txt suffix
  • 7b9e65 Simple text (and empty text) should be identified as TEXT when using ENCODING? function.
  • f0ab71 Bincode - read FB was not handling negative numbers correctly
  • f65ffd SORT/COMPARE is using reversed order when using integer as a result from the function
  • dc46df Type-check call of SORT/compare handler
  • 49bcd1 Bincode - the output buffer position was not updated
  • 820a3a Warning message about duplicate specification was always shown in verbose mode (even without any duplicates)
  • 254b78 Rebol cannot run a script that has UTF-8 chars in its filename or path
  • d10845 Removed printed output in case of DNS awake

2019 April

Features:

  • 89bddd Added RL_Get_Value_Resolved as a library function which works like original RL_Get_Value, but with difference, that when resulting value is WORD, GET-WORD, PATH or GET-PATH, result is not this value, or its resolved value.

    This is useful when writing dialects as an native extension's code.

  • bebab4 When used VIEW with image as an argument, open in as a centered and resize able window;

  • ead47c HTTPD server now have ON-ACCEPT actor which can be used to limit connection to specified IPs only

  • 7ba3dc HTTPD server now have ON-HEADER actor which can be used for early request processing like redirection or rewrite rules (see the test file for usage example)

  • 131333 Simple HTTP server scheme module

    One can use it to start a HTTP server using just:

    http-server 8080

    but most probably you would like to customize it a little bit. For details see the included %test-httpd.r3 script.

  • cf7ba1 Allow DEHEX to accept binary! value

    So one can use it to properly url-decode utf-8 sequence, like:

    >> to-string dehex #{2F666F726D3F763D254335253939}
    == "/form?v=ř"
    
    >> to-string dehex to-binary "%c5%99"
    == "ř"
    

Fixes:

  • 615e82 Correctly handling case where result from script evaluation is unset
  • 90a710 Exclude MODULE result from evaluation to be printed in console for now (there should be first some sort of nicer formating)
  • 2eec29 Window containing just an image was not drawn. This commit
  • d370b4 Restore original path when DO of a script fails
  • 0dae54 Calling an action made by oneself crashes R3
  • 2d8925 HTTP protocol now handle limit of max redirection
  • 4b058f HTTP scheme redirect was not correctly dealing with port id
  • 40b9e5 TO-DATA allow string date representation with day represented in one char only too

Changes:

  • 77bd60 Initialize Winsock with version 2.2

2019 March

Features:

  • 6b4ef6 New functions TO-IDATE, TO-ITIME, enhanced TO-DATE

    For conversion to a standard Internet date/time string (as used in HTTP headers) Function to-date now can now be used to convert these strings back to date. It has also new refinement /utc for conversion to UTC date.

    Example:

    >> to-date/utc "Thu, 28 Mar 2019 20:00:59 +0100"
    == 28-Mar-2019/19:00:59
    
    >> to-date/utc "Thu, 28 Mar 2019 20:00:59 GMT"
    == 28-Mar-2019/20:00:59
  • 8fe060 Adding /TIMEZONE to DATE values which adjust the time

    /timezome was first introduced in Red language and it can be used to change the time zone with adjusting the time, while /zone keeps time unmodified.

    Any date can be now easily converted to UTC just setting the timezone to zero.

  • 3770d7 Registering .epub extension into ZIP codec (so it's possible to load epub files)

  • e08b4b Using sync READ of HTTP will try to automatically convert content to text according given encoding if content-type of the result is specified as text/*

    This means, that for example:

    read http://www.google.jp

    will return string properly converted to Unicode (as the result from Google is served as Shift_JIS charset.

  • d71a27 New ICONV native for conversion between various code pages

    This function is on Posix wrapped around iconv function. On Windows it is emulated using Kernel functions for conversion between wide char and multi byte.

    So far there are two modes, conversion from binary to unicode string:

    >> iconv #{9AE96D} 'cp1252
    == "šém"

    or from one binary to another with different encoding:

    >> iconv/to #{9AE96D} 'cp1252 'utf-8
    == #{C5A1C3A96D}
  • 9347af HTTP: Added support for transfer compression (gzip or deflate)

    Also now using system trace outputs. At this moment it's set by default to level 1 (info) Can be changed using for example:

    system/options/log/http: 3 ;<- for max traces
  • 7b6264 Using system/options/log to specify system log verbosity in central place

    (this is WIP as codecs and schemes are still using not centralized traces)

  • ebaa2c Decompress/deflate - decompression of data which are in raw deflate format (without envelope)

    Example:

    >> decompress/deflate #{2B492D2E01000C7E7FD804}
    == #{74657374}
    

    Also using it in the ZIP codec.

  • d045d4 Including the TAR codec as a mezzanine

  • af235b TAR codec (decode only so far)

  • 1d2daf Bincode: reading of STRING-BYTES and OCTEL-BYTES (string and octal number from fixed size bytes)

  • 94508e Introducing system log function for common system trace output

    Also using it for now with ZIP codec, instead of using local log functions.

  • e3e33b Including the ZIP codec as a mezzanine

  • 908bb3 ZIP codec (decode only so far)

    It extract ZIP data into memory.

    Example:

    >> load %/x/test.aar
    Decode ZIP data ( 2919 bytes )
     [ZIP] Decompressing:  AndroidManifest.xml  bytes: 504 -> 832
     [ZIP] Decompressing:  R.txt  bytes: 1535 -> 7180
     [ZIP] Decompressing:  classes.jar  bytes: 120 -> 233
     [ZIP] Decompressing:  aidl/
     [ZIP] Decompressing:  assets/
     [ZIP] Decompressing:  jni/
     [ZIP] Decompressing:  res/
     [ZIP] Decompressing:  libs/
    == [
        %AndroidManifest.xml [4-Apr-2018/18:52:10 662885694 #{
    3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D227574
    662D38223F3E0A3C212D2D0A20436F7079726967687420284329203230313420
    54686520416E64726F6964204F70656E20536F757263652050726F6A6563740A
    0A20202020204C6963656E73656420756E646572207468652041706163686520
    4C6963656E73652C2056657273696F6E20322E30202874686520224C6963656E
    736522293B0A2020202020796F75206D6179206E6F7420757365207468697320
    66696C652065786365707420696E20636F6D706C69616E636
    

    It's possible to use the ZIP codec directly and extract only specified files:

    >> zip-decode: :system/codecs/zip/decode
    >> zip-decode/only %/x/test.aar [%classes.jar]
    Decode ZIP data ( 2919 bytes )
     [ZIP] Decompressing:  classes.jar  bytes: 120 -> 233
    == [
        %classes.jar [4-Apr-2018/18:53:56 646121705 #{
    504B03040A000008000000002100F7D7D29907000000070000002F0015004D45
    54412D494E462F636F6D2E616E64726F69642E737570706F72745F737570706F
    72742D76342E76657273696F6E55540D0007000000000000000000000000FECA
    000032372E312E310A504B01020A000A000008000000002100F7D7D299070000
    00070000002F000D0000000000000000000000000000004D4554412D494E462F
    636F6D2E616E64726F69642E737570706F72745F737570706F72742D76342E76
    657273696F6E555405000700000000FECA0000504B050600000000010
    
  • ef895e Bincode: added reading/writing for MSDOS date time formats (used for example in ZIP files)

    The new dialect words: MSDOS-DATE, MSDOS-TIME and MSDOS-DATETIME

  • ae6795 Added Server Name Indication extension into TLS scheme

    More details: https://tools.ietf.org/html/rfc6066#section-3

    TLS does not provide a mechanism for a client to tell a server the name of the server it is contacting. It may be desirable for clients to provide this information to facilitate secure connections to servers that host multiple 'virtual' servers at a single underlying network address.

    In order to provide any of the server names, clients MAY include an extension of type "server_name" in the (extended) client hello.

  • 6194ff Registering XML codec with POM file extension

    POM is a file used by Maven; contains build information, such as required software dependencies, dependency scope, and packaging information.

    Example:

    load https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-auth-api-phone/16.0.0/play-services-auth-api-phone-16.0.0.pom
  • 4018c5 Initial implementation of OpenGL widget

    Nothing special yet, just displays hard-coded triangle with random background on redraw. Minimal example:

    view make gob! [size: 400x400 widget: 'opengl]
  • 68d210 Introducing native GOB widgets for Windows OS.

    It's just an initial proof of concept. Using the existing gob! type as a holder of native GUI widgets. At this moment there are partially supported these native widgets: button, check, radio, group-box, field, area, text, slider and date-time (which so far works more like a date picker only).

    Known issues:

    • the native widgets are not converted to image, when using to-image window-gob.
    • it looks there is a memory leak in the compositor as opening/closing multiple windows has growing memory effect. This is probably not directly related to native widgets as I can see it with just an image too.
    • it's possible to append widgets into another widget's pane, but the position is not relative to the parent.
    • there is no helper for creating a native gobs tree (no layout).
    • there are still some output logs as this is really more just an experiment (and my learning playground).

    Simple example displaying field and a button with event handler:

    handle-events [
    	name: 'gob-example
    	priority: 60
    	handler: func [event][
    		print ["view-event:" event/type event/offset event/gob]
    		if switch event/type [
    			close [true]
    			key   [event/key = escape]
    		] [
    			unhandle-events self
    			unview event/window
    			return none
    		]
    		switch event/type [
    			click
    			change [
    				print ["Field data:" mold fld/data]
    			]
    		]
    		none
    	]
    ]
    
    btn: make gob! [size: 200x29 offset: 20x20 widget: [button "hello"]]
    fld: make gob! [size: 200x29 offset: 20x50 widget: [field  "world"]]
    win: make gob! [size: 240x99 offset: 90x99 pane: [btn fld]]
    view/as-is win

Fixes:

  • 6f7358 Fixed TO-ITIME formating if time value parts are less than 10 and or time contains miliseconds
  • 8bea93 HTTP protocol now closes connection in case of error
  • a059e1 Code cleanup
  • 679d4e Adding ZONE to DATE value without TIME
  • 514e8e Limit SET to just WORD! and LIT-WORD! instead of ANY-WORD!
  • 798cf0 HTTP: do code-page conversion really only when content-type is of type "text"
  • 9aa122 Making macOS version be compile-able again with the recent iconv addition.
  • 2e1a8b Removing forgotten debug certificate export in TLS protocol
  • bf1d6d Bincode: fixed regression in read BYTES
  • 67c8ea Fix for the last commit ):last minute changes:(
  • cdfe7a Fixed buffer overflow in RL_Word_String()
  • 58cf7b TLS: moved computation of the message-hash checksum into proper section (where possible error can be trapped)
  • 0b95ae TLS: using proper checksum method for message-hash (not only SHA256)
  • d494aa Properly reseting internally used lexer's token value
  • df959a Improved doc-string for round/to action and added a few related unit tests
  • dd7f03 Using SwapBuffers instead of wglSwapBuffers and adding opengl.lib into systems definition for not VS builds
  • faf671 Disable GetVersionEx deprecation warning in VS
  • 9e2c7b Make sure that native widgets are redraw also when window is restored from minimized state
  • 6401f7 Fixing simple image blit, so one can scale image gob types, like:
  • dd1eda Make native widgets to lose focus when user clicks with mouse anywhere outside
  • 354e5f Cleanup of stdio traces related to view
  • 68bdaa Fixed memory leak in window compositor
  • 12a1ac Handle-events is replacing existing event handler with the same name as a new one instead of adding it multiple times, and view is not adding a default handler if, there is already any handler registered.

2019 February

Features:

  • 3f182e GOB to image conversion on Windows -> to-image make gob! []

  • fd4b3f Modified Saphirion/Atronix Win32 GDI compositor to be working without AGG (for color and image gob types so far)

  • 785ea9 FEAT: fixed crash when user dropped file into window (with dropable flag)

    and fixed crash when calling show with none value. It's now possible to receive drop-file event with file name in event/data. It's also possible to resolve target drop using map-event function.

  • 699232 Added basic set of SWF tag decoders into SWF file codec.

  • af1be5 Enhanced BINCODE dialect with new features:

    • added /with refinement to provide additional value for reading single value like: binary/read/with b 'BYTES 42 which returns just the binary and not a block with binary.
    • it's now possible to use zero bits without range error: binary/read b [UB 0] returns 0.
    • new read command FIXED8 (16-bit 8.8 fixed-point number)
    • new read command FIXED16 (32-bit 16.16 fixed-point number)
    • new read commands TUPLE3 and TUPLE4 (returns tuple type value from 3 or 4 bytes)
    • new read command SkipBits (allows to skip given number of bits without reading anything)
    • new read command ALIGN (aligns bit stream to byte boundary)
    • new read commands FLOAT16, FLOAT and DOUBLE (16bit, 32bit and 64bit decimal value)
    • new read command SI16LE (16bit signed integer using little-endian byte order)
    • new read command FB (Signed, fixed-point bit value)
    • fixed read command SB
  • 765453 Codec-swf: added a few tag readers and more verbose output (WIP)

  • 9ca5cc Bincode: added reading commands: BITSET8, BITSET16 and BITSET32

  • ea0608 Added support for EncodedU32 in BINARY's read and write

    EncodedU32 is used in Adobe's SWF files. It defines an 32-bit unsigned integer as a sequence of 1 to 5 bytes. The most significant bit of a byte indicates if the next byte is also part of the value. The byte are ordered low to high.

  • 04cb59 Enabled "window" host extension on Windows (without graphics) so it's possible to view gob or view image to open a system window.

    Originally the windowing was dependent on graphics extension. Now it is independent and the graphics (using AGG ) is not yet ready.

  • be815c Added code for cleaning up opened MIDI connections on system QUIT (Windows only so far)

  • 764807 Including Graham Chiu's SMTP protocol source into repository

    It is version downloaded from his repository: https://github.com/gchiu/Rebol3/blob/master/protocols/prot-smtp.r

    As it was not tested yet (in this branch), I'm not including it into a build. Main reason of this commit is, that I don't want to loose track of this file as it may be useful in the future (although it will need update to support TLS)

  • 1d59f8 Very minimal SWF file format codec

  • 305fc3 Initial MIDI port scheme implementation - macOS version

    The MIDI device is now also optional and must be enabled using USE_MIDI_DEVICE compilation define.

  • 3591ed Initial MIDI port scheme implementation (Windows only so far)

    Here is example how to list available input/output MIDI devices:

    >> query midi://
    == make object! [
        devices-in: ["Launch Control XL"]
        devices-out: ["Microsoft GS Wavetable Synth" "Launch Control XL"]
    ]
    

    This will open MIDI port in write only mode and play a chord (Middle-C, E and G):

    synth: open/write midi://1
    write synth #{903C7F00 90407F00 90437F00}

    The scheme is low-level so supports only binary for read/write. There can be made higher level scheme which could support a dialect for preparing the data.

    This is example how to get MIDI input using port's awake:

    launch: open/read midi://device:1
    launch/awake: function [event [event!]][
    	switch event/type [
    		read  [ probe read event/port     ]
    		open  [ print "MIDI port opened!" ]
    		close [ print "MIDI port closed!" ]
    	]
    	true
    ]

    If the awake is defined like above and you are in some sort of wait loop, than whenever MIDI input is received, you would see the data from it printed in console.

    TODO: * support SYSEX messages * at least macOS support

  • f6b2bb Refine standard port specifications

    Originally there was port-spec-head which was holding also path and host, which are not needed in not file related schemes and does not looks good when listed.

  • 4a7852 Refine Find_Event function to find related event not only using event type, but also per port

    This function was introduced in Atronix branch to filter GUI events, where there was only one port. Now it's possible to use it also with schemes with multiple opened ports of the same type.

  • 9f13ef CHANGE: making SET native to be more compatible with Red-language version

    There is new refinement /ONLY which treat source block or object like single value (so the result is like it was in R3-alpha)

    The /PAD refinement was replaced with /SOME refinement. The functionality is now reversed: when no refinement is used, it works like if there was /PAD before. If /SOME is used, there is no padding and also target value is not replaced with none value from the source, if there is any.

  • d4261f CHANGE: making SET native to be more compatible with Red-language version

    There is new refinement /ONLY which treat source block or object like single value (so the result is like it was in R3-alpha)

    The /PAD refinement was replaced with /SOME refinement. The functionality is now reversed: when no refinement is used, it works like if there was /PAD before. If /SOME is used, there is no padding and also target value is not replaced with none value from the source, if there is any.

Fixes:

  • 6d42d3 Fixed implicit declaration
  • 0915fe Validate type before inserting into Gob
  • b86e4b Remove comparison between unsigned and zero
  • dc76d0 Shut off a coverity complain about the unintialized var
  • 58d59c Renaming 2 new host-.h files to reb-.h files as all host-*.h files are so far not included in the git repository (all of these are generated during compilation)
  • e7be9a Force redraw a window when restored from minimized state.
  • 4d21b2 Fixing some of compilations issues like when compiling Rebol just as a library without the host part
  • 960d50 Don't allow to view system/view/screen-gob
  • 7d6191 Win32 GDI compositor how was defined in Atronix branch
  • 709e71 Adding win32 compositor template how was originally defined by Richard Smolak
  • 8a96ed Make sure that only functions with "OS_" at the beginning are collected
  • 5e975a Enable better wait precision for timeouts bellow 16ms
  • d247f8 Enable MIDI for 32bit macOS target
  • ae925a Disable use of MIDI device on 64bit Linux (not yet implemented)
  • dbd495 Better error when setting image's alpha value using path notation
  • 821142 Removing traces of not yet ready scheme
  • eb7ba2 MOLD/FLAT on object values does not remove line breaks
  • 9e2846 Removing not ready leaked files
  • 873e2a Removing not ready leaked files

2019 January

Features:

  • 0e1498 Set object from object keeping only existing keys of the first one

  • c3055d Initial MIDI device (Windows only) - work in progress

  • 94ed18 Added compilation define to exclude math operation with vectors: EXCLUDE_VECTOR_MATH

  • 79673b Windows: Console Virtual Terminal Sequences

    If available (since Win10) using ENABLE_VIRTUAL_TERMINAL_PROCESSING output mode to process ANSI Escape Sequences. On older Windows versions it keeps using the ANSI emulation like before.

    It's possible to disable use of ENABLE_VIRTUAL_TERMINAL_PROCESSING mode by defining FORCE_ANSI_ESC_EMULATION_ON_WINDOWS compiler definition.

    Related documentation: https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences

    Known issues: The VIRTUAL_TERMINAL_PROCESSING mode is not handling escape codes for hiding input (^[[8m and ^[[28m), which is currently used in ASK/HIDE function. As these sequences are also not fully supported on some POSIX systems, the hiding input should be solved using other way. Oldes/Rebol-issues#476

  • 0b95e4 Enable displaying MODULE value as a result in console

  • 729705 Display a few values of any-block type, when using HELP on object with block values

  • c272af Implemented basic ADD, SUBTRACT, DIVIDE and MULTIPLY between VECTOR and NUMBER

  • 7383e1 Added RL_Make_Vector into RL api, so one can make a VECTOR from extension

  • 6624a7 Added optional compilation define to turn-of mapp key normalization

    Oldes/Rebol-issues#2353 Oldes/Rebol-issues#2354

  • 69f4e2 CHANGE: possibility to enquire the element properties of vector! values

    This commit also changes how are stored reflectors in system/catalog. Previously it was just block with names, now it contains also block with datatypes, which the reflector may be used with.

    For vector values, now there are probably defined all possible values to get its properties. Some of them:

    >> v: make vector! [unsigned integer! 32 2]
    == make vector! [unsigned integer! 32 2 [0 0]]
    
    >> v/size
    == 32
    
    >> size? v
    == 32
    
    >> reflect v 'size
    == 32
    
    >> query/mode v 'size
    == 32
    
    >> v/type
    == integer!
    
    >> query v
    == make object! [
        signed: false
        type: 'integer!
        size: 32
        length: 2
    ]
    
    >> query/mode v [size: type:]
    == [
        size: 32
        type: integer!
    ]
    
    >> query/mode v [size type signed]
    == [32 integer! false]
    
    >> spec-of v
    == [unsigned integer! 32 2]
    
  • d08f83 Using serialized form of vector value when displayed as a object's field in console's help

  • ac8e31 CHANGE: possible to initialize VECTOR using raw binary data

    Now it is possible to do:

    >> make vector! [integer! 16 #{0100 0200}]
    == make vector! [integer! 16 2 [1 2]]
    
    >> v: make vector! [decimal! 32 #{0000803F 000080BF}]
    == make vector! [decimal! 32 2 [1.0 -1.0]]
    

    Binary data must be in little-endian.

    This commit also enables limiting the input using the specified size.

    >> make vector! [integer! 16 1 #{01000200}]
    == make vector! [integer! 16 1 [1]]
    
    >> make vector! [integer! 16 1 [1 2]]
    == make vector! [integer! 16 1 [1]]
    

    Originally the size was extended instead and so behaving like when there was no size specified.

  • 4dd601 Conversion from VECTOR to BINARY

    It provides copy of raw internal vector data (in little-endian).

  • b71b42 VECTOR can be initialized using a block with CHARs

  • 661ee3 Added support to encode/decode images as uncompressed BMP with alpha channel (32bit)

  • 30f9d8 New natives rgb-to-hsv and hsv-to-rgb

    These natives were in Rebol2 and so why not to have them in Rebol3 again. Could be enhanced in future for batch conversion and or more precise version not depending on tuple value for HSV.

  • 6ea080 Improved terminal support on posix platforms

    Now unicode input is (somehow) supported and there are new key shortcuts for clearing line (CTRL-U and CTRL-K) and navigation skipping by words (OPTION key with left or right arrow)

    Known issues: When TAB is entered, the line navigation using left/right arrows and char deletion is wrong. Any idea how to fix it without disabling TAB-ed input?

    Note: Few lines of code were taken from Brian Dickens' Ren-C

Fixes:

  • 15ce19 Temporary fix in host-window using REBXYF instead of REBPAR
  • 9a2204 Crop output of block value in object field and better handling unset values
  • 7c8443 Increase the size of even queue as needed until 64K
  • 5493bd Add functions to update an event
  • fc3206 ATRONIX: Add missing va_end
  • 5be3b4 ATRONIX: Make sure string is null terminated
  • 3725a3 ATRONIX: Memory from OS_Get_Locale should be free according to its doc
  • c20872 TYPO b-init.c: actions -> natives
  • 067744 Don't initialize Windows subsystem yet
  • 9d2a67 Setting correct color after CTRL-C on Windows
  • 900e1d Better handling of CTRL-C in Windows console
  • 07e759 Better handling of CTRL-C in Windows console
  • ac07bd Support async read from clipboard
  • 414863 Make writing and reading clipboard symmetric
  • 3c7e7a Fixing math operation on VECTOR which is not at its head position
  • efef62 Added missing SPEC reflector types
  • cbc67c Words-of map normalizes KEY words to be always ordinary word
  • c600d8 Key words of MAP normalized to SET-WORDS
  • 5973f4 Added missing reflector's types
  • 3893ae Removing forgotten debug line
  • 770092 Forcing DELINE to convert CRLF to LF in header file emitter scripts to be compatible with previous changes where READ does not do that now.
  • b017f8 Correctly handling file argument of BROWSE function on Windows
  • 22bd6a TO-LOCAL-FILE/FULL adding additional SLASH when used in root directory
  • e313b9 Not using fixed values in vector indentation
  • 79724f MOLD/FLAT has no effect when used on VECTOR
  • d1c1e8 Crash when converting empty vector to block
  • 8c18f8 Better cleanup code in image unit test file
  • ecab38 ATRONIX: Fix a size limit error in decoding top-down BMPs
  • b1bc3c ATRONIX: inverting alpha channel values and default white color
  • 365be4 FIND/TAIL not working properly with CHAR as an argument to search
  • 5eb7fb Remove CRLF on Windows and LF on Posix platforms from tail of INPUT line
  • 9d3d85 Removing trailing CRLF from formed error message on Windows
  • 911097 Using same return values from OS_Browse on Windows like on Posix
  • c4e2b7 Removing forgotten debug trace line
  • 501a39 Resolving last error id on posix platforms, if provided value to Make_OS-Error is zero (on Windows there is already used GetLastError in such a situation)
  • f249af Preferring (void) instead of () for functions without any arguments
  • 75c3c6 Using LZMA unit tests only if LZMA is available in the build
  • 7f5355 Moved setting system/options/home directory shortcut (~) to final phase
  • d273f4 Fixing more compiler warnings

Changes:

  • f59f31 Moved some of VECTOR related definitions to sys-value.h so they can be shared with extensions.
  • da8353 Reorganizing system value definitions so they may be shared when making extensions

2018 December

Features:

  • af0eb9 WRITE action if used on FILE is returning the same file name instead of (closed) port!

    It enables chaining actions… for example:

    >> query write %xxx "a"
    == make object! [
        name: %/X/GIT/Rebol/release-x64/xxx
        size: 1
        date: 19-Dec-2018/0:17:51.338+1:00
        type: 'file
    ]

    Note: save function is now also returning file!

  • 26b2f5 Not throwing error when QUERY on INPUT port is run in a script not running in terminal (Travis)

  • 32732d Throwing error if QUERY on INPUT port fails from some reason

  • 542d8d Letting MOLD/ALL on datetime value to produce ISO8601 valid result

    Oldes/Rebol-issues#438 Oldes/Rebol-issues#2089 Oldes/Rebol-issues#2092

  • 1ebbbc Enabling T as a delimiter between date and time and Z as a zero timezone, so subset of ISO8601 datetime values are loadable from Rebol.

    Example:

    >> 2013-11-08T17:01
    == 8-Nov-2013/17:01
    >> 2013-11-08T17:01+0100
    == 8-Nov-2013/17:01+1:00
    >> 2013-11-08T17:01Z
    == 8-Nov-2013/17:01
  • 035df2 New BINCODE's read functions: SB (signed bits) and ALIGN (aligns bit stream to byte)

  • 4f6c2e Exported new library functions for better UTF8 text conversions from Rebol extension code

    New functions:

    RL_Get_UTF8_String
    RL_Encode_UTF8
    RL_Encode_UTF8_String
    RL_Decode_UTF_String
  • 823158 Introduced new command error

  • dbd6f6 Improved support for dealing with HANDLE types in extensions

    Originally, HANDLE was just pointer, but I enhanced it recently to also being able define its type, so one can on native side test, type of provided handle and not just blindly throw some pointers as an arguments. In this commit it is reflected also when dealing with native extensions.

  • 71442f Implemented block argument for QUERY/MODE for FILE, DIR, INPUT (console) and HTTP ports

  • ebb25c Enhanced descriptions for P64 and L64 compile-flags

  • c02753 Implemented QUERY/MODE for FILE, DIR, INPUT (console) and HTTP ports

  • 25255d Enable WITH function to accept also MODULE! as a context

  • ca7bb3 On Windows emulating ANSI escape codes for hiding cursor in console

    print "^[[?25l" ;<-- hides cursor
    print "^[[?25h" ;<-- restores cursor visibility

    Here is how it is done in other languages (mostly using ANSI too): https://rosettacode.org/wiki/Terminal_control/Hiding_the_cursor

    Note: this only hides the cursor.. the user input is still visible. To hide user input one can use:

    print "^[[8m"  ;<-- hides user input
    print "^[[28m" ;<-- restores the input visibility

    Or just using: ask/hide Related commit: ad681030ac488a146cca3c57f41136f99725f27d

  • ad6810 Implemented ASK/HIDE (which prevents echoing user input)

    It is implemented using standard ANSI escape sequences CONCEAL/REVEAL, which are now emulated on Windows using SetConsoleMode.

Fixes:

  • ff5175 Fixing some "This function declaration is not a prototype" warnings
  • e652dc Not using Dev_Checksum on host side as it is handled only in core.
  • a87941 Using isfinite instead of finite function on macOS as finite is reported to be deprecated
  • 548f5f Fixing some unused variables and variables never read (reported by xcode's analyzer)
  • d111b5 Adding missing last argument (recently added) in one location used on POSIX
  • 7eb820 WRITE/LINES of STRING! doesn't enforce terminal newline
  • f9a10b Fine tunning CRLF/CR conversion to LF - now the conversion is used with READ/STRING,
  • d09fff Turned off CRLF/CR conversion to LF when converting binary to string
  • 9190f1 READ/string crashes for UCS4 ("UTF-32") LE/BE files with a BOM
  • c82176 When argument for ?? function was not word or block, it was throwing an error
  • 6749aa Commented out unused (as probably unfinished) Encode_String function
  • 3e0312 Fix of the previous fix..
  • 6267d9 Letting FORALL to reset position, when make it through normally, but not on BREAK/THROW/ERROR
  • 0612b7 Making FORALL behavior compatible with Rebol2 and Red
  • a0f697 REWORD with multi-character delimiter bug
  • 1beb0d Not using temp variable in ASK function

2018 November

Features:

  • 998952 Pass indexes to ARRAY/initial function

    When calling ARRAY/initial with a function used to generate the values, pass the current index at the position the function is being called for, with each index in a block of sizes provided to create a multidimensional array being provided as a separate parameter to the function in the order specified in the sizes block. Uses APPLY so the function can optionally not take the parameters. Uses an internal function option for efficiency.

    See Oldes/Rebol-issues#2193 for details.

  • e977b2 Re-factored reb-config.h a little bit by moving LP64 definitions into system.r script and reverting definition of HAS_LL_CONSTS (now enabled by default and undefined where needed (old MSVC compiler only?)

  • 38f5ab Allow one RETURN: […] specification in function's spec-block, so one could use (some) Red functions without code modifications

    So far it is ignored during function evaluation, but when used, it is visible as a new section in function's help.

  • ed7a99 Indent function's help from following prompt line

  • 1eb672 Support for wildcards in string searches (refinements /ANY and /WITH in FIND and SELECT)

  • 9daa54 Modernized HELP (now as a module)

  • 93aa81 Using more robust posix implementation of the QUERY on console port

  • b1f770 Added unit test for QUERY on INPUT port

  • e33bb6 Implemented QUERY action on INPUT port to get information about console's size

  • fba3b1 Added colored function names in the WHAT function output and added max and min function name indentation

  • 02a397 A few optimizations after quick review of the original parse-xml code

  • 6ff6d7 Using Gavin F. MacKenzie's parse-xml+ script as a XML codec

    It's based on script downloaded from http://www.rebol.org/view-script.r?script=xml-parse.r I was using this script for years in my Rebol2 environment, so I think I can include it in R3 too.. so far I never had time to review it, but I believe, it could be improved and also there are some TODO notes inside the original script.

  • a9597c Added infix shift operators: << and >>

  • 1c5924 Added "bincode" tests for recently added key-words (STRING and UNIXTIME-NOW-LE)

  • 140a5d Added delta time counter for unit tests

  • 096f25 Simple GZIP codec

  • 849b0a Bincode: added STRING reading and UNIXTIME-NOW-LE writing key-words

  • 3a2262 Updated ZLIB to version 1.2.11. Enhanced COMPRESS and DECOMPRESS natives.

Fixes:

  • 6531fb ATRONIX: Close the socket before raising an error
  • 4918d8 ATRONIX: Always send a Error event in case of error
  • 16ae58 ATRONIX: Prevent SIGPIPE when writing
  • c905a8 Check return value from fcntl
  • b36f2e Added missing line break in HELP on objects output
  • 44ad70 Providing DUMP-OBJ function again as it is used not just in the help's context
  • 334a0b Missing #endif in the previous commit
  • d443cb Added missing X (columns) information of the console's `window-size on POSIX
  • b0e31e Adding missing integer unit test file
  • d4e023 Skip system dependent header part in GZIP test
  • 57cc08 Include UNUSED(x) macro
  • 458e0d Enable LZMA compression in Visual Studio make script
  • 00b1c9 Trying to fix some of lzma related issues reported by Travis
  • 902973 Trying to fix some of lzma related issues reported by Travis

2018 October

Features:

  • e46eff Initial support for (optional) LZMA compression in COMPRESS and DECOMPRESS functions

    So far it is implemented like the original COMPRESS, which is appending size of uncompressed data at tail of compressed data.

    To include the LZMA, there must be used USE_LZMA compiler's definition while compiling Rebol.

    LZMA source is from LZMA SDK version 18.05 from https://www.7-zip.org/sdk.html slightly modified for use with Rebol source.

  • 5ec778 Experimentally trying to protect system/standard object from modification

  • 30e89a Rewritten TLS protocol to support TLSv1.2 (may be still unstable)

    It's possible to turn on various traces using:

    system/schemes/tls/set-verbose 3
  • 25bbca Initial version of CRT codec

    Converts certificate raw data into readable tree structure. It is most probably not complete. But is usable in basic form for retrieving RSA key from a certificate.

  • 26dd2c Allowing ANY-STRING! for start-* functions in quick-test-module

    (so one can use for example URL as a test title)

  • 2b9b90 Revisited REB_HANDLE implementation and usage

    Initially the HANDLE value was just holding a pointer to function. But I think it is also useful to have HANDLE hold a series value, which can hold any internal data. In most cases GC can free this series once handle is not referenced. There will be also needed some sort of callback to dispose function for some more specific HANDLEs in future. That is not yet implemented.

    I also reviewed a little bit the CRYPT natives as HANDLEs are used in these functions to hold context. What I can say so far, HANDLE was also used as a CODEC entry (where I added test for the proper handle type) and extension dispatcher.

  • 3d347f Initial version of DER (Distinguished Encoding Rules) decoder (codec)

  • 3bf6c7 Basic WAV codec (decoder) written directly in Rebol

  • 69015f Forcing recycle at end of tests and showing memory stats

  • 3e9a71 Added counter of asserts in current test (so failed asserts are easier to find)

  • cec598 Initial version of BinCode => Binary DSL

  • 850d69 Improved FORMAT dialect so one can specify escape color codes (using money! value)

    Simple usage example:

    print format [$31.47 "some text" $0] ""

    would print red text on gray background (depending on color palette of the terminal)

    The string returned by format function would look like: "^[[32;47msome text^[[0m"

  • 23f22a Added a few test vectors for AES128 and AES256 cipher suite

  • 902547 Added recommendation note not to use RC4 as it is prohibited by https://tools.ietf.org/html/rfc7465

  • cf740c Making UNSET! as a conditionally "TRUTHY"

    It reverts changes discussed in above issues as I consider this behavior to be more useful and it is compatible with Rebol2 and Red.

    My main reason is to be able use PRINT inside ALL blocks without need to worry if these would affect the evaluation.

    Like in this case:

    	if all [
    		not headers
    		any [
    			all [
    				d1: find conn/data crlfbin
    				d2: find/tail d1 crlf2bin
    				print "server using standard content separator of #{0D0A0D0A}"
    			]
    			all [
    				d1: find conn/data #{0A}
    				d2: find/tail d1 #{0A0A}
    				print "server using malformed line separator of #{0A0A}"
    			]
    		]
    	][ … ]
    
  • c5cfb6 Adding function ENUM for making standard enumeration objects from given specification

    See the included test file for usage examples.

  • 7c07c7 Including WITH control function

    (evaluates a given block binded to specified context)

  • 7c2341 Small change in output of ?? debug function

    (so it is easier to copy the output for immediate use in console again)

Fixes:

  • 116bb8 DELINE / ENLINE does not check series' protection
  • dc2795 Using <sys/malloc.h> instead of <malloc.h> when compiling to 64bit macOS version
  • 8efcf4 Using new handle for extensions with additional check for handle type when importing extension commands.
  • c86393 Don't try to convert unknown OID to word in CRT codec
  • 65b664 Linking the new CRT codec file into mezzanines.
  • 6e4b8f Handle situation when internal connection of HTTP port is closed unexpectedly
  • 5819e6 Disabling verbose mode by default in DER codec
  • dc9a65 Correct formating in the DER codec warning
  • df7822 ROUND/EVEN/TO differences from Rebol2
  • 88a9d1 FIND/PART not working after skipping the series
  • 77e201 Adding missing RC4 test file
  • f3fb0a DER codec errors in some cases in verbose mode
  • 2bb8c4 Including DER codec as a mezzanine
  • dac96b Few additional castings to prevent compilation warnings
  • 253769 Disabling the original WAV codec written in C and enabling the new one written in Rebol directly
  • 4a2ee0 More fixes trying to lower number of Clang warnings
  • f3d35c Fix the comparison between unsigned and negative
  • f67b8a More fixes trying to lower number of Clang warnings
  • 7aa784 Warning: comparison of unsigned expression >= 0 is always true
  • ef2c89 More fixes trying to lower number of Clang warnings
  • d3a9cd Trying to get rid of pointer-sign warnings when using Clang
  • 664a01 Add some asserts to shut off coverity
  • 9448d9 Integer overflow when making TIME
  • bc24f6 Getting rid of "shifting a negative signed value is undefined" warnings using Clang
  • ab75f8 Fixes based on some warnings from Clang
  • 46398c Removed initial declaration inside for loop
  • 7b7166 Invalid value pointer for Expand_series in checksum's READ action
  • aa183b RANDOM can alter the sequence of series after PROTECT
  • e880ce RANDOM can alter the sequence of series after PROTECT
  • 4ff49a Removing ANSI escape char from White_Chars table
  • 470761 Using reversed order of codecs in ENCODING? function, so user defined codecs has higher chance to be recognized
  • 1e36d1 Revisited color attributes in ANSI escape codes on Windows so it is more consistent with POSIX terminals now.
  • 2f8ae5 Correcting typos in headers of some test files
  • f21d51 ENCLOAK and DECLOAK don't honor PROTECT status
  • badbba Fixed crash with CHECKSUM/key with /method using SHA384 and SHA512
  • e2d866 Keeping spec/ref value in CHECKSUM scheme specification as some HELP functions are looking for it.

2018 September

Features:

  • fb113c Added support for SHA384 and SHA512 checksums

    Replaced Brad Conte's SHA256 only implementation with Aaron D. Gifford's version which supports the new methods too.

  • 5149e4 Added functional /PART and /SEEK refinements for WRITE action on CHECKSUM port

    Possible usage:

    data: #{0bad}
    port: open checksum://
    sum1: read write port bin
    sum2: read write/part open port tail bin -2 ;port was restarted using OPEN
    sum3: read write/seek/part open port bin 2 -2
    all [sum1 = sum2 sum1 = sum3] ;== true
  • 78cc32 CHECKSUM implemented also as a scheme (so one can do incremental computation)

    Basic usage:

    port: open checksum://sha256
    write port #{0bad}
    write port #{cafe}
    read port ;== #{66B0326285B97FAC1ECFC9436374B8F079ED565A18BF7368079BB39A6703B383}
    close port
  • 7d9a21 Added new system function Random_Bytes, which fills destination buffer with given number of random bytes in OS independent way.

  • 263cb0 Improved comment explaining the DELTA value in Expand_Series function

  • 740aae Diffie-Hellman algorithm

    Using original Cameron Rich bigint implementation. Rewritten Richard Smolaks module from Atronix fork as a native functions.

    See DH-test.r3 file for usage example.

  • 5ce9c6 DER/BER UTC-time decoder as a codec

  • f3e243 Allow block! as an argument for REGISTER-CODEC function

  • efd3c7 Added PKIX as a basic codec

  • d79f41 Added a way how to create not native codecs (keeping the original codecs infrastructure)

  • 54097f Added DS_PUSH_END macro which pushes REB_END value at top of stack

  • c2dfd0 Letting Travis to run the quick tests.

  • 7ea6ef Modularized Quick-test and added a few more test cases

  • 1f6335 Load-PKIX function (as a part of the new mezz-crypt module)

  • 8d5bdd Including ENBASE/DEBASE unit tests

  • 55031b Initial RSA crypt integration

    The main RSA/Bigint code (Copyright (c) 2007, Cameron Rich) is taken from the latest Atronix version, but the Rebol native part was rewritten as a native while original Cyphre's version was as an extension. I also quite didn't like his RSA key as a simple Rebol object, modified the command names and removing padding setting (which was just confusing for me and source of possible problems)

    In this commit is also included a test file (tests/units/rsa-test.r3) as it really deserve some testing and it may be used as a hint how to use it.

    Know issues:

    • there is no way to release or re-use the RSA key handles.
    • when running from Visual Studio, the random number generator calls some assertion in cryptsp.dll, so it would be good to fix it or use own random generator.

    TODO:

    • possibility to import the key from some standard text files
    • it would be nice to have in-build RSA key generator
  • b54e1b Improving DEBASE so it can decode URL safe Base64 variant input even without using a /url refinement

    Previously this would throw an error:

    >> debase "qL8R4QIcQ_ZsRqOAbeRfcZhilN_MksRtDaErMA=="
    ** Script error: data not in correct format: "qL8R4QIcQ_ZsRqOAbeRfcZhilN_MksRtDaErMA=="

    The reason is that the input is using URL safe alphabet. With this commit when such a situation is detected, the decoder restarts itself automatically as if it would be used with /url refinement.

    NOTE: if you are sure that input should be in URL safe format, use the refinement to avoid unnecessary computations.

    Possible test:

    key: "qL8R4QIcQ_ZsRqOAbeRfcZhilN_MksRtDaErMA=="
    equal? (debase key) (debase/url key) ;== should be TRUE
  • e5e2a8 Base64URL encoding/decoding in DEBASE and ENBASE functions

    improves: Oldes/Rebol-issues#2318

    Possible test:

    key1: "qL8R4QIcQ_ZsRqOAbeRfcZhilN_MksRtDaErMA=="
    probe bin: debase/url key1
    probe key1 = enbase/url bin ;== should be true
    
    ;debase is working also when input is missing the padding
    key2: "qL8R4QIcQ_ZsRqOAbeRfcZhilN_MksRtDaErMA"
    probe bin = debase/url key2 ;== should be true
    

    For more info see: https://tools.ietf.org/html/rfc4648#section-5

Fixes:

  • f9f2ae Fixes for the previous CHECKSUM port related commit
  • e8a882 CHECKSUM/KEY argument doesn't allow binary! keys
  • 767fd0 Enbase is not working correctly with series which are not at head
  • fb7292 Removed declarations inside FOR loop in code from previous commit
  • 73496e Missing file change for commit: https://github.com/Oldes/Rebol3/commit/69edc861a9543664adf249d9ef58151791252f77
  • 3b1dc9 Add a /dump-series refinement to STATS
  • 56a8a6 Avoid undefined behavior caused by malloc(0)
  • b9eadc Decrease the Series_Memory when the series is freed
  • dae8ad Correct the allocated memory size in stats
  • aa648e SER_EXT only marks data in external memory
  • 24b748 Do not crash if the series size doesn't match segment width
  • 69edc8 Copy the whole union in the series
  • 289480 Add a comment to eliminate warning from clang
  • 74622d Fix parameter to Remove_Series
  • e25a5d Fix Remove_Series with big len
  • b8e0a9 Fix bias overflow in Remove_Series
  • f3f06b Use macros for overflow detection
  • 7eca4c Check overflow of size calculation in series expansion
  • afb328 Adding original Smolak's TLSv1.0 protocol as used in Atronix fork
  • 0c54e7 Resolving some compiler's warnings
  • b5378c Diffie-Hellman algorithm (missing files)
  • 2967a2 Don't allow function! as a path argument of the CD function
  • db842b Avoid heap-buffer-overflow
  • d85fda EMPTY? is not working with directory port as it was in Rebol2
  • 1a4c3a Issue #2319 - LEXER: sign before POUND char like [-#"a"] is not recognized as a word and is misinterpreted
  • c711c7 Typo fixed
  • e754d1 Using rsa/verify instead of rsa/validate
  • d3393a Avoiding some of conversion warnings in VS under 64 bit build
  • a1ce4b Better handling missing padding of the DEBASE (64) input
  • a01c68 Additional fix for previous feature
  • 8ca681 DEBASE is not able to decode valid input in some cases

2018 August

Fixes:

  • dde29e Added missing copyrights for implementation of SHA256, RC4 and AES algorithms

2018 July

Features:

  • 64fbcc Just a very basic WAV codec (decoder)

    To be honest, I'm not sure how useful it is as one gets just binary, but no aditional info. It should return a sound object instead! So far it can be considered just as a minimal codec example.

Fixes:

  • fc5b8a DELECT Bypasses PROTECT
  • 942470 Better handling ANSI escape sequences (on Windows)

2018 June

Features:

  • 2231a1 Add PAIR! support for REPEAT

    This change allows PAIR! values as value argument of REPEAT. This enables convenient traversal over a 2D space:

    >> repeat p 3x3 [print p]
    1x1
    2x1
    3x1
    1x2
    2x2
    3x2
    1x3
    2x3
    3x3

    Similar to REPEAT over decimals, REPEAT over pairs implies a start of 1.0x1.0 and a default bump of 1.0 for each component. The first pair component ("X") is varied first, which is in line with pair!-based indexing into image!s.

    For the sake of completeness, PAIR! support is also enabled in the legacy C-style FOR:

    >> for p 10x10 15x20 5x5 [print p]
    10x10
    15x10
    10x15
    15x15
    10x20
    15x20
    
    >> for p 3x1 1x2 -1x1 [print p]
    3x1
    2x1
    1x1
    3x2
    2x2
    1x2
  • 6c399b Updating macOS' prebuild R3 executable

  • a35168 New native: NAN?

    Returns TRUE if the number is Not-a-Number. Example:

    >> nan? 1
    == false
    
    >> nan? 1.#NaN
    == true
    
    >> nan? 1.0 / 0
    == false
    
    >> nan? sin 2.0
    == false
    
    >> nan? asin 2.0
    == true
    
  • a13b33 Updating Windows' prebuild R3 executable

  • cd09db New natives ARCTANGENT2 and ATAN2

    ATAN2 is direct mapping to libc's ATAN2 function without any conversion so does not accept integer types as an input.

    ARCTANGENT2 is more user friendly (but little bit slower) - it uses pair! type as an input of the coordinates and result is in degrees by default (may be changed using /radians refinement)

    Example output:

    >> arctangent2 10x-10
    == -45.0
    
    >> arctangent2/radians 10x-10
    == -0.7853981633974483
    
    >> atan2 -10.0 10.0
    == -0.7853981633974483
    

    NOTE: notice that ATAN2 is using the input in classic order (Y and X)

  • 72d815 Faster trigonometric functions (without conversions and bounds checks)

    While the original functions SINE, COSINE, TANGENT and ARCTANGENT works also with degrees and do better output formating, these new functions: SIN, COS, TAN and ATAN expects only value in radians and are directly mapped to libc trigonometric functions. They will be faster, but one must expect different output in some cases!

    Difference example:

    >> tangent/radians (pi / 2)
    == 1.#INF
    
    >> tan (pi / 2)
    == 1.633123935319537e16

    NOTE: these functions are available only with INFINITY support (needs 1.#NaN value)

  • 669f86 Modified the structure of the Rebol native code specification in C files

    Now it looks more like the default Rebol source code header banner. This is full example of the native function including it's Rebol specification:

    /***********************************************************************
    **
    */	REBNATIVE(sin)
    /*
    //	sin: native [
    //		{Returns the trigonometric sine.}
    //		value [decimal!] "In radians"
    //	]
    ***********************************************************************/
    {
    	SET_DECIMAL(D_RET, sin(VAL_DECIMAL(D_ARG(1))));
    	return R_RET;
    }

    NOTE: these definitions are parsed in tools/make-headers.r script At this moment the parser don't work with C preprocessing - so it would collect also code from #ifndef blocks - this must be improved!

  • d7fd2e Added support for loading NaN (1.#NaN) and Infinite (1.#INF) values and using them in decimal computations

    This feature is optional and can be turned of by using USE_NO_INFINITY compilation define.

  • d5a978 Define ~ as a shortcut for system/options/home

    So it is like in *nix shells and one can use it like:

    >> cd ~
    == %/X/Rebol/
    
    >> cd ~/..
    == %/X/
    
  • 5fa2db Added manifest file into Windows resources

    and renamed ico file

  • c011a2 Unifying return and error handling from the original access-os function

    Instead of 0 it returns true as a result of successful set operation Instead of returning none, it throws not supported on your system error when return value is of type OS_ENA It throws error when any other error happen.

    So for example on Windows it looks like:

    >> access-os/set 'pid 33488 ;<-- terminates process
    == true
    
    >> access-os/set 'pid 33488
    ** Access error: process not found: 33488
    ** Where: access-os
    ** Near: access-os/set 'pid 33488
    
    >> access-os 'euid
    ** Internal error: euid not supported on your system
    ** Where: access-os
    ** Near: access-os 'euid
    
  • 64b724 Making at least basic SIGTERM and SIGKILL signals be mapped to Os_Kill on Windows to be compatible with posix version…

    So access-os/set 'pid [32464 15] will terminate process on all systems.

  • f7ed5e Add a native 'access-os'

    Based on commit: https://github.com/zsx/r3/commit/275c8672810f2beb760ecfeebcf82769da76b78e But slightly modified - the OS_E* definitions were moved to reb-defs.h file

    Original commit message:

    It's almost like what's in R2, with the addition of 'euid and 'egid, and additional signal number to kill the process:

    access-os/set 'pid [2123 9] ;send a signal 9 (SIGKILL) to process 2123

  • 5c5241 Added block with define flags into make-settings so one could use these in the compilation using generated makefile

  • aa10d1 Image codecs are now included only when requested using compilation defines

    To enable these codecs one must use these defines:

    USE_PNG_CODEC
    USE_BMP_CODEC
    USE_JPG_CODEC
    USE_GIF_CODEC
  • a7b056 Automatically collecting base code from C sources

    If such a comment is used in C file:

    /**********************************************************************
    **  Base-code:
    
    	if find system/codecs 'wav [
    		system/codecs/wav/suffixes: [%.wav %.wave]
    		system/codecs/wav/type: 'binary!
    		append append system/options/file-types system/codecs/wav/suffixes 'wav
    	]
    
    ***********************************************************************/

    The Rebol code from it is extracted and included just after content of the src/mezz/base-defs.r

    Note that at this stage there is just a minimal system available, so one must be careful, what code is used.

  • 582e43 Picking the right PICK

    In Rebol2, picking value with index 0 was always returning null. In R3-alpha it was changed that zero index was working like index -1… more at this blog http://www.rebol.net/cgi-bin/r3blog.r?view=0173

    I decided to revert this change and let it working as before (and so be compatible with Red too)

    So now it works for example like:

    >> pick tail "123" -1
    == #"3"
    >> pick tail "123" 0
    == none

    and it is also consistent with AT positioning:

    >> at tail "123" -1
    == "3"
  • 690dff REDUCE/NO-SET working also with set-path!

    >>  reduce/no-set [x/1: now/date]
    == [x/1: 9-Jun-2018]
  • 338518 Rename SPLIT's /INTO refinement

  • cfe455 Improved CD shortcut command

    fixes: Oldes/Rebol-issues#272 Oldes/Rebol-issues#2309

  • 7af09d Some improvements in HELP output

  • 829bd7 Added missing updated file for previous protect/permanently feature

  • 053846 Added /permanently refinement to protect function

    By default, values protected using PROTECT function could be unprotected by user using UNPROTECT function. When /PERMANENTLY flag is used in the PROTECT call, the value will be stay locked until end of its time.

Fixes:

  • fdc05f Bitset not allowed in to/thru block
  • b940cb PARSE string using tag! doesn't consider the < and > when used with to block!
  • b95ebf Removed recently added NAN? native and replaced NUMBER? function with native equivalent which properly checks if decimal value is not a NAN
  • 89a055 Using FREE_MEM instead of free directly
  • f27e71 Failure when system/script/args > 1022 bytes
  • 9adf4b One more fix of the appveyor url
  • 50734e Changing file name of the icon used in MSVC project generator
  • d1bf53 Updated links in appveyor and travis badges to follow rename of the repository from R3 to Rebol3
  • 4f5c88 Updating Linux's prebuild R3 and temporary forcing TO-WORD conversion in the native name test in make-headers.r file (because old R3 was keeping : char when converting set-word to string using FORM)
  • 8feac4 Using ATAN instead of ARCTAN
  • 722a9a Warning: conversion from 'REBU64' to 'REBYTE', possible loss of data
  • 97e421 Warning: conversion from 'size_t' to 'REBYTE', possible loss of data
  • 973a8d Warning: 'N_access_os': not all control paths return value
  • 0427be Warning: initialization discards 'const' qualifier from pointer target type
  • 879314 Warning: implicit declaration of function 'reb_qsort'
  • cee4ce Added casting to prevent "signed/unsigned mismatch" warning in Visual Studio
  • 6cfc9d Add an assert in Loop_Each to help coverity
  • 9a9b19 Fix break from remove-each
  • e41a25 Fix foreach with set-word
  • 4966f0 Check overflow in Loop_Integer
  • f2d3cd Let TANGENT 90 return an infinity value instead of throwing overflow error
  • 956119 Removing POWER related unused code
  • 045fff Zero to the power of zero is 1 instead of 0
  • 8ea1b1 PORT! state binary appears empty when it is not
  • 3b0f7a Check REB_TIME for timeout parameter
  • 8ec6e5 Rename OS_Wait_Process to OS_Reap_Process (and add it to os/posix)
  • 918b61 Fix the poor performance in network writing
  • 02c203 Correctly close IO device
  • 75a5de Correctly dealing with defines for clipboard device in the devices table
  • 3263da Updating system version to be 3.. and not 2.. anymore
  • 1c86e0 Embedded test extension not setting size of the created image
  • 6202a8 DECIMAL! picking acting as SELECT, though it PICKed in Rebol2
  • 59f9cc Check integer overflow before arithmetic operation
  • 2abd4c Trap evaluation attempts of ET_INVALID values
  • 27278b COMPOSE/into of non-block doesn't insert into target
  • 6d14ee REDUCE/into of non-block doesn't insert into target
  • f4c48b Removing code which is no more needed (there is no RETURN/REDO anymore)
  • 7e61a4 Type-check call of TRY/except handler
  • bf34bb Rename variables to improve clarity
  • 8e918f Removed printed output if CD command is used without any argument
  • 71a1fa Removing mentioned functions DOCS and WHY? in HELP output (as these were commented out in previous commit with other outdated help functions)
  • eb3b7c HELP was providing invalid info if value of path was of ERROR! type
  • eea737 PROTECT-ed series are not protected against REMOVE-EACH

Changes:

  • 82f4c8 Renamed TAN color to TANNED as TAN is now used as a trigonometric function

  • a54c69 ARCSINE and ARCCOSINE returns 1.#NaN where they were throwing error before (if supported).

    For example:

    >> arccosine/radians 2.0
    == 1.#NaN
  • c87742 Lone hash sign is not none! anymore (if not defined using USE_EMPTY_HASH_AS_NONE define) to be compatible with Red language

2018 May

Features:

  • ecee1a Adding different output for form/mold functions used on word types (as it was in Rebol2)

    So it is again:

    >> mold #foo
    == "#foo"
    >> form #foo
    == "foo"

    NOTE: it also affects conversion using TO string! (and string variants like file!)

    Related ancient blog article: http://www.rebol.net/cgi-bin/r3blog.r?view=0304

  • d60466 Added some comments and improved output in the host test extension

  • c1857f Automatically collecting symbols (like SYM_PLAY) so one can use them in C code without adding new words into boot/words.r file (which is still in use)

  • 38df5c Added support for HTTP redirection

  • b03dd6 Added AppVeyor automated building

Fixes:

  • 00453d FIX: Mold of an Image with length of multiple of 10
  • 2bcdbc FIX: Use 32-bit for image pixel
  • 4bbec0 Modified host test extension so it is possible to compile it again
  • fa0c04 Additional test for existence of the event custom type value in the http scheme
  • 2a9b7b Do not guard port/state
  • f9fed0 Treat unhandled events as no activity in Awake_System
  • fbd300 Dynamically change resolution passed to OS_WAIT
  • c27cbc Add a /only refinement to wait
  • 84ed8b Fix invalid memory access
  • 931dcf Fix the missing port returned from wait/all
  • c7e259 Fix infinite loop in wait
  • fb1ca8 Moved recycle call out of the timing so it does not affect its measurement
  • d2d0aa Patch to prot-http.r to not fail on tiny webserver (http://www.rebol.net/cookbook/recipes/0057.html)
  • d2a06d Updated prot-http script header
  • fed3fb Improving previous commit (https://github.com/Oldes/r3/commit/38df5c9d0a83a9ccc1cc6ba2df4b087ce4adb229) so urls with not standard ports are handled too.
  • 3b89ed Query on directory was returning garbage size info.
  • 1c737e Better date handling… (to date! is now working on idate string)
  • 15f8e4 Query on URL was returning just none
  • ae93f7 Updated HTTP scheme to version 0.1.4 (Richard Smalak changes from Atronix fork)
  • 3c124a Preparing target dirs where is copied resulted exe if Visual Studio project is used (so building does not fails in automated process)
  • bc24cd Removing user input if making VS project from build script (so it can be used in automated builds)

Changes:

  • 8eda0e Removing info? function (as it duplicates query), and having exists? returning logic value.

2018 April

Fixes:

  • 2458be Reverting previous try to fix VC warning as MingW does not like it at all.
  • 472b2c Better fix for previous (warning) fix (as Clang requires char ** for second parameter of main function)
  • 44d5e3 Preventing signed/unsigned mismatch warnings in Visual Studio
  • b69272 Removing unreferenced local variables
  • 1870b5 Preventing assignment from incompatible pointer type warning
  • 4c1fba Forcing deletion of b-init.o file so compilation may be used without cleaning everything
  • 5613da REBNATIVE(browse) should trap on OS_BROWSE failure, not success.
  • 008708 Add check for 64-bit macOS in Try_Browser.

2018 March

Features:

  • 70e92e Windows: updated prebuild r3 exe and changed path to mingw32 folder
  • fe0886 Added support for copy/deep and copy/types on map! datatype

Fixes:

  • 259b25 MT_Map must have only 3 args

2018 February

Fixes:

  • d7eb95 ATRONIX: Avoid overwriting the variable in testing
  • fa10bd ATRONIX: Initialize remote_addr unconditionally
  • 4b990d ATRONIX: Put accepted connection in non-block mode
  • 982eb0 ATRONIX: Do not oversend data
  • 04e7a1 ATRONIX: Check for error in port CLOSE
  • 755395 ATRONIX: Do not free port/state

2018 January

Features:

  • 8c9b3a Cleaning project files directly from Rebol instead of using makefile

Fixes:

  • 7091c9 Not using linear search for maps of small size as it was causing crashes in rare cases.
  • 7ce369 [Linux] Save signal mask when jumpping
  • e06825 Use {STDIN,STDOUT}_FILENO instead of 0, 1

2017 November

Features:

  • e5638c Does not CLEAN on each build command (for faster re-compilation)

  • ca2054 Added SHA256 method into CHECKSUM native function.

  • 834a11 AES encryption native function

  • 102a5d RC4 encryption native function

  • acdabd Handle! can contain its name which may be used for handle type check and can be recognized by GC to free its linked resources

  • 8cdfa2 Let handle! be visible as a result in console

  • 3a2902 Updated travis script not to depend on r3 from rebol.com

  • e489fe Native's specification may be defined directly in C code using special header structure

    This is based on Hostile Fork's work on Ren-c, just without using his INCLUDE_PARAMS_OF_* macros. It is still possible to use the old way definitions, so the original code does not have to be completely modified.

    For example:

    /**********************************************************************/
    //
    //  test-native: native [
    //	  {This is just a native function for test purpose.}
    //	  'value [any-type!] "This can be value of any type"
    //  ]
    //
    REBNATIVE(test_native)
    {
    	REBVAL *val = D_ARG(1);
    	printf("Value has type ID: %i\n", VAL_TYPE(val));
    	return R_ARG1; //return the same value
    }
  • e86d9b Updated pre-compiled r3-make-osx

  • f68dbe Updated pre-compiled r3-make-linux

  • cfa54b Adding line break after [escape] message so prompt starts on a new line

  • 0395c7 Multi-line input support for console

    Rewritten version of commit 10070b44f6565dccc3c13f7769b630b60cf31ccc which was prepared by Andreas Bolka, based on the code proposed by @sqlab via AltME.

    There is also improved part of handling Windows subsystem and missing title resource text for build using mingw on Windows.

  • f61b6a Errors printed in purple color

  • 2f91cf Windows - removed hardcoded console title and setting the title using string defined in resources file

  • 51b357 Visual Studio project using Windows console subsystem by default

  • 17c7e7 Script for making Visual Studio project for building Rebol3 on Windows

Fixes:

  • 7153c2 Using common function header formating for GetConsoleHwnd
  • 0e8884 Input from console on Windows was not working correctly with unicode non latin chars as the console was allocated twice.
  • 7596f2 Modified TODO text as it does not make sense to create random IV in the AES encryption;
  • 3d5f32 Aes native was not defined because of invalid definition in the header
  • 2ad2f1 Correctly handling multi-line input from PASTE into console in Posix version (tested only on Linux so far)
  • 07831f Posix stdio related changes as were made by Andreas Bolka and Hostile Fork
  • b1f243 By Hostile Fork - Quietly tolerate EINTR in POSIX %dev-event.c
  • a0b5e3 By Shixin Zeng - Pass correct length to Deline_*
  • 626105 By Shixin Zeng - Remove free'd serieses from GC_Infants
  • 9e2f7a By Shixin Zeng - Do not increase tail before extension
  • 679215 By Shixin Zeng - Fix a crash caused by integer underflow
  • b46f6e By Shixin Zeng - Fix a heap-buffer-overflow found by AddressSanitizer
  • 0455c0 Redme text improved
  • eb70ff Cosmetic change in the readme file.
  • dce47d Cosmetic change in the readme file.
  • e5e419 Prevent warning C4005: 'min': macro redefinition
  • 1a0569 Added initialization of local pointers to prevent Visual Studio errors C4703: potentially uninitialized local pointer variable
  • ff41a1 Locally disabling warning C4146: unary minus operator applied to unsigned type, result still unsigned, as it blocks compilation in Visual Studio
  • d90604 Do not use the system qsort

2017 October

Features:

  • 820dff Prebuild r3 binary (version 0.2.40) for making OSX versions on macOS using the interactive script

  • f642f2 Posibility to use pipe() where pipe2() is not available

  • 470451 Prebuild r3 binary (version 0.2.40) for making OSX versions on macOS using the interactive script

  • 6a8303 Posibility to use pipe() where pipe2() is not available

  • b1529a Improved interactive build script to work on Linux (prebuild r3 binary included - version libc-2.3)

  • 459138 Updated boot banner

  • d8486d Adding interactive building script with prebuild Windows r3 binary

  • 1aa73f Added support for building 64-Bit Windows version (0.3.40)

    • moved some defines from reb.config.h into makefile (using the make-make.r script)
  • f73266 Added builded libraries and host.exe into gitignore

  • 15fc76 Added support for building using makefile on Windows OS

  • a819d6 Added icon and resources file for Windows application builds

  • 2c22bd Additional comments for the previous commit

  • bdeb75 Support for ANSI escape sequences on Windows also if compiled with Console subsystem

  • 592f66 Added support for Windows build with VS2017 and VS2015

Fixes:

  • 26aa05 Clipboard is not yet ready on posix platforms
  • aa4c06 Make sure that home directory is absolute on all platforms
  • 3c25db Warning: implicit declaration of function ‘write’ and 'read'
  • 4b59d5 Warning: implicit declaration of function ‘pipe2’
  • 563f23 Warning: implicit declaration of function ‘close’
  • d1f0b0 Dylib was defined on wrong OS
  • b95ae6 Using correct library extension on OSX
  • d78caf Using pre-prepared makefile for Linux
  • f06bda Correcting make settings file extension
  • 923ca9 Adding missing posix headers needed for the CALL enhancement
  • d7f26c Extended CALL native command
  • 1f3e2e Using correct argument type to avoid compiler warnings
  • d962f6 Move integer arithmetic operations into their own functions
  • 2e9881 Removing use of INLINE in some functions to avoid compilers warnings of type:
  • db51a2 Adding correct decoration around Emit_Decimal function so it is recognized by the make-headers.r script and so avoiding warning during compilation.
  • 04c8c2 Added casting to prevent compiler warnings
  • 65200d Correct path to Visual Studio 2017 dev command
  • 973d39 ANSI escape sequence handling was not working if compiled with Windows subsystem

2014 July

Features:

  • 9b724d Adding some colors to list of help commands
  • 9eb7dd Adding color to prompt and result value.
  • f228be Reversed lookup order in the vcbuild so the latest version of VS is used if found.
  • 31899a ANSI escape sequence emulation under Windows.

Fixes:

  • f76852 ANSI colors are used, where are not expected.
  • 97a0f4 Changing order of values for setting cursor position (Esc[Line;ColumnH)
  • c6b17c Keeping the OBJS list sorted alphabetically.
  • 81016e Adding missing objs/f-dtoa.obj into makefile.vc
  • 7b2489 Correcting path to VS12's vsvars32.bat
  • d02267 Correcting OS_ID version for Windows