600 lines
17 KiB
Markdown
600 lines
17 KiB
Markdown
|
|
# Canonical Dependency Registry - syntaxis
|
||
|
|
|
||
|
|
**Last Updated**: 2025-11-15
|
||
|
|
**Managed By**: dependency-manager tool
|
||
|
|
**Location**: Root `DEPENDENCIES.md` (with symlink from `.claude/DEPENDENCIES.md`)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
This document defines the canonical dependency registry for all crates in syntaxis. All crate dependencies must use versions and features defined here. This ensures:
|
||
|
|
|
||
|
|
- **Single source of truth**: No version conflicts across monorepo
|
||
|
|
- **Reproducible builds**: Consistent dependency resolution
|
||
|
|
- **Security**: Centralized vulnerability management
|
||
|
|
- **Compatibility**: Proven feature combinations
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Tier 1: Critical Dependencies (Must Maintain Consistency)
|
||
|
|
|
||
|
|
Dependencies that affect runtime behavior, async execution, or critical system functionality.
|
||
|
|
|
||
|
|
### Runtime & Async
|
||
|
|
|
||
|
|
| Dependency | Version | Features | Rationale |
|
||
|
|
|-----------|---------|----------|-----------|
|
||
|
|
| **tokio** | `1.48` | `["full"]` | Stable async runtime; pinned for reproducibility |
|
||
|
|
| **futures** | `0.3` | (none) | Async utilities and trait implementations |
|
||
|
|
|
||
|
|
### Serialization
|
||
|
|
|
||
|
|
| Dependency | Version | Features | Rationale |
|
||
|
|
|-----------|---------|----------|-----------|
|
||
|
|
| **serde** | `1.0` | `["derive"]` | Universal serialization framework |
|
||
|
|
| **serde_json** | `1.0` | (none) | JSON serialization |
|
||
|
|
| **toml** | `0.9` | (none) | TOML configuration parsing |
|
||
|
|
| **uuid** | `1.18` | `["v4", "serde"]` | Unique ID generation with serialization |
|
||
|
|
|
||
|
|
### Error Handling
|
||
|
|
|
||
|
|
| Dependency | Version | Features | Rationale |
|
||
|
|
|-----------|---------|----------|-----------|
|
||
|
|
| **thiserror** | `2.0` | (none) | **BREAKING from 1.0** - Standard error handling |
|
||
|
|
| **anyhow** | `1.0` | (none) | Flexible error context and propagation |
|
||
|
|
|
||
|
|
### Web Framework Stack
|
||
|
|
|
||
|
|
| Dependency | Version | Features | Rationale |
|
||
|
|
|-----------|---------|----------|-----------|
|
||
|
|
| **axum** | `0.8` | `["ws"]` | Web framework with WebSocket support |
|
||
|
|
| **tower** | `0.5` | (none) | HTTP middleware and service traits |
|
||
|
|
| **tower-http** | `0.6` | `["trace", "cors", "fs"]` | HTTP utilities (tracing, CORS, file serving) |
|
||
|
|
| **tokio-rustls** | `0.26` | (none) | TLS support for async |
|
||
|
|
| **rustls** | `0.23` | (none) | Modern TLS library (not OpenSSL) |
|
||
|
|
| **rustls-pemfile** | `2.2` | (none) | PEM certificate/key parsing |
|
||
|
|
|
||
|
|
### HTTP Client
|
||
|
|
|
||
|
|
| Dependency | Version | Features | Rationale |
|
||
|
|
|-----------|---------|----------|-----------|
|
||
|
|
| **reqwest** | `0.12` | `["json"]` | Async HTTP client with JSON support |
|
||
|
|
|
||
|
|
### Database
|
||
|
|
|
||
|
|
| Dependency | Version | Features | Rationale |
|
||
|
|
|-----------|---------|----------|-----------|
|
||
|
|
| **sqlx** | `0.8` | `["runtime-tokio-native-tls", "sqlite", "macros"]` | Async SQL with SQLite backend |
|
||
|
|
| **sqlx-sqlite** | `0.8` | (none) | SQLite-specific sqlx features |
|
||
|
|
| **surrealdb** | `2.3` | `["kv-mem", "kv-rocksdb"]` | Modern multi-backend database with embedded/server modes |
|
||
|
|
| **serde_bytes** | `0.11` | (none) | Binary data serialization for database fields |
|
||
|
|
|
||
|
|
### Authentication
|
||
|
|
|
||
|
|
| Dependency | Version | Features | Rationale |
|
||
|
|
|-----------|---------|----------|-----------|
|
||
|
|
| **jsonwebtoken** | `10.2` | `["aws_lc_rs"]` | **IMPORTANT: Use aws_lc_rs NOT rust_crypto** - JWT tokens |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Tier 2: Important Dependencies (Frequently Used)
|
||
|
|
|
||
|
|
Dependencies that provide core functionality but with less critical version coupling.
|
||
|
|
|
||
|
|
### CLI Framework
|
||
|
|
|
||
|
|
| Dependency | Version | Features | Rationale |
|
||
|
|
|-----------|---------|----------|-----------|
|
||
|
|
| **clap** | `4.5` | `["derive"]` | CLI argument parsing with procedural macros |
|
||
|
|
| **clap_complete** | `4.5` | (none) | Shell completion generation |
|
||
|
|
| **colored** | `3.0` | (none) | Terminal color support |
|
||
|
|
| **prettytable-rs** | `0.10` | (none) | Formatted table output |
|
||
|
|
| **inquire** | `0.9` | (none) | Interactive CLI prompts |
|
||
|
|
| **console** | `0.15` | (none) | Console/terminal utilities |
|
||
|
|
|
||
|
|
### Terminal UI (TUI)
|
||
|
|
|
||
|
|
| Dependency | Version | Features | Rationale |
|
||
|
|
|-----------|---------|----------|-----------|
|
||
|
|
| **ratatui** | `0.30.0-beta.0` | `["all-widgets"]` | **BETA** - TUI widgets (latest + experimental) |
|
||
|
|
| **crossterm** | `0.29` | `["serde"]` | Terminal backend for ratatui |
|
||
|
|
| **palette** | `0.7` | `["serializing"]` | Color utilities with serialization |
|
||
|
|
|
||
|
|
### Web Frontend (Leptos/WASM)
|
||
|
|
|
||
|
|
| Dependency | Version | Features | Rationale |
|
||
|
|
|-----------|---------|----------|-----------|
|
||
|
|
| **leptos** | `0.8.12` | `["csr"]` | WASM frontend framework (client-side rendering) |
|
||
|
|
| **leptos_router** | `0.8.9` | (none) | Routing for Leptos applications |
|
||
|
|
| **leptos_meta** | `0.8.5` | (none) | Meta tag management for Leptos |
|
||
|
|
| **wasm-bindgen** | `0.2` | (none) | WASM JavaScript bindings |
|
||
|
|
| **gloo-net** | `0.6` | (none) | HTTP client for WASM |
|
||
|
|
| **web-sys** | `0.3` | (none) | Web APIs for WASM |
|
||
|
|
| **wasm-logger** | `0.2` | (none) | Logging for WASM applications |
|
||
|
|
|
||
|
|
### Utilities & Helpers
|
||
|
|
|
||
|
|
| Dependency | Version | Features | Rationale |
|
||
|
|
|-----------|---------|----------|-----------|
|
||
|
|
| **chrono** | `0.4` | `["serde"]` | Date/time handling with serialization |
|
||
|
|
| **camino** | `1.2` | (none) | UTF-8 paths (safer than std::path) |
|
||
|
|
| **walkdir** | `2.5` | (none) | Recursive directory iteration |
|
||
|
|
| **handlebars** | `6.3` | (none) | Template engine |
|
||
|
|
| **indexmap** | `2.12` | (none) | Ordered maps/sets |
|
||
|
|
| **regex** | `1.12` | (none) | Regular expressions |
|
||
|
|
| **once_cell** | `1.21` | (none) | Lazy static initialization |
|
||
|
|
| **dirs** | `6.0` | (none) | Platform-specific directories |
|
||
|
|
|
||
|
|
### Logging & Tracing
|
||
|
|
|
||
|
|
| Dependency | Version | Features | Rationale |
|
||
|
|
|-----------|---------|----------|-----------|
|
||
|
|
| **tracing** | `0.1` | (none) | Structured logging/tracing |
|
||
|
|
| **tracing-subscriber** | `0.3` | `["env-filter"]` | Logging subscriber with filtering |
|
||
|
|
|
||
|
|
### Metrics & Monitoring
|
||
|
|
|
||
|
|
| Dependency | Version | Features | Rationale |
|
||
|
|
|-----------|---------|----------|-----------|
|
||
|
|
| **prometheus** | `0.14` | `["process"]` | Prometheus metrics collection |
|
||
|
|
|
||
|
|
### Caching
|
||
|
|
|
||
|
|
| Dependency | Version | Features | Rationale |
|
||
|
|
|-----------|---------|----------|-----------|
|
||
|
|
| **moka** | `0.12` | `["future"]` | High-performance async cache |
|
||
|
|
|
||
|
|
### WebSocket
|
||
|
|
|
||
|
|
| Dependency | Version | Features | Rationale |
|
||
|
|
|-----------|---------|----------|-----------|
|
||
|
|
| **tokio-tungstenite** | `0.28` | (none) | WebSocket support for tokio |
|
||
|
|
|
||
|
|
### Messaging
|
||
|
|
|
||
|
|
| Dependency | Version | Features | Rationale |
|
||
|
|
|-----------|---------|----------|-----------|
|
||
|
|
| **async-nats** | `0.45` | (none) | NATS messaging client |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Tier 3: Stable Dependencies (Dev/Test Only)
|
||
|
|
|
||
|
|
Dependencies used exclusively in testing, benchmarking, or development.
|
||
|
|
|
||
|
|
| Dependency | Version | Features | Rationale |
|
||
|
|
|-----------|---------|----------|-----------|
|
||
|
|
| **tokio-test** | `0.4` | (none) | Tokio async testing utilities |
|
||
|
|
| **tempfile** | `3.23` | (none) | Temporary files for testing |
|
||
|
|
| **assert_cmd** | `2.1` | (none) | CLI command assertion testing |
|
||
|
|
| **predicates** | `3.1` | (none) | Predicate assertions |
|
||
|
|
| **criterion** | `0.7` | `["html_reports"]` | Benchmarking framework |
|
||
|
|
| **mockito** | `1.6` | (none) | HTTP mocking for tests |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Breaking Changes & Migration Notes
|
||
|
|
|
||
|
|
### ⚠️ SurrealDB 2.3 Upgrade (Recently Applied)
|
||
|
|
|
||
|
|
**What Changed**: Major API changes in SurrealDB 2.3 from 1.5
|
||
|
|
|
||
|
|
**Key Differences**:
|
||
|
|
- Parameter binding: `.bind(json!({ "key": value }))` instead of `.bind(("key", value))`
|
||
|
|
- Query patterns: Parameterized SQL with `$placeholders`
|
||
|
|
- Builder API: Removed in favor of explicit query methods
|
||
|
|
- Features: `kv-mem` for in-memory and `kv-rocksdb` for embedded persistence
|
||
|
|
|
||
|
|
**Migration Status**: ✅ Complete - syntaxis-core and syntaxis-cli fully migrated
|
||
|
|
|
||
|
|
**See Also**: `SURREALDB_2_3_MIGRATION.md` for detailed migration guide
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### ⚠️ thiserror 2.0 Upgrade (Already Applied)
|
||
|
|
|
||
|
|
**What Changed**: API changes from 1.0 to 2.0
|
||
|
|
|
||
|
|
**Migration Required**: All error types using `#[error(...)]` macro updated
|
||
|
|
|
||
|
|
**Status in syntaxis**: ✅ Complete - all crates use 2.0
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### ⚠️ jsonwebtoken Features Selection (CRITICAL)
|
||
|
|
|
||
|
|
**Always Use**: `features = ["aws_lc_rs"]`
|
||
|
|
**Never Use**: `features = ["rust_crypto", "use_pem"]`
|
||
|
|
|
||
|
|
**Rationale**:
|
||
|
|
- `aws_lc_rs`: AWS-backed cryptography, better performance, modern
|
||
|
|
- `rust_crypto`: Legacy pure-Rust implementation, slower
|
||
|
|
- Feature conflict causes compilation failures
|
||
|
|
|
||
|
|
**Current Status**:
|
||
|
|
- ❌ Root workspace: Still has 9.3 (will be updated to 10.2)
|
||
|
|
- ✅ syntaxis: Uses 10.2 with `aws_lc_rs`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### ⚠️ ratatui Beta Version (0.30.0-beta.0)
|
||
|
|
|
||
|
|
**Status**: Using bleeding-edge beta
|
||
|
|
|
||
|
|
**Why**: Latest widget support and features required for TUI
|
||
|
|
|
||
|
|
**Stability**: Production-ready for syntaxis TUI (heavily tested)
|
||
|
|
|
||
|
|
**Migration Path**: Switch to stable 0.30.0 when released (no breaking changes expected)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Workspace Structure
|
||
|
|
|
||
|
|
### Root Workspace (`Cargo.toml`)
|
||
|
|
|
||
|
|
Defines all canonical versions in `[workspace.dependencies]`:
|
||
|
|
|
||
|
|
```toml
|
||
|
|
[workspace]
|
||
|
|
members = [
|
||
|
|
"shared/rust-api/shared-api-lib",
|
||
|
|
"shared/rust-tui",
|
||
|
|
"shared/rust",
|
||
|
|
"core/crates/syntaxis-core",
|
||
|
|
# ... 10 members total
|
||
|
|
]
|
||
|
|
|
||
|
|
exclude = [
|
||
|
|
"core/crates/syntaxis-api", # WIP (37 errors)
|
||
|
|
"core/crates/syntaxis-vapora", # Planned
|
||
|
|
]
|
||
|
|
|
||
|
|
[workspace.dependencies]
|
||
|
|
# All 50+ dependencies defined here
|
||
|
|
```
|
||
|
|
|
||
|
|
### Nested Workspaces
|
||
|
|
|
||
|
|
- ❌ `syntaxis/Cargo.toml` should **NOT** have `[workspace]` section
|
||
|
|
- The root workspace already declares all crates as members
|
||
|
|
- Nested workspace definition causes anti-pattern warnings
|
||
|
|
|
||
|
|
### Shared Libraries
|
||
|
|
|
||
|
|
**Location**: `shared/rust/`, `shared/rust-api/shared-api-lib/`, `shared/rust-tui/`
|
||
|
|
|
||
|
|
**Strategy**: Portable but aligned
|
||
|
|
- Each lib maintains its own `Cargo.toml` for independence
|
||
|
|
- dependency-manager tool validates versions match canonical registry
|
||
|
|
- No workspace inheritance needed (libs can be used outside monorepo)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Version Selection Rationale
|
||
|
|
|
||
|
|
### Tokio: Why 1.48 (not flexible "1")?
|
||
|
|
|
||
|
|
- **Stability**: Thoroughly tested production release
|
||
|
|
- **Compatibility**: All async crates tested against this version
|
||
|
|
- **Reproducibility**: Pinning prevents unexpected upgrades
|
||
|
|
- **Performance**: 1.48 has optimizations over 1.40-1.47
|
||
|
|
|
||
|
|
### Jsonwebtoken: Why 10.2 with aws_lc_rs?
|
||
|
|
|
||
|
|
- **Modern cryptography**: AWS-backed implementation (industry standard)
|
||
|
|
- **Performance**: 2-3x faster than pure-Rust crypto
|
||
|
|
- **Security**: Regular audits by AWS
|
||
|
|
- **Interoperability**: Works with standard JWT libraries
|
||
|
|
|
||
|
|
### Axum: Why 0.8 (not 0.9)?
|
||
|
|
|
||
|
|
- **Stability**: Mature, battle-tested version
|
||
|
|
- **Compatibility**: Perfect alignment with tokio 1.48
|
||
|
|
- **Router API**: Stable and well-documented
|
||
|
|
- **Upgrade path**: 0.9 can be adopted later if needed
|
||
|
|
|
||
|
|
### Leptos: Why 0.8.12?
|
||
|
|
|
||
|
|
- **Stability**: Latest stable release
|
||
|
|
- **WASM support**: Full CSR (client-side rendering) support
|
||
|
|
- **Component stability**: Core components stable
|
||
|
|
- **Routing**: Mature routing library included
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Dependency Rules
|
||
|
|
|
||
|
|
### Rule 1: Use Root Workspace Dependencies
|
||
|
|
|
||
|
|
All internal crates must specify dependencies via:
|
||
|
|
|
||
|
|
```toml
|
||
|
|
# ✅ Correct: Use workspace inheritance
|
||
|
|
[dependencies]
|
||
|
|
tokio = { workspace = true }
|
||
|
|
serde = { workspace = true }
|
||
|
|
|
||
|
|
# ❌ Wrong: Duplicate version specification
|
||
|
|
[dependencies]
|
||
|
|
tokio = "1.48" # Don't do this, use workspace = true
|
||
|
|
```
|
||
|
|
|
||
|
|
### Rule 2: Feature Coordination
|
||
|
|
|
||
|
|
When using optional features, ensure consistency:
|
||
|
|
|
||
|
|
```toml
|
||
|
|
# ✅ Correct: Explicit features match canonical registry
|
||
|
|
[dependencies]
|
||
|
|
serde = { workspace = true, features = ["derive"] }
|
||
|
|
|
||
|
|
# ❌ Wrong: Missing features from canonical registry
|
||
|
|
[dependencies]
|
||
|
|
serde = { workspace = true } # Missing derive feature
|
||
|
|
```
|
||
|
|
|
||
|
|
### Rule 3: No Version Overrides
|
||
|
|
|
||
|
|
Never override workspace dependency versions in individual crates:
|
||
|
|
|
||
|
|
```toml
|
||
|
|
# ❌ Wrong: Causes conflicts
|
||
|
|
[dependencies]
|
||
|
|
tokio = "1.45" # Different from workspace 1.48
|
||
|
|
|
||
|
|
# ✅ Correct: Use workspace version
|
||
|
|
[dependencies]
|
||
|
|
tokio = { workspace = true }
|
||
|
|
```
|
||
|
|
|
||
|
|
### Rule 4: Shared Library Independence
|
||
|
|
|
||
|
|
Shared libraries should remain portable:
|
||
|
|
|
||
|
|
```toml
|
||
|
|
# shared/rust-api/shared-api-lib/Cargo.toml
|
||
|
|
[dependencies]
|
||
|
|
# These can be specified independently for portability
|
||
|
|
# But dependency-manager validates they match canonical registry
|
||
|
|
axum = "0.8"
|
||
|
|
tokio = "1.48"
|
||
|
|
|
||
|
|
# When used in monorepo, these versions must match canonical registry
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Managing Dependencies
|
||
|
|
|
||
|
|
### Adding New Dependencies
|
||
|
|
|
||
|
|
**Process**:
|
||
|
|
1. **Evaluate necessity**: Do we really need this?
|
||
|
|
2. **Check alternatives**: Use existing dependencies if possible
|
||
|
|
3. **Research stability**: Check GitHub, reviews, update frequency
|
||
|
|
4. **Add to canonical registry**: Update this document (Tier 1, 2, or 3)
|
||
|
|
5. **Add to root workspace**: Add to `Cargo.toml [workspace.dependencies]`
|
||
|
|
6. **Use in crates**: Add to crate with `{ workspace = true }`
|
||
|
|
7. **Test**: Run `cargo test --workspace`
|
||
|
|
8. **Document**: Explain in this file why it was added
|
||
|
|
|
||
|
|
**Example**:
|
||
|
|
|
||
|
|
```toml
|
||
|
|
# .claude/DEPENDENCIES.md - Add to appropriate tier
|
||
|
|
| **my-new-lib** | `1.0` | `["feature"]` | Brief rationale for why needed |
|
||
|
|
|
||
|
|
# Cargo.toml - Add to [workspace.dependencies]
|
||
|
|
my-new-lib = { version = "1.0", features = ["feature"] }
|
||
|
|
|
||
|
|
# syntaxis-core/Cargo.toml (or relevant crate)
|
||
|
|
my-new-lib = { workspace = true }
|
||
|
|
```
|
||
|
|
|
||
|
|
### Updating Existing Dependencies
|
||
|
|
|
||
|
|
**Process**:
|
||
|
|
1. **Check for breaking changes**: Review release notes
|
||
|
|
2. **Test locally**: `cargo update -p my-lib && cargo test --workspace`
|
||
|
|
3. **Plan migration**: If breaking changes, create task
|
||
|
|
4. **Update DEPENDENCIES.md**: Document new version and changes
|
||
|
|
5. **Update Cargo.toml**: Change version in `[workspace.dependencies]`
|
||
|
|
6. **Run full validation**: `just check-all`
|
||
|
|
|
||
|
|
**Commands**:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Check outdated dependencies
|
||
|
|
cargo outdated
|
||
|
|
|
||
|
|
# Update one dependency
|
||
|
|
cargo update -p tokio
|
||
|
|
|
||
|
|
# Update all dependencies
|
||
|
|
cargo update
|
||
|
|
|
||
|
|
# Check security vulnerabilities
|
||
|
|
cargo audit
|
||
|
|
|
||
|
|
# Fix security issues
|
||
|
|
cargo audit fix
|
||
|
|
```
|
||
|
|
|
||
|
|
### Removing Dependencies
|
||
|
|
|
||
|
|
**Process**:
|
||
|
|
1. **Find usages**: `cargo tree -d my-lib`
|
||
|
|
2. **Remove from all crates**: Update all `Cargo.toml` files
|
||
|
|
3. **Remove from workspace**: Delete from `[workspace.dependencies]`
|
||
|
|
4. **Update this document**: Remove from DEPENDENCIES.md
|
||
|
|
5. **Test**: `cargo test --workspace`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Synchronization with dependency-manager
|
||
|
|
|
||
|
|
### Validation
|
||
|
|
|
||
|
|
The `dependency-manager` tool validates that all crates use canonical versions:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Check if all dependencies match canonical registry
|
||
|
|
dependency-manager validate
|
||
|
|
|
||
|
|
# Show detailed mismatches
|
||
|
|
dependency-manager detect
|
||
|
|
|
||
|
|
# Show canonical registry
|
||
|
|
dependency-manager registry
|
||
|
|
```
|
||
|
|
|
||
|
|
### Automatic Synchronization
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Interactive: Review and approve each change
|
||
|
|
dependency-manager sync --interactive
|
||
|
|
|
||
|
|
# Batch: Update all mismatches
|
||
|
|
dependency-manager sync --batch
|
||
|
|
```
|
||
|
|
|
||
|
|
### Integration with Git
|
||
|
|
|
||
|
|
Pre-commit hook automatically validates:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# In .git/hooks/pre-commit
|
||
|
|
dependency-manager validate
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Testing After Dependency Changes
|
||
|
|
|
||
|
|
Always run full validation after updating dependencies:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Clean rebuild
|
||
|
|
cargo clean
|
||
|
|
cargo check --workspace
|
||
|
|
|
||
|
|
# Test all crates
|
||
|
|
cargo test --workspace --lib
|
||
|
|
cargo test --workspace # Including integration tests
|
||
|
|
|
||
|
|
# Lint and security
|
||
|
|
cargo clippy --all-targets
|
||
|
|
cargo audit
|
||
|
|
|
||
|
|
# Or use Justfile recipe
|
||
|
|
just check-all
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Security Considerations
|
||
|
|
|
||
|
|
### Regular Audits
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Check for known vulnerabilities
|
||
|
|
cargo audit
|
||
|
|
|
||
|
|
# Fix automatically (if available)
|
||
|
|
cargo audit fix
|
||
|
|
|
||
|
|
# Check specific crate
|
||
|
|
cargo audit -p syntaxis-core
|
||
|
|
```
|
||
|
|
|
||
|
|
### Dependency Trust
|
||
|
|
|
||
|
|
When adding new dependencies:
|
||
|
|
|
||
|
|
- ✅ Prefer well-maintained libraries
|
||
|
|
- ✅ Check update frequency (should be recent)
|
||
|
|
- ✅ Review GitHub repository health
|
||
|
|
- ✅ Check for security audits or certifications
|
||
|
|
- ❌ Avoid unmaintained or abandoned projects
|
||
|
|
- ❌ Avoid highly experimental or unproven libraries
|
||
|
|
|
||
|
|
### Feature Security
|
||
|
|
|
||
|
|
Some dependencies have security implications:
|
||
|
|
|
||
|
|
- `jsonwebtoken`: Must use `aws_lc_rs` for cryptography safety
|
||
|
|
- `rustls`: Modern TLS (prefer over OpenSSL)
|
||
|
|
- All crypto: Keep updated for latest security patches
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Performance Considerations
|
||
|
|
|
||
|
|
### Heavy Dependencies
|
||
|
|
|
||
|
|
- **leptos**: Adds 5-10 seconds to compile time (WASM build)
|
||
|
|
- **criterion**: Only use in `[dev-dependencies]`
|
||
|
|
- **ratatui beta**: Slightly longer compile than stable
|
||
|
|
|
||
|
|
### Optimizing Compile Time
|
||
|
|
|
||
|
|
Disable unnecessary features:
|
||
|
|
|
||
|
|
```toml
|
||
|
|
# Instead of:
|
||
|
|
[dependencies]
|
||
|
|
tokio = { version = "1.48", features = ["full"] }
|
||
|
|
|
||
|
|
# Could use minimal features:
|
||
|
|
[dependencies]
|
||
|
|
tokio = { version = "1.48", features = ["rt", "macros", "sync"] }
|
||
|
|
```
|
||
|
|
|
||
|
|
However, syntaxis uses `["full"]` for flexibility.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Current Status
|
||
|
|
|
||
|
|
### Version Alignment
|
||
|
|
|
||
|
|
- ✅ Most dependencies aligned across workspace
|
||
|
|
- ⚠️ **jsonwebtoken**: 9.3 (root) vs 10.2 (syntaxis) - **BEING FIXED**
|
||
|
|
- ⚠️ **tokio**: "1" (flexible) vs "1.48" (pinned) - **BEING STANDARDIZED**
|
||
|
|
|
||
|
|
### Compliance
|
||
|
|
|
||
|
|
- ✅ No unsafe code (`#![forbid(unsafe_code)]`)
|
||
|
|
- ✅ All features coordinated
|
||
|
|
- ✅ No version conflicts in compiled output
|
||
|
|
- ⚠️ dependency-manager integration pending
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Maintenance Schedule
|
||
|
|
|
||
|
|
| Task | Frequency | Owner |
|
||
|
|
|------|-----------|-------|
|
||
|
|
| Check for vulnerabilities | Weekly | CI/CD |
|
||
|
|
| Review outdated versions | Monthly | Development Team |
|
||
|
|
| Security audit reports | Monthly | Development Team |
|
||
|
|
| Major version evaluations | Quarterly | Architecture Team |
|
||
|
|
| DEPENDENCIES.md updates | As needed | Committer |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## References
|
||
|
|
|
||
|
|
- **Cargo.toml**: Root workspace definition
|
||
|
|
- **PROJECT_RULES.md**: Architecture and module organization
|
||
|
|
- **CODE_STANDARDS.md**: Build and testing standards
|
||
|
|
- **dependency-manager**: External tool for validation
|
||
|
|
- **Cargo Book**: https://doc.rust-lang.org/cargo/
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Last Updated**: 2025-11-15
|
||
|
|
**Next Review**: 2025-12-15
|