Expand description
§acyclic-fs
Immutable, versioned workspaces with embedded and hosted backends. Generations are stable identities; mutations produce new generations instead of rewriting history.
cargo add acyclic-fsChoose the backend for your deployment: embedded storage for local durability, hosted authority and Objects for a remote workspace, or embedded native mount integration. Transactions stage edits before commit; forks branch from a generation. The provider determines persistence, isolation, and mount guarantees.
Start with the embedded workspace example, the hosted example, or the Rust API. The v2 protocol defines compatibility.
Re-exports§
pub use async_storage::AsyncAuthorityStore;pub use async_storage::AsyncObjectStore;pub use async_storage::GenerationFork;pub use async_storage::GenerationForkSource;pub use async_storage::ImmediateAuthorityStore;pub use async_storage::ImmediateObjectStore;pub use cache::CachedObjectStore;pub use cache::ObjectCacheConfigError;pub use cache::ObjectCacheOptions;pub use cache::ObjectCacheStats;pub use cancellation::CancellationError;pub use cancellation::CancellationToken;pub use cancellation::Cancelled;pub use core_state::LocalCoreStateStore;pub use core_state::LocalCoreStateStoreError;pub use distributed::ProviderObjectStore;pub use distributed::StreamAuthorityStore;pub use facade::AuthoredLiveMutationResult;pub use facade::AuthoredMutation;pub use facade::AuthoredTransactionResult;pub use facade::Checkout;pub use facade::CheckoutCommitOutcome;pub use facade::ContentStager;pub use facade::DetachedFile;pub use facade::DirectoryBindingChange;pub use facade::DirectoryPageRequest;pub use facade::DirectoryRecordEntry;pub use facade::DirectoryRecordPage;pub use facade::EmbeddedCapabilities;pub use facade::FileCloneRequest;pub use facade::FileDescription;pub use facade::FileRecordChange;pub use facade::Fs;pub use facade::FsError;pub use facade::FsReceipt;pub use facade::FsResult;pub use facade::GenerationDiff;pub use facade::LiveMutationOutcome;pub use facade::MergeConflict;pub use facade::MergePreparation;pub use facade::NamedAttributeWriteMode;pub use facade::PathMetadataLookup;pub use facade::PinnedReader;pub use facade::ResolvedDirectoryEntry;pub use facade::ResolvedDirectoryPage;pub use facade::ResolvedFile;pub use facade::ResolvedFileRangeReadRequest;pub use facade::StagedContent;pub use facade::Volume;pub use facade::LocalAuthorityBackend;pub use facade::LocalFs;pub use facade::LocalGarbageCollection;pub use facade::LocalObjectBackend;pub use facade::LocalOperationWindowStore;pub use facade::LocalOptions;pub use facade::LocalVolume;pub use facade::MemoryAuthorityBackend;pub use facade::MemoryFs;pub use facade::MemoryObjectBackend;pub use foundation::AUTHORITY_COMMIT_DIGEST_ENVELOPE_BYTES;pub use foundation::AuthorityId;pub use foundation::CheckoutId;pub use foundation::Digest;pub use foundation::DurableCommit;pub use foundation::Epoch;pub use foundation::FileId;pub use foundation::GenerationId;pub use foundation::Head;pub use foundation::MountId;pub use foundation::OperationId;pub use foundation::ProposedCommit;pub use foundation::Sequence;pub use foundation::VolumeId;pub use foundation::WatchId;pub use git_compat::GitBisectResult;pub use git_compat::GitBisectState;pub use git_compat::GitBlameLine;pub use git_compat::GitBranch;pub use git_compat::GitCaptureAuthenticationError;pub use git_compat::GitCaptureError;pub use git_compat::GitCaptureProof;pub use git_compat::GitCapturedGeneration;pub use git_compat::GitCommand;pub use git_compat::GitCommandOutput;pub use git_compat::GitCommit;pub use git_compat::GitCommitId;pub use git_compat::GitCompatError;pub use git_compat::GitCompatRepository;pub use git_compat::GitCompatRunError;pub use git_compat::GitCompatState;pub use git_compat::GitCompatStore;pub use git_compat::GitDiffCounts;pub use git_compat::GitDirtyState;pub use git_compat::GitFilesystemAction;pub use git_compat::GitFilesystemExecutor;pub use git_compat::GitFilesystemResult;pub use git_compat::GitGenerationRef;pub use git_compat::GitGrepMatch;pub use git_compat::GitGrepResult;pub use git_compat::GitIgnorePolicy;pub use git_compat::GitObjectName;pub use git_compat::GitPatchError;pub use git_compat::GitPendingMutation;pub use git_compat::GitPendingTransition;pub use git_compat::GitPublicationRecord;pub use git_compat::GitResetMode;pub use git_compat::GitStatus;pub use git_compat::GitTransitionId;pub use git_compat::GitTreeEntry;pub use git_compat::GitTreeRef;pub use git_compat::IntoGitTreeRef;pub use git_compat::MemoryGitCompatStore;pub use git_compat::apply_git_patch;pub use git_compat::apply_git_patch_with_permit;pub use git_compat::blame_git_generations;pub use git_compat::capture_git_compatible_generation;pub use git_compat::capture_git_compatible_generation_at;pub use git_compat::capture_git_compatible_generation_incremental;pub use git_compat::git_compatible_diff_counts;pub use git_compat::grep_git_generation;pub use git_compat::walk_git_tree;pub use hosted::HostedFs;pub use hosted::HostedFsError;pub use hosted::HostedFsOptions;pub use hosted::HostedGeneration;pub use hosted::HostedS3Access;pub use hosted::HostedS3AccessOptions;pub use hosted::HostedTransaction;pub use hosted::HostedWorkspace;pub use kernel::GenerationExportManifest;pub use kernel::GenerationExportManifestError;pub use kernel::decode_generation_export_manifest;pub use kernel::encode_generation_export_manifest;pub use lazy_workspace::LazyDirectoryCursor;pub use lazy_workspace::LazyDirectoryEntry;pub use lazy_workspace::LazyDirectoryPage;pub use lazy_workspace::LazyLookup;pub use lazy_workspace::LazyOverlay;pub use lazy_workspace::LazyOverlayId;pub use lazy_workspace::LazySeekTarget;pub use lazy_workspace::LazyShadow;pub use lazy_workspace::LazyShadowId;pub use lazy_workspace::LazySnapshotId;pub use lazy_workspace::LazySnapshotRef;pub use lazy_workspace::LazyStat;pub use lazy_workspace::LazyWorkspace;pub use lazy_workspace::LazyWorkspaceError;pub use lazy_workspace::LazyWorkspaceState;pub use lazy_workspace::LazyWorkspaceStore;pub use lazy_workspace::MemoryLazyWorkspaceStore;pub use lineage::MemoryWorkspaceLineageStore;pub use lineage::MemoryWorkspaceLineageStoreError;pub use lineage::WorkspaceGraph;pub use lineage::WorkspaceLineageError;pub use lineage::WorkspaceLineageRecord;pub use lineage::WorkspaceLineageStore;pub use materializer::JournaledMaterializer;pub use materializer::MaterializationBackend;pub use materializer::MaterializationEdit;pub use materializer::MaterializationError;pub use materializer::MaterializationJournal;pub use materializer::MaterializationJournalStore;pub use materializer::MaterializationPhase;pub use materializer::MaterializationPlan;pub use materializer::MaterializationPreimage;pub use materializer::MaterializationRecovery;pub use materializer::MemoryMaterializationJournalStore;pub use materializer::MemoryMaterializationJournalStoreError;pub use materializer::NativeTreeMaterializationBackend;pub use materializer::NativeTreeMaterializationError;pub use materializer::NativeWorkspacePublication;pub use materializer::NativeWorkspacePublicationError;pub use materializer::publish_native_generation_transition;pub use materializer::publish_native_workspace_generation;pub use merge_driver::AttributeRule;pub use merge_driver::CachedMergeResolution;pub use merge_driver::ConflictKey;pub use merge_driver::ConflictKind;pub use merge_driver::ConflictSide;pub use merge_driver::ConflictValue;pub use merge_driver::ConflictView;pub use merge_driver::DefaultTextMergeDriver;pub use merge_driver::DriverError;pub use merge_driver::DriverRegistrationError;pub use merge_driver::MemoryMergeResolutionCache;pub use merge_driver::MergeDriver;pub use merge_driver::MergeDriverMode;pub use merge_driver::MergeDriverRegistry;pub use merge_driver::MergePlan;pub use merge_driver::MergePlanResolutionError;pub use merge_driver::MergeResolution;pub use merge_driver::MergeResolutionCache;pub use merge_driver::ResolutionKey;pub use merge_driver::UnpublishedMergeCandidate;pub use merge_driver::resolve_merge_plan;pub use mount::MountError;pub use mount::MountedCheckout;pub use mount::MountedGeneration;pub use mount::MountedView;pub use mount::MountedViewBuilder;pub use mount::MountedViewSnapshot;pub use mount::RoutedCheckout;pub use multi_root::LineageMultiRootPublicationAuthorizationError;pub use multi_root::LineageMultiRootPublicationAuthorizer;pub use multi_root::MaterializingWorkspaceMultiRootPublisher;pub use multi_root::MaterializingWorkspaceMultiRootPublisherError;pub use multi_root::MemoryMultiRootPublicationStore;pub use multi_root::MemoryMultiRootPublicationStoreError;pub use multi_root::MultiRootConflictFinish;pub use multi_root::MultiRootFence;pub use multi_root::MultiRootMaterializer;pub use multi_root::MultiRootMergeCandidate;pub use multi_root::MultiRootMergePlan;pub use multi_root::MultiRootMergeRoot;pub use multi_root::MultiRootPublication;pub use multi_root::MultiRootPublicationAuthorizer;pub use multi_root::MultiRootPublicationCoordinator;pub use multi_root::MultiRootPublicationError;pub use multi_root::MultiRootPublicationPhase;pub use multi_root::MultiRootPublicationStore;pub use multi_root::MultiRootPublishRoot;pub use multi_root::MultiRootPublisher;pub use multi_root::Publication;pub use multi_root::WorkspaceMultiRootPublisher;pub use multi_root::WorkspaceMultiRootPublisherError;pub use multi_root::WorkspaceResolver;pub use native_capture::CaptureError;pub use native_capture::CaptureOptions;pub use native_capture::CapturePolicy;pub use native_capture::CaptureReceipt;pub use native_capture::WatchCaptureReceipt;pub use native_capture::capture_baseline;pub use native_capture::capture_baseline_with_policy;pub use native_capture::capture_paths;pub use native_capture::capture_paths_with_policy;pub use native_capture::capture_root_identity;pub use native_capture::capture_subtree;pub use native_capture::capture_subtree_with_policy;pub use native_capture::capture_subtrees_with_policy;pub use native_capture::capture_watch_batch;pub use native_capture::capture_watch_batch_with_policy;pub use native_capture::host_path_to_namespace;pub use native_capture::namespace_to_host_path;pub use native_exchange::NativeExchangeError;pub use native_exchange::NativeExchangeJournal;pub use native_exchange::NativeExchangeOutcome;pub use native_exchange::NativeExchangePhase;pub use native_exchange::exchange_native_entries;pub use native_exchange::prepare_native_exchange;pub use native_exchange::prepare_native_exchange_with_recovery;pub use native_exchange::publish_native_exchange;pub use native_exchange::recover_native_exchange;pub use native_mount::CheckoutMountSource;pub use native_mount::HostPathReplacement;pub use native_mount::HostPathRestore;pub use native_mount::LazyMount;pub use native_mount::LazyWorkingSet;pub use native_mount::MaterializationReceipt;pub use native_mount::MaterializeError;pub use native_mount::MaterializeOptions;pub use native_mount::Mount;pub use native_mount::MountAttributePage;pub use native_mount::MountDirectoryEntry;pub use native_mount::MountDirectoryPage;pub use native_mount::MountFilesystem;pub use native_mount::MountLifecycleError;pub use native_mount::MountLookup;pub use native_mount::MountNode;pub use native_mount::MountNodeKind;pub use native_mount::MountOpenFile;pub use native_mount::MountOptions;pub use native_mount::MountPath;pub use native_mount::MountPublication;pub use native_mount::MountRangeAllocation;pub use native_mount::MountSeekTarget;pub use native_mount::MountSourceError;pub use native_mount::MountSparseRange;pub use native_mount::MountSparseSpan;pub use native_mount::MountViewLease;pub use native_mount::NativeBlockCloneAccelerationEvidence;pub use native_mount::NativeMountCapabilities;pub use native_mount::NativeMountError;pub use native_mount::NativeMountKind;pub use native_mount::NativeMountRequest;pub use native_mount::NativeMountSession;pub use native_mount::NativeMountSessionIsolation;pub use native_mount::NativeSparseAccelerationEvidence;pub use native_mount::NativeStorageAccelerationError;pub use native_mount::NativeStorageAccelerationEvidence;pub use native_mount::NativeStorageCapabilities;pub use native_mount::NativeStorageCapabilityError;pub use native_mount::RoutedMountSource;pub use native_mount::detach_native_mount_destination_after_crash;pub use native_mount::materialize_checkout;pub use native_mount::materialize_checkout_host_path;pub use native_mount::materialize_checkout_path;pub use native_mount::materialize_checkout_paths;pub use native_mount::mount_native;pub use native_mount::mount_native_over_existing;pub use native_mount::probe_native_mount;pub use native_mount::probe_native_storage_accelerations;pub use native_mount::probe_native_storage_capabilities;pub use native_mount::reclaim_native_mount_destination_fence;pub use native_mount::reclaim_stale_native_mount_destination_fences;pub use native_mount::recover_native_mount_destination;pub use native_mount::restore_checkout_host_path;pub use native_mount::seal_checkout;pub use native_mount::seal_checkout_with_permit;pub use notification::AsyncNotificationStore;pub use notification::ImmediateNotificationStore;pub use notification::MemoryNotificationStore;pub use notification::NotificationError;pub use notification::NotificationPoll;pub use notification::NotificationResult;pub use notification::NotificationStore;pub use operation_window::MemoryOperationWindowStore;pub use operation_window::OperationLease;pub use operation_window::OperationLeaseId;pub use operation_window::OperationReconcileLimits;pub use operation_window::OperationWindowCoordinator;pub use operation_window::OperationWindowError;pub use operation_window::OperationWindowFinish;pub use operation_window::OperationWindowLease;pub use operation_window::OperationWindowPhase;pub use operation_window::OperationWindowReconcile;pub use operation_window::OperationWindowSnapshot;pub use operation_window::OperationWindowStore;pub use operation_window::StreamOperationWindowStore;pub use operation_window::StreamOperationWindowStoreError;pub use operation_window::WorkspaceOperationFinish;pub use performance::MeasuredResult;pub use performance::OperationFailure;pub use performance::OperationReceipt;pub use performance::WorkBudget;pub use performance::WorkCounters;pub use performance::WorkError;pub use s3::S3Error;pub use s3::S3List;pub use s3::S3ListCursor;pub use s3::S3ListOptions;pub use s3::S3MultipartOptions;pub use s3::S3MultipartUpload;pub use s3::S3Object;pub use s3::S3ObjectHead;pub use s3::S3Workspace;pub use simulation::ScheduledSimulationFault;pub use simulation::SimulatedAuthorityStore;pub use simulation::SimulatedObjectStore;pub use simulation::Simulation;pub use simulation::SimulationError;pub use simulation::SimulationFault;pub use simulation::SimulationOperation;pub use simulation::SimulationOptions;pub use simulation::SimulationTrace;pub use source::ReconcileOutcome;pub use source::Source;pub use source::SourceError;pub use source::SourceMode;pub use source::SourceOptions;pub use source::SourceState;pub use speculation::ObjectResidency;pub use speculation::PromotionAdmission;pub use speculation::PromotionCandidate;pub use speculation::PromotionDestination;pub use speculation::PromotionExecutor;pub use speculation::PromotionMetrics;pub use speculation::PromotionPlan;pub use speculation::PromotionRejection;pub use speculation::PromotionSpeculator;pub use speculation::PromotionSpeculatorError;pub use speculation::PromotionSpeculatorOptions;pub use speculation::ResidencyAdmission;pub use speculation::ResidencyCandidate;pub use speculation::ResidencyHint;pub use speculation::ResidencyMetrics;pub use speculation::ResidencyPermit;pub use speculation::ResidencyReason;pub use speculation::ResidencyRejection;pub use speculation::ResidencySpeculator;pub use speculation::ResidencySpeculatorError;pub use speculation::ResidencySpeculatorOptions;pub use speculation::SpeculationController;pub use speculation::SpeculationControllerError;pub use speculation::SpeculationMetrics;pub use speculation::SpeculationOptions;pub use speculation::SpeculationPreemption;pub use speculation::StorageLocationId;pub use speculation::StorageTier;pub use speculation::StorePromotionExecutor;pub use speculation::StorePromotionExecutorError;pub use speculation::execute_promotion;pub use speculation::execute_residency;pub use storage::AppendOutcome;pub use storage::AuthorityFailure;pub use storage::AuthorityReceipt;pub use storage::AuthorityResult;pub use storage::AuthorityStore;pub use storage::AuthorityStoreError;pub use storage::ByteRange;pub use storage::CreateAuthorityOutcome;pub use storage::FenceOutcome;pub use storage::GuardedAppend;pub use storage::OBJECT_DIGEST_ENVELOPE_BYTES;pub use storage::ObjectFailure;pub use storage::ObjectId;pub use storage::ObjectKind;pub use storage::ObjectRead;pub use storage::ObjectReadRequest;pub use storage::ObjectReadRetention;pub use storage::ObjectReceipt;pub use storage::ObjectResult;pub use storage::ObjectStore;pub use storage::ObjectStoreError;pub use storage::PublicationPermit;pub use storage::PublicationReservation;pub use storage::ReplayLimit;pub use storage::ReservationOutcome;pub use storage::object_digest;pub use streams_record::STREAMS_AUTHORITY_RECORD_HEADER_BYTES;pub use streams_record::StreamsAuthorityRecord;pub use streams_record::StreamsAuthorityRecordError;pub use streams_record::StreamsDurableRecord;pub use watch::NativeWatch;pub use watch::NativeWatchBackend;pub use watch::NativeWatchCapabilities;pub use watch::NativeWatchError;pub use watch::NativeWatchOptions;pub use watch::WatchBatch;pub use watch::WatchChange;pub use watch::WatchEpoch;pub use watch::WatchInvalidationReason;pub use watch::WatchSequence;pub use watch::native_watch_capabilities;pub use workspace::ApplyOptions;pub use workspace::ChangeSet;pub use workspace::ChangedPath;pub use workspace::Checkpoint;pub use workspace::DrivenJoinError;pub use workspace::ForkOptions;pub use workspace::Generation;pub use workspace::GenerationPin;pub use workspace::IdempotencyKey;pub use workspace::JoinBuilder;pub use workspace::JoinHistory;pub use workspace::JoinOutcome;pub use workspace::JoinPlan;pub use workspace::Transaction;pub use workspace::TransactionCommit;pub use workspace::TransactionConflict;pub use workspace::TransactionConflictRegion;pub use workspace::TransactionDependencyUse;pub use workspace::TransactionRebase;pub use workspace::TransactionSparseSeek;pub use workspace::Workspace;pub use workspace::WorkspaceDelete;pub use workspace::WorkspaceDirectoryEntry;pub use workspace::WorkspaceDirectoryPage;pub use workspace::WorkspaceError;pub use workspace::WorkspaceExtentKind;pub use workspace::WorkspaceExtentPlan;pub use workspace::WorkspaceExtentSpan;pub use workspace::WorkspaceId;pub use workspace::WorkspaceMetadata;pub use workspace::WorkspaceName;pub use workspace::WorkspaceNameError;pub use workspace::WorkspacePathApply;pub use workspace::WorkspacePathConflict;pub use workspace::WorkspaceRebase;pub use workspace::WorkspaceRestore;pub use workspace::WorkspaceStat;pub use workspace::WorkspaceSync;pub use workspace_context::MemoryWorkspaceContextStore;pub use workspace_context::MemoryWorkspaceContextStoreError;pub use workspace_context::WorkspaceContext;pub use workspace_context::WorkspaceContextDiscardOutcome;pub use workspace_context::WorkspaceContextError;pub use workspace_context::WorkspaceContextId;pub use workspace_context::WorkspaceContextRegistry;pub use workspace_context::WorkspaceContextRoot;pub use workspace_context::WorkspaceContextState;pub use workspace_context::WorkspaceContextStore;pub use workspace_context::WorkspaceRootId;pub use workspace_context::WorkspaceRoute;pub use workspace_context::WorkspaceRouteKind;
Modules§
- async_
storage - Runtime-neutral asynchronous storage contracts for browser and remote use.
- cache
- Bounded disposable immutable-object caching and single-flight reads.
- cancellation
- Runtime-independent cooperative cancellation for native and browser work.
- compat_
wire - Versioned JSON envelopes for immutable merge and publication values.
- core_
state - Journaled local persistence for filesystem control-plane state.
- demand
- Bounded, versioned access to unresolved filesystem sources.
- distributed
- Filesystem storage bindings over the canonical public service providers.
- facade
- Thin embedded
Fs/Volume/Checkoutcomposition over the two durable stores. - foundation
- Portable identities and authority contracts.
- git_
compat - Git-shaped compatibility state over distributed filesystem generations.
- hosted
- Idiomatic handles over the canonical hosted Filesystem transport.
- kernel
- Canonical authenticated filesystem page formats and sparse algorithms.
- lazy_
workspace - Source-backed sparse workspaces.
- lineage
- Durable direct-parent workspace lineage.
- materializer
- Journaled pathwise application and crash recovery.
- merge_
driver - Declarative merge-driver boundary over immutable conflict inputs.
- model
- Explicit, backend-independent volume and checkout semantics.
- mount
- Composition of independent volume checkouts at distinct mount paths.
- multi_
root - Durable all-roots publication decisions.
- native_
capture - Bounded host-state capture into one atomic sparse checkout transaction.
- native_
exchange - Crash-recoverable whole-tree publication for native consumers.
- native_
mount - Native Linux FUSE, macOS NFS, and Windows
ProjFSprojection boundary. - notification
- Disposable authority-head notification acceleration.
- operation_
window - Durable operation windows for stable mounted-tool execution.
- path
- Strict portable absolute paths used at the volume boundary.
- performance
- Exact implementation-work budgets and receipts for complexity qualification.
- s3
- Strongly consistent S3-shaped view over one canonical workspace.
- simulation
- Deterministic bounded fault simulator for authority and immutable-object backends.
- source
- Native directory sources over the canonical checkout and watcher engines.
- speculation
- Disposable, correctness-inert residency and storage-promotion speculation.
- storage
- Pluggable authority and immutable object storage interfaces.
- streams_
record - Canonical authority record envelope for the native Streams v1 service.
- text_
merge - Pure bounded three-way text merge shared by every filesystem consumer.
- watch
- Bounded native change notifications for materialized checkouts.
- wire
- Generated public gRPC schema and client/server bindings.
- workspace
- Customer workspace identities and immutable generation handles.
- workspace_
context - Durable, agent-neutral composition of recursively forked workspaces.
Structs§
- Credential
Grant Request - Fully validated scope passed to the authenticated deployment edge.
- Distributed
Fs - Shared constructors for the semantic handles of one filesystem deployment.
- Filesystem
Wire Limits - Hard bounds and explicitly available optional hosted capabilities.
- Filesystem
Wire Service - One SDK-owned protocol adapter over the canonical filesystem engine.
- Hosted
Source Operation - Stable operation identity for a hosted source mutation.
- Hosted
Source Result - One provider result, optionally naming the exact resulting generation.
- Hosted
Source Scope - Deployment-owned source identity after the SDK authenticates its workspace.
- Local
Objects Limits - Exact durable-local capacity contract. Reopening requires the same capacity limits;
durabilityis a per-open policy. - Local
Stream Limits - Explicit local retention and recovery bounds.
- Native
Root Identity - Stable native identity of one held filesystem root.
Enums§
- Credential
Grant - Deployment-produced scoped credential material.
- Credential
Kind - Deployment-owned credential surface selected after SDK validation.
- Hosted
Source Invalidation - Why a hosted source can no longer prove a contiguous change interval.
- Hosted
Source State - Canonical state returned by a deployment source provider.
- Local
Objects Durability - How journal frames and immutable bodies are made durable before they become observable.
- Local
Stream Durability - How the journal is made durable before a mutation becomes observable.
- Rename
Mode - Destination behavior for one durable rename.
Constants§
- FILE_
DESCRIPTOR_ SET - Canonical public descriptor set used by compatibility and conformance gates.
Traits§
- Filesystem
Credential Issuer - Authenticated deployment extension for private credential issuance.
- Filesystem
Source Provider - Deployment extension for a remotely owned attached source.
Functions§
- durable_
rename - Renames one filesystem entry and durably publishes the affected namespace.