[package]
edition = "2021"
rust-version = "1.88"
name = "rustcdc"
version = "0.1.5"
authors = ["hupe1980"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Embeddable Rust CDC library focused on correctness-first capture primitives"
homepage = "https://github.com/hupe1980/rustcdc"
documentation = "https://docs.rs/rustcdc"
readme = "README.md"
keywords = [
"cdc",
"change-data-capture",
]
categories = [
"database",
"asynchronous",
"data-structures",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/hupe1980/rustcdc"
[features]
avro = ["dep:apache-avro"]
cloudevents = []
default = [
"postgres",
"tls",
]
encryption = [
"dep:aes-gcm",
"dep:base64",
"dep:hkdf",
"dep:hmac",
]
mariadb = ["mysql"]
metrics = [
"dep:opentelemetry",
"dep:opentelemetry_sdk",
"dep:opentelemetry-otlp",
]
mysql = [
"dep:mysql_async",
"dep:mysql_common",
"mysql_async/rustls-tls",
"tls",
]
outbox = []
postgres = [
"dep:tokio-postgres",
"dep:tokio-postgres-rustls",
"tls",
]
protobuf = ["dep:prost"]
sqlserver = [
"dep:tiberius",
"dep:tokio-util",
"tls",
]
test-harnesses = []
tls = [
"dep:rustls",
"dep:rustls-pemfile",
"dep:rustls-native-certs",
"dep:tokio-rustls",
]
[lib]
name = "rustcdc"
path = "src/lib.rs"
[[example]]
name = "mariadb_to_stdout"
path = "examples/mariadb_to_stdout.rs"
[[example]]
name = "pg_to_stdout"
path = "examples/pg_to_stdout.rs"
[[example]]
name = "postgres_to_otel"
path = "examples/postgres_to_otel.rs"
[[example]]
name = "regex_filter_transform"
path = "examples/regex_filter_transform.rs"
[[example]]
name = "sqlserver_to_otel"
path = "examples/sqlserver_to_otel.rs"
[[example]]
name = "uppercase_transform"
path = "examples/uppercase_transform.rs"
[[test]]
name = "checkpoint_file_integration"
path = "tests/checkpoint_file_integration.rs"
[[test]]
name = "compatibility_contract"
path = "tests/compatibility_contract.rs"
[[test]]
name = "crash_simulation_integration"
path = "tests/crash_simulation_integration.rs"
required-features = ["test-harnesses"]
[[test]]
name = "data_loss_detection"
path = "tests/data_loss_detection.rs"
required-features = ["test-harnesses"]
[[test]]
name = "deterministic_replay_failure_fixtures"
path = "tests/deterministic_replay_failure_fixtures.rs"
[[test]]
name = "deterministic_replay_golden_fixtures"
path = "tests/deterministic_replay_golden_fixtures.rs"
[[test]]
name = "example_pg_to_stdout"
path = "tests/example_pg_to_stdout.rs"
[[test]]
name = "fault_injection_soak_matrix"
path = "tests/fault_injection_soak_matrix.rs"
required-features = ["test-harnesses"]
[[test]]
name = "latency_evidence_common"
path = "tests/latency_evidence_common.rs"
[[test]]
name = "logging_structured"
path = "tests/logging_structured.rs"
[[test]]
name = "mariadb_connection_integration"
path = "tests/mariadb_connection_integration.rs"
[[test]]
name = "mariadb_e2e_integration"
path = "tests/mariadb_e2e_integration.rs"
[[test]]
name = "mysql_connection_integration"
path = "tests/mysql_connection_integration.rs"
[[test]]
name = "mysql_handoff_integration"
path = "tests/mysql_handoff_integration.rs"
[[test]]
name = "mysql_latency_evidence"
path = "tests/mysql_latency_evidence.rs"
[[test]]
name = "mysql_snapshot_integration"
path = "tests/mysql_snapshot_integration.rs"
[[test]]
name = "mysql_stream_integration"
path = "tests/mysql_stream_integration.rs"
[[test]]
name = "mysql_version_matrix"
path = "tests/mysql_version_matrix.rs"
[[test]]
name = "otel_metrics_integration"
path = "tests/otel_metrics_integration.rs"
[[test]]
name = "otel_tracing_integration"
path = "tests/otel_tracing_integration.rs"
[[test]]
name = "parallel_snapshot_stress_integration"
path = "tests/parallel_snapshot_stress_integration.rs"
[[test]]
name = "postgres_handoff_integration"
path = "tests/postgres_handoff_integration.rs"
[[test]]
name = "postgres_latency_evidence"
path = "tests/postgres_latency_evidence.rs"
[[test]]
name = "postgres_snapshot_integration"
path = "tests/postgres_snapshot_integration.rs"
[[test]]
name = "postgres_stream_integration"
path = "tests/postgres_stream_integration.rs"
[[test]]
name = "postgres_version_matrix"
path = "tests/postgres_version_matrix.rs"
[[test]]
name = "process_crash_marker"
path = "tests/process_crash_marker.rs"
[[test]]
name = "process_crash_worker"
path = "tests/process_crash_worker.rs"
[[test]]
name = "runtime_health_states"
path = "tests/runtime_health_states.rs"
[[test]]
name = "runtime_mariadb_process_crash_integration"
path = "tests/runtime_mariadb_process_crash_integration.rs"
[[test]]
name = "runtime_mysql_process_crash_integration"
path = "tests/runtime_mysql_process_crash_integration.rs"
[[test]]
name = "runtime_postgres"
path = "tests/runtime_postgres.rs"
[[test]]
name = "runtime_postgres_process_crash_integration"
path = "tests/runtime_postgres_process_crash_integration.rs"
[[test]]
name = "runtime_sqlserver_process_crash_integration"
path = "tests/runtime_sqlserver_process_crash_integration.rs"
[[test]]
name = "snapshot_resumable_integration"
path = "tests/snapshot_resumable_integration.rs"
[[test]]
name = "snapshot_validator_integration"
path = "tests/snapshot_validator_integration.rs"
[[test]]
name = "sqlserver_connection_integration"
path = "tests/sqlserver_connection_integration.rs"
[[test]]
name = "sqlserver_handoff_integration"
path = "tests/sqlserver_handoff_integration.rs"
[[test]]
name = "sqlserver_latency_evidence"
path = "tests/sqlserver_latency_evidence.rs"
[[test]]
name = "sqlserver_snapshot_integration"
path = "tests/sqlserver_snapshot_integration.rs"
[[test]]
name = "sqlserver_stream_integration"
path = "tests/sqlserver_stream_integration.rs"
[[test]]
name = "sqlserver_testkit"
path = "tests/sqlserver_testkit.rs"
[[test]]
name = "sqlserver_to_otel_example_integration"
path = "tests/sqlserver_to_otel_example_integration.rs"
[[test]]
name = "sqlserver_version_matrix"
path = "tests/sqlserver_version_matrix.rs"
[[test]]
name = "wasm_conformance_contract"
path = "tests/wasm_conformance_contract.rs"
[[test]]
name = "wasm_runtime_integration"
path = "tests/wasm_runtime_integration.rs"
[[bench]]
name = "cdc_perf"
path = "benches/cdc_perf.rs"
harness = false
[[bench]]
name = "quality_perf"
path = "benches/quality_perf.rs"
harness = false
[dependencies.aes-gcm]
version = "0.10.3"
optional = true
[dependencies.ahash]
version = "0.8.11"
features = ["serde"]
[dependencies.apache-avro]
version = "0.17"
optional = true
[dependencies.async-trait]
version = "0.1.89"
[dependencies.base64]
version = "0.22.1"
optional = true
[dependencies.futures-util]
version = "0.3.31"
[dependencies.hkdf]
version = "0.12"
optional = true
[dependencies.hmac]
version = "0.12"
optional = true
[dependencies.mysql_async]
version = "0.36.2"
features = [
"minimal",
"binlog",
]
optional = true
default-features = false
[dependencies.mysql_common]
version = "0.35.5"
features = ["binlog"]
optional = true
default-features = false
[dependencies.opentelemetry]
version = "0.27"
features = [
"trace",
"metrics",
]
optional = true
[dependencies.opentelemetry-otlp]
version = "0.27"
features = [
"trace",
"metrics",
"grpc-tonic",
]
optional = true
[dependencies.opentelemetry_sdk]
version = "0.27"
features = [
"trace",
"metrics",
"rt-tokio",
]
optional = true
[dependencies.prost]
version = "0.13"
optional = true
[dependencies.regex]
version = "1.11.1"
[dependencies.rustls]
version = "0.23.19"
features = [
"std",
"ring",
]
optional = true
default-features = false
[dependencies.rustls-native-certs]
version = "0.8"
optional = true
[dependencies.rustls-pemfile]
version = "2.0"
optional = true
[dependencies.serde]
version = "1.0.228"
features = ["derive"]
[dependencies.serde_json]
version = "1.0.145"
[dependencies.sha2]
version = "0.10.9"
[dependencies.thiserror]
version = "2.0.17"
[dependencies.tiberius]
version = "0.12.3"
features = [
"tds73",
"tokio",
"rustls",
]
optional = true
default-features = false
[dependencies.tokio]
version = "1.48.0"
features = [
"macros",
"rt",
"signal",
"sync",
"time",
]
[dependencies.tokio-postgres]
version = "0.7.15"
optional = true
[dependencies.tokio-postgres-rustls]
version = "0.13"
optional = true
[dependencies.tokio-rustls]
version = "0.25"
optional = true
[dependencies.tokio-util]
version = "0.7.16"
features = ["compat"]
optional = true
[dependencies.tracing]
version = "0.1.41"
[dependencies.wasmparser]
version = "0.240.0"
[dependencies.wasmtime]
version = "24.0.2"
[dependencies.zeroize]
version = "1"
features = ["alloc"]
[dev-dependencies.criterion]
version = "0.7.0"
[dev-dependencies.reqwest]
version = "0.12.5"
features = [
"json",
"rustls-tls",
]
default-features = false
[dev-dependencies.sqlx]
version = "0.8.6"
features = [
"runtime-tokio-rustls",
"postgres",
"mysql",
"json",
]
default-features = false
[dev-dependencies.tempfile]
version = "3.23.0"
[dev-dependencies.testcontainers]
version = "0.25.2"
[dev-dependencies.tokio-test]
version = "0.4.4"
[dev-dependencies.tracing-subscriber]
version = "0.3.20"
features = [
"fmt",
"std",
"json",
]
[dev-dependencies.wasm-bindgen]
version = "0.2.105"
[dev-dependencies.wat]
version = "1.240.0"