| Name | Modified | Size | Downloads / 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.lispstatic 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.lisputility has been removed as the new trace-based utility supersedes its functionality.
-
-
Source Scanning & Caching
-
Added
lib/files/info.incto 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
-wwriteback 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.mdanddocs/ai_digest/trace_command.mdto 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)toroot.incto calculate the number of set bits.
-
-
Collections Improvements
-
Added the
:tolistmethod to theSetandMapclasses. -
Extended
(scatter)to support populatingSetstructures in addition toMapstructures. -
Updated
(scatter)and(gather)to accept a list of arguments as well as standard&restarguments. -
Added
(transfer src_map dst_map [key val] ...)to copy values between collections.
-
-
XML Parsing
-
Updated
XML-parseto 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, andvp-jmp-isupport 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
callandjumpmacros to support optional arguments for dispatch and object registers, defaulting to:r14and:r0.
-
-
Build and Test Systems
-
Added
make vpto compile and rebuild all VP64 and VP output files, in debug mode, exclusively. -
Added the
cmd/tests.lispcommand 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
Syntaxclass, which are now used by the Buffer:stream_loadand:stream_savemethods. -
Updated the
compressandexpandstring 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
:pastemethod when handling empty text. -
Fixed a
:set_focuscall arguments issue in the global action macro.
-
-
Workspace and Developer Tools
-
Introduced the
benchmarkGUI 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
Documentbuffer 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.lispto support the-vinverse match option. -
Fixed the
splitcommand's-soption parsing to correctly handle string options.
-
Enjoy
Chris