Download Latest Version Obelisk source code.tar.gz (60.0 MB)
Email in envelope

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

Home / v4.5
Name Modified Size InfoDownloads / Week
Parent folder
Moonshot source code.tar.gz 2026-04-11 59.8 MB
Moonshot source code.zip 2026-04-11 60.1 MB
README.md 2026-04-11 5.3 kB
Totals: 3 Items   119.9 MB 0

Summary

This release brings substantial improvements across the ChrysaLisp ecosystem, focusing on user-facing applications, editor ergonomics, and core performance. Highlights include a fully playable Chess application, the introduction of distributed rendering for the Molecule and Raymarch demos, and major quality-of-life upgrades to the Editor (including smart context-aware autocomplete and multi-cursor auto-indentation).

Under the hood, we've expanded the CLI with new tools (vpgraph, imports, toflm), enhanced the standard library with native for loops and standard diff/patch formatting, and applied targeted micro-optimizations to hash maps, sets, and the 3D rendering pipeline.


🌟 Apps & Demonstrations

  • Chess: Now fully playable! The app has been reorganized into a modern action-based architecture featuring undo/redo/reset functionality, configuration file support, and the addition of Castling logic.
  • Molecule: Upgraded to use a dynamic, non-blocking, distributed render farm. It now dynamically renders atoms and caches the images as .cpm files.
  • Raymarch: Completely reworked to generate the frames of a full, looped .flm animation file rather than just static output.
  • Mesh: Added a new Mesh-obj class for parsing standard .obj 3D model files, alongside a teapot.obj test asset.
  • Film Player: Updated app organization to use the action-style architecture and the integrated file selector.
  • Terminal: Resolved a race condition involving pipe termination and prompt updating.

📝 Editor & Text Processing

  • Smart Autocomplete: Added a context window that looks at surrounding words near the cursor to provide intelligent word completion. The Dictionary class now accepts these context words natively (Note: Dictionary:find_matches_case has been renamed to :find_various).
  • Auto-Indent: The Editor now supports multi-cursor auto-indentation following a line-break action. The Document class handles this via the new :break method.
  • Cursor API Refactor: Moved the transient :tcursor API directly into the Edit class to avoid unnecessary cursor list copying. Added Buffer:get_cursors_sorted and :get_cursors_extent methods.

🛠 Command Line Tools

  • toflm.lisp: New CLI tool that takes a series of image frames and encodes them into a .flm movie file. (Also includes a fix for a specific edge-encoding condition).
  • imports: New CLI tool for scanning and optimizing import paths across project files.
  • vpgraph: New CLI tool for generating and listing Virtual Processor (VP) function and method call graphs.
  • diff / patch: Commands and underlying libraries updated to use the standard "Normal diff" input/output format.

⚙️ Core Language & Standard Library

  • Raw Numeric Iteration: Passing an empty list of sequences to ! iterator functions now triggers raw numeric iteration.
  • Example: (map! ! '() (list) 0 10) -> (0 1 2 3 4 5 6 7 8 9)
  • Example: (map! ! '() (list) 10 0) -> (9 8 7 6 5 4 3 2 1 0)
  • For Loops: Added a basic (for start end [body]) numeric loop utilizing the new empty sequence iterators.
  • Stream Push-back: :fstream :read_next now allocates space allowing a single character to be pushed back into the stream.
  • Scientific Notation: Added (str-to-real str) -> real function capable of handling scientific notation (e.g., 1.5e-3 or 9.97231e-09).
  • Map/Set Size: Added a standard :size method to all Map classes.
  • Node Mapping: The (lisp-nodes) function now maps to str and merges the local VP node by default.
  • Vector Library: Added several new &optional outputs to vector library functions.
  • Cleanup: Removed the anaphoric.inc library (unused/discouraged pattern). Reworked the static symbol system to remove the legacy :get_static_sym and :ref_static_sym methods.

🎨 GUI & Graphics

  • Widget Merging: The standalone Tree widget has been completely merged into the Files widget.
  • Window Dispatch: Added a new Window:dispatch method to handle common actions for apps uniformly.
  • Texture Modes: Added Texture Mode 2 for :swap calls. Available modes are now: 0 (Normal), 1 (Glyph), and 2 (Grayscale).
  • Canvas Loading: canvas-load now accepts an optional parameter for pixmap swap mode.
  • GUI Protection: Added GUI node protection to the swap call.
  • Legacy Support: Reserved legacy .cpm header fields to maintain format compatibility.

🔧 Under the Hood: Fixes & Optimizations

  • Micro-Optimizations: Heavily optimized the VP assembler implementations for :hmap :find and :hset :find.
  • 3D Optimization: Optimized the Mesh and Surface math classes.
  • Task Farm Fix: Fixed an off-by-one bug in the Local farm class that was causing one extra task to be launched.
  • TUI Fixes: Improved tab formatting and handling within the TUI print code.
  • Build System: SDL libraries are no longer required for GUI=fb (Framebuffer) builds.
  • Unit Testing: Added more unit tests and reorganized the tests/ folder into a cleaner, more granular directory structure.

Enjoy

Chris

Source: README.md, updated 2026-04-11