summaryrefslogtreecommitdiffstats
path: root/RELNOTES
diff options
context:
space:
mode:
Diffstat (limited to 'RELNOTES')
-rw-r--r--RELNOTES119
1 files changed, 119 insertions, 0 deletions
diff --git a/RELNOTES b/RELNOTES
index e3fcea20..4cd5186b 100644
--- a/RELNOTES
+++ b/RELNOTES
@@ -1,3 +1,122 @@
+ TXR 300
+ 2025-05-31
+
+
+ Features
+
+ - Lib:
+ - Function iterp: test whether an object is an iterator.
+ - Iterable ranges with skip factor: 1..10..2, "aa".."dd"..4.
+ - Function progf: pass arguments to each function in a list,
+ returning value of last one.
+ - rand: bits of PRNG now used more efficiently:
+ - e.g. 32 successive (rand 2) calls use a single 32 bit
+ random word pulled from PRNG.
+ - Functions remove, keep: generalized remqual and keepqual.
+
+ - System Interface:
+ - glob* now supports string and integer ranges in brace expansion,
+ similarly to bash.
+ - Bash has only single-character ranges like {a..z}, whereas
+ we have {aa...zz} and such.
+ - also: new bexp function now exposes glob*'s brace expansion.
+
+ - Syntax:
+ - letrec macro.
+ - case, case*, ecase and ecase* synonym macros for casequal family,
+ for nicer readability.
+ - new mul and div macros to update a place by multiplying
+ or dividing its current value.
+
+ - Read syntax:
+ - quasiliteral substitutions can now specify format directive,
+ e.g. `@~3,2f:a` is like `@a`, but with ~3,2f format directive
+ applied.
+ - referencing dot allows white space on right side
+ - thus chains like obj.(meth arg).next ... can be split
+ across lines now.
+ - symbols can contain | character.
+
+ - Expansion:
+ - *expand-hook* feature.
+ - noexpand mechanism to annotate code as not requiring expansion.
+ - ifx macro provides infix.
+ - c-like operators for bit operations.
+ - squared functions: sin ** 2 x is sine squared x.
+ - novel precedence algorithm for intuitive parses.
+ - superfix relational comparisons 0 < x <= j < k.
+
+ - Pattern Matching
+ - New match-tuple-case macro
+ - @(require) operator now possible over argument tuples in
+ lambda-match.
+ - new macros in the "each" family:
+ - each-match-case, collect-match-cases, append-match-cases,
+ keep-match-cases, ... and others.
+
+ - Data Integrity
+ - HMAC: functions hmac-sha1, hmac-sha256 and hmac-md5.
+ - sha1-hash, sha256-hash, md5-hash now take stream argument.
+
+ - Data Compression
+ - str-compress and str-decompress functions directly compress
+ and decompress strings as UTF-8.
+
+ - listener:
+ - auto-infix mode.
+ - works with auto-compound mode.
+ - TXR can be used as infix calculator easily.
+
+ - buffers:
+ - now support bit operations
+ - functions buf-and, buf-ash, and others.
+ - also integrated into math lib: logand, ash, ... work on buffers.
+ - make-buf and buf-set-length can fill with multi-byte-patterns,
+ specified as a buffer or integer.
+ - improvement in buf representation, streamlining all code touching it.
+
+ - streams:
+ - better support for mixed character and byte push-back
+ in file/socket/pipe streams.
+ - string byte input streams support character input,
+ any mixture of unget-byte and unget-char operations,
+ and also fill-buf.
+ - much improved support for mixed parsing and
+ regular I/O operations.
+ - after iread or get-json, we can read the characters
+ which immediately follow, and then having consumed
+ what we need, do another iread or get-json.
+ - string output streams support truncate-stream and seek-stream.
+ - string input stream supports seek-stream.
+ - buffers streams similarly improved.
+
+ - debugging:
+ - new parameter macro :trace lets any function be statically traced.
+ - uses same mechanism as trace, but does not turn on/off
+ dynamically
+ - works with any function anywhere: flet, labels, lambdas.
+
+ - compiler:
+ - minor optimization improvements.
+ - diagnostic improvements (origin tracing).
+
+ - build:
+ - New utility "config-cache-hook.tl" available in tree for caching
+ build configurations, for faster git bisect and whatnot.
+
+ Bugs
+
+ - build:
+ - configure: bad gcc version check.
+ - Makefile: don't create .build_id for non-users of build_id.
+ - setenv: checks for error from C setenv and throw.
+ - buffers: conversion of zero-sized buffer to integer was asserting.
+ - listener: abort when Tab-completing sym with non-existent package.
+ - signals: SIGSYS considered synchronous signal like SIGFPE, etc.
+ - listener: fixed 2021 regression causing no Tab completion on keywords.
+
+
+
TXR 299
2025-02-16