Lumen | Modern Scripting Platform icon

Lumen | Modern Scripting Platform -----

A modern scripting platform that compiles scripts into native Java for near-plugin performance.




Changelog

This release includes major internal rewrites and multiple breaking changes. If you already have existing scripts, they may require updates before working correctly on this version.

Breaking Changes

Type System Overhaul

The type system has been fully redesigned.
* Exact types are now known throughout parsing
* Stronger guarantees and clearer validation
* Legacy type behavior has been removed

Global Variables Rewritten

Global variables have been completely revamped.
* Improved consistency
* Better type-awareness
* Cleaner internal behavior
* Trying to use the old global syntax will immediately throw

Explicit Nullability

Null handling is now explicit and type-aware.
* Variables cannot be assigned none unless declared nullable from the start
* Variables that are meant to be nullable must provide the exact type

Coercion Removed

Automatic coercion has been removed.
Previously, a variable declared as one type could sometimes receive another type. That behavior is gone.
Example:
* Declared as string → cannot assign int
* Declared as int → cannot assign unrelated types
This prevents many runtime surprises.

Lists and Maps Updated

Lists and maps have been partially rewritten.
* Typed collections are now emphasized
* Legacy untyped collections will immediately throw

Fixes & Improvements

Much Better Error Messages

Almost all diagnostics have been significantly improved.
* Clearer explanations
* Better highlights
* More actionable help messages

Smarter Unknown Pattern Handling

Unknown statements, conditions, expressions, loop sources, and blocks are now handled far better.
Instead of throwing a generic "Unknown X" even when the issue is only a typo, the matcher can now detect:
* Extra tokens
* Typos
* Missing values
* Type binding failures
* Closest-match suggestions

Fewer Runtime Surprises

With coercion removed and stronger typing, many issues are now caught earlier instead of failing later at runtime.

Data Classes Expanded

Data classes now support all types instead of being limited to only a small subset.

General Stability Improvements

Many additional fixes, cleanups, and internal improvements were made across the project.

Pattern Changes

Many patterns now use required groups instead of duplicated matching logic.

Performance

Faster Parsing

Parsing performance is now significantly faster ( 2.5x+ in many cases).
This was achieved through:
* Parallel parsing of independent blocks
* Faster pattern indexing
* Cheaper pattern matching

Experimental Compiler: Vanta

A new experimental compiler backend, Vanta, is available.
Benefits:
* Much faster startup compilation
* Up to 35x faster compile times in many scenarios (average about 10x faster)
Vanta is currently in beta.

API Changes

Statement Form Handlers Removed

Statement form handlers have been removed.

Ref Types Removed

Legacy Ref Types and related classes are gone, replaced by unified LumenType.

Single parameter handlers

Instead of inconsistent signatures in statements, expressions, and conditions. All of them now receive a unified HandlerContext.

Next release

The next release will be a focus on revamping the way people use Lumen.
Because some legitimately cool things... are coming?

Final Note

This release is a major step forward in correctness, tooling quality, performance, and long-term architecture.
However, keep in mind, this version is more beta than other releases due to the many breaking changes. There will be more edge cases.
----------, Apr 28, 2026

This release combines changes from the unreleased 1.0.9 and includes a large set of improvements, fixes, and internal refactors.

Breaking Changes

A much larger breaking change is planned for the next release. It will likely break around 90% of existing scripts due to a full type system overhaul.

Current breaking changes in this release:

* Overhauled the entire variable system, including global variables
This resolves many inconsistencies and internal issues
See more at: [ https://github.com/LumenLang/lumen/pull/18](https://github.com/LumenLang/lumen/pull/18)

Features

* Added instant inventory hot reload
Saving a script now updates currently open inventories in place without closing and reopening
Supports title, size, and item changes
Documentation: [ https://docs.lumenlang.dev/01-user/...dev/01-user/09-inventories/03-instant-reload)
* Added custom event bus for Lumen
See more at: [ https://github.com/LumenLang/lumen/pull/19](https://github.com/LumenLang/lumen/pull/19)
* Added support for event priorities
Documentation: [ https://docs.lumenlang.dev/01-user/...v/01-user/01-basics/07-events#event-priority)
* Added support for ignoring already cancelled events
Documentation: [ https://docs.lumenlang.dev/01-user/...1-basics/07-events#ignoring-cancelled-events)
* Allowed checking if an event is already cancelled
* Allowed uncancelling an event
* Allowed events to add imports through the API
* Added raw Java support in ConfigOption
* Exposed block access in EnvironmentAccess
* Allowed accessing CodegenContext inside TransformContext
* Implemented hover logic in MiniColorize

Improvements

* Made several conditions and patterns more natural
* Improved internal and user-facing descriptions
* Updated stop pattern to support "(stop|return)"
* Refactored event variable definitions to only include reference type or Java type

Fixes

* Fixed chat event not being cancellable
* Fixed inventory click event variables
* Fixed global variable default value not being set
* Fixed addon classpaths not being properly added
* Fixed raw Java line number preservation
* Fixed math operator coercion issues
* Removed showing experimental features in emit

Internal Changes

* General cleanup and consistency improvements across the variable system, events, and code generation pipeline
----------, Apr 9, 2026

Bug Fixes

Scripts now properly disable on plugin disable.

API Changes

Injectable handlers

Injectable handlers allow writing real Java code (via lambdas or static methods) instead of generating Java source as strings. The compiled bytecode is extracted and injected directly into the generated script class.
This introduces a completely new way of defining patterns, removing the need for manual Java string emission while enabling full IDE support, type checking, and significantly cleaner implementations.
Note: This feature is currently in beta and may evolve in future versions.

Internal Changes

The documentation format has been refactored into something more better long-term.
----------, Mar 27, 2026

This version adds code transformers. They can statically remove, replace, or add lines of code, and can be enabled through the config.
----------, Mar 22, 2026

This release fixes minor bugs and improves the overall API.
----------, Mar 14, 2026

Breaking Changes
Support for implicit arguments has been removed.

Previously, it was possible to omit certain arguments, for example:

message "Test"

You must now explicitly provide the variable:

message player "Test"

This change improves determinism in pattern matching and simplifies tooling.

Internal Changes
  • Refactored the type system, including multiple small bug fixes and improvements to inline expression handling.
  • The defaults module has been restructured and split into multiple files.
  • documentation.json has been updated on lumendocs.dev.
----------, Mar 12, 2026

Resource Information
Author:
----------
Total Downloads: 45
First Release: Mar 3, 2026
Last Update: Apr 28, 2026
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings