You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Merge pull request #60 from helixlang/compliance/current-to-new-standard
**Extended Description:**
This merge brings the `compiler-v0.0.1` branch into alignment with the evolving Helix language standard. The goal of this update is to unify syntax conventions, improve clarity of declarations, and expand the core runtime library with essential functionality for both developers and end-users.
The updates span parser refactors, runtime improvements, and new standard library APIs, making this one of the most substantial shifts since the compiler’s initial release. While most changes are backward-compatible, operator declarations introduce a breaking change that requires migration.
### Why These Changes?
* **Consistency:** Operator and interface syntax were updated to follow a single, predictable pattern (`impl` replaces `has`, operator functions now use `fn op`). This simplifies parsing and improves readability.
* **Ergonomics:** The shorthand `impl` and `derives` syntax reduces boilerplate, making generic constraints and trait usage more concise without sacrificing clarity.
* **Capability Expansion:** New corelib APIs (`std::process`, `std::system`, `std::Stacktrace`, `std::ABI`) provide critical runtime utilities for process management, debugging, and ABI-level symbol handling.
* **Error Handling Improvements:** Panics now default to throwing at the panic site, removing the need for explicit `?` returns while still surfacing clear diagnostics.
### Key Additions
* Operator declarations migrated to new form.
* Shorthand syntax for `impl` and `derives` added.
* New runtime APIs in `std`:
* Process spawning (`Subprocess`, `ProcessOutput`).
* Command execution (`system`).
* Symbol mangling/demangling (`ABI`).
* Runtime stacktraces.
* Updated test suite and build system to reflect new standards.
* Improved parsing for generics, `where` bounds, and declaration handling.
### Breaking Changes
* **Operator Declarations:**
* **Old:** `op <symbol> fn <name>(...) -> <ret> {}`
* **New:** `fn op <symbol>(...)[<alias>] -> <ret> {}`
* Requires clause update is **not** breaking — old syntax remains supported.
### Migration Notes
* All operator functions must be rewritten to the new `fn op` form.
* No changes required for `requires` clauses, but adopting the new form is recommended.
* Code relying on `has` must be updated to `impl`.
### Impact
This merge provides a cleaner, more consistent foundation for Helix going forward, while introducing key runtime and tooling capabilities necessary for real-world application development. Contributors should expect minor refactoring in existing codebases (mostly operator declarations), but otherwise migration is smooth.
0 commit comments