feat: add Python (PyO3) and Ruby (Magnus) native bindings
Introduces three crates: - quicnprotochat-bindings: shared Rust API returning structured data instead of printing to stdout; explicit per-call auth (no global OnceLock); QPCE state files fully interoperable with the CLI. - quicnprotochat-python: PyO3 0.22 extension; GIL released during all blocking QUIC calls via py.allow_threads. - quicnprotochat-ruby: Magnus 0.7 extension; Rakefile build task. Core/proto crates referenced via git dep on the main repo.
This commit is contained in:
47
crates/quicnprotochat-bindings/Cargo.toml
Normal file
47
crates/quicnprotochat-bindings/Cargo.toml
Normal file
@@ -0,0 +1,47 @@
|
||||
[package]
|
||||
name = "quicnprotochat-bindings"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
description = "Language-agnostic Rust library powering Python and Ruby native bindings."
|
||||
license = "MIT"
|
||||
|
||||
[lib]
|
||||
name = "quicnprotochat_bindings"
|
||||
crate-type = ["rlib"]
|
||||
|
||||
[dependencies]
|
||||
quicnprotochat-core = { git = "git@git.xorwell.de:c/quicnprotochat.git" }
|
||||
quicnprotochat-proto = { git = "git@git.xorwell.de:c/quicnprotochat.git" }
|
||||
openmls_rust_crypto = { workspace = true }
|
||||
|
||||
# Serialisation + RPC
|
||||
capnp = { workspace = true }
|
||||
capnp-rpc = { workspace = true }
|
||||
|
||||
# Async / networking
|
||||
tokio = { workspace = true }
|
||||
tokio-util = { workspace = true }
|
||||
futures = { workspace = true }
|
||||
quinn = { workspace = true }
|
||||
quinn-proto = { workspace = true }
|
||||
rustls = { workspace = true }
|
||||
|
||||
# Serialisation
|
||||
serde = { workspace = true }
|
||||
bincode = { workspace = true }
|
||||
|
||||
# Crypto — OPAQUE PAKE
|
||||
opaque-ke = { workspace = true }
|
||||
rand = { workspace = true }
|
||||
|
||||
# State encryption
|
||||
argon2 = { workspace = true }
|
||||
chacha20poly1305 = { workspace = true }
|
||||
sha2 = { workspace = true }
|
||||
|
||||
# Error handling
|
||||
anyhow = { workspace = true }
|
||||
thiserror = { workspace = true }
|
||||
|
||||
# Hex encoding for public return values
|
||||
hex = "0.4"
|
||||
Reference in New Issue
Block a user