Skip to content

Ghi v0.2.4

Choose a tag to compare

@arm092 arm092 released this 26 Sep 23:31
· 29 commits to master since this release

Ghi v0.2.4

Compiler and build performance

  • Specialize small inherited methods across namespaces and generic hierarchies, including concrete descendants of generic bases and nested type arguments.
  • Preserve virtual dispatch, parent, receiver aliases, closures, visibility and original exception source locations. Generated type aliases avoid capturing user-local names.
  • Reuse validated generated Go output in .ghi/build, with content-based invalidation for sources, installed Ghi packages, manifests, lockfiles, compiler/toolchain settings and Go export artifacts.
  • Retain stable generated paths so Go can reuse unaffected packages; reuse previous output as an atomic build candidate so Go can skip unnecessary linking.
  • Overlap dependency checksum verification with Ghi analysis. Verification must succeed before generated output is accepted; failures preserve the previous executable.
  • Keep debug/test/editor-overlay workspaces isolated. Busy or unavailable caches fall back to temporary compilation.
  • Improve missing-record handling in the DDD example without constructing an intermediate native exception.

Measurements

Windows amd64, Core i9-13900HX, Go 1.26.3; local medians, not cross-platform guarantees:

Workload Before After
Generic inheritance, concrete descendant 3.838 ns/op 1.140 ns/op
Generic inheritance, generic descendant 4.243 ns/op 1.057 ns/op
DDD build, unchanged sources 3.987 s 2.095 s
DDD build, one edited service 3.822 s 2.934 s

Generic call fixtures allocate zero bytes per operation. Ghi still performs project-wide semantic checking after source edits. Methods that rebind/address this, oversized bodies and inaccessible declarations retain shared implementations. Debug builds disable receiver specialization. See the English README and raw benchmark samples for methodology and limitations.

Downloads

  • Windows: native x64/ARM64 Setup, or portable archives.
  • macOS: Intel and Apple silicon portable archives, or Homebrew using the updated repository formula. The installer kit builds an unsigned universal .pkg on a Mac with Xcode Command Line Tools; a native v0.2.4 .pkg is not supplied.
  • Mojave remains independently versioned at v0.1.0.
  • SHA-256 checksums accompany the archives, installer and macOS installer kit.

Verification

The complete Go test suite and go vet passed. The packaged Windows amd64 CLI passed version/setup, project initialization, repeated execution and DDD unit/integration tests. All eight bundled binaries have verified target architectures, and archive contents/checksums were verified. Native Windows ARM64, macOS installation and Homebrew runtime checks were not performed on this Windows host. The Windows installer was compiled successfully; native macOS/Homebrew verification remains deferred. No paid GitHub Actions were used.