Expand description
§Actor-RTC Protocol Compatibility Analysis Library
A library providing semantic protocol compatibility analysis based on protobuf schema evolution rules, using proto-sign for professional breaking change detection.
§Core Features
- Semantic Compatibility Analysis: Deep protobuf schema compatibility checking
- Breaking Change Detection: Identify specific breaking changes between versions
- Service-Level Comparison: Compare complete ServiceSpec structures from actr-protocol
- Stable Fingerprinting: Semantic fingerprints that ignore formatting
§Usage
ⓘ
use actr_version::{ServiceCompatibility, CompatibilityLevel, Fingerprint, ProtoFile};
use actr_protocol::ServiceSpec;
// Example: Create service with proto content
let proto_files = vec![ProtoFile {
name: "user.proto".to_string(),
content: r#"
syntax = "proto3";
message User { string name = 1; string email = 2; }
"#.to_string(),
path: None,
}];
let fingerprint = Fingerprint::calculate_service_semantic_fingerprint(&proto_files)?;
let base_service = ServiceSpec {
version: "1.0.0".to_string(),
description: Some("User service".to_string()),
fingerprint,
protobufs: proto_files.into_iter().map(|pf| actr_protocol::service_spec::Protobuf {
uri: format!("actr://user-service/{}", pf.name),
content: pf.content,
fingerprint: "file_fp".to_string(),
}).collect(),
};
// Analyze compatibility between versions
let result = ServiceCompatibility::analyze_compatibility(&base_service, &candidate_service)?;
match result.level {
CompatibilityLevel::FullyCompatible => println!("✅ No changes"),
CompatibilityLevel::BackwardCompatible => println!("⚠️ Backward compatible changes"),
CompatibilityLevel::BreakingChanges => println!("❌ Breaking changes detected"),
}Re-exports§
pub use compatibility::BreakingChange;pub use compatibility::CompatibilityAnalysis;pub use compatibility::ServiceCompatibility;pub use fingerprint::Fingerprint;pub use types::CompatibilityLevel;pub use types::ProtoFile;
Modules§
- compatibility
- Service compatibility analysis using proto-sign for semantic protobuf analysis
- fingerprint
- Semantic fingerprint calculation for protocol services
- types
- Core types for actr-version compatibility analysis
Structs§
- Compatibility
Analysis Result - Detailed compatibility analysis result (Rust-specific, extends proto version)
- Proto
File Spec - Protocol
Change - Individual protocol change detected
- Service
Spec
Enums§
- Compatibility
Error - Errors that can occur during compatibility analysis