This release contains the latest rewrite of the samlang codebase in TypeScript.
This release refactors the project into Kotlin multiplatform build.
With some engineering, we can now generate a package that can be distributed on NPM and run in
browser. Check out
The first beta version of samlang is released. The expression level language features are mostly fixed. Future versions will try to maintain backward-compatibility with best effort.
Features considered for future versions include:
- More visibility modifiers:
- Nullable types
- Interfaces (potentially with functors)
- Better optimizations with interprocedural analysis
If you have any ideas on what should be included in future releases, feel free to create GitHub issues as feature requests. Please note that not all requests will be granted. For example, all requests to make samlang dynamic will be rejected, since samlang is a statically-typed language, and will remain statically-typed in the future.
This update drops the support for unit literal, TS/JS/Java compilation targets, and added support for x86 assembly target support. The compiler now includes a set of optimizers that are enabled by default.
This update changes the
val expression into
val statement. Read the updated docs for its usage.
This update changes the method/function access syntax from
a.b() to be consistent with
most programming language.
samlang will no longer error on insufficient context for type inference when a generic type
cannot be inferred from context. Instead, it will treat them as
Finally, type query and autocompletion are implemented with the newly introduced language server.
The VSCode extension will run
samlang lsp to take advantage of that.
This update introduces the support for multi-module programs and a syntax change. You can read the docs to see how to use imports.
After this change, modules are now renamed as classes, and utility module syntax support has been
removed. You can simply change
This update brings a working interpreter to the language.
The interpreter is now hosted on the demo website.
This update changes the design of the language.
Now the syntax of the method access changes from
expr::methodName, and the
dot syntax now means field access. Therefore, you now have two ways to access a field:
Docs on the website and the test cases have been updated.
This is the first alpha release.
The language syntax and semantics are far from stable.
The live interpreter will be hosted soon.
Stay tuned for more info.