Download Latest Version Starbug source code.tar.gz (35.0 MB)
Email in envelope

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

Home / v4.2
Name Modified Size InfoDownloads / Week
Parent folder
Jantrit source code.tar.gz 2026-01-28 35.3 MB
Jantrit source code.zip 2026-01-28 35.6 MB
README.md 2026-01-28 3.4 kB
Totals: 3 Items   71.0 MB 0

Splice Primitive, Text Processing Overhaul & Editor Upgrades

This release introduces a powerful new sequence manipulation primitive, significantly overhauls text replacement logic for better performance, and adds new navigation features to the Editor and Viewer applications.

✨ New Features

Core Primitives

  • New splice primitive: Added (splice seq1 seq2 idxs) -> seq. This is a powerful vector-based operation. idxs is provided as a :nums vector; slices are taken from the source sequences in turn based on these indices.
    • Note: You can provide the same source sequence for both arguments. The returned sequence maintains the type of the sources.
  • Macro Safety: Added (msafe? %0) -> :t | :nil predicate to check if a parameter is macro-safe (i.e., ensures it will not lead to double evaluation).
  • Text Compression: Added (compress str tab_width) -> str to complement the existing expand function.

Editor & Viewer

  • Form Selection: Added support for selecting Lisp forms.
    • New method: :select_form added to Document.
    • New actions: action-select-form, action-copy-form, and action-cut-form.
  • Whitespace Navigation: Added ability to jump over whitespace.
    • New methods: :left_white_space and :right_white_space added to Buffer.
    • New actions: action-left-white-space and action-right-white-space.

🚀 Improvements & Refactoring

  • Replace Compiler: Implemented a suite of text replace compiler functions. These generate a single splice command to perform entire text replacement operations efficiently.
    • Functions: replace-compile, replace-matches, replace-edits, replace-regex-edits, replace-str-edits, replace-regex, and replace-str.
  • Adoption: The Editor app, sed, and grep commands have been updated to utilize the new replace compiler.
  • Reflow: Moved :reflow method out of Syntax class and into root.inc utils. Signature is now (reflow words line_width) -> lines.

System & TUI

  • TUI Upgrades: The TUI now shares command history with the GUI Terminal app and includes improved line editing handling.
  • Sequence Operations: erase, insert, replace, and rotate have been converted to macros that utilize the new splice primitive.
  • Installer: The install process now utilizes 10 VP nodes (updated to reflect current hardware capabilities).
  • Document Class: Tidied up multi-cursor merging logic on floored operations.
  • List Class: Added :ref_all method. Moved several list methods to inline s-calls ending with a jump to :ref_all.

⚠️ Breaking Changes & API Cleanups

  • Slice Reversal: Removed the :rslice method. The standard :slice method now detects and handles slice reversal automatically. :slice now strictly returns a new slice object.
  • String Cleanup: Removed :str :append, :str :init1, and :str :init3 methods during a rewrite of :str :cat.
  • Search Signatures: The signatures for Search classes, :search, and :match? have changed. They now take the pattern (or compiled meta data) as a single non-optional argument.
  • Renames: lisp-elem-index has been renamed to seq-elem-index.

Enjoy

Chris

Source: README.md, updated 2026-01-28