| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-03-09 | 4.4 kB | |
| Starbug source code.tar.gz | 2026-03-09 | 35.0 MB | |
| Starbug source code.zip | 2026-03-09 | 35.3 MB | |
| Totals: 3 Items | 70.3 MB | 1 | |
This release brings significant native mathematical enhancements to the Virtual Processor (VP), a brand-new centralized image format library, vast improvements to the Regular Expression engine, and a host of quality-of-life updates across the GUI and command-line tools.
✨ Core & Language Features
- Lazy Quantifiers: The
Regexpclass now fully supports lazy quantifiers (*?,+?, and??). - CScript Types: Added support for
realandfixedtypes in CScript variables. - Smarter Array Pushing:
(push array ...)is now significantly smarter. It will push object references for:list, but will flatten object data for any other type. For example, you can now push data directly from a:strinto a:realsarray, which is excellent for handling message data. - Stream Seeking: The String stream class now supports the
:seekmethod, enabling the use of the(stream-seek)Lisp-level function.
🚀 Virtual Processor (VP) Improvements
- Native Matrix Math: Added native VP support for
mat4x4-mul,mat4x4-inv,mat4x4-vec4-mul, andmat4x4-vec3-mul. - Long Vectors:
:reals :mat4x4_v4_muland:reals :mat4x4_v3_mulnow support long vectors. - Stream Operations: Added new VP functions for low-level stream manipulation:
(fill-bits stream (array bit_pool bit_pool_size) data num_bits cnt) -> stream(copy-bits wstream rstream (array bit_pool bit_pool_size) (array bit_pool bit_pool_size) num_bits cnt) -> wstream- Graphics: Added native VP versions of the
pixmap-readandpixmap-writefunctions.
🖼️ Graphics & Image Formats
- New Image Library Structure: Created a new
lib/image/directory to centralize image format handlers. .cwbSupport: Introduced a new loader for the Whiteboard application format (.cwb). Added(CWB-info stream)and(CWB-load stream [scale]). You can now load and view.cwbfiles directly in the Images app or via any command usingcanvas-load.- TGA & CPM Improvements:
- The TGA loader has been moved to a pure Lisp library.
CPM-loadandCPM-savenow utilize the RLE library, which has been improved with a new sliding window algorithm.- Both formats have been updated to use
canvas-tileandstring-streamline buffers. - Note: A VP helper function for faster Canvas writes during image imports is planned for the future.
- Canvas Tiling: Promoted the Raymarch tile helper to a generic
(canvas-tile canvas data x1 y1 x2 y2) -> areafunction. The Mandelbrot demo has been updated to use this new generic function. - Vector Library: Added
(vector-bounds-2d paths)and(vector-point-in-polygon p paths winding_mode)to the vector lib.
📱 Apps & UI
- Whiteboard: Added a new
movemode with snap-to-grid functionality. Left-clicking draws in the front, while right-clicking draws in the back. - Strokes Widget: Added the
:set_snap x ymethod. - Editor (
cmd/edit.lisp): Added a new quiet mode (triggered via the-qoption).
🐛 Bug Fixes
- Regex Engine: Fixed a typo in the
Regexp:searchmethod ((const bind)->(const bfind)) to properly enable the execution fast-path. - Regex & Editor: Updated the
Bufferclass,Regexpclass, and the Editor app to handle blank line$matches correctly. - Zero-Length Matches: Fixed the
Editclass so it correctly highlights zero-length matches (which are now possible due to the new lazy quantifiers). - Buffer Cursor: Fixed the
Bufferclass:next_found_cursormethod so it correctly moves the cursor to the start of the next line if a match occurs at the end of a line (i.e., includes\n). - Pixmap Conversion: Fixed the premul alpha format type test in
:pixmap :as_argb, and resolved an issue with the pixel conversion cache in:pixmap :as_premul.
⚠️ API Changes & Tooling
- Function Renames:
pixmap-saveandpixmap-infohave been officially renamed tocanvas-saveandcanvas-info. - CPM Save: Replaced the VP version of
CPM-savewith a new pure Lisp implementation:(CPM-save pixmap stream format) -> pixmap. - Windows Scripts: Updated all Windows
.ps1launch scripts to utilize the latest available options, bringing them fully inline with their.shcounterparts.
Enjoy
Chris