Skip to content

feat!: publish the whole ez program as the hub package ezx - #130

Merged
noah-emp merged 1 commit into
masterfrom
feat/ezx-app
Sep 30, 2026
Merged

noah-emp merged 1 commit into
masterfrom
feat/ezx-app

Conversation

@noah-emp

Copy link
Copy Markdown
Collaborator

The hub package ezx becomes the whole ez app. A plain bend 2.0.32+ user can now build ez from the hub the same way they build bolt:

import ezx@1.4.0.0/main.bend as Ez

def main() -> IO(Unit):
  Ez.main()

bend t.bend -o ez

Changes

  • The top-level main.bend is ez's program and the package entry. Its first line is # ezx: ez, the package manager for Bend 2., which becomes the hub description. It calls src/ez/main.bend's main.
  • Every module directory moved under src/ with git mv (add, check, doctor, ez, fetch, git, hub, init, io, ledger, lock, pkg, pub, remove, run, sha, share, tool, toml). Relative imports between them are unchanged. tests/ now imports ../src/....
  • [package] bin is dropped from ez.toml. The entry is now the program, so ez build, ez run and nix mkPackage (bin, else entry) all build it.
  • The ledger library is imported from src/ledger/manifest.bend. The re-exports in the old root main.bend are gone.
  • These now use the new paths and build line: SPEC.md's Law column, AGENTS.md, the README (hub build first, clone and nix second, library path, bend 2.0.32+, checked on 2.0.34), the guide, the RFC (WP34 paragraph and rollout row), ci.yml's readme job and the flake comments.

The published walk (68 files)

LICENSE, main.bend, then 64 .bend files under src/ plus src/share/pass.c and src/share/pass.js. No LAWS, PROOF, src/check/ or tests/ file is reached. The walk reaches these hash imports: shake 0xcab8…, snap 0xabe5…, ezhttp 0xf1c9…, eztoml 0x8fb9… and sha256 0x3bdc…. Each one returns 200 at hub.bend-lang.com/<hash>/manifest.

Verification (bend 2.0.34)

  • ez prove: 16 / 16, every PROOF.bend printing ALL PROOFS CHECK.
  • nix flake check -L: passes (proofs, lint 0 errors, fresh, ez).
  • The nix-built ez runs --help, and ez lock leaves ez.lock.toml byte-identical.
  • Plain-user build: I copied the walk files to a temp dir, wrote a t.bend that imports its main.bend, and ran plain bend t.bend -o ez with an empty HOME. bend fetched all 5 hashes from the hub, and ./ez --help works. The README's ledger-library snippet also runs, printing "app main.bend ".

Not published and not merged. Once merged, this lands as 1.4.0.

🤖 Generated with Claude Code

The top-level main.bend is now ez's program and the package entry: it
calls src/ez/main.bend's main, so a plain Bend 2.0.32+ user builds the
ez binary from the hub with `import ezx@X.Y.Z.0/main.bend as Ez` and
`Ez.main()`, as bolt's users do. Its first line is the hub description,
"# ezx: ez, the package manager for Bend 2."

Every module directory moves under src/ (as ez init lays a project out),
so relative imports stay valid and only LICENSE sorts before main.bend
in the published walk. `[package] bin` is dropped: the entry is the
program, and ez build, ez run and the nix package build it. No LAWS,
PROOF, src/check or tests file is reached from main.bend.

SPEC.md's Law column, AGENTS.md, the README (hub build first, clone and
nix second), the guide, the RFC (WP34), CI and the tests follow the
new paths.

BREAKING CHANGE: the hub package ezx is now the ez program, not the
ledger library. Every module moved under src/, and the ledger library's
import path is now src/ledger/manifest.bend (import it directly for
parse and show; the top-level main.bend no longer re-exports them).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@noah-emp
noah-emp merged commit 5c530ef into master Sep 30, 2026
2 checks passed
@noah-emp
noah-emp deleted the feat/ezx-app branch September 30, 2026 01:52
noah-emp pushed a commit that referenced this pull request Sep 30, 2026
🤖 I have created a release *beep* *boop*
---


##
[1.4.0](v1.3.0...v1.4.0)
(2026-09-30)


### ⚠ BREAKING CHANGES

* publish the whole ez program as the hub package ezx
([#130](#130))

### Features

* publish the whole ez program as the hub package ezx
([#130](#130))
([5c530ef](5c530ef))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants