Skip to content

Releases: verhas/turicum

Release 1.4.1

18 Nov 16:38

Choose a tag to compare

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.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

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 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 ; + 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)

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

19 Jul 11:15

Choose a tag to compare

Closure joining ## was implemented.
Currying with .() was implemented

1.3.0

13 Jul 15:06

Choose a tag to compare

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

13 Jun 08:40

Choose a tag to compare

printing version from the command line version with the build time was fixed
Variables are hibernated (pinned temporarily) while being assigned a new value

Release 1.1.0

10 Jun 18:35

Choose a tag to compare

Turicum release 1.1.0