Hi all, Commit ad068f27d819465c78c574019f32a2e1d30ca5ff [1] is available for testing, with a view toward releasing 292. 291 was released back in August. There are 75 new commits. Draft release notes: TXR 292 2023-11-?? Features - Build: - speed up compilation of stdlib with optimal compilation order of several key files. - Revised confusing build instructions in ./configure script. - Makefile improvements: - cruft removed; dependency generation simplified. - mkdir invocations factored out to rule. - DELETE_ON_ERROR: used now. - Streams: - A new protocol between the close-stream function and its lower-level implementation allows delegate streams to implement a reference counting discipline for closing. - open-file now supports a "T" mode for O_TMPFILE (on Linux, or anywhere else O_TMPFILE is supported). - Sequences: - New functions nested-vec and nested-vec-of for easily constructing (simulated) multi-dimensional arrays. - New mref accessor for multi-dimensional access. - also has a side job calling curried functions. - New csort-group function: - Like sort-group, but uses csort instead of sort for key caching. - New hist-sort function: make histogram of sequence, and sort by descending frequency. - New length-list-< function for testing whether a list is shorter than a given length without traversing it beyond that length. - New length-< function for testing any sequence's length against a value without traversing/forcing the sequence to calculate its length. - ref now documented as accessor, not just function. - del operator now allowed on places that index into sequences implemented by structures: - requires both lambda and lambda-set methods. - Strings: - New str-esc function for generic character escaping. - New shell escaping functions: sh-esc, sh-esc-all, sh-esc-dq and sh-esc-sq. - Packages - New feature: local symbol renaming - Symbols can be imported under alternative names. - New use-sym-as function and :use-syms-as defpackage clause. - Better idea than nicknaming packages (package-local nicknames). - Functional library: - New: left-inserting pipeline operators: lflow, lopip, loand. - New: macros orf and lorf for condensing certain op syntax. - New: tap macro, for expressing side effects in pipelines while passing through the value. - Syntactic places: - New: ensure macro evaluates an expression and stores its value into a place, if that place's current value is nil. - Pattern matching: - some match-case instances are now transformed into casequal. - FFI: - Now provides a setjmp macro, longjmp function as well as a jmp-buf utility function that allocates a jmp-buf. - Now possible to interact with libraries that use longjmp for error aborts like libpng and such. - POSIX: - chdir function takes stream or file descriptor, which are handled via fchdir. - New glob* function to complement glob: - glob* supports the ** (double star) operator for recursing, via its own implementation, not relying on glob providing that. - glob* has its own implementation of brace expansion. - New rlink function which is like link, but resolves the target path if it denotes a symlink. - Listener: - *listener-sel-inclusive-p* is now default, since most terminals have block cursors by default. - New feature: auto compound expression mode lets you omit the parentheses. - Math: - The tofloat and toint functions are now generic via the user-defined arithmetic struct mechanism. - JSON: - Allow integer objects to be printed rather than insisting on numbers being floating-point. - Allow lists (including lazy lists) to print as [ ... ] rather than insisting on vectors. - Windows Installer: - Does not require admin privileges any more; will install for just the current user if the user isn't admin. - Documentation: - big change: new hashing scheme for navigation and doc lookup. - section titles now hashed in a more robust way that is resistant against most kinds of edits. - stdlib/doc-syms.tl file is now gone: one less thing to maintain. - Numerous fixes in manual. Bugs - Compiler: - numbers now externalized sanely in .tlo files: - compile-file makes sure base 10 is used for integers - floating point numbers written with sufficient precision - Loading: - load-args-process bugfix: :compile action must load. - Streams: - close-stream caches only successful result from underlying function. - a few close functions underneat close-stream were returning nil in the successful case. - OOP: - Fix segfault looking up special method after the static slots table of the type has been resized. - Pattern matching: - Missing autoloads for match-error and sys:match-pat-error, causing compiled files containing pattern matching not to load. - Awk macro: - prn returns nil - Search trees: - bug: tree-delete-specific-node not using key fun. - Lib: - Two bugs in flatten* function. - Bug in deletion of (ref ...) place: incorrect when object is list. - Crypt: - less strict error token detection for wider platform support. - Build: - Misspelled PLATFORM_LDLIBS corrected. - Fix for _TIME_BITS being tied to _FILE_OFFSET_BITS - Address autoload circular dependency involving stdlib/error.tl that can fail builds under some library build orders. - Vim: - Fix lack of recognition for char escapes in quasilit. Links: ------ [1] https://www.kylheku.com/cgit/txr/commit/?id=ad068f27d819465c78c574019f32a2e1d30ca5ff