Turicum 1.4.1
The release 1.4.1, as of Nov 18, 2025 is the fifth release of the Turicum interpreter.
Overview
This release includes significant improvements to the language server, debugger implementation, Java integration, and numerous language feature enhancements and bug fixes.
Major Features
Language Server Protocol (LSP) Enhancements
- Refactored LSP implementation with improved stability
- Reference finding capabilities now available in LSP
- Hover documentation display support
- Formatting rules file processing to override built-in formatting rules
- Multi-line string and comment formatting support
- Improved lexer handling for newlines to support proper formatting
Debugger Implementation
- New debug adapter with enhanced session handling
- Debugger smoke tests passing
- Debug context with pinning support for function calls
+turi.debug+ module now available
+set_force+ and +set_caller_force+ functions for creating pinned functions
Java Integration
- Java class loader and runtime class management
- Direct Java integration capabilities
- Support for javax to jakarta exception handling
- Test framework that runs snippets from JavaDoc
REPL Improvements
- Shell command execution support
- Proper escape character handling
- Language server packaging using shaded JAR
Language Features
New Functions and Operators
+quote()+ function as alias to trunk quote operator
+chr()+ function for character handling
+ord()+ string method for character codes
+delete+ macro for removing fields from objects
+enumerate()+ function for iteration
+compile()+ function that creates thunks from strings
- New
+add+ operator supporting block and list commands
Control Flow Enhancements
+if+ expression now available (in addition to +when+)
+else+ statements no longer require ‘:’ syntax
+try+, +catch+, +finally+ no longer require ‘:’ syntax
+continue+ can now be used inside blocks within loops
- Built-in functions (
+die+, +return+, +continue+, +break+, +yield+) now use +when+ instead of +if+
Multi-Assignment Support
+MultiLetAssignment+ for simultaneous variable assignment
+for each+ loop now supports list decomposition
- Local context respects pinning even when updating global variables
String Handling
+TuriString+ function for string operations
- Improved string interpolation for command blocks
- Command blocks can now be concatenated
Technical Improvements
Build and Infrastructure
- Updated to Java 25 (Maven extension remains on Java 21 for compatibility)
- Maven 3.9.11 and 4.0.0-rc4 compatibility
- Maven extension no longer uses deprecated methods
- Packaging name updated to avoid naming collisions and eliminate macOS-13 specific builds
- Workflow configuration updated for Java 25
- Super JAR created for easier distribution
Code Organization
- Exceptions moved to a separate package
- Built-in documentation moved to source files and included via Jamal
- Formatter indent level now uses the lexical analyzer instead of heuristics
- Error reporting simplified with heuristics removed
- Proper handling of escape characters in REPL
Bug Fixes
- Fixed “none assigned to non-none variables” crash
- Fixed
+if true: 3 ; + 5+ incorrectly resulting in 8
- Fixed NPE issues
- Fixed divide error text
- Fixed various formatting inconsistencies
- Fixed local context pinning for global variable updates
- Fixed typos in naming (UnLet → Unlet)
- Current development version: 1.4.1 (non-released)
- Previous stable: 1.4.0