Releases: Oldes/Rebol3
Rebol v3.21.0
This release prioritizes compression enhancements with libdeflate as the new default for deflate/zlib/gzip, plus extension support like Brotli, Deflate, Zstd, and Zlib-ng.
Features:
6492ecAdd link to latest Rebol/Zlib-ng extensionaa784bAdd link to latest Rebol/Brotli extension8d8987Add link to latest Rebol/Zstd extensiona1db7aAdd link to latest Rebol/Deflate extension7df1d4Addrecycle/poolto free empty memory pool segments80a468Add optional LZ4 de/compression283062Add optional fast in-memory LZAV de/compressione2a2d2Allow extensions to register new compression methodse174bfNewdidnative returning TRUE when given a truthy value645a24Enhance HTML-entities codec with hexadecimal variant support796816Allowmake tuple!to accept decimal values7562e9By default return Rebol tuple color from therequest-colorfunctionc7beddIncluderequest-colorin macOS builds3f484bIncluderequest-dirandrequest-filein macOS builds
Changes:
dc0422Extend compression method registry when neededbc42bfRefactoring of SYS-LOAD and SYS-BASE (#153)ce497aUpdate link to the latest MiniAudio extension (version 0.11.23)bf8dbcUsinglibdeflatesources fordeflate,zlibandgzipcompressionsf14224Gracefully release memory in debug builds to help detect leaksd34ea4Update xxhash source to version 0.8.3a7d7e3Additional fixes related to Register_Compress_Method integratione349a7Initialize optional compression methods using Register_Compress_Method57b590Update Brotli source to version 1.2.076425dUnify definitions of endianness-related macrosad0e33Disallowtrim/withon binary input298f05Integrate host files into Rebol library
Fixes:
2c484fRegression related to #153 and #15507bfe8Properly parse double quotes in Unicode escape sequences (#154)25ba57Do not dispose cryptography when it is not included683095Handle TLS handshake record received in multiple chunksda4162Pass none as the error argument when an extension returns an error without a message47fd36Validate handle data is not NULL before releasingc8397bMissing argument for throw-http-error in the HTTP scheme67f5daTLS protocol: handle site using TLS1.2 with rss_pss signature algorithm380b4dFind/any returning incorrect result2b412aWebSocket module - correctly handle fragmented messages0dc36cProperly handle escaped characters in XML attribute values61a579Force string conversion when reading URL with /string refinement0a7323Force string conversion when reading URL with /lines refinement25a3d1Gracefully handle invalid TLS extension length and improve TLS 1.2 support4dbe45Throw error for unsupportedbinary/readspec values
Rebol v3.20.0
Key highlights include:
🔒 Enhanced Security: TLS v1.3 and advanced RSA encryption methods.
📊 Vector Datatype Boost: New math, statistical queries, sorting, and manipulation functions.
🌐 UTF-8 Strings: A fundamental shift to UTF-8 for robust, modern text handling.
🔧 Struct Overhaul: A complete reimplementation of the struct! datatype.
Features:
f190daAdd TLS v1.3 protocol support1d769fAdd support for RSASSA-PSS sign/verify and RSA-OAEP encrypt/decrypt46e522Literal none value:_39252bAllowenbaseto accept integer values for encodingc5b014Includeprime?native returning TRUE if number is a prime numberf287b8Implement APPEND, INSERT, CHANGE and CLEAR actions on vector66191cImplement AND, OR and XOR operations for pair datatype8d2849Implement AND, OR, XOR, and REMAINDER operations for vector datatype4afdacEnable conversion from char to issue usingto-hex668bdcUsing UTF-8 internal string encodingd4ccfcImplement pair comparisonb2d3beImplement statistical queries on vectors2c863cImplement SORT for vectors616786Improve vector setter/getter calls0583e5Used shorter codec73b2dImplementsort/skip/allon blocks1cb094Introduced--no-colorargument which reduces use of ANSI color escape sequences390fb2Braille text codec1296ddNormalize vector and struct type names; improved struct comparison using computed field type hashes.9970dbEntab/detab accepting binary input846e44Included link to the text-to-speach (Speak) extension1ffbf2Add function to remove ANSI color escape codes from string or binary
Changes:
72af36Allow 'number?' to accept 'unset!' valuef2326fEnable MBEDTLS_PKCS1_V2186b96fUse hexadecimal integers instead of binaries in the TLS protocol8efd14Update binary value interpretation inmake bitset!dialect550346Use strict construction syntax for bitsets858ba8~used assystem/options/data(REBOL_HOME) and not as user's home directory669b39Separate concepts of HOME and REBOL_HOME985db7Vector min/max code reduction34c836Implement vector-vector math; Vector math now always creates a new vector!23d3d4Display length of vectors in the help output729b7eNew strict vector construction, extended make/to vector spec78801aDisallow UTF-16 surrogate codepoints in strings and charactersc3beafUse of 'IS_UTF8_STRING' macrob18491Rename 'Print_OS_Line' to 'Print_Line' and 'Prin_OS_String' to 'Prin_String'acd15fRemove unused 'uni' argument from Prin_OS_Stringa93ae3Replace internal variable-width character handling with UTF-8 stringsebe607Don't auto-resolve percent encoded characters within URLs3d8a00Reimplementstruct!datatypec180deVector values are always molded using a construction syntax112c9dSeries map keys are protected
Fixes:
969f3dHandle HTTP redirects to prevent bad requests in some cases6ef022Correct 'find' behavior for tags in stringsddc71cRegression when compiling with RAW_MAIN_ARGS defined6b9326Minor 'prebol' update with improved script header handling4f5fd4Regression in 'mold/all' string handling5c7924Silence several MSVC warnings027ebeUse robust prime tester to handle small and negative numbers76204cLoud errors when no "HOME" variable exists2e7e0fCALL/INPUT truncates values containing a null character732098find/lastbinary regressionc0adbcFor now always allocate HOB's data memory even for pointerse06182Don't include trailing LF when enbase 8 bytes with base 21973a6change/partwith an Unicode string881ad1continueinsideforeachloop regressionb9fa81Query on empty file path22ce4eMold string containing null character944990Prevent occasional missing spaces in REFORM output783377Detect UTF-8 series when copying from SCAN buffera4f3e4Handle set operations correctly with Unicode strings4b38b0Correct /part length when modifying Unicode stringsf8c29dCorrect binary length after copy23c7d5Use safer method to decode Unicode character sizeacd9f7Prevent creation of invalid UTF-8 characters8ce894Conversion to string from Unicode surrogate ...
Rebol v3.19.0
Features:
42a79cAdd 'identify' module for file type detection436154Expand mime-types codec to recognize more common types9299d4Enable AES-NI for hardware AES acceleration on some Intel processorsdb8d5fAdd support for DES and Triple-DES ciphers36c652Registration Data Access Protocol (RDAP) scheme5e629eAdd new 'logger' mezzanine-level module383c3aAutomatic HTTP cookies support65b1eaDecode X509Extension OID840c6cDecode OIDs for SECG curves235c74Optimize CSS codec with updatesb23365Included Cascading Style Sheets (CSS) utility module744ef5Add links to online documentation69ee04Add missing docstrings and optimize withajoin9a33e7Implemented PUT/SKIP as a counterpart of SELECT/SKIPa3417eAccept any-word as an object key96b13bOptimize memory usage by avoiding power-of-2 rounding when resizing large seriesab7ba2SubRip Subtitle codec (loading/saving*.srtfiles)20ee9fUpgrade WebDriver module to version 0.2.1a24fd4Upgrade WebSocket module to version 0.2.18171edfractionnative which returns the fractional part of a decimal valuee11a14Include minimum and maximum results when requested object in a query on a vector value9457bdAdd functionality to find maximum and minimum values in a vector usingquery219945Add functionality to find maximum and minimum values in a vectorf784d2Include optional module for GitHub API integration70027fForce external mbedtls code to use Rebol managed memory allocator (so it's memory usage is counted in stats)f82cddForce external compression code to use Rebol managed memory allocator (so it's memory usage is counted in stats)3994afImproved file-related time values precision on POSIX platforms and resolved correct creation time on macOS5aa41bImproved file-related time values precision on POSIX platforms and resolved correct creation time on Linux (when possible)1c1374Implemented date creation using numbers for the time partse805dbPossibility to get info if there are any data available in thestdin
Changes:
4359a8haltnow stops evaluation and returns to REPL prompt0c4125Updated Blend2D module version5e9180Better error message when header is not validfa1a51Modifiedno-headererror message75bd4fAllowmime-type?to acceptnoneand protect its valuesda57dbZlib source updated to version 1.3.1.1a00220Updatemime-type?to accept words as input64b9d8Movedfile-typesfromsystem/optionstosystem/catalog53e65dEnsure all made series are cleared4a73cbEncapsulate all codecs as modules8b4ba0Updated Mbed-TLS sources to version 3.6.3fdf5d6Use more efficient OID decoding methodbb3547Replacesys/log/*function calls withlog-*9f5315Allownonevalue as a parse rule0fb5b1Allowparen!inattemptfunction0b7c67Allowunsetcondition in acaseblock of cases381bd5Convert decimal values to dates using Unix time with decimal precisionaf420cUpdated HTTPd module to version 0.9.4df369aEnhance map values help text for clarity38f47fRefined the port state handle initialization917fe8Release port states early when possible to avoid waiting for garbage collection93ff79Use memory pools for allocating handle context data when possible213ae4Use a handle for the directory port state, similar to a file porte91639Updated Mbed-TLS sources to version 3.6.20dded2Updated QOI image codec source code021402Not usingMAKE_MEMwhen allocatingMidi_Ports_Pool3b949eDon't automatically clear newly allocated memory666bc5Usingcallocinstead ofmalloc+memsetwhen allocating a zeroed memory81bd5apickzandpicknow return the same results when used with a bitset77da8eOptimize memory pools2d9961Use handles instead of binaries to hold native port states03c894Console width requests no longer throw errors, allowing for code simplification5fc91aMadeforeachconsistent withkeys-ofin themap!contextf5b43cEnable JIT on macOS (required by Blend2D drawing extension)babb36Don't throw an error when querying console info if the console is not available
Fixes:
- [
76ee1e](76ee1e3...
Rebol v3.18.0
Important (possibly breaking) change in this release
The QUERY action was modified to always expect field as the second argument!
So where before was used:
query/mode %some-file.txt 'sizeIt is now just:
query %some-file.txt 'sizeAlso before there was used date as a field name for the modification date. Now should be used modified instead as there is also possible to resolve the creation date (created) and the last access time (accessed).
It was also possible to access all fields as an object by not using the mode refine. It is still possible by using object! as the field value, like:
query %some-file.txt object!But in case when more fields are required, preferred way is to use a block, like:
>> query %./ [type name modified accessed]
== [
type: dir
name: %/C/Users/oldes/Rebol/
modified: 16-Jul-2024/23:24:42.472+2:00
accessed: 20-Jul-2024/19:01:30.83+2:00
]Or when just values are required:
>> query %./ [:type :name :modified :accessed]
== [dir %/C/Users/oldes/Rebol/ 16-Jul-2024/23:24:42.472+2:00 20-Jul-2024/19:01:30.83+2:00]It is recommended to use this version when running Rebol as a Linux service! (The high CPU usage issue was fixed)
Features:
89b07dIncluded anupgrademodule (currently just a placeholder)f4b1a2Allow to useword!as a name of scheme in some port actionsd9189eIncludeddelete-thruin thethru-cachemodule and storing content locally only when response code is 200 (OK)c485c8Improved the speed of thesoundexcode and fixed it to produce the same results as PHP.31ca95Including original Allen Kamp'sSoundexscriptf72f9bthru-cachemodule updated to version 0.2.0 (exists-thru?,list-thru) + bugfix7193a0Added the ability to query a file's access and creation times as wellbde84dIncluded a module with*-thrufunctions for accessing files through a local disk cache4a8fb2Allow any string as input to theto-asciifunctioncd366fto-asciimodule - Latin to ASCII characters transliterationf9519cBincode - added commandEncodedU64(for variable-length integers)ac5df5Implementedtake/all, which copies all content and clears the series3cb158Bincode - added commandVINT(for variable-length integers)3cc232Including link to the latest Rebol/WebP extension44fa97Avoiding series copy where possible (like inappend "" 1)de38b4Included module with C64 color palettes77f0e2Including Softinnov's task scheduler as Rebol3 moduled17b0cImprovedhelpfunction also displays themodule's specificatione15640Allow path value protectiond05956Implementedask/char, which waits only for a single key press6b8269Slightly optimize GC by checking the most common value types firstf95e6fHandle gracefullybindwith recursive data
Changes:
b9932bLogic, none and datatype values are now always molded using construction syntaxe37c0eUpdatedhttpprotocol to be compatible with the newquerychanges4e052bWhen using block as aqueryfield, get-words are required to get just the valuecd8df5**query/modeis deprecated;fieldvalue is always required **0b0b6ePorted Kamp's Soundex script to Rebol3 module197e63Updated link to the latest version of theSQLitenative extensionfc5554Use the standardizedbrinstead ofbrotlias the compression method name8342afUpdated source ofhttpdmodule to make it compatible also with older Rebol versionsf1cab2Update Brotli sources to version 1.1.07de7e9Show an error message when failing to load a library on POSIX2ed680constructnot convertinglit-word!andlit-path!toword!andpath!70b87eDisplay the module's version in the help output25d4e8Don't throw an error when usedwaitwith a negative timeout valueea437aUsenoreturnattribute inTrap*functions and mark these as DEAD_END to silence compiler warnings1d4825Using stack related definesa82d73Not throwing an error when attempting to read the DNS of a non-existent host
Fixes:
b4b165Do not use construction syntax when displaying typeset value in help output1a431dFixed wrong definition name (regression)d6c899Retain setting thedatevalue when querying file/dir ports as an object (for backwards compatibility)7e1560Better handling of fast read/write operations to the clipboard on Windows9671f8Better handle some special MOLD cases9907c6Query multiple values of a datetime value5ebb52Includingdatatype!as allowed query field in the HTTP schemebb6c73High CPU usage when running the Rebol server as a Linux serviced9e52cHTTP query validation fixed274923HTTP query validated when building a requestea7b6dUsing the newmodifiedinstead ofdatein the HTTP scheme9bde6abincodewrite code block does not handle its index position correctly541cc5Missing lowercaseethletter into-asciitransliterations table57f2cfRedirection with a missing slash in the location field5e5e93bincodecode block does not handle its index position correctly433d06take/allon a series with a tail over the index must ...
Rebol v3.17.0
Features:
7c6c10Implementedtranscode/partfde583Possibility to see user definedop!sources481446Enhanced possible time limit from2147483647nsto9223372036ns2cf831hash!datatype (works likeblock!for now, hashing not implemented yet)f3060cImplemented map comparison9a90e2Improved hashing185f45Allow seeding random number generation using pairs and tuples
Changes:
fa831fUpdated Mbed-TLS sources to version 3.6.0
Fixes:
06c115Allow syntax like+<tag>or1.1.1<tag>fdf662Does not allow refinement ending with a colon char409c96Console string input does not handle percent char correctlyca8b40Block comparison with numeric and word values583866Word binding inside maps when construction syntax is usedc9895fIncorrect tuple values hashing164a3fInvalid define for XXHash include604720Argument type validation ofcatcha callback function62dd93Code cleanup
Rebol v3.16.0
Changes:
3c2b93Switching map and construction syntax2ba01eunsetvalue inanyandallis transparent nowda1905Updated Mbed-TLS sources to version 3.5.252efc0Register.swcfile extension withzipcodec7c84b6Allow issues like###or#a#(Rebol2/Red compatibility)9bb910Zlib source updated to version 1.3.0.17a9e11Updatedhttpdscheme to version 0.9.0bf4999Modifiedlaunchfunction not to use shell and to handle all optional script argumentsabc6ecUsing system error codes when opening a MIDI device on Windows
Features:
f25ddfImplemented optionalXXH3,XXH32,XXH64andXXH128checksumsab42caTiny optimizationda4718Not using hashing for small enough maps (reduces memory usage)e401edAddedsumandaveragefunctions27611eIncluding source ofwebdriverandwebsocketmodulesffa41ebbcodeimage gallery emittere39581bbcodecsv table emitter963d08Allowword!,get-word!andget-path!values inside acallargument39c7e2Allow any-string value as acallargumenta38e2aAdded possibility to set/clear BRK, RTS and DTR serial port flags on Posix
Fixes:
01a68cCompiler warnings695636Correct fix of regression when creating 64 bit vectors238ecbRegression when creating 64 bit vectors820687checksumwithfile!argument not supporting all available methodsd4364dSaving a file into a zip archive1bfcbbBbcode codec - reset row-width of an image gallery tag307b24Windows JPEG codec unexpected property type error592454LF to CRLF conversion when usingwritewithstringinputfbad12Joining path/url using path notation not respecting index positionaa7aa4Throw an error when converting1.#NaNvalue to integer45b358Closehttpdserver on request even when there are pending client connections9715d1Code simplifiedaa227fAvoid an error when loading an unset value051670Using correct path to images in the generatedbbcodeimage gallery8ee972bbcodecodec must convert binary input to string before decodingb0f684Reading from virtual/procfiles on Linux usingread/parta73014Accept block input tocallfunction on Windows56a39eWarning: implicit declaration of function ‘wcwidth’2ea23bIgnore warning: ‘__builtin___strncpy_chk’ specified bound depends on the length of the source argumenta84671Warning: ignoring return value of ‘read’, declared with attribute warn_unused_result98c54fWarning: specified bound depends on the length of the source argument45832bTrying to fix build for Haiku OSda13e8Trying to fix build for Haiku OS7f8108Trying to fix build for Haiku OS
Rebol v3.15.0
Features:
1ff2d9Optional support for SHA3 family checksums (included in Bulk)3dc6f6New platform for TurrisOSfeaaefBetter info when native extension fails to load its librarya1b79bwait-for-keywhich waits for a single key press855adcStruct reflection code reduction4332e1Implementedbody-ofstruct reflection (returning struct's key/value pairs)8c111aImplementedvalues-ofandwords-ofstruct reflectionsb6640eAllow changing binary series with tuple values455f04functionandclosureaccepting alsomodule!for itsobjectargumentbee8e0Unicode utils module withdecode-utf8function3b731aExtension library API for conversion of Rebol file to OS file and back
Changes:
35c1b6Updated Mbed-TLS sources to version 3.5.14dc546Using line breaks in moldedstruct!values for better readability68bf82MovedSTATIC_ASSERTmacro toreb-c.hfile and used it in a few more casesad12a6Don't try to validate baud rate for a serial port
Fixes:
0be75dTimeout when reading some HTTPS URLsb63745Invalid length ofchecksum:sha224port resulta87e66Redundant message when logging an error value821a5aBetterstruct!initialization; empty struct not allowed7aaa05Early validate input data type (else there could be free before alloc call)76c8c0Signed/unsigned mismatch warning96ece9Not usingNZmacro45749fNot initialized local variable1871d9Only using paren char escaping for chars in range0x7F - 0x9F3a7282Using replacement char for all chars outside the Basic Multilingual Plane0976daFormed/molded output with ASCII chars using always a special char escapinge1cc08Correctly terminate truncated seriesaf865eIncluded support for some rare codepages iniconvea71e7Unreferenced local variable warnings
Rebol v3.14.0
Features:
ca45cfAllow extension to mark handle's context on free call and so prevent it from releasinga0ff1bAllowwriteaction on the console port
Changes:
f5aaa5Including RXA_UINT64 macroaab9d4Extended possible number of extension command arguments to 152c4565Extended possible number of extension command arguments from 7 to 11928761Using lower MiniAudio extension versionb24999Downloading extensions intosystem/options/modulesdirectory instead of the current dir3f7972Includinguint64in the RXIARG value unionc87321Deprecatedsystem/options/module-pathsreplaced withsystem/options/modules
Fixes:
f29b6bUsing correct module name (not using arch and.rebxextension) in case, that url to module contains file namec7d328Crash when trying to initialise multi-dimension struct value9fffc0Invalid function name when used help on function using a path54bb9dProperly implementedList_Func_Typesfunction158080Make the modules directory, if does not existsdb8971Lower security policy on the application data directory (when running a script)56eac4Missing optional extension handlemoldcallback registration0837dfWarning: pointer type mismatch48e772Using proper type for extension handle mold callback function argument5413fflist-dirstopping its output on symbolic link to not existing file
Rebol v3.13.0
Features:
be97ceIncluded link to Rebol/MiniAudio extension version 1.0.0d4878dAllow custommoldcallback for context handles to provide additional handle's info, if wanteda74b26Provide info, when molding a released handle, that it is already releasedb048bdAllow to pass handle objects to external handle's free function and dispose handle objects before freeing any series93e07dAdded possibility to register extension handles with custom setters/getters3e53cfHandle SHIFT and CONTROL flags with arrow keys on Posix for char based terminal input
Changes:
2f7998Debug print function??not throwing an error on invalid pathsf4dd93Restrictvalue?to word arguments only
Fixes:
922ac0Use handle's context path access only if the handle is still in use (not already released)41a265Correctly check for a handle's context flag on freeba824bAllow extension context handles to reference other Rebol resources and so keep it safe from GCad9863Incorrectly molded NBSP char639ad7LOAD can't open JSON over HTTP
Rebol v3.12.0
Features:
4bcc98Simplewait-for-keyfunction test filee1c7daUsingpollinstead ofselectto query events on Posix37145bCode reduction84ae96Key presses with unprintable chars are now reported ascontrolandcontrol-upevents on Windows (on console with turned off line mode and from GUI as well)3f57b5Preliminary support for char based input on Posix37971dAccess toDecode_UTF8_Charcore function from host's sourcesd423e9Support for optional Brotli encoding in HTTP scheme7d24adUpdated Spotify module to version 0.2.1 (test file moved to the test folder)1b74d4Updated Spotify module to version 0.2.005b700Shortened code ofrejoinfunction82682eEnhancedajoinnative function for merging values into a string typesfd5656Initial audio device prototype for Windows (using XAudio2)5d9af5Dynamic function refinements869708Optional support for Brotli de/compression
Changes:
ea3cd4Movedwait-listfromsystem/portstosystem/stateefbfa4Movedevent-keysandevent-typesfromsystem/viewtosystem/catalog, because these are used not only in GUI8eb643Modified verbosity of thegzipcodecf49d96RenamedSignal_DevicetoOS_Signal_Device473bb0Updated Mbed-TLS sources to version 3.4.0467ae8Using more lightweight dynamic function refinements instead ofeitherwhere possiblea14bf5Using more lightweight dynamic function refinements instead ofapplywhere possiblefbbb20Value of false dynamic function refinement isnone, notfalse(as native code expectsnone, which is cheaper to compare)3fa4a0List Brotli compression insystem/catalog/compressions3d23edUsing lower default compression level for Brotli compression
Fixes:
511a4eUnspecified calling convention fails in 32 bit build2cde09Not all control paths return a value warning90fabdSigned/unsigned mismatch227f8dUnreferenced local variablef57e4fSwapped location of the virtual key conversion table (host-event.c is not used in Base builds)d22923Moving the newly introduced host lib function to the tail (to keep compatibility with old extensions)65a33dHideX-goog-api-keyheader field from HTTP logsbd91b5moldemitting invisible chars in some casesa7c2ccInclude only included optional compressions insystem/catalog/compressions786e33formignores leading empty strings and unset values8115beInvalid console input03a2cd)not allowed as a first character in tag1a1706Not able to uselist-dirwithout any argument1712f2Removed forgotten probe8e5e1bRemoved unwanted line break afteraskfunction call4e8d95Enable wide character support on Posix8d7a6f~folder name expansion does not work in all cases290720Wrong directory names when diacritics is useddc1bcdSuppress compiler warnings6af517Not all control paths return a value warning908362Suppress compiler warnings2c23eaPossible loss of data warningsad1f2aSigned/unsigned mismatch warning23b8c8Unreferenced label5d036fUnreferenced local variables5fdac4Regression (code reduced too much)777da7Non-void function does not return a value in all control paths


