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
fix: remove residual dead V-lang wiring (Justfile/CI/scripts/docs)
PR #66 removed only the V-lang CI jobs. This finishes the dead-leaf
cleanup: no V source exists (adapter/v/ was deleted in the prior
2026-04-12 sweep) and the real REST/gRPC/GraphQL surface is the Elixir
backend (elixir/, Plug/Cowboy) — no V port was ever needed.
Justfile:
- delete build-adapter recipe
- run/serve/install now use only the existing Elixir path (dead V else
branches dropped; install no longer copies a V binary)
- heal: removed the git-clone vlang/v + make + symlink block
- doctor: dropped check_optional "V (vlang)" and the adapter/v binary
artefact check (now checks elixir/)
- matrix/tour/help-me: cosmetic V status echoes repointed to Elixir
CI:
- .github/workflows/lsp-dap-bsp.yml: delete the V-lang adapter-check job
(ran `v check`; missed by PR #66) and drop it from completeness needs:
- .github/workflows/e2e.yml: delete the dead "Build V adapter" step
scripts/tests/docs:
- tests/e2e_full.sh, federation_multinode.sh: launch the Elixir backend
instead of the non-existent adapter/v/boj-server binary
- tests/aspect_tests.sh: removed the dead V-lang ABI-contract aspect and
the V SPDX loop; cartridge-completeness now ABI+FFI; aspects renumbered
- scripts/boj-selinux-contexts.sh: dropped the dead V binary fcontext
- docs (RSR_OUTLINE, QUICKSTART, GETTING-STARTED, blog-post-draft,
wiki Developer/User guides), .github/DISCUSSION_TEMPLATE/
cartridge-proposal.yml, .gitignore, 0-AI-MANIFEST.a2ml: dead adapter/v/
path references / stack wording corrected to the Elixir+Zig reality
Left untouched (intentional): CHANGELOG/ADR/.machine_readable history
records (document the retirement), Intentfile/Mustfile Unbreakable-Stack
ban-enforcement assets, and per-cartridge *_adapter.zig provenance
comments / cartridge README adapter tables (out of scope for this
dead-leaf PR; partly protected estate-rule surface).
Validation: 3 changed YAML files yaml.safe_load OK; `just --list` OK
(107 lines, build-adapter absent, all recipes intact); bash -n clean on
all 4 edited shell scripts; 0-AI-MANIFEST.a2ml parens balanced.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/outreach/blog-post-draft.md
+3-4Lines changed: 3 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -62,7 +62,7 @@ The typical developer server is Python or TypeScript. BoJ uses none of those. In
62
62
|-------|----------|-----|
63
63
| ABI | Idris2 | Prove the interface is correct |
64
64
| FFI | Zig | Execute it natively |
65
-
| Adapter |V-lang| Serve it over the network |
65
+
| Adapter |Elixir| Serve it over the network |
66
66
67
67
**Why Idris2?** Because it has dependent types. Not "type-safe" in the TypeScript sense. Actually provably correct at compile time. The core safety gate is a type called `IsUnbreakable` -- it's a mathematical proof that only cartridges in the `Ready` state can be activated. The type checker enforces this, not a runtime check, not a unit test. If the proof doesn't hold, the code doesn't compile.
68
68
@@ -78,7 +78,7 @@ You literally cannot call `mount` on a cartridge that isn't `Ready`. The type sy
78
78
79
79
**Why Zig?** Because it produces C-ABI-compatible shared libraries with zero runtime dependencies. Each cartridge compiles to a `.so` file. The Zig layer bridges Idris2's proofs with actual system calls -- file I/O, networking, database connections. Cross-compilation is built in, which matters when community members run nodes on ARM, x86, or whatever they have.
80
80
81
-
**Why V-lang?** Because one V codebase exposes all three API styles (REST + gRPC + GraphQL) on dedicated ports. One language, three protocols, no code generation step.
81
+
**Why Elixir?** Because one Elixir codebase on the BEAM (Plug/Cowboy) exposes all three API styles (REST + gRPC + GraphQL) on dedicated ports, with the fault-tolerance and concurrency the BEAM is known for. One runtime, three protocols, no code generation step.
82
82
83
83
The result: a compact binary. 219 Zig tests + 8 integration tests + 32 seam checks. Thread-safe (every FFI entry point serialises on a per-module mutex). No virtualenvs, no node_modules, no pip install.
0 commit comments