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:
- Python API
- TypeScript / Node API
- Ruby API
- PHP API
- Elixir API
- Go API — coming soon
- Java API — coming soon
- C# API — coming soon
- Rust API