ark_secret_scalar::SecretScalar: !Sync due to its UnsafeCell. Although Mutex works, we could've some less strictly synchronized flavor in which readers access a different secret from the one mutator. We've several plausible approaches but maybe: Anytime a reader finishes then they attempt to point readers to a secret with zero readers, provided one exists. If you're the last reader on a secret then you mutate it before zeroing the readers counter. It looks safe if you're three secrets.
pub struct InnerSecretScalar {
readers: AtomicUsize,
secrets: [F; 2],
}
pub struct SecretScalar {
reader: AtomicUsize,
inners: [InnerSecretScalar; 3]
}
We should simply implement constant time curves instead. lol
ark_secret_scalar::SecretScalar: !Syncdue to itsUnsafeCell. AlthoughMutexworks, we could've some less strictly synchronized flavor in which readers access a different secret from the one mutator. We've several plausible approaches but maybe: Anytime a reader finishes then they attempt to point readers to a secret with zero readers, provided one exists. If you're the last reader on a secret then you mutate it before zeroing the readers counter. It looks safe if you're three secrets.We should simply implement constant time curves instead. lol