Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Feature flags

Delta Kernel uses Cargo feature flags to keep the core library lightweight. The core crate has no required runtime dependencies beyond the Rust standard library. Everything else is opt-in.

For most connectors that use the built-in engine with Arrow:

[dependencies]
delta_kernel = { version = "0.21", features = ["default-engine-rustls", "arrow"] }

Complete feature reference

Default engine

These features enable the built-in DefaultEngine, which provides out-of-the-box support for reading and writing Delta tables.

FeatureDescription
default-engine-rustlsDefault engine using rustls for TLS. Recommended for most users because it requires no native dependency.
default-engine-native-tlsDefault engine using your platform’s native TLS library (OpenSSL on Linux, Schannel on Windows, Secure Transport on macOS).

Pick exactly one. Both pull in default-engine-base plus reqwest (for fetching pre-signed URLs), which together enable:

  • arrow-conversion and arrow-expression
  • tokio async runtime
  • futures
  • reqwest HTTP client (TLS backend selected by the feature you choose)

Arrow

FeatureDescription
arrowRe-exports Arrow types at the latest supported version (currently Arrow 58). Use this unless you need a specific version.
arrow-58Pins to Arrow 58 (with parquet 58 and object_store 0.13).
arrow-57Pins to Arrow 57 (with parquet 57 and object_store 0.12).
arrow-conversionEnables converting between Kernel schema types and Arrow types (TryIntoArrow, TryFromArrow).
arrow-expressionEnables evaluating Kernel expressions over Arrow data.

arrow-conversion and arrow-expression are pulled in automatically by the default engine. You only need to specify them directly if you’re building a custom engine that still uses Arrow.

Tip

Each arrow-* version feature also pulls in the matching parquet and object_store crate versions. If your connector already depends on a specific Arrow version, pin the matching feature to avoid duplicate transitive dependencies.

Experimental features

These features are under active development. Their APIs may change between releases.

FeatureDescription
schema-diffSchema diffing functionality for comparing table schemas.

Development features

FeatureDescription
internal-apiExposes additional APIs not yet stabilized (marked with #[cfg(feature = "internal-api")]). Some examples in this guide use this feature.
prettyprintEnables Arrow pretty-print helpers. Useful for debugging and examples. Automatically enabled by test-utils.
test-utilsExposes test-only constructors for downstream crate tests. Enables prettyprint. Not intended for production use.
integration-testEnables heavy integration tests (e.g., HDFS via hdfs-native-object-store).

Common combinations

Read and write with the default engine:

delta_kernel = { version = "0.21", features = ["default-engine-rustls", "arrow"] }

Custom engine using Arrow (no default engine):

delta_kernel = { version = "0.21", features = ["arrow-conversion", "arrow-expression"] }

Minimal custom engine with no Arrow dependency at all:

delta_kernel = { version = "0.21" }

This gives you only the core Kernel types and traits. You implement Engine and EngineData entirely in your own data format.