From a user’s perspective, not much has changed in terms of the features, but from a developer’s perspective, lots of things have changed behind the scenes and new crates have been added.
On the other hand, we removed unready features and unused code in preparation for the upcoming features.
## New crates
This release includes 5 new crates:
* `microcad-lang-base`: A crate providing basic functionality for processing µcad language: error diagnostics and source code referencing.
* `microcad-lang-parse`: Formerly `microcad-syntax`, this crate provides an API to parse a `&str` with microcad into an abstract syntax tree (`mod ast`).
* `microcad-lang-format`: Formats µcad code using `microcad-lang-parse`.
* `microcad-lang-markdown`: A crate to parse markdown code and `mdbook`s and iterate over µcad code snippets.
* `microcad-driver`: A high-level API for integrating µcad compile toolchain into Rust applications.
## `microcad-driver`
We developed a driver API for integrating µcad into Rust applications.
It bundles all necessary boilerplate to setup a µcad compiler toolchain.The driver API is currently used in `microcad-tests`, `microcad-lsp`, `microcad-viewer` and `microcad-inspector`.
The API is not yet fully stable and is subject to change
It will serve as foundation for the upcoming compiler toolchain refactor in the next months.
## `microcad-lang-base`
We moved commonly used things from the `microcad-lang` in this `base` crate.
This includes mostly source code referencing, error handling and diagnostics.
This crate will serve as the basis for splitting up the `lang` crate for `v0.6.0`.
The `SrcRef` struct has been reduced to 32 bytes not requiring any heap allocation anymore.
Moreover, we have refactored the diagnostics.
`microcad-lang-base` exposes fundamendal types from other crates like `Url`, `CompactString` that are used in the compiler toolchain.
### `microcad-lang-format`
A lot of work went into the code formatter.
Different approaches have been tried (including `pretty-rs`), and most promising was to take inspiration from the `pretty-rs` API and write our own formatting engine.
This included work into streamlining the parser and extend the syntax tree so it can hold comments and whitespace.
Implementing a code formatter is challenging and tedious.
Hence, there are many improvements possible (see [issues]).
But as of now, we haven’t found any case in which µcad code became defunctional or more messy after formatting.
So it’s working at least good enough, one might say.
### CLI interface
We have change the CLI commands to make them more ergonomic:
* `check`: This commands checks a µcad file for errors and replaces the `parse`, `eval`, `resolve` commands.
* `export`: This commands compiles a µcad file and export the output into a file (e.g. `.stl` or `.svg`)
* `doc`: Generates documentation for µcad sources (still experimental).
* `fmt`: Format a µcad file.
The CLI only uses `microcad-driver` as dependency.
### IDE plugins
Thanks to @icewind, the zed plugin improved a lot and is installable and the syntax highlighter is working.
However, it is not ready for production usage due to some shortcomings in `microcad-lsp` and `microcad-viewer-ipc`.
Improving the IDE integrations will part of our Roadmap for 2026, stay tuned 🙂
### Upcoming releases
From now on, we want to establish a bi-monthly minor release cycle.
µcad`v0.6.0` will be released by the end of July 2026.
## One more thing
Oh, and Micha will give a talk about µcad language at RustWeek this year: <https://2026.rustweek.org/talks/michael/>.
.
