Skip to content

Commit 402a2cf

Browse files
committed
Availability of 0.3.1
1 parent 782f7ef commit 402a2cf

1,107 files changed

Lines changed: 264373 additions & 209480 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,3 +131,5 @@ rustc-ice-*.txt
131131
# server/oxirs-fuseki/tests/fixtures/jena-fuseki-ref/*
132132
# engine/oxirs-ttl/tests/fixtures/w3c-rdf-tests/*
133133

134+
135+
target

BUILD_STATUS.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
# OxiRS Build Status Report
22

3-
**Last Updated**: 2026-03-05
4-
**Version**: 0.2.3
3+
**Last Updated**: 2026-05-17
4+
**Version**: 0.3.1
55
**Status**: Production Ready
66

77
## Summary
88

9-
OxiRS 0.2.3 is our latest production release. All core libraries compile successfully with **zero compilation errors** and **zero warnings**. The project is fully ready for production deployment.
9+
OxiRS 0.3.1 is our current development release (branch `0.3.1`). All core libraries compile successfully with **zero compilation errors** and **zero warnings**. ~41,440 tests passing.
1010

1111
## Core Libraries Status
1212

CHANGELOG.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,61 @@ All notable changes to OxiRS will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.3.1] - 2026-06-06
9+
10+
### Added
11+
- **oxirs-fuseki**: `auth/policy_templates.rs``PolicyTemplateRegistry` with built-in DBA, ReadOnly, Auditor role templates; `PolicyTemplate` (serde-compatible); `apply_to_user`; `ReadAudit` permission variant; `DuplicateTemplate`/`UnknownTemplate` auth errors (18 tests)
12+
- **oxirs-fuseki**: FIPS 140-2 `fips` feature gate for FIPS-validated cryptography via `ring`
13+
- **oxirs-did**: FIPS 140-2 `fips` feature gate
14+
- `docs/policies/fips-boundary.md` — RFC-003 FIPS cryptographic boundary policy
15+
- **oxirs-graphrag**: `summarizer.rs``GraphSummarizer` (Leiden community detection → in-degree centrality → predicate frequency → `to_text()` natural language output) (6 tests)
16+
- **oxirs-graphrag**: `feedback.rs``TripleRelevanceFeedback` / `Relevance` enum; seahash triple IDs; multiplicative weight adjustment (0.1–2.0 clamp); `apply_to_scores` sorted descending (7 tests)
17+
- **oxirs-embed**: `models/graph_sage.rs``GraphSageEmbedder` inductive graph embeddings; k-hop mean aggregation with ReLU+L2-norm; Xavier init via scirs2-core; margin ranking loss; sign-SGD; LCG neighbor sampling; unseen-entity support (6 tests)
18+
- **oxirs-shacl**: SHACL Advanced Features (SHACL-AF) — recursive shapes and qualified value shapes completed (Round 32)
19+
- **oxirs-shacl**: SHACL-AF reasoning engine — rule-based reasoning validator with dedicated reasoning types and validation rules (Round 33)
20+
- **oxirs-shacl-ai**: `optimization/genetic.rs` — genetic algorithm for SHACL shape constraint-order optimization (configurable population/generations/tournament/mutation via `GeneticParams`, cost-estimate fitness scoring, tournament selection)
21+
- **oxirs-ttl**: HDT 1.0 (Header-Dictionary-Triples) binary RDF format reader — iterator-based read-only parser over Header, Dictionary, and Triples sections
22+
- **oxirs-ttl**: streaming TriG parser — `TriGStreamingParser` pull-parser implementing `Iterator<Item = Result<StreamedQuad, _>>` for W3C TriG named graphs
23+
- **oxirs-core**: RDF-star quoted triples in pattern matching and query execution — quoted-triple support across query algebra, executor, JIT, planner, pattern unification, and SIMD triple matching
24+
- **oxirs**: `rset` tool now parses SPARQL Results XML (SRX) — booleans, bindings, typed/language literals, and blank nodes (via `parse_sparql_results_xml`)
25+
26+
### Changed
27+
- Version bump to 0.3.1 across all workspace crates
28+
- **Refactor** `oxirs-fuseki/src/config.rs` (1999 lines) → split into `config.rs` + `config_server.rs` + `config_security.rs` + `config_runtime.rs`; public API preserved via re-exports
29+
- **Refactor** `oxirs-arq/src/lateral_join.rs` (1978 lines) → directory module; test block extracted to `lateral_join/lateral_join_tests.rs`; source down to 1138 lines
30+
- **Refactor** `oxirs-federate/src/query_decomposition/advanced_pattern_analysis.rs` (1990 lines) → split into `_consciousness.rs` (252) + `_analyzer.rs` (1484) + `_quantum.rs` (298) + 16-line facade
31+
- **Refactor** `oxirs-cluster/src/storage/persistent.rs` (1953 lines) → `persistent.rs` (710) + `persistent_wal.rs` (335) + `persistent_integrity.rs` (444) + `persistent_tests.rs` (287)
32+
- **Refactor** `oxirs-shacl/src/targets/selector.rs` (1961 lines) → `selector.rs` (709) + `selector_query.rs` (548) + `selector_eval.rs` (641)
33+
- **Refactor** `oxirs-shacl-ai/src/performance_monitoring.rs` (1949 lines) → `performance_monitoring.rs` (1575) + `performance_monitoring_advanced.rs` (514); fixed pre-existing Duration/field-name/Serialize bugs
34+
- **Refactor** `oxirs-shacl-ai/src/optimization/engine.rs` (1987 lines) → `engine.rs` (1308) + `optimization/engine_analysis.rs` (718)
35+
- 21 TODO.md files updated: 47 `[~]` items flipped to `[x]` for RFC-001 (LTS) and RFC-002 (Enterprise) now that policies are published
36+
- Dependency: **SciRS2** workspace crates bumped 0.4.3 → 0.5.0 (all 12 `scirs2-*` sub-crates)
37+
- Dependency: `oxiarc-*` compression crates pinned to **0.3.3** and consumed directly from crates.io — the temporary `[patch.crates-io]` path overrides were removed, leaving only `pathfinder_simd` patched (an unrelated Rust-nightly intrinsic fix)
38+
- **Refactor (Round 31 — facade recovery)**: 13 oversized files (1602–1909 lines) across **oxirs-core**, **oxirs-vec**, **oxirs-fuseki**, **oxirs-embed**, **oxirs-shacl-ai**, **oxirs-samm**, **oxirs-rule**, and **oxirs** converted to thin facades over pre-existing sibling modules (~20K lines net removed)
39+
- **Refactor (Round 32 — tier-2)**: **oxirs-fuseki** `auth/saml.rs` + `bind_values_enhanced.rs`, **oxirs-cluster** `cluster_metrics.rs`, **oxirs-tdb** `advanced_diagnostics.rs`, **oxirs-federate** `service.rs`, and **oxirs** `commands/jena_parity.rs` split into focused submodules
40+
- **Refactor (Round 33 — tier-3)**: **oxirs-shacl** `constraints/expression_constraint.rs`, **oxirs-vec** `tree_indices.rs` (ball/cover/kd/rp/vp-tree), **oxirs-wasm** `query/construct.rs`, **oxirs-gql** `schema.rs`, and **oxirs-stream** `backend/kafka/backend.rs` split into submodules
41+
- **Refactor (tools/oxirs)**: `commands/aspect.rs`, `commands/interactive.rs`, and `commands/import_command.rs` split into focused modules; `lib.rs``lib_commands.rs` + `lib_dispatch.rs`
42+
- **Refactor (additional)**: **oxirs-gql** `validation_spec.rs`, **oxirs-tdb** `mvcc/mod.rs`, **oxirs-stream** `lib_types.rs` / `neuromorphic_analytics.rs` / `wasm_edge_computing.rs`, and **oxirs-core** `storage/tiered.rs` split into module directories
43+
- **oxirs-vec**: `build.rs` CUDA-toolkit detection now emits informational build-script output instead of `cargo:warning=` (no-warnings policy); GPU acceleration remains opt-in via the `cuda` feature with Pure-Rust CPU fallbacks
44+
- Error-handling hardening: `unwrap()` calls in the benchmark runner and performance-benchmark modules replaced with context-carrying error handling
45+
46+
### Changed — Pure-Rust (COOLJAPAN Policy)
47+
- Compression: `brotli``oxiarc-brotli`, `snap``oxiarc-snappy`, `flate2``oxiarc-deflate` across all consuming crates (tdb, stream, federate, fuseki, cluster, arq, gql, star, embed, shacl-ai, chat, did, tools); direct `brotli`/`snap`/`flate2` deps removed
48+
- Crypto: 27 first-party `ring::` call sites (tools/oxirs, oxirs-did, oxirs-fuseki, oxirs-cluster) migrated to **oxicrypto** leaf crates (hash/mac/aead/kdf/rand) + workspace `ed25519-dalek` + `rsa` for Ed25519/RSA signatures; all direct `ring` deps removed
49+
- TLS: pure-Rust **`oxitls::pure_provider()`** installed process-wide at every binary entry; `rustls` no-provider, `reqwest` rustls-no-provider, `tokio-rustls` default-features=false, `metrics-exporter-prometheus` push-gateway-no-tls-provider; cluster cert-gen `rcgen``oxitls-rcgen`; `async-openai` gated behind non-default `openai` feature
50+
- Fixed an `oxiarc-brotli` incompressible-input compressor bug (it emitted streams its own decoder rejected); the fix shipped upstream as **oxiarc 0.3.3** (2026-06-06) on crates.io, which OxiRS now consumes directly
51+
- **Default `cargo build` is now free of `ring` and `aws-lc-sys`/`aws-lc-rs` C/asm crypto**`cargo tree -i ring` and `cargo tree -i aws-lc-sys`/`aws-lc-rs` are all empty for the default feature set
52+
53+
### Fixed
54+
- **oxirs-stream**: fixed undefined behavior in neuromorphic analytics — `NetworkTopology` and `NeuralResponse` removed from the unsafe `impl_zeroed_default!` macro (`std::mem::zeroed()` is UB for `Vec`/`Instant`); replaced with `derive(Default)` and a manual `Default` impl (Round 31)
55+
- **oxirs-core**: declared `indexmap` and `toml` as workspace dependencies, fixing a latent compile break in `jsonld::{compaction,flattening}` (Round 31)
56+
- **oxirs-vec**: restored `JointEmbeddingSpace::zero_shot_retrieval`, lost to earlier module drift (Round 31)
57+
58+
### Policy Compliance
59+
- All `.rs` files under 2000 lines (proactive refactors applied)
60+
- Zero warnings, zero errors across workspace
61+
- Total test count: ~43,511 (+19 graphrag, +6 embed from Round 18)
62+
863
## [0.3.0] - 2026-05-03
964

