| Name | Modified | Size | Downloads / 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
.cpmfiles. - Raymarch: Completely reworked to generate the frames of a full, looped
.flmanimation file rather than just static output. - Mesh: Added a new
Mesh-objclass for parsing standard.obj3D model files, alongside ateapot.objtest 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
Dictionaryclass now accepts these context words natively (Note:Dictionary:find_matches_casehas been renamed to:find_various). - Auto-Indent: The Editor now supports multi-cursor auto-indentation following a line-break action. The
Documentclass handles this via the new:breakmethod. - Cursor API Refactor: Moved the transient
:tcursorAPI directly into theEditclass to avoid unnecessary cursor list copying. AddedBuffer:get_cursors_sortedand:get_cursors_extentmethods.
🛠 Command Line Tools
toflm.lisp: New CLI tool that takes a series of image frames and encodes them into a.flmmovie 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_nextnow allocates space allowing a single character to be pushed back into the stream. - Scientific Notation: Added
(str-to-real str) -> realfunction capable of handling scientific notation (e.g.,1.5e-3or9.97231e-09). - Map/Set Size: Added a standard
:sizemethod to all Map classes. - Node Mapping: The
(lisp-nodes)function now maps tostrand merges the local VP node by default. - Vector Library: Added several new
&optionaloutputs to vector library functions. - Cleanup: Removed the
anaphoric.inclibrary (unused/discouraged pattern). Reworked the static symbol system to remove the legacy:get_static_symand:ref_static_symmethods.
🎨 GUI & Graphics
- Widget Merging: The standalone
Treewidget has been completely merged into theFileswidget. - Window Dispatch: Added a new
Window:dispatchmethod to handle common actions for apps uniformly. - Texture Modes: Added Texture Mode 2 for
:swapcalls. Available modes are now:0(Normal),1(Glyph), and2(Grayscale). - Canvas Loading:
canvas-loadnow accepts an optional parameter for pixmap swap mode. - GUI Protection: Added GUI node protection to the swap call.
- Legacy Support: Reserved legacy
.cpmheader fields to maintain format compatibility.
🔧 Under the Hood: Fixes & Optimizations
- Micro-Optimizations: Heavily optimized the VP assembler implementations for
:hmap :findand:hset :find. - 3D Optimization: Optimized the
MeshandSurfacemath classes. - Task Farm Fix: Fixed an off-by-one bug in the
Localfarm 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