Cargo Features

Verneuil has no features set by default.

[dependencies]
verneuil = { version = "0.6.4", features = ["vendor_sqlite", "dynamic_vfs", "mix_ctime_in_version_id", "no_xattr", "test_random_chunk_action", "test_vfs", "test_validate_writes", "test_validate_reads", "test_validate_all", "clap"] }
vendor_sqlite
dynamic_vfs

Build the runtime-loadable VFS shared object; conflicts with vendor_sqlite.

mix_ctime_in_version_id

Consider the source db's ctime in the version id.

This is more conservative (less likely to leave changes undetected),
but also more prone to false positives: we have observed no-op writes to db files after empty "IMMEDIATE" transactions, mostly after writes to scratch pages that are never committed into active duty. These false positive trigger a recovery path in Verneuil,
where the whole db is re-uploaded.

It probably only makes sense to enable this feature when debugging replication failures (not lag, but outright incorrect snapshots),
especially when writing to the same replicated db with both the verneuil VFS and the regular Unix VFS on fault-prone storage.

no_xattr

Remove the xattr code to simulate feature-poor filesystems.

test_random_chunk_action

Randomly decide what to do with base chunks

test_vfs test_validate_reads? test_validate_writes? = blake2b_simd, tracing-subscriber

Build an archive for sqlite3 tests.

Affects verneuil::sqlite3_verneuil_test_only_register

test_validate_writes test_validate_all? = test_vfs

Validate snapshots after writes

test_validate_reads test_validate_all? = test_vfs

Validate snapshots after reads as well (extra slow)

test_validate_all = test_validate_reads, test_validate_writes

Features from optional dependencies

In crates that don't use the dep: syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.

blake2b_simd test_vfs?

Enables blake2b_simd

We use blake2b to compare the actual db file and our replicated snapshot,
but only during tests.

clap implicit feature

Enables clap ^3

Having dev dependencies as optional makes it possible to build verneuil's examples out of tree.

tracing-subscriber test_vfs?

Enables tracing-subscriber

Also collect log! calls.