April 2025 Monthly Development Update

This is the TLA⁺ Foundation monthly development update (subscribe via RSS). Here we summarize the past month of development for the benefit of Foundation patrons and interested members of the community. We will also highlight a good bug or small feature for prospective new contributors to look at! If your TLA⁺ contribution was missed, worry not - we publish monthly, so it’s easy to hop on the next train; open an issue here.

If you’re interested in getting involved in the TLA⁺ community:

  • Learn TLA⁺ starting here!
  • Join the monthly virtual community meetings here!
  • Read the mailing list here!
  • Start hacking on the tools themselves here!

Organization & user updates

Community TLA⁺ tooling updates

Work done by community members on non-TLA⁺ Foundation-managed projects:

Core TLA⁺ tooling updates

Work done by community members on TLA⁺ Foundation-managed projects:

TLA⁺ Foundation-funded updates

Finally, things Andrew Helwer (author of this post) worked on - all funded by the TLA⁺ Foundation!

  • After spending the past few months doing a lot of testing & exploration of the various TLA⁺ parsers, I am writing a guide to distill this knowledge for others. The tutorial series Create your own TLA⁺ tools will teach you how to write TLA⁺ language tooling for a minimal vertical slice of the language (just enough to handle the generalized Die Hard spec, with some inconvenience). The purpose of the guide is to prepare contributors to make serious contributions to the existing TLA⁺ language tools, by writing their own simple prototype and then contrasting it with the existing implementations.
  • I attempted (unsuccessfully) to get the Eclipse-based TLA⁺ Toolbox GUI to build using the TLA⁺ tools Maven package, so we can split the Toolbox out into its own repository. If you’re reading this and know anything about the OSGi build process, your help would be greatly appreciated!
  • I combined some repos and collected TLA⁺ standards documents into the RFCs repo, to be used as a one-stop shop for the TLA⁺ language standard, conformance test suites, and RFC status tracking.

Newbie Corner

Here we highlight an issue that would be a good choice for new contributors! This time we’re looking at PlusCal, a language which transpiles into TLA⁺. The transpilation process includes logic to insert linebreaks so the output TLA⁺ is readable. Unfortunately, in one case this logic has gone awry and results in invalid TLA⁺ output on long procedure names!

There is an old PR (not merged for some reason or another) which might contain the simple fix necessary. So, the work required is to evaluate the PR change to see whether it indeed fixes the issue, then find a way to write an automated test for it. Try various modifications of the reported failing test case to ensure that close input variants don’t elude your fix. Resubmit the combined changes in your own PR with credit to the original, using the Co-authored-by: git commit message trailer.

Issues highlighted in past months have also yet to be claimed!

The following past highlighted issues have now been fixed: