Skip to content

MSRV Policy and Feature Flag Matrix

Minimum Supported Rust Version (MSRV)

Current MSRV: Rust 1.93

Defined in Cargo.toml under [workspace.package]:

toml
rust-version = "1.93"

All workspace members inherit this version. CI runs cargo test --workspace on the MSRV toolchain to ensure tests (not just compilation) pass.

MSRV Update Policy

  • MSRV increases are treated as minor version bumps (SemVer).
  • MSRV is only raised when a dependency update or language feature provides meaningful value (performance, safety, ergonomics).
  • CI enforces MSRV on every push to main and on all pull requests.

Workspace Crates

CrateDescription
varpulis-actorsActor framework with supervision
varpulis-cliCommand-line interface and REST API
varpulis-clusterDistributed execution (Raft, K8s)
varpulis-connector-apiShared connector traits and types
varpulis-connector-mqttMQTT connector
varpulis-connector-kafkaApache Kafka connector
varpulis-connector-natsNATS connector
varpulis-connector-redisRedis connector
varpulis-connector-databaseSQL database connector (PG/MySQL/SQLite)
varpulis-connector-elasticsearchElasticsearch connector
varpulis-connector-pulsarApache Pulsar connector
varpulis-connector-kinesisAWS Kinesis connector
varpulis-connector-s3AWS S3 connector
varpulis-connector-httpHTTP webhook connector
varpulis-connector-cdcPostgreSQL CDC connector
varpulis-connectorsConvenience crate (re-exports all connectors)
varpulis-coreCore types, AST, validation
varpulis-datagenSynthetic event generator
varpulis-dbPostgreSQL persistence layer
varpulis-lspLanguage Server Protocol
varpulis-mcpModel Context Protocol server
varpulis-parserVPL language parser
varpulis-runtimeExecution engine
varpulis-saseSASE+ pattern matching
varpulis-wasmWebAssembly bindings

Feature Flags

Features are disabled by default. Enable them via --features <flag>.

Connector Crates

Each connector is an independent crate with its own dependencies. They self-register via the inventory crate — linking a connector crate automatically makes it available to the engine. The varpulis-connectors crate re-exports all connectors via feature flags for backward compatibility.

CrateSystemKey DependencyFeature Flag
varpulis-connector-mqttMQTT brokerrumqttc-v4-next 0.28mqtt
varpulis-connector-kafkaApache Kafkardkafka 0.39kafka
varpulis-connector-natsNATS messagingasync-nats 0.46nats
varpulis-connector-redisRedisredis 1.xredis
varpulis-connector-databaseSQL (PG + MySQL + SQLite)sqlx 0.8database
varpulis-connector-elasticsearchElasticsearchelasticsearch 9.xelasticsearch
varpulis-connector-pulsarApache Pulsarpulsar 6.xpulsar
varpulis-connector-s3AWS S3aws-sdk-s3s3
varpulis-connector-kinesisAWS Kinesisaws-sdk-kinesiskinesis
varpulis-connector-httpHTTP webhooksaxum, reqwesthttp
varpulis-connector-cdcPostgreSQL CDCtokio-postgres 0.7cdc

All connector crates share varpulis-connector-api for the ConnectorFactory, Sink, ManagedConnector, and related traits.

Engine Features

FeatureDescriptionKey Dependency
persistenceRocksDB state persistencerocksdb 0.22
binary-codecMessagePack serializationrmp-serde 1.3
encryptionAES-GCM state encryptionaes-gcm 0.10
onnxONNX ML inferenceort 2.0.0-rc.11
gpuGPU acceleration (implies onnx)ort

WASM Features

FeatureDescriptionKey Dependency
smartmoduleSmartModule host runtime (filter/map)wasmtime 42

Cluster Features

These are defined in varpulis-cluster and exposed through varpulis-cli.

FeatureDescriptionKey Dependency
raftRaft consensusopenraft 0.9
persistentRaft + RocksDB (implies raft)rocksdb 0.22
k8sKubernetes APIkube 0.98
nats-transportNATS cluster transportasync-nats 0.38
federationMulti-cluster (implies nats-transport)-

CLI Features

FeatureDescription
saasMulti-tenant SaaS mode
oidcOIDC/SSO authentication
otelOpenTelemetry observability

Feature Dependency Graph

gpu ──► onnx
persistent ──► raft
federation ──► nats-transport
database ──► postgres + mysql + sqlite
all-connectors ──► mqtt + kafka + nats + database + redis
                   + kinesis + s3 + elasticsearch + pulsar

CI Feature Testing

Every feature flag is tested individually in CI via a matrix strategy:

yaml
cargo check --workspace --features <feature>
cargo clippy --workspace --all-targets --features <feature> -- -D warnings

Features requiring system packages install them automatically. See .github/workflows/ci.yml for the full matrix.

Varpulis - Next-generation streaming analytics engine