Skip to content

P1: export missing ABI function + add ABI↔FFI gate#37

Merged
hyperpolymath merged 1 commit into
mainfrom
claude/new-session-1fphit
Jun 26, 2026
Merged

P1: export missing ABI function + add ABI↔FFI gate#37
hyperpolymath merged 1 commit into
mainfrom
claude/new-session-1fphit

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

What & why

The new ABI↔FFI gate caught a real drift: the Idris2 ABI declares dafniser_compile (%foreign "C:dafniser_compile" in Types.idr's Foreign namespace, Bits64 -> Bits32) but the Zig FFI never exported it — so the bridge would not link.

Change

  • FFI fix — add export fn dafniser_compile(handle) Result matching the ABI signature (compile + verify the loaded spec; verification backend is stubbed as elsewhere).
  • The gate itselfscripts/abi-ffi-gate.py (fails on a declared C symbol with no export, a mismatched result-code map, or an unrendered template token) + .github/workflows/abi-ffi-gate.yml (runs it, plus a Zig 0.14.0 build/test). The Idris2 ABI is the source of truth.

Verification

zig test src/interface/ffi/src/main.zig -lc → pass · idris2 --build dafniser-abi.ipkg → clean · python3 scripts/abi-ffi-gate.pyOK (17 functions, 5 result codes match).

CI note

rust-ci / Hypatia / governance reds are pre-existing estate-infra unrelated to this change.

🤖 Generated with Claude Code

https://claude.ai/code/session_019xMKB3T4Vo5FYC7Czx3JSH


Generated by Claude Code

The Idris2 ABI declared a C function (in Types.idr's Foreign namespace) with
no matching Zig export, so the bridge would not link. Add the export, then add
scripts/abi-ffi-gate.py + .github/workflows/abi-ffi-gate.yml to enforce
ABI↔FFI conformance going forward (ABI is the source of truth).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019xMKB3T4Vo5FYC7Czx3JSH
@hyperpolymath hyperpolymath marked this pull request as ready for review June 26, 2026 23:06
@hyperpolymath hyperpolymath merged commit 010ba9a into main Jun 26, 2026
21 of 24 checks passed
@hyperpolymath hyperpolymath deleted the claude/new-session-1fphit branch June 26, 2026 23:07
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