Download Latest Version Quoin source code.zip (60.6 MB)
Email in envelope

Get an email when there's a new version of ChrysaLisp

Home / v4.9
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-06-07 5.5 kB
Touchstone source code.tar.gz 2026-06-07 60.0 MB
Touchstone source code.zip 2026-06-07 60.3 MB
Totals: 3 Items   120.3 MB 0

Release Notes

This release introduces a suite of static analysis and database tools, centered around the new trace utility. This utility enables automated data-flow analysis of the Virtual Processor (VP) assembly code to track register clobber states (trashes) transitively across call graphs. By scanning the entire codebase with these automated verification tools, numerous subtle clobber bugs have been resolved, and the register-preservation documentation has been completely synchronised with the actual compiled bytecode.


Codebase Analysis & Maintenance

  • Automated Data-Flow Analysis

    • The new cmd/trace.lisp static analysis utility performs automated data-flow verification on compiled VP bytecode.

    • The tool tracks transitive register clobber (trash) states across virtual and static call graphs, resolving the union of clobbered registers at virtual call sites.

    • A global scan of the entire codebase was conducted using the analyzer, reconciling and updating all register-preservation documentation.

    • The old source-based cmd/vpgraph.lisp utility has been removed as the new trace-based utility supersedes its functionality.

  • Source Scanning & Caching

    • Added lib/files/info.inc to provide structured scanning and cached lookups of class and function definitions across source files.

    • Integrated the (tsort roots dep_fnc) topological sort utility for calculating dependency resolution orders.

    • Added a -w writeback option to the database scanners and trace utility, allowing automated synchronization of clobber signatures back into the source files.

    • Introduced docs/ai_digest/source_database.md and docs/ai_digest/trace_command.md to document these new tools.


Core Language & Collections

  • Algorithmic and Math Utilities

    • Added (slices lst) to return a compact list of index slices covering a list of element indices.

    • Added (bitcnt n) to root.inc to calculate the number of set bits.

  • Collections Improvements

    • Added the :tolist method to the Set and Map classes.

    • Extended (scatter) to support populating Set structures in addition to Map structures.

    • Updated (scatter) and (gather) to accept a list of arguments as well as standard &rest arguments.

    • Added (transfer src_map dst_map [key val] ...) to copy values between collections.

  • XML Parsing

    • Updated XML-parse to use the (callback) macro to safeguard the internal environment from user-defined callback functions.

    • Added support for single-quoted attribute values in the XML parser.


Operating System, Compiler & VP

  • Virtual Processor Infrastructure

    • Added vp-call-r, vp-call-i, vp-jmp-r, and vp-jmp-i support for optional class and method arguments to assist the static analysis tools in calculating clobber states.

    • Added (vp-trash reg_list) and (emit-trash reg_list) pseudocode ops to let developers manually flag register clobbers for the tracer.

    • Updated call and jump macros to support optional arguments for dispatch and object registers, defaulting to :r14 and :r0.

  • Build and Test Systems

    • Added make vp to compile and rebuild all VP64 and VP output files, in debug mode, exclusively.

    • Added the cmd/tests.lisp command to run the system unit test suite directly from the command line.


Applications & User Interface

  • Edit Application

    • Unified the undo and redo systems into a single globally tracked timeline, improving consistency.

    • Updated the undo/redo actions to automatically jump to known group transaction markers.

    • Added syntax-aware tab compression and expansion to the Syntax class, which are now used by the Buffer :stream_load and :stream_save methods.

    • Updated the compress and expand string functions to take logical character indices.

    • Added (. buffer :eof [csr]) and (. buffer :sof [csr]) to return character counts relative to the file boundaries, enabling the macro playback mechanism to track when to halt.

    • Updated (. buffer :set_focus [csr]) to support an optional cursor boundary, defaulting to the primary cursor.

    • Fixed an issue in the Buffer :paste method when handling empty text.

    • Fixed a :set_focus call arguments issue in the global action macro.

  • Workspace and Developer Tools

    • Introduced the benchmark GUI application to run and display live, smoothed compilation metrics (mean, best, and worst times) in the title bar.

    • Created a companion VSCode language syntax highlighting extension with settings designed to match the Edit app color scheme.

    • Updated the Docs application to collect and format handler content using a Document buffer and memory streams.

    • Added tab expansion processing to the GUI Terminal.

    • Updated the Vdu widget to display non-LF embedded control characters, and cleared embedded tabs from command usage sections.

    • Updated the implementation studies for the Editor, Viewer, and Whiteboard applications.

    • Updated cmd/grep.lisp to support the -v inverse match option.

    • Fixed the split command's -s option parsing to correctly handle string options.

Enjoy

Chris

Source: README.md, updated 2026-06-07