ipcprims v0.1.1
Release date: 2026-02-15
Lifecycle phase: alpha
License: MIT OR Apache-2.0
Summary
Infrastructure release: cross-language binding scaffolds (FFI, Go, TypeScript) and CI/release pipeline maturation. No new Rust API surface — bindings wrap the existing v0.1.0 API.
New Crates
| Crate |
Description |
ipcprims-ffi |
C-ABI exports (staticlib + cdylib) for listener, peer, frame, schema |
ipcprims-napi |
Node-API addon for @3leaps/ipcprims TypeScript package |
Bindings
FFI (C-ABI)
- Crate:
crates/ipcprims-ffi
- Outputs: static library (
.a/.lib) and shared library (.so/.dylib/.dll)
- C header generated by
cbindgen (ipcprims.h)
- Smoke test:
tests/ffi/smoke.c
- CI job: build + header generation + C compile on Linux and macOS
Go
- Module:
bindings/go/ipcprims (github.com/3leaps/ipcprims/bindings/go/ipcprims)
- API:
Listener, Peer, SchemaRegistry, channel constants, Frame type
- FFI bridge: CGo with platform-specific build tags
- Stub bridge: compiles on all platforms, returns
ErrFFIUnavailable without prebuilt libs
- CI job:
go build, golangci-lint, go test on Linux and macOS
- Prep workflow:
go-bindings.yml builds FFI for all platforms and creates PR with prebuilt libs
TypeScript
- Package:
@3leaps/ipcprims at bindings/typescript
- API:
Listener, Peer, SchemaRegistry, channel constants
- Runtime: NAPI-RS native addon with platform-specific optional dependencies
- Platforms: linux-x64-gnu, linux-x64-musl, linux-arm64-gnu, darwin-arm64, win32-x64-msvc
- CI job: build + test + typecheck on Linux and macOS
- Prebuild workflow:
typescript-napi-prebuilds.yml builds .node files for all 5 platforms
- Publish workflow:
typescript-npm-publish.yml with OIDC trusted publishing
CI Changes
New Jobs in ci.yml
| Job |
Runner |
Description |
windows-cross-check |
ubuntu-latest |
cargo check for 3 Windows targets (no SDK required) |
test-musl |
ubuntu-latest |
Build + test on x86_64-unknown-linux-musl |
ffi |
ubuntu-latest, macos-latest |
Build FFI crate, generate header, compile C smoke test |
go-bindings |
ubuntu-latest, macos-latest |
Go build + lint + test |
typescript-bindings |
ubuntu-latest, macos-latest |
NAPI build + test + typecheck |
New Workflows
| Workflow |
Trigger |
Purpose |
go-bindings.yml |
workflow_dispatch |
Multi-platform FFI build + PR with prebuilt Go libs |
typescript-bindings.yml |
workflow_dispatch |
Cross-platform TS test (4 OS + Alpine musl) |
typescript-napi-prebuilds.yml |
workflow_dispatch |
Build .node prebuilds for 5 platforms |
typescript-npm-publish.yml |
workflow_dispatch |
OIDC trusted npm publish |
Release Infrastructure
- Download script: now fetches FFI bundles (
ipcprims-ffi-*.tar.gz), C header (ipcprims.h), and SBOM (sbom-*.json)
- Upload script: now uploads FFI bundles, standalone header, and SBOM
- Checksum script: patterns include standalone headers, libraries, and JSON metadata
- RELEASE_CHECKLIST.md: Go pre-tag workflow and TypeScript post-signing publish steps
- Makefile: binding workflow instructions replace placeholder stubs
Tooling
.github/actionlint.yaml: self-hosted runner label (ubuntu-latest-arm64-s)
- Root
go.mod + go.work + internal/gowork/doc.go: repo-level Go workspace for golangci-lint compatibility
.goneat/assess.yaml: Go linting note, shellcheck disabled (sysprims parity)
Fixes
- FFI
map_peer_error: wildcard catch-all for Cargo workspace feature unification (prevents E0004 when ipcprims-napi activates PeerError::Schema across workspace)
- FFI
ipc_schema_registry_free: suppressed needless_return lint on cfg-gated early return
- TypeScript test: replaced
any types with typed NativePeer/NativeListener interfaces
- TypeScript loader: replaced
&& chain with optional chaining
Quality
- 118 tests passing (
cargo test --workspace --all-features)
- Zero clippy warnings (
--all-features)
make prepush green (fmt + clippy + goneat lint + test + cargo deny)
- All dependencies permissively licensed
Known Issues
- release.yml: Still uses minimal v0.1.0 skeleton (validate + create GitHub release). Multi-platform build matrix with FFI bundle packaging planned for v0.1.2.
- Go prebuilt libs: Not yet populated —
go-bindings.yml creates the PR. Stub bridge compiles but FFI calls return ErrFFIUnavailable without prebuilts.
- Async API: Feature flags declared but no async code exists. Planned for v0.2.0.
- Transitive dep duplication:
getrandom (0.2 + 0.3) and windows-sys (0.60 + 0.61) via jsonschema dep tree. No functional impact.
What's Next
- v0.1.2: Release pipeline rewrite — multi-platform FFI build matrix, SBOM generation, structured FFI bundle packaging, draft release with all artifacts
- v0.2.0: Tokio-native async API, TCP transport (per DDR-0001), CLI P2 commands