Gren 0.4: New foundations

Published: 2024-06-24

Gren is a pure functional programmming language that aims to be easy to learn and to reason about, while remaining powerful and portable enough for real-world use.

The core packages have been updated with new functionality and quality-of-life improvements. The compiler has started its transition from Haskell to Gren. The book has seen a face lift, and Zulip has been replaced by Discord.

Interested? Let's dig in.

New filesystem API

Robin demonstrates the new FileSystem API

The FileSystem API was functional, but minimal. It has been replaced by three new modules: FileSystem, FileSystem.FileHandle and FileSystem.Path.

Together, these modules give you access to most of the file system operations available in NodeJS.

If you want more information about the new FileSystem API, be sure to watch the video linked above.

Gren-in-Gren

This release contains the first few lines of what will eventually be a ground-up rewrite of the compiler in Gren. While it currently does little more than downloading and executing the Haskell-based compiler, it will eventually enable the use of compiler functionality (parsing, type checking, formatting) in Gren applications.

There are also several indirect benefits of the Gren-in-Gren rewrite, like lowering the barrier of contributing to the compiler, and improving the quality of the Gren core packages by virtue of compiler authors now also being Gren-developers.

In fact, the mentioned rewrite of the FileSystem API is a direct consequence of the compiler needing more functionality than what was previously available.

We'll talk more about the importance of Gren-in-Gren at a later time.

The book has received a face lift

Justin Blake has contributed big changes to the book, which serves as our language guide.

Not only has he filled in empty chapters and added a few new ones, he's also replaced the generator with Astro Starlight. One of the biggest consequences of this change is that you can now search for topics of interest.

We've moved to Discord

Since the very first release of Gren we've been using Zulip to coordinate development of the language. Over time we've received feedback that Zulip might not have been the best choice. Many people feel that they're drowning in communication platforms, so the bar for joining yet another platform is pretty high.

While our experience with Zulip has been good, the future success of Gren depends on an active community. Using the best tool means nothing if we're using it alone.

We've now decided to use Discord for discussing and sharing all things related to Gren. Why don't you join us?

Misc. changes

Thank you, contributors

This release was made possible through contributions from the following people: