diff options
Diffstat (limited to 'RELNOTES')
-rw-r--r-- | RELNOTES | 67 |
1 files changed, 67 insertions, 0 deletions
@@ -1,3 +1,70 @@ + TXR 301 + 2025-06-21 + + + Features + + - Compiler: + - Now optimizes self tail calls: functions calling themselves by name, in + the tail position. + - Now optimizes same-scope block returns that don't require unwinding. + - Some other optimizations. + + - Streams: + - get-string works on string byte input streams. + - various *-get-buf convenience functions like + - new get-buf function: returns bytes read from stream as a buffer; + complements existing fill-buf. + + - JSON: + - single-quoted strings allowed in *read-bad-json* mode. + + - Lib: + - generic set functions (diff, isec, ...) now optimized using hashing; for + certain input size thresholds, they abandon their inefficient algorithm + and hash everything. + + - Hashing: + - new functions hash-seq for converting the elements of a sequence into the + keys of a hash with themselves as values. + - new function hash-isecp for testing whether two hashes intersect (have + common keys). + + - Listener: + - new *listener-ignore-eof* variable: lets user set a count of how many + consecutive Ctrl-D's to ignore before really quitting. (Similar to Bash + feature). + + Bugs + + - command-get-buf, map-command-buf: bug in implementation + of seek parameter for non-seekable streams. + - listener: fixed a bug manifesting on some platforms + around handling certain TTY EOF situations. + - infix: phony infix no longer recognizes lambda expressions and + other syntax like (meth ...) as function names. + - autoload: not binding *expand-hook* correctly around + loading, creating a problem when uncompiled code is + autoloaded while infix mode is effect. + - compiler: + - bad slot reference in the optimizer, occurring in branch of code that was + never hitherto tested; stepped on it over the course of compiler work. + - incorrect register liveness calculation across block instruction; + another long-time bug I stepped on. + - block return instructions no longer treated as jumps to nowhere, because + it screws up the liveness analysis. + - build: bungled calculation of STDLIB_LATE_TLOS variable + in the Makefile + - vm: do not adjust the instruction pointer in a normal block + return; let it advance to the next instruction. + - makes no difference to code compiled by TXR 300 and earlier. + - newly compiled code may depend on it if it contains + optimized block returns and tail calls. + - for this reason, the .tlo format is bumped to 8.0; TXR 300 will not + load .tlo files made by TXR 301, but 301 will load those made by 300. + + + TXR 300 2025-05-31 |