Skip to content

Feature parity matrix

Spikard ships 15 language bindings sharing a Rust core. This matrix shows which server-side features are available in each binding.

Binding Server HTTP Routing WebSocket SSE gRPC GraphQL JSON-RPC OpenAPI JWT Auth API Key Auth CORS Compression Rate Limit Static Files TestClient
Rust
Python ⚠️ ⚠️ ⚠️ ⚠️
Node/TS ⚠️ ⚠️ ⚠️ ⚠️
Ruby ⚠️ ⚠️ ⚠️ ⚠️
PHP ⚠️ ⚠️ ⚠️ ⚠️
Elixir ⚠️ ⚠️ ⚠️ ⚠️
Go ⚠️ ⚠️ ⚠️ ⚠️
Java ⚠️ ⚠️ ⚠️ ⚠️
C# ⚠️ ⚠️ ⚠️ ⚠️
Kotlin ⚠️ ⚠️ ⚠️ ⚠️
Dart ⚠️ ⚠️ ⚠️ ⚠️
Swift ⚠️ ⚠️ ⚠️ ⚠️
Zig ⚠️ ⚠️ ⚠️ ⚠️
C FFI ⚠️ ⚠️ ⚠️ ⚠️
WASM

Legend

  • Fully supported — feature is available with idiomatic bindings in the language.
  • ⚠️ Partial — feature is available but may require manual setup or schema definition not yet codegen'd.
  • Not yet — feature exists in Rust core but no binding implementation.

Notes on partial support

gRPC, GraphQL, JSON-RPC, OpenAPI across all bindings except Rust are marked ⚠️ because:

  • Rust core has full implementations of all handlers and schema validators.
  • Bindings inherit server routing and middleware through the FFI layer.
  • Schema codegen (protobuf → Rust → language stubs) is WIP. Bindings support registering handlers and returning responses; code generation of client stubs and schema validation is being rolled out incrementally.

TestClient is marked ❌ for C FFI because the C ABI provides no idiomatic way to construct test fixtures; the parent language (Go, C#, Rust, etc.) using the C FFI should wrap testing via its own test utilities.

WASM is client-side only. No server binding exists; the package provides type stubs and serialization helpers for talking to a remote Spikard server.

Feature deep-dives

See language-specific binding references for handler syntax, error handling, and middleware attachment:

Edit this page on GitHub