• v.1.0.0-beta.2 13ad2aaa3b

    v.1.0.0-beta.2 Pre-release

    abiwab released this 2026-07-13 19:42:42 +02:00 | 179 commits to main since this release

    Release Notes - v1.0.0-beta.2

    Preparing for a final release, Marketplace, and npm!

    The final push is officially on! Since the last release, I've hit pause on new features to conduct a massive architectural audit and stress test of the entire project.

    Preparing the engine for this milestone is only half the battle. I also needed to ensure the codebase was flawlessly secure and polished before its grand debut. While they aren't available just yet, the 1.0 launch will mark the official publication of the core packages on npmjs and the release of the VSCode extension on the Marketplace. First impressions matter!

    Speaking of grand debuts, the project finally has an official home: gram-lang.org is live!

    Massive Testing & A Peek into the Future

    The number of automated tests has been drastically increased across the board to ensure the engine is rock-solid. As part of this,a strict, language-agnostic conformance suite has been introduced. It will make things much easier if (or when...) this project is eventually migrated to Rust!

    In the meantime, the entire monorepo has been upgraded to TypeScript 7, which already brings massive speed benefits to the toolchain.

    API Documentation & Dev Experience

    For the developers out there, a comprehensive "API Reference" section has been added to the documentation. It covers the programmatic APIs of the parser, kitchen, analyzer, renderer, and i18n packages, making it easier than ever to integrate Gram into your own tools and applications.


    What's New & What's Changed

    Syntax Enhancements (Yes, Breaking Changes Again...)

    I know, I know, more syntax changes. But I promise these make the language significantly more ergonomic:

    • The Temperature Sigil (^): I am saying goodbye to the ° sigil. While typing ° is super easy on my native AZERTY keyboard, I realized it is an absolute nightmare to type on a standard US QWERTY keyboard! To make Gram truly universal, temperatures now use the ^ sigil (e.g., ^{180C}).
    • Passive Timers (~_): The passive timer marker has been changed from ~& to ~_. This fixes a cognitive inconsistency: the & symbol is strictly used as a reference marker everywhere else in the language, so using it for background timers was confusing.
    • Fractions: The parser now natively supports mixed-number ASCII fractions (like 1 1/2) as well as Unicode vulgar fractions (like ½ or ¾).

    CLI Upgrades, Polish & Security

    • Tolerant Ingredient Database: Previously, a single invalid entry in your ingredients.yaml would hard-crash the entire CLI. Now, the parser is tolerant: it skips the corrupted line, loads all valid entries, and displays a clean warning, making manual editing much safer!
    • Accented Ingredients Fix: Fixed a frustrating bug where non-Latin or accented characters (like crème fraîche) in ingredient names were incorrectly stripped out, causing custom densities to be silently ignored. Unicode is now fully supported!
    • Massive CLI Speedups: gram format now processes your files concurrently, and gram db sync uses a new length-based pre-filtering algorithm to drastically speed up similarity searches.
    • Global Verbose Flag: Added a --verbose (or --debug) flag to all CLI commands to print full stack traces when you need to troubleshoot.
    • Strict Type Safety: A crusade against any types in the compiler resulted in the eradication of over 240 of them and the introduction of strict discriminated unions. The engine's determinism is now mathematically proven.
    • Unified Diagnostics: gram check and the Language Server now share a single, unified warning severity map. By default, the CLI will only fail on actual structural errors (use --strict if you want the old, unforgiving behavior).
    • VSCode Extension Speed: Fixed some race conditions with completions and added debouncing. Also, editing your ingredients.yaml now live-reloads diagnostics in the editor without needing a restart!
    • Security Hardening: .env files are now written with strict 0600 permissions. Strict runtime Zod validation for configurations has also been added, and gram import has been hardened with timeouts and payload limits to protect against bad AI responses.
    • Deterministic HTML: The HTML renderer no longer uses Math.random() for footnote anchor IDs, ensuring the output is perfectly byte-stable.

    What's Next?

    I think the final release will be ready very soon.

    Thank you for following along on this journey (even if I'm probably talking to an empty room!). If you want to chat or break the new syntax, feel free to drop by the repository. A bientôt ! 🤙

    Downloads