Version 0.5 Release - Standard Library, Stability, and Direction
Hachi v0.5 is a step forward in making the language more consistent, more usable, and easier to build real programs with.
This release focuses on three main areas:
- better error handling
- improved core behavior (especially around strings and arrays)
- a more complete and usable standard library
No major syntax changes. No philosophical shifts. Just making the system more solid and practical.
Better Error Handling
One of the biggest improvements in v0.5 is how errors are surfaced.
Previously, backend C++ compiler failures would bubble up directly, which made it harder to understand whether an issue came from Hachi or from generated code.
Now:
- backend compiler errors are wrapped in Hachi-native diagnostics
innerCPPandouterCPPfailures are clearly separated from Hachi-generated errors- error messages are more structured and easier to reason about
The goal here is simple: when something breaks, you should know where and why without digging through raw compiler output.
More Consistent Execution (CLI + REPL)
The CLI and REPL have been tightened up to behave more consistently across:
-go-build-cpp
Execution paths are now more aligned, which reduces edge cases where behavior would differ depending on how code was run.
The REPL is also more stable, with fewer internal errors leaking through during iterative use.
String and Array Stability
A lot of work went into stabilizing:
StringStringArray
These are foundational types, and inconsistencies here tend to show up everywhere else.
This release improves:
- consistency across execution modes
- predictability of behavior when passing values around
- overall reliability when building larger compositions
This work also lays the groundwork for future improvements around ownership and data structures.
Standard Library Upgrades
str (formerly so)
A new str module replaces the old so module and provides a cleaner foundation for string utilities.
Current capabilities include:
- substring detection (
strContains) - string splitting (
split) - basic comparison helpers
This is intentionally small, but structured for expansion.
fs (filesystem)
The legacy fs module has been replaced with a more robust implementation.
It now supports:
- file write, append, and read
- existence checks
- file copy and removal
- safer handling of missing files and edge cases
The new implementation has been validated with full workflow-style smoke tests.
path
The path module has been improved to better support filesystem operations and integrates cleanly with the new fs module.
fmt and log
Both modules were refactored to:
- clean up semantics
- improve output consistency
- better align with Hachi’s call model
Versioning Note
This release is versioned as v0.5 instead of a patch release because the changes go beyond incremental fixes.
The language and standard library are now in a more coherent state, with a clearer direction going forward.
-Mike