Skip to main content

Crate limnifs_core

Crate limnifs_core 

Source
Expand description

LimniFS core reader: manifest header + section parsers, plus the drop-store primitives (slab header, drop record, slab index).

Source of truth: limnifs/spec §3 (drop store), §5 (manifest sections), and the bit-level files under bit-level/.

Architecture: every parser takes a cursor::ManifestCursor and returns the parsed value plus the cursor advanced past the section. Bounds checks live in one place (the cursor); each parser focuses on the structural invariants of its own section. Adding a new section is a new module + a new parser function — no edits to existing parsers (OCP).

§Module map

Re-exports§

pub use cursor::ManifestCursor;
pub use directory_node::parse_directory_node;
pub use directory_node::DirEntry;
pub use directory_node::DirectoryNode;
pub use directory_node::DIRECTORY_NODE_VERSION;
pub use dms_policy::parse_dms_policy;
pub use dms_policy::parse_dms_policy_with_ceilings;
pub use dms_policy::DmsPolicy;
pub use dms_policy::ShareRecord;
pub use dms_policy::DEFAULT_HINT_MAX_BYTES;
pub use dms_policy::DEFAULT_SHARE_DATA_MAX_BYTES;
pub use dms_policy::DMS_POLICY_SECTION_VERSION;
pub use dms_policy::DMS_SCHEME_EXTENDED;
pub use dms_policy::DMS_SCHEME_SHAMIR;
pub use dms_policy::MAX_TOTAL_SHARES;
pub use drop_record::parse_drop_record;
pub use drop_record::parse_drop_record_with_ceiling;
pub use drop_record::DropRecord;
pub use drop_record::DROP_RECORD_LEN;
pub use ec_params::parse_ec_params;
pub use ec_params::EcOverride;
pub use ec_params::EcParams;
pub use ec_params::DEFAULT_EC_POLYNOMIAL;
pub use ec_params::EC_PARAMS_SECTION_VERSION;
pub use ec_params::MAX_SHARDS;
pub use error::CoreError;
pub use feature_flags::parse_feature_flags_section;
pub use feature_flags::FeatureFlag;
pub use feature_flags::FeatureFlags;
pub use feature_flags::FEATURE_FLAGS_SECTION_VERSION;
pub use header::parse_manifest_header;
pub use header::ManifestHeader;
pub use history::parse_history;
pub use history::parse_history_with_ceiling;
pub use history::History;
pub use history::HistoryEntry;
pub use history::HistoryOp;
pub use history::DEFAULT_HISTORY_PARAMS_MAX_BYTES;
pub use history::HISTORY_SECTION_VERSION;
pub use history::OP_EXTENDED;
pub use inode::parse_inode;
pub use inode::parse_inode_with_ceiling;
pub use inode::ContentHandle;
pub use inode::Inode;
pub use inode::SliceRef;
pub use inode::XAttr;
pub use inode::DEFAULT_INLINE_DATA_MAX_BYTES;
pub use inode::INODE_FIXED_PREFIX_LEN;
pub use inode::INODE_FLAG_ATIME;
pub use inode::INODE_FLAG_INLINE_DATA;
pub use inode::INODE_FLAG_RESERVED_MASK;
pub use inode::INODE_FLAG_SHARED_INLINE;
pub use inode::S_IFBLK;
pub use inode::S_IFCHR;
pub use inode::S_IFDIR;
pub use inode::S_IFIFO;
pub use inode::S_IFLNK;
pub use inode::S_IFMT;
pub use inode::S_IFREG;
pub use inode::S_IFSOCK;
pub use locator::parse_locator_entries;
pub use locator::parse_locator_entries_with_ceiling;
pub use locator::parse_locator_entry;
pub use locator::parse_locator_entry_with_ceiling;
pub use locator::LocatorEntry;
pub use locator::DEFAULT_LOCATOR_MAX_URI_BYTES;
pub use locator::LOCATOR_LENGTH_PREFIX_LEN;
pub use locator::MIN_LOCATOR_URI_BYTES;
pub use merkle::compute_merkle_root;
pub use merkle::hash_empty_section;
pub use merkle::hash_section;
pub use merkle::section_hashes_minimal;
pub use merkle::SectionHashes;
pub use merkle::MERKLE_DOMAIN_SEPARATOR;
pub use metadata::dir_node_hash;
pub use metadata::parse_metadata_blob;
pub use metadata::parse_metadata_blob_with_ceiling;
pub use metadata::MetadataBlob;
pub use metadata_reference::parse_metadata_reference;
pub use metadata_reference::parse_metadata_reference_with_ceilings;
pub use metadata_reference::read_external_metadata;
pub use metadata_reference::MetadataReference;
pub use metadata_reference::DEFAULT_INLINE_METADATA_MAX_BYTES;
pub use metadata_reference::METADATA_REFERENCE_SECTION_VERSION;
pub use metadata_reference::METADATA_REFERENCE_SECTION_VERSION_2;
pub use slab::parse_slab_header;
pub use slab::parse_slab_header_with_ceiling;
pub use slab::SlabHeader;
pub use slab::CRYPTO_HINT_EXTENDED;
pub use slab::DEFAULT_SLAB_MAX_BYTES;
pub use slab::EC_DESCRIPTOR_EXTENDED;
pub use slab::SLAB_FORMAT_VERSION;
pub use slab::SLAB_HEADER_LEN;
pub use slab_index::parse_slab_index;
pub use slab_index::parse_slab_index_with_ceiling;
pub use slab_index::SlabIndex;
pub use slab_index::SlabIndexEntry;
pub use slab_index::SLAB_INDEX_SECTION_VERSION;
pub use slab_reader::parse_slab;
pub use slab_reader::SlabView;

