Skip to content

Release 0.1.1

Choose a tag to compare

@github-actions github-actions released this 15 Feb 21:26

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