Repository navigation
Releases: nerima-lisp/ncl
Releases · nerima-lisp/ncl
Release list
v0.1.1
Fixed
- Fixed a macOS arm64 crash during
LOADwhen garbage collection ran while a closure was live in a Lisp parent frame. The program no longer terminates withSIGSEGV. - Fixed garbage collection of specialized array elements by tracing their values.
Added
- Added specialized and general array literal support, lowered through constants.
Changed
- Split Nix checks into a separate CI job so documentation checks stay within their timeout.
v0.1.0
Added
- Added
EVALand pathname-awareLOAD.COMPILE-FILEstores source text in its FASL output, andLOADrecompiles that text. - Added compiler optimization modes and pass diagnostics, with GC-safe optimization passes.
- Added
DECLAIMandSPECIAL,DEFSETF, moreLOOPclauses, and condition and restart facilities includingMAKE-CONDITION,HANDLER-CASE, andIGNORE-ERRORS. - Added readtable copying and feature conditionals, pathname literals and logical pathnames, filesystem operations, and character and string stream operations.
- Added array element types, hash-table options, array-aware
COPY-SEQ, sequence selection and duplicate removal, and further sequence operations. - Added image save and load, initial CLOS and MOP support, typed foreign calls and tracked system-area-pointer operations, and internal-time queries.
- Added character package designators for package introspection, symbol interning, and package operations, plus
MODelement types forMAKE-ARRAY. - Added reader evaluation of
#.forms, standard short-form CLOS method combinations,SUBSTand the tree substitution sequence family, and CLOS class designators for array element types. - Added
DEFTYPEexpansion, typedLOOPvariables, implicit generic function creation inDEFMETHOD, package-symbol iteration, SB package registration,WITH-STANDARD-IO-SYNTAX, andCOPY-PPRINT-DISPATCH. - Added scalar type and effect analysis and optimization passes for checked fixnum operations, direct calls, and global values.
- Added heap-rooted word sequences, the
NCL-GCfull-collection builtin, per-thread GC state, and a typed evaluator-access service. - Added tables of the SBCL APIs and symbols available on Linux, selection of matching NCL/SBCL benchmark cases, and sharded ANSI conformance runs.
- Added standardized SETF places.
Fixed
- Corrected sequence ordering, selection options, list and higher-order function contracts,
SEARCHandMISMATCHbounds, andEQUAL/EQUALPbehavior for vectors and fill pointers. - Preserved dynamic state across nonlocal exits and multiple values through cleanup and capture.
- Aligned package rename, deletion, and introspection with Common Lisp semantics, and corrected string comparison bounds.
- Corrected reader handling of
NIL, exponent-like symbols, extended numeric tokens, and empty tokens.LOADnow respects the active package and readtable and preserves reader, verifier, and native errors. - Corrected handler and restart cleanup on nonlocal exits, closure cell capture, macro expansion roots, and evaluator restoration after nested operations.
- Corrected type-range checks for bignums,
SUBTYPEPcertainty, indexed simple-vector primitives, builtin argument marshalling, C character signedness, and system-area-pointer places. - Corrected x86 and AArch64 instruction decoding and address-provenance tracking across safepoints and raw-memory escapes.
Changed
- Moved the generic dispatcher wrapper into a dedicated runtime module.
- Isolated cl-bench rows in a worker pool of up to four, with 20-second child timeouts and a 1,800-second workflow budget with a 240-second reserve. The driver records per-row wall time, allows independent output pairs to overlap, and retains completed rows when a child times out.