Modules§

aead
AEAD registry — maps AEAD ids to algorithm metadata.
aead_ops
AEAD operations: encrypt/decrypt trait + implementations.
categorization_policy
Categorization policy manifest section.
chunking_config
Chunking config manifest section.
codec
Codec registry — dispatches compression/decompression by codec id.
compression_tournament_config
Compression tournament config manifest section.
crypto
AEAD encrypt/decrypt — actual cryptographic operations.
cursor
Cursor over a manifest byte slice.
delta_linkage
Delta linkage section (spec §5.8, bit-level/45-delta-linkage.md).
dictionary_section
Dictionary section manifest module.
directory_node
Directory node (spec §4.2, bit-level/34-directory-node.md).
dms_policy
DMS policy section (spec §5.7, bit-level/44-dms-policy.md).
dms_scheme
DMS (distributed multi-share) scheme registry — maps DMS scheme ids to algorithm metadata.
drop_record
Drop record (spec §3.3, bit-level/31-drop-record.md).
ec_params
EC params section (spec §5.6, bit-level/43-ec-params.md).
ec_repair
Slab erasure-coding repair — reconstruct missing shards from surviving ones and re-emit them to the caller.
ec_scheme
EC (erasure coding) scheme registry — maps EC ids to algorithm metadata.
encryption_descriptor
Encryption descriptor manifest section.
epoch
Epoch format — writable images via content-addressed epoch chains.
error
Errors returned by the limnifs-core parsers.
feature_flags
Feature flags section (spec §5.2, bit-level/36-feature-flags.md).
fetch
Locator fetch trait — abstracts how slab bytes and metadata blobs are fetched from storage at runtime.
gf256
GF(2^8) arithmetic — shared field for Shamir secret sharing and Reed-Solomon erasure coding.
header
Manifest header (spec §5.1, bit-level/35-manifest-header.md).
history
History section (spec §5.9, bit-level/40-history.md).
inode
Inode record (spec §4.1, bit-level/33-inode.md).
live_tree
Live tree walker — visit every inode reachable from a root.
locator
Locator entry (spec §12, bit-level/37-locator-entry.md).
merkle
Merkle root construction (spec §5.10, bit-level/46-merkle-root.md).
metadata
Metadata blob (spec §4.1 + §4.2, bit-level/33-inode.md and bit-level/34-directory-node.md).
metadata_reference
Metadata reference section (spec §5.3, bit-level/38-metadata-reference.md).
profile_descriptor
Profile descriptor manifest section.
read
Reader-side entry points — the efficient path made the default path (limnifs#192).
reed_solomon
Reed-Solomon erasure coding over GF(2^8).
seekable
Seekable drop container (slab format v2, TODO.sota-fs/05).
shamir
Shamir secret sharing over GF(2^8).
slab
Slab header (spec §3.2, bit-level/30-slab-header.md).
slab_cache
Hot slab cache — SIEVE-evicted, byte-and-count bounded cache over decoded drop plaintexts shared as Arc<[u8]>.
slab_index
Slab index section (spec §5.4, bit-level/39-slab-index.md).
slab_reader
Slab reader — locates and extracts a drop’s plaintext from a slab.
slab_source
Slab source trait — abstraction over how slab bytes are accessed.
slab_store
Slab store — owns all slab bytes for an image and provides O(1) DropId → plaintext lookup across slabs.

Structs§

ManifestRoot
32-byte image identity: BLAKE3 of the manifest’s Merkle hash list.

Constants§

MANIFEST_HEADER_LEN