Releases: verhas/turicum
Release 1.4.1
Turicum Release Notes
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 are 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.debugmodule now availableset_forceandset_caller_forcefunctions for creating pinned functions
Java Integration
- Java class loader and runtime class management
- Direct Java integration capabilities
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 operatorchr()function for character handlingord()string method for character codesdeletemacro for removing fields from objectsenumerate()function for iterationcompile()function that creates thunks from strings- New
addoperator supporting block and list commands
Control Flow Enhancements
ifexpression now available (in addition towhen)elsestatements no longer require ':' syntaxtry,catch,finallyno longer require ':' syntaxcontinuecan now be used inside blocks within loops- Built-in functions (
die,return,continue,break,yield) now usewheninstead ofif
Multi-Assignment Support
MultiLetAssignmentfor simultaneous variable assignmentfor eachloop now supports list decomposition- Local context respects pinning even when updating global variables
String Handling
TuriStringfunction 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 LSP 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 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 ; + 5incorrectly 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)
Known Notes
- LSP reference finding needs clarification on implementation details
- CI/CD currently requires released Turicum version
- Extensions.xml downgraded to 1.4.0 for compatibility
1.4.0
1.3.0
The operator << can attach an object to a list to provide methods to be called on the list.
List literals can also add an object after the optional filters and mappers with the with keyword.
A method named . (a single dot) is a joker method, invoked when a nonexistent method is called on a class or method.
Function source_directory() returns the directory of the source code, the compiled .turc file, or none.
The cases when ; can be missing without a new line are more restricted.
Known bugs: importing and sys importing with pattern matching will import only the first symbol that matches the pattern
1.2.0
Release 1.1.0
Turicum release 1.1.0