Crate actr_version

Crate actr_version 

Source
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§

CompatibilityAnalysisResult
Detailed compatibility analysis result (Rust-specific, extends proto version)
ProtoFileSpec
ProtocolChange
Individual protocol change detected
ServiceSpec

Enums§

CompatibilityError
Errors that can occur during compatibility analysis

Type Aliases§

Result