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 / v5.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-07-07 5.1 kB
Sarsen source code.tar.gz 2026-07-07 60.3 MB
Sarsen source code.zip 2026-07-07 60.6 MB
Totals: 3 Items   120.9 MB 0

This release is centered around an overhaul of the :plist (Property List) subsystem and the native :font vector rendering pipeline.

1. Property List (:plist) Architecture

This release introduces a native Property List (:plist) implementation to optimize memory density and lookup performance across core Lisp and Virtual Processor structures:

  • New :plist VP Class: Implements low-level, high-performance property list primitives including pinsert, pfind, perase, and pfindi.

  • Compiler Optimization: The case macro now compiles branches directly into a :plist lookup map where possible, falling back to a linear search otherwise.

    • cmd/trace.lisp has been refactored to use this new case behavior, eliminating several legacy structures and helper functions.
  • Pcase Macro: Introduces the pcase macro, providing access to the underlying symbol lists to allow pre-loading, packing, and sorting of symbols to ensure consistent str_hashslot cache hits.

  • Core Integration: The Lmap, Fmap, Lset, Fset, and lib/asm/scopes.inc libraries have been refactored to use the new :plist primitives.

  • System Tracking: Added :plist tracking support to the system stats command.

  • Documentation: Added the technical document docs/ai_digest/case_for_plist.md detailing these changes.

2. Font and Vector Font (.ctf) Upgrades

The native vector font pipeline has been upgraded to a more compact, aligned, and feature-complete representation:

  • Native CTF Compiler (cmd/ctf.lisp): Replaces the legacy C++ QtCTF dependency with a native Lisp application to compile, inspect, and upgrade ChrysaLisp Vector Fonts (.ctf) from TTF or OTF sources.

    • Includes a -v option for detailed structural inspection, -c for optical-kerning compilation, and -r for regional codepoint filtering.
  • Unified 3.13 Coordinate Space: Upgrades the .ctf format to store all outlines and kerning pairs in a unified 3.13 fixed-point coordinate system.

    • Reduces coordinates and metadata to 16-bit short and ushort types, reducing total .ctf file sizes by half.
  • Natural Alignment: Coordinates and commands are structured with strict padding in the writer, ensuring that 32-bit plen and klen fields on all subsequent glyph records remain naturally 4-byte aligned in memory.

  • Optical Auto-Kerning: Adds compile-time optical edge-tracing to the compiler and matching layout logic to the native :font VP class.

  • QuadTo Support: Adds native support for quadratic Bezier spline drawing commands (Type 3) within .ctf files.

  • Options Parser: Added opt-nums to collect multiple numeric arguments from the command line into lists, used by the compiler to collect character ranges.

  • Documentation: Added the technical document ctf_command.md detailing the format and tools.

3. Lisp Language and Compiler Enhancements

  • Non-Mutating Method Dispatch: The (.) method call primitive no longer mutates the argument list passed to it.

    • It now passes the exact same argument list to the callee, while the defclass macro automatically inserts a & skip binding.

    • This allows method implementations to reflect on their own dispatch symbols.

  • Error Signaling Optimization: Swapped the argument order for the :lisp :repl_error native method, eliminating redundant register copying and saving approximately 1KB in the compiled boot image.

  • List-Bind-Args Upgrades: Added extra sanity checks to list-bind-args.

    • Supports && to ignore both source and destination elements, and & to skip source arguments.

4. Tooling and System Updates

  • Tracer Refactoring: Rewrote cmd/trace.lisp using a unified state vector and LIFO trace processing.

    • The refactoring captures previously missed edge cases and speeds up analysis, reducing a full system trace on Apple M4 to 0.30 seconds.
  • Clobber Protection: Added +zero_clobber_funcs to the tracer to bypass unnecessary analysis on safe, non-clobbering functions.

  • VDU Documentation Layout: The docs application now strips common margins in vdu sections, matching the behavior of file sections.

5. Bug Fixes

  • File Stream Seeking: Fixed an offset calculation error in file-stream relative seeking, which now correctly adjusts for unread portions of the stream buffer.

  • Regexp Input Safety: Fixed Regexp :match? and :search methods to safely process empty string inputs.

  • List Boundary Search: Fixed a boundary bug in :list :find occurring when the search start index equaled the end of the list.

  • Write Number Division: Fixed a bug in :host_os :pii_write_num caused by using an incorrect division quotient.

Enjoy

Chris

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