Skip to content

chore: upgrade to Fable 5.11#34

Merged
dbrattli merged 1 commit into
mainfrom
chore/upgrade-fable-5.11
Jul 18, 2026
Merged

chore: upgrade to Fable 5.11#34
dbrattli merged 1 commit into
mainfrom
chore/upgrade-fable-5.11

Conversation

@dbrattli

Copy link
Copy Markdown
Collaborator

Bumps the local Fable tool from 5.2.0 → 5.11.0.

Breaking changes handled

1. BEAM module naming is now prefixed by source path. programtest_program, timefliestimeflies_src_timeflies, and Fable emits a main.erl entry-point shim.

  • justfile: test runner calls main:main([]) instead of program:main([]).
  • examples/timeflies-beam/src/erl/fable_actor_timeflies_ws.erl: repointed at timeflies_src_timeflies:setup_pipeline/1.

The WebSocket handler's stale reference was masked by a leftover timeflies.erl from the 5.2.0 build. Erlang resolves remote calls at runtime, so it compiled clean and would only have crashed on the first WebSocket connect. just clean now also clears the examples' build output so stale modules can't hide this again.

2. Python backend emits fable_library.union.narrow, which needs a newer runtime. Bumped fable-library to >=5.11.0 in both pyproject.toml files — the timeflies example was still pinned at ==5.0.0rc2.

Verification

  • 28/28 tests pass on .NET, Python, and BEAM.
  • Timeflies BEAM server: GET / returns 200, and a real WebSocket connection drives the actor pipeline end-to-end — sending {"x":100,"y":200} returns {"index":0,"char":"T","x":115,"y":200}.
  • JS example builds.
  • Python timeflies example gets past imports and fails only on headless Tk (no display name and no $DISPLAY), unrelated to the upgrade.

Not changed

  • Fable.Core stays at 5.0.0 (5.2.0 is available) and Fable.Beam at 5.0.0-rc.* (rc.32 available) — everything compiles as-is.
  • examples/timeflies-beam/src/Timeflies.fsproj pins Fable.Beam at 5.0.0-rc.30 explicitly, which drifts from the library's floating rc.*.

🤖 Generated with Claude Code

Bumps the local Fable tool from 5.2.0 to 5.11.0. Two breaking changes
in the toolchain needed fixing:

BEAM module naming is now prefixed by source path (program ->
test_program, timeflies -> timeflies_src_timeflies), and Fable emits a
main.erl entry-point shim. The test runner now invokes main:main([]),
and the hand-written WebSocket handler in the timeflies example was
repointed at timeflies_src_timeflies. That handler's stale reference
was masked by a leftover timeflies.erl from the 5.2.0 build — Erlang
resolves remote calls at runtime, so it compiled clean and would only
have crashed on the first WebSocket connect. `just clean` now clears
the examples' build output so stale modules can't hide this again.

The Python backend emits fable_library.union.narrow, which requires
fable-library >= 5.11.0 in both pyproject.toml files (the timeflies
example was pinned at 5.0.0rc2).

Verified: 28/28 tests pass on .NET, Python and BEAM; the timeflies
BEAM server serves HTTP 200 and a real WebSocket connection drives the
actor fan-out pipeline end-to-end; the JS example builds.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@dbrattli
dbrattli merged commit 8fec1f1 into main Jul 18, 2026
2 checks passed
@dbrattli
dbrattli deleted the chore/upgrade-fable-5.11 branch July 18, 2026 09:02
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.

1 participant