Skip to main content

VersionedEngram

Struct VersionedEngram 

Source
pub struct VersionedEngram {
    pub chunk_store: VersionedChunkStore,
    pub corrections: VersionedCorrectionStore,
    pub manifest: VersionedManifest,
    /* private fields */
}
Expand description

A fully versioned engram with optimistic locking

This is the top-level structure that coordinates all versioned components. It provides high-level read/write operations with ACID-like properties.

Fields§

§chunk_store: VersionedChunkStore

Versioned chunk store (NOT the VSA codebook - that’s in embeddenator-vsa)

§corrections: VersionedCorrectionStore

Versioned corrections

§manifest: VersionedManifest

Versioned manifest

Implementations§

Source§

impl VersionedEngram

Source

pub fn new(_dimensionality: usize) -> Self

Create a new versioned engram with default dimensionality

§Arguments
  • dimensionality - Reserved for future use. The actual dimensionality is determined by SparseVec::new() which uses the system’s configured default. This parameter is preserved in the API for future VSA codebook integration when the dimensionality becomes configurable.
Source

pub fn with_root(root: Arc<SparseVec>) -> Self

Create a versioned engram with an existing root vector

Source

pub fn version(&self) -> u64

Get the current global version

Source

pub fn root_version(&self) -> u64

Get the current root version

Source

pub fn root(&self) -> Arc<SparseVec>

Get a reference to the root vector

Source

pub fn update_root( &self, new_root: Arc<SparseVec>, expected_version: u64, ) -> VersionedResult<u64>

Update the root vector with Compare-And-Swap (CAS)

This is the core operation for optimistic locking on the root. It attempts to update the root only if the current version matches the expected version.

Source

pub fn bundle_chunk(&self, chunk_vec: &SparseVec) -> Result<u64, String>

Bundle a chunk into the root with automatic retry

This operation superimposes a new chunk vector into the root using the VSA bundle operation (XOR for binary vectors). The bundling is performed with optimistic locking and automatic retry on version conflicts.

§Algorithm
  1. Read current root and its version
  2. Create new root by bundling: new_root = current_root ⊕ chunk_vec
  3. Attempt CAS update with optimistic locking
  4. Retry with exponential backoff if version conflict detected
§Arguments
  • chunk_vec - The chunk vector to bundle into the root
§Returns
  • Ok(new_version) - The new root version after successful bundle
  • Err(e) - Error after max retries exceeded or other failure
Source

pub fn begin_transaction(&self) -> Transaction

Begin a new transaction

Source

pub fn commit_transaction(&self, tx: Transaction) -> Result<(), String>

Commit a transaction

Source

pub fn abort_transaction(&self, tx: Transaction)

Abort a transaction

Source

pub fn transaction_stats(&self) -> TransactionStats

Get transaction statistics

Source

pub fn stats(&self) -> EngramStats

Get comprehensive engram statistics

Trait Implementations§

Source§

impl Clone for VersionedEngram

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for VersionedEngram

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V