1065
### Added
@@ -455,3 +510,11 @@ Production Impact (100K QPS):
455510
---
456511

457512
*"Rust makes memory safety table stakes; OxiRS makes knowledge-graph engineering table stakes."*
513+
514+
[0.3.1]: https://github.com/cool-japan/oxirs/releases/tag/v0.3.1
515+
[0.3.0]: https://github.com/cool-japan/oxirs/releases/tag/v0.3.0
516+
[0.2.4]: https://github.com/cool-japan/oxirs/releases/tag/v0.2.4
517+
[0.2.3]: https://github.com/cool-japan/oxirs/releases/tag/v0.2.3
518+
[0.2.1]: https://github.com/cool-japan/oxirs/releases/tag/v0.2.1
519+
[0.2.0]: https://github.com/cool-japan/oxirs/releases/tag/v0.2.0
520+
[0.1.0]: https://github.com/cool-japan/oxirs/releases/tag/v0.1.0

Cargo.toml

Lines changed: 68 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,15 @@ members = [
2828
"stream/oxirs-canbus",
2929
"tools/oxirs",
3030
"desktop/oxirs-tauri",
31+
"performance_validation",
3132
]
3233
exclude = [
3334
"engine/oxirs-geosparql/fuzz",
3435
"engine/oxirs-ttl/fuzz",
3536
]
3637

