-
v.0.9.0-alpha Pre-release
released this
2026-06-07 19:16:56 +02:00 | 473 commits to main since this releaseRelease Notes - v0.9.0-alpha
Cleaning up the Kitchen: Scopes & Architecture
This release focuses heavily on restructuring the project to make it sustainable, modular, and ready for long-term development.
Wait... Where did v0.8.0 go?
If you were looking for the
v0.8.0release notes, don't blink—you didn't miss them! In the process of setting up Changesets to automate my workflow, the tool looked at the sheer volume of updates, structural revamps, and package migrations, and essentially said: "This is too big for a single step, we are skipping straight to v0.9.0." Consider it a kitchen accident where the dough rose twice as fast as expected. Let's call it a feature, not a bug!Moving to Scoped Packages
All packages have now been migrated under a unified npm scope:
@gram/. Whether you are using the parser, the compiler, or the playground, everything is now cleanly organized under@gram/parser,@gram/compiler, etc.A Major Architectural Split: Introducing
@gram/analyzerIn the previous release, I reclassified features like mass unification, yield management, and nutritional information calculation as experimental. Taking this a step further, I realized that bundling this complex analytical logic directly inside the core compiler was a mistake.
To keep the compiler fast and lean, I have extracted all analyzer logic into its own dedicated package:
@gram/analyzer.🚨 Breaking Change: The core compiler no longer ships with a built-in ingredients database. If you rely on nutritional estimation, mass normalization, or yield management, you will now need to explicitly provide your own ingredients data to the new analyzer package.
What's New
Refining the Syntax & "Mise en Place"
- Removing Ingredient States: I have decided to remove the ingredient states syntax (
@ingredient:state{}). While the original intent was to help organize a richer ingredients database, real-world usage proved it was far too confusing and verbose to write. - Cleaner Section Summaries: Pure flow instructions—like mentioning an ingredient just to say "remove from heat" or "re-insert"—without quantities (
@&ingredient{}) are now excluded from section-level ingredient summaries. This keeps your section-level mise en place lists perfectly clean while preserving separate measured portions. - Semantic Temperatures: The GRAM syntax now natively accepts semantic temperatures. You can now write intuitive instructions like
Cook on !{low heat}without being forced to specify exact Celsius or Fahrenheit degrees. - French Culinary Units: Unit resolution has been improved to seamlessly handle French kitchen aliases (e.g., translating
tsptocàc).
Under the Hood Improvements
- Mass Calculation Fixes: Fixed multiple edge-case bugs with mass calculations. Following up on the previous release, explicitly empty ingredient masses now safely count as exactly
0to avoid breaking total weight equations. - Streamlined Maintenance: I have completely stripped out
/distfolders from the main repository tracking and migrated the entire project's versioning workflow to Changesets. This will make tracking modifications, maintaining a clean root changelog, and shipping predictable updates significantly easier going forward.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Removing Ingredient States: I have decided to remove the ingredient states syntax (