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:
2026-02-22 18:56:27 +01:00
commit f511903a5d
11 changed files with 1523 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
[build-system]
requires = ["maturin>=1.0,<2.0"]
build-backend = "maturin"
[project]
name = "quicnprotochat"
version = "0.1.0"
description = "Python bindings for quicnprotochat — QUIC + MLS + post-quantum E2E chat."
license = { text = "MIT" }
requires-python = ">=3.8"
readme = "README.md"
[tool.maturin]
# The Cargo manifest is one level up in the workspace; point maturin at it.
manifest-path = "Cargo.toml"
module-name = "quicnprotochat"
features = ["pyo3/extension-module"]