3738
[workspace.package]
38-
version = "0.3.0"
39+
version = "0.3.1"
3940
authors = ["KitaSan <info@kitasan.io>"]
4041
edition = "2021"
4142
license = "Apache-2.0"
@@ -66,31 +67,31 @@ unsafe_code = "warn"
6667

6768
[workspace.dependencies]
6869
# Internal OxiRS crates (version inherited from workspace.package)
69-
oxirs-core = { version = "0.3.0", path = "core/oxirs-core" }
70-
oxirs-fuseki = { version = "0.3.0", path = "server/oxirs-fuseki" }
71-
oxirs-gql = { version = "0.3.0", path = "server/oxirs-gql" }
72-
oxirs-arq = { version = "0.3.0", path = "engine/oxirs-arq" }
73-
oxirs-geosparql = { version = "0.3.0", path = "engine/oxirs-geosparql" }
74-
oxirs-rule = { version = "0.3.0", path = "engine/oxirs-rule" }
75-
oxirs-samm = { version = "0.3.0", path = "engine/oxirs-samm" }
76-
oxirs-shacl = { version = "0.3.0", path = "engine/oxirs-shacl" }
77-
oxirs-star = { version = "0.3.0", path = "engine/oxirs-star" }
78-
oxirs-ttl = { version = "0.3.0", path = "engine/oxirs-ttl" }
79-
oxirs-vec = { version = "0.3.0", path = "engine/oxirs-vec" }
80-
oxirs-tdb = { version = "0.3.0", path = "storage/oxirs-tdb" }
81-
oxirs-cluster = { version = "0.3.0", path = "storage/oxirs-cluster" }
82-
oxirs-stream = { version = "0.3.0", path = "stream/oxirs-stream" }
83-
oxirs-federate = { version = "0.3.0", path = "stream/oxirs-federate" }
84-
oxirs-embed = { version = "0.3.0", path = "ai/oxirs-embed" }
85-
oxirs-shacl-ai = { version = "0.3.0", path = "ai/oxirs-shacl-ai" }
86-
oxirs-chat = { version = "0.3.0", path = "ai/oxirs-chat" }
87-
oxirs-physics = { version = "0.3.0", path = "ai/oxirs-physics" }
88-
oxirs-graphrag = { version = "0.3.0", path = "ai/oxirs-graphrag" }
89-
oxirs-did = { version = "0.3.0", path = "security/oxirs-did" }
90-
oxirs-wasm = { version = "0.3.0", path = "platforms/oxirs-wasm" }
91-
oxirs-modbus = { version = "0.3.0", path = "stream/oxirs-modbus" }
92-
oxirs-tsdb = { version = "0.3.0", path = "storage/oxirs-tsdb" }
93-
oxirs-canbus = { version = "0.3.0", path = "stream/oxirs-canbus" }
70+
oxirs-core = { version = "0.3.1", path = "core/oxirs-core" }
71+
oxirs-fuseki = { version = "0.3.1", path = "server/oxirs-fuseki" }
72+
oxirs-gql = { version = "0.3.1", path = "server/oxirs-gql" }
73+
oxirs-arq = { version = "0.3.1", path = "engine/oxirs-arq" }
74+
oxirs-geosparql = { version = "0.3.1", path = "engine/oxirs-geosparql" }
75+
oxirs-rule = { version = "0.3.1", path = "engine/oxirs-rule" }
76+
oxirs-samm = { version = "0.3.1", path = "engine/oxirs-samm" }
77+
oxirs-shacl = { version = "0.3.1", path = "engine/oxirs-shacl" }
78+
oxirs-star = { version = "0.3.1", path = "engine/oxirs-star" }
79+
oxirs-ttl = { version = "0.3.1", path = "engine/oxirs-ttl" }
80+
oxirs-vec = { version = "0.3.1", path = "engine/oxirs-vec" }
81+
oxirs-tdb = { version = "0.3.1", path = "storage/oxirs-tdb" }
82+
oxirs-cluster = { version = "0.3.1", path = "storage/oxirs-cluster" }
83+
oxirs-stream = { version = "0.3.1", path = "stream/oxirs-stream" }
84+
oxirs-federate = { version = "0.3.1", path = "stream/oxirs-federate" }
85+
oxirs-embed = { version = "0.3.1", path = "ai/oxirs-embed" }
86+
oxirs-shacl-ai = { version = "0.3.1", path = "ai/oxirs-shacl-ai" }
87+
oxirs-chat = { version = "0.3.1", path = "ai/oxirs-chat" }
88+
oxirs-physics = { version = "0.3.1", path = "ai/oxirs-physics" }
89+
oxirs-graphrag = { version = "0.3.1", path = "ai/oxirs-graphrag" }
90+
oxirs-did = { version = "0.3.1", path = "security/oxirs-did" }
91+
oxirs-wasm = { version = "0.3.1", path = "platforms/oxirs-wasm" }
92+
oxirs-modbus = { version = "0.3.1", path = "stream/oxirs-modbus" }
93+
oxirs-tsdb = { version = "0.3.1", path = "storage/oxirs-tsdb" }
94+
oxirs-canbus = { version = "0.3.1", path = "stream/oxirs-canbus" }
9495

