Nov 3rd 2021

Langium 0.2 is released

Mark SujewMark Sujew
Christian SchneiderChristian Schneider

We are pleased to announce the release of Langium 0.2

Our initial release of Langium back in June has garnered a lot of positive feedback. Members of language engineering communities were eager to try the framework, propose new feature ideas and report bugs. Additionally, we had our first opportunity to speak publicly about Langium at the Strumenta Community Meetup.

New and shiny

The new release comes with many new features and improvements to the framework.

Workspace management

Previously, Langium only supported working with the currently opened file. Any other files in your workspace were ignored.

With the newly introduced workspace management system you can reference elements of your DSL across multiple files within your workspace folder. After starting the language server, all files matching your custom DSL file extension are automatically loaded and available for referencing. Handling large workspaces is also now boosted by workspace indexing allowing for fast cross reference checking.

LSP features

We continue improving the editing support for Langium which also includes new default implementations and APIs for common Language Server Protocol features.

  • Renaming
  • Code Actions/Quick Fixes
  • Code Folding
  • Hovering

As always, downstream users of Langium are encouraged to build their own implementations on top of our default implementations.

Parser improvements

Langium has seen a lot of internal improvements for this release, most notably in regards to the parsing infrastructure.

Compared to our first version, after the new release the Langium CLI will no longer generate TypeScript code for the parser. Instead, the parser will be built completely in memory. This does not only improve parsing speed, but also allows users to overwrite our new TokenBuilder. It is in charge of building parsing token types, i.e., splitting the input string into tokens and determining their types. The tokens will then be consumed by the parser. Besides enabling more fine grained control over the lexing and parsing steps, this fixes a bunch of bugs which accompanied the old generated parser.

Other improvements

When testing your custom service implementations, you can now rely on Langium’s new unit testing infrastructure, which is available for most LSP related services.

In total, we were able to close 42 issues and merge 60 pull requests since our last release. If you’re interested in everything that happened during the last months, you can take a look at our changelog.

What’s next?

After the release of this version, we will focus on the Langium website, where we will publish documentation and tutorials for Langium. In the meantime, you’ll find a getting started guide at the npm package documentation.

Additionally, we already have more features planned for our next release. Most of them will be related to the Langium grammar itself, like being able to embed multiple languages within a single Langium based language server.

Stay tuned for more updates on Langium by watching the repository over at GitHub. Also, if you’re interested in contributing to Langium, consider joining TypeFox. We’re hiring!

Thank you

Last but certainly not least, a big Thank You to the following people who contributed to this release of Langium:

  • Mark Sujew (@msujew)
    • Refactoring of the parser infrastructure
    • Listening to file system changes in the language server
    • Allow to interrupt document lifecycle after user actions
    • Hover and folding LSP services
  • Dennis Hübner (@dhuebner)
    • Workspace indexing
    • Renaming LSP service
  • Miro Spönemann (@spoenemann): Refactoring linking infrastructure
  • Irina Artemeva (@Pluralia): Implementations and examples for CLIs built with Langium
  • Jan Bicker (@jbicker): API improvements and testing
  • Christian Schneider (@sailingKieler): ‘LinkingError’ for unresolved references
  • Insa Fuhrmann (@insafuhrmann): API for code actions
  • Kai Salmen (@kaisalmen): Unit testing infrastructure
  • Christian Dietrich (@cdietrich): Case insensitive completion prefix matching

About the Authors

Mark Sujew

Mark Sujew

Mark is the driving force behind a lot of TypeFox’s open-source engagement. He leads the development of Langium and is a very active member of the Theia IDE development team. Away from his day job, he enjoys bartending and music, is an avid Dungeons & Dragons player, and works as a computer science lecturer at a Hamburg University.

Christian Schneider

Christian Schneider

Christian is a seasoned DSL enthusiast with a decade of expertise in language tooling and graphical visualizations. While striving for innovative and sustainable solutions, he still pays attention to details. Quite often you’ll find Christian nearby the sea, with the seagulls providing a pleasant ambience to his meetings.

Read more about this topic

read the article

Mar 18th 2024

Article

Irina Artemeva

Run fast, debug easy: Exploring the synergy of Langium and LLVM

Ensuring your language is both executable and debuggable is an interesting challenge. Let's discover how to achieve this using Langium and LLVM.

read the article
watch the videoOpen Video

Mar 7th 2024

Video

Benjamin F. Wilson

Getting started with Langium – Part 7 "Generating Drawing Commands"

In this tutorial Ben will demonstrate how we can generate drawing commands from a MiniLogo program, building on the generator work we’ve already established in the prior tutorial.

watch the video
read the article

Mar 5th 2024

Article

Benjamin F. Wilson

Langium 3.0 is Released!

Langium 3.0 is released! This release brings us new improvements & features, like reduced bundle size, ESM support, and more.

read the article
LOAD MORE