Awesome Donna and 0.2.0
Awesome Donna official repository is now here and we released v0.2.0 of Donna
Donna v0.2.0 is here
Donna v0.2.0 released earlier today with a bunch of quality of life improvements, new commands and compiler changes. Let's see together what changed.
Between v0.1.0 and this release we had a few smaller releases where we slowly prepared the ground for the next big step of Donna. Most of the changes in this release are focused around developer experience, project management and compiler infrastructure.
What's new
Let's start with the new additions in Donna.
New compiler commands & subcommands
The Donna CLI grew quite a bit in this release.
donna clean
The donna clean command now supports more granular cleanup operations:
donna clean --docs
Deletes the docs directory.
donna clean --lock
Deletes the donna.lock file.
donna clean --all
Deletes the build directory, docs directory and donna.lock file.
This is especially useful during CI runs, package debugging or when testing dependency resolution.
donna build
The build command now supports release builds and cross-target compilation.
donna build --release
Builds the project in release mode under:
build/release/target/<target>/bin/
You can also specify a target manually:
donna build --release --target=<target>
Or build for every supported target:
donna build --release --target=all
This makes it much easier to prepare binaries for releases and automate distribution pipelines.
CI workflows in new projects
New Donna projects now automatically include a CI workflow configuration.
The generated workflow will run checks and tests automatically on pushes and pull requests, helping projects start with a proper setup from day one.
This is something I wanted from the beginning because a lot of Donna projects will probably end up as libraries and small tools. Having a basic CI already configured removes one more small friction point.
Cyclic dependency detection
Donna will now detect cyclic dependencies and report them as compiler errors.
Before this release cyclic dependencies could result in confusing compiler behaviour or cascading errors. The compiler now detects the cycle directly and reports it clearly.
Better error reporting
A large amount of work in this release went into improving compiler diagnostics.
Donna now reports:
- Better parser errors
- Better type mismatch messages
- More precise location reporting
- Improved dependency related diagnostics
- Cleaner formatting in multi-error reports
Error reporting is still one of the highest priorities for Donna and will continue improving in future releases.
Awesome Donna
Earlier today we also released the first edition of the Awesome Donna list.
The goal of the list is simple: collect libraries, tools, applications and learning resources built around Donna. For now it's just one man show.
The first edition already includes a few small but usefull packages.
I always enjoy seeing ecosystems slowly grow around programming languages. Even small examples, experiments and tiny libraries will help shape the language and discover weak points in the tooling.
Under the hood
This release also includes many internal compiler changes and infrastructure improvements that are less visible from the outside.
A few notable ones:
- Improvements in incremental compilation
- Better internal project structure
- Cleanup in compiler passes
- Various bug fixes
- Build system improvements
- CLI improvements
A lot of this work was not particularly glamorous but it helps keep the compiler maintainable as Donna grows.
What's next
The focus after v0.2.0 will continue around:
- Improving warnings
- Better linker related errors
- More documentation
- Additional libraries
- Editor tooling
- Dependency management improvements
There is still a lot of work ahead before Donna reaches the point I envision for it, but each release slowly pushes things in the right direction.
If you trying Donna Language please report bugs and share your projects.
Thank you.