9596
# Core RDF and SPARQL functionality (native OxiRS implementations)
9697
# oxigraph = "0.4.11" # REMOVED: Replaced with native implementations
@@ -140,7 +141,6 @@ tracing = "0.1"
140141
tracing-subscriber = { version = "0.3", features = ["env-filter", "json", "fmt"] }
141142

142143
# Storage and persistence
143-
rocksdb = "0.24"
144144

145145
# Text search (upgraded to 0.25 for lru security fix)
146146
tantivy = "0.26"
@@ -167,8 +167,11 @@ serial_test = "3.4"
167167

168168
# HTTP framework and TLS
169169
axum = { version = "0.8", features = ["ws", "multipart"] }
170-
rustls = { version = "0.23", default-features = false, features = ["std", "ring", "tls12"] }
171-
tokio-rustls = "0.26"
170+
rustls = { version = "0.23", default-features = false, features = ["std", "tls12", "logging"] }
171+
# `default-features = false` drops tokio-rustls's default `aws_lc_rs` provider feature
172+
# (which otherwise turns on `rustls/aws_lc_rs` → aws-lc-sys for the whole graph). TLS
173+
# uses the process-default Pure Rust provider installed via `oxitls::pure_provider()`.
174+
tokio-rustls = { version = "0.26", default-features = false, features = ["logging", "tls12"] }
172175
rustls-pemfile = "2.2"
173176
webpki-roots = "1.0"
174177
rcgen = "0.14"
@@ -202,7 +205,7 @@ k8s-openapi = { version = "0.27", default-features = false, features = ["v1_31"]
202205
async-trait = "0.1"
203206
uuid = { version = "1.23", features = ["v4", "serde"] }
204207
chrono = { version = "0.4.44", features = ["serde"] }
205-
reqwest = { version = "0.13", default-features = false, features = ["rustls", "json", "form", "query", "multipart", "http2"] }
208+
reqwest = { version = "0.13", default-features = false, features = ["rustls-no-provider", "json", "form", "query", "multipart", "http2"] }
206209
bytes = "1.11.1" # HTTP body handling - CVE-2026-25541 fix
207210
http = "1.4" # HTTP types
208211

@@ -240,34 +243,39 @@ futures = "0.3"
240243
# Direct rand and ndarray usage removed per SciRS2 integration policy
241244
# Use scirs2-core::random and scirs2-core::ndarray_ext instead
242245

243-
# SciRS2 dependencies (Scientific Computing Library) - crates.io 0.4.1
246+
# SciRS2 dependencies (Scientific Computing Library) - crates.io
244247
# Note: scirs2 meta crate removed - we only use specific sub-crates as needed
245-
scirs2-core = { version = "0.4.3", features = ["random"] }
246-
scirs2-linalg = "0.4.3"
247-
scirs2-stats = "0.4.3"
248-
scirs2-neural = "0.4.3"
249-
scirs2-graph = "0.4.3"
250-
scirs2-metrics = "0.4.3"
251-
scirs2-fft = "0.4.3"
252-
scirs2-signal = "0.4.3"
253-
scirs2-optimize = "0.4.3"
254-
scirs2-integrate = "0.4.3"
255-
scirs2-cluster = "0.4.3"
256-
scirs2-text = "0.4.3"
248+
scirs2-core = { version = "0.5.0", features = ["random"] }
249+
scirs2-linalg = "0.5.0"
250+
scirs2-stats = "0.5.0"
251+
scirs2-neural = "0.5.0"
252+
scirs2-graph = "0.5.0"
253+
scirs2-metrics = "0.5.0"
254+
scirs2-fft = "0.5.0"
255+
scirs2-signal = "0.5.0"
256+
scirs2-optimize = "0.5.0"
257+
scirs2-integrate = "0.5.0"
258+
scirs2-cluster = "0.5.0"
259+
scirs2-text = "0.5.0"
257260
# array! macro is now in scirs2-core, scirs2-autograd not needed
258261

259262
# Proc-macro utilities (used by oxirs-core api_surface module)
260263
syn = { version = "2", features = ["full", "parsing"] }
261264
quote = "1"
262265

263266
# OxiCode - modern binary serialization (replaces bincode per COOLJAPAN Policy)
264-
oxicode = { version = "0.2.2", features = ["serde", "derive"] }
267+
oxicode = { version = "0.2.4", features = ["serde", "derive"] }
265268

266269
# OxiArc - Pure Rust archive handling (replaces zip crate per COOLJAPAN Policy)
267-
oxiarc-archive = "0.2.7"
270+
oxiarc-archive = "0.3.3"
268271

269272
# System utilities
273+
ctor = "1.0" # Pre-main constructors (pure Rust) — used to install process-default rustls CryptoProvider
270274
num_cpus = "1.17"
275+
rand = "0.10"
276+
rand_distr = "0.6"
277+
log = "0.4"
278+
env_logger = "0.11"
271279
url = { version = "2.5.8", features = ["serde"] }
272280
rayon = "1.12"
273281
once_cell = "1.21"
@@ -294,11 +302,12 @@ cranelift-module = { version = "0.131.1" }
294302
cranelift-native = { version = "0.131.1" }
295303

296304
# Compression libraries
297-
flate2 = "1.1" # Gzip compression
298-
oxiarc-zstd = "0.2.7" # Zstandard compression (Pure Rust)
299-
oxiarc-lz4 = "0.2.7" # LZ4 compression (Pure Rust)
300-
snap = "1.1" # Snappy compression
301-
brotli = "8.0" # Brotli compression
305+
oxiarc-zstd = "0.3.3" # Zstandard compression (Pure Rust)
306+
oxiarc-lz4 = "0.3.3" # LZ4 compression (Pure Rust)
307+
oxiarc-lzma = "0.3.3" # LZMA/LZMA2 compression (Pure Rust, replaces xz2/lzma-sys)
308+
oxiarc-brotli = "0.3.3" # Brotli compression (Pure Rust)
309+
oxiarc-snappy = "0.3.3" # Snappy compression (Pure Rust)
310+
oxiarc-deflate = "0.3.3" # DEFLATE compression (Pure Rust)
302311

303312
# Memory and data structures
304313
memmap2 = "0.9"
@@ -325,7 +334,15 @@ md5 = "0.8"
325334
hmac = "0.13.0"
326335
hex = "0.4.3"
327336
base64 = "0.22"
328-
ring = "0.17"
337+
oxicrypto-core = "0.1.1" # Aead/Rng traits + CryptoError (OxiCrypto subcrate)
338+
oxicrypto-aead = "0.1.1" # AES-256-GCM / ChaCha20-Poly1305 (OxiCrypto subcrate)
339+
oxicrypto-rand = "0.1.1" # CSPRNG: random_bytes / random_nonce (OxiCrypto subcrate)
340+
oxicrypto-mac = "0.1.1" # HMAC-SHA256/384 (OxiCrypto subcrate)
341+
oxicrypto-sig = "0.1.1" # Ed25519 / RSA / ECDSA signatures (OxiCrypto subcrate)
342+
oxicrypto-hash = "0.1.1" # SHA-256/384/512 incremental hashing (OxiCrypto subcrate)
343+
oxicrypto-kdf = "0.1.1" # PBKDF2-SHA256 (OxiCrypto subcrate)
344+
oxitls = { version = "0.1.1", features = ["pure", "webpki-roots"] } # Pure Rust TLS facade
345+
oxitls-rcgen = "0.1.1" # Pure Rust certificate generation for OxiTLS
329346
jsonwebtoken = { version = "10.3", features = ["rust_crypto"] }
330347
aes-gcm = "0.10"
331348
chacha20poly1305 = "0.10"

0 commit comments

Comments
 (0)