sh2lang v0.2.0

Highlights

  • Codegen Modularization: Significant refactoring split the monolithic lowering logic into focused submodules (e.g., emit_line, emit_val, emit_cmd).
  • Sudo Lowering Extraction: Separated sudo handling for clarity and maintainability.
  • Import aliases: import "path" as alias with qualified calls: alias.func(). Mangled wrappers emitted lazily (only when referenced).
  • Error-Type Research: Layed groundwork for unified error-types within the compiler.
  • Fixture Naming Policy: Established and documented conventions for snake_case naming of test fixtures.

Features

(No new user-facing language syntax other than import aliases; output behavior remains identical).

Diagnostics

  • Suggestions: “did you mean …?” hints for unknown import aliases and unknown qualified function names

Editors

  • VS Code: as keyword highlighting in import statements

Fixes

  • Test harness: exec fixtures now fail fast when missing expected output files.

Breaking changes

  • Reserved keyword: as is now a reserved keyword. Previously, as was a valid identifier in all positions (variables, function names, parameters). Any existing code using as as an identifier will fail to compile.