summaryrefslogtreecommitdiffstats
path: root/RELNOTES
diff options
context:
space:
mode:
Diffstat (limited to 'RELNOTES')
-rw-r--r--RELNOTES67
1 files changed, 67 insertions, 0 deletions
diff --git a/RELNOTES b/RELNOTES
index 4cd5186b..d6be20b5 100644
--- a/RELNOTES
+++ b/RELNOTES
@@ -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