Starlasu - A Language Engineering Framework
See the codeStarlasu Kotlin provides the infrastructure for building custom, possibly mutable, Abstract Syntax Trees (ASTs).
It supports both Kotlin and Java, and integrates smoothly with ANTLR, though it can also be used standalone.
Starlasu stands for Star Language Support — a family of libraries available for multiple languages, including Python, TypeScript, and C#.
| Version | Status | JVM Support | Kotlin Support | Notes |
|---|---|---|---|---|
| 1.5 | Maintenance mode | 1.8 | 1.8 | Actively maintained for legacy compatibility |
| 1.6 | Abandoned | — | — | Development discontinued |
| 1.7 | In development | 11 | 2.2 | Current main development branch |
| 2.0 | Planned | 17 | 2.2 | Future major release with modern JVM and Kotlin support |
Tested with JDK 11, 17, and 21.
Other intermediate versions are expected to work as well.
Starlasu is used to implement:
It serves as a general foundation for projects that need to manipulate or generate language structures.
Extend your AST classes from Node to automatically gain:
Starlasu began as a small framework to support building languages with ANTLR and Kotlin.
It has since evolved into a modular, cross-language toolkit used at Strumenta in both open-source and commercial projects for transpilers, interpreters, compilers, and related tools.
Add the dependency from Maven Central:
dependencies {
implementation "com.strumenta.starlasu:starlasu-core:1.7.x"
}
The lionweb module contains JMH microbenchmarks for the model-conversion
hot paths (importModelFromLionWeb, exportModelToLionWeb, tree traversal).
# Run all benchmarks
./gradlew :lionweb:jmh
# Run a specific class
./gradlew :lionweb:jmh --include "ImportModelBenchmark"
# Run with GCProfiler (allocation tracking) via the fat jar
./gradlew :lionweb:jmhJar
java -jar lionweb/build/libs/lionweb-jmh.jar ImportModelBenchmark
See lionweb/README.md for the full benchmark documentation.
Format the code using:
./gradlew ktlintFormat
Starlasu (and its predecessor Kolasu) are used in several internal and commercial projects developed at Strumenta.
If you need to publish a new release:
Set up GPG keys
brew install gnupg
gpg --gen-key
(no passphrase needed)
Export your keys:
gpg --keyring secring.gpg --export-secret-keys > ~/.gnupg/secring.gpg
Configure credentials
Add your Sonatype credentials to ~/.gradle/gradle.properties:
ossrhTokenUsername=your_username
ossrhTokenPassword=your_password
Publish the release
./gradlew release
Releases are handled automatically once triggered.
For detailed setup instructions, see
Publishing your first open-source library with Gradle.
Kotlin
95.3%
Java
4.1%
Starlasu - A Language Engineering Framework
See the codeStarlasu Kotlin provides the infrastructure for building custom, possibly mutable, Abstract Syntax Trees (ASTs).
It supports both Kotlin and Java, and integrates smoothly with ANTLR, though it can also be used standalone.
Starlasu stands for Star Language Support — a family of libraries available for multiple languages, including Python, TypeScript, and C#.
| Version | Status | JVM Support | Kotlin Support | Notes |
|---|---|---|---|---|
| 1.5 | Maintenance mode | 1.8 | 1.8 | Actively maintained for legacy compatibility |
| 1.6 | Abandoned | — | — | Development discontinued |
| 1.7 | In development | 11 | 2.2 | Current main development branch |
| 2.0 | Planned | 17 | 2.2 | Future major release with modern JVM and Kotlin support |
Tested with JDK 11, 17, and 21.
Other intermediate versions are expected to work as well.
Starlasu is used to implement:
It serves as a general foundation for projects that need to manipulate or generate language structures.
Extend your AST classes from Node to automatically gain:
Starlasu began as a small framework to support building languages with ANTLR and Kotlin.
It has since evolved into a modular, cross-language toolkit used at Strumenta in both open-source and commercial projects for transpilers, interpreters, compilers, and related tools.
Add the dependency from Maven Central:
dependencies {
implementation "com.strumenta.starlasu:starlasu-core:1.7.x"
}
The lionweb module contains JMH microbenchmarks for the model-conversion
hot paths (importModelFromLionWeb, exportModelToLionWeb, tree traversal).
# Run all benchmarks
./gradlew :lionweb:jmh
# Run a specific class
./gradlew :lionweb:jmh --include "ImportModelBenchmark"
# Run with GCProfiler (allocation tracking) via the fat jar
./gradlew :lionweb:jmhJar
java -jar lionweb/build/libs/lionweb-jmh.jar ImportModelBenchmark
See lionweb/README.md for the full benchmark documentation.
Format the code using:
./gradlew ktlintFormat
Starlasu (and its predecessor Kolasu) are used in several internal and commercial projects developed at Strumenta.
If you need to publish a new release:
Set up GPG keys
brew install gnupg
gpg --gen-key
(no passphrase needed)
Export your keys:
gpg --keyring secring.gpg --export-secret-keys > ~/.gnupg/secring.gpg
Configure credentials
Add your Sonatype credentials to ~/.gradle/gradle.properties:
ossrhTokenUsername=your_username
ossrhTokenPassword=your_password
Publish the release
./gradlew release
Releases are handled automatically once triggered.
For detailed setup instructions, see
Publishing your first open-source library with Gradle.
Kotlin
95.3%
Java
4.1%