Hi all,
Commit ad068f27d819465c78c574019f32a2e1d30ca5ff 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.