-
Notifications
You must be signed in to change notification settings - Fork 123
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cached state values in the program state #840
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nothing major
@@ -155,7 +155,7 @@ pub fn state_keys(_attr: TokenStream, item: TokenStream) -> TokenStream { | |||
let mut item_enum = parse_macro_input!(item as ItemEnum); | |||
// add default attributes | |||
item_enum.attrs.push(syn::parse_quote! { | |||
#[derive(Clone, Copy, Debug)] | |||
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
unsafe { from_host_ptr(val_ptr) } | ||
self.cache.insert(key, val_bytes.clone()); | ||
|
||
from_slice::<V>(&val_bytes).map_err(|_| StateError::Deserialization) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did you try using the HashMap::entry
method? It should enable you do get val_bytes
without cloning anywhere.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did tried, but the entry API doesn't provide any convenient method other than chaining and_modify
with or_insert
, moreover the value of the HashMap
is owned so I'm not sure if we can get around that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
By permutating the line that calls from_slice
with the one that inserts in the map, I could get around that clone.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure what you mean by "permutating".
I think it should look something more like this:
pub fn get<V>(&mut self, key: K) -> Result<Option<V>, Error>
where
V: BorshDeserialize,
{
if let Some(val) = self.cache.get(&key) {
return from_slice(&val)
.map_err(|_| Error::Deserialization)
.map(Some);
}
let host_ptr = unsafe {
// cloning the key here isn't ideal, but we should be able to fix this later
host::get_bytes(&self.program, &key.clone().into()).map_err(|_| Error::Read)?
};
// I'm not 100% that this is how the host handles things when a key doesn't exist
if host_ptr == 0 {
return Ok(None);
}
let bytes = into_bytes(host_ptr);
let val = self.cache.entry(key).or_insert(bytes);
from_slice(&val)
.map_err(|_| Error::Deserialization)
.map(Some)
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually, this might be better:
pub fn get<V>(&mut self, key: K) -> Result<Option<V>, Error>
where
V: BorshDeserialize,
{
let val = if let Some(val) = self.cache.get(&key) {
val
} else {
let host_ptr = unsafe {
host::get_bytes(&self.program, &key.clone().into()).map_err(|_| Error::Read)?
};
if host_ptr == 0 {
return Ok(None);
}
let bytes = into_bytes(host_ptr);
self.cache.entry(key).or_insert(bytes)
};
from_slice(val)
.map_err(|_| Error::Deserialization)
.map(Some)
}
🤔... looks like there's a failure somewhere. |
This reverts commit 058d7e7.
This reverts commit 214005b.
This reverts commit 07993bf.
This reverts commit 7442836.
… of [txID + result]" This reverts commit e551960.
…ommit" This reverts commit ce00289.
This reverts commit 68e49b6.
This reverts commit aa44f97.
This reverts commit 4aec589.
… of [txID + result]" This reverts commit e551960.
This reverts commit 68e49b6.
This reverts commit aa44f97.
* add cache * implement cache reads * actually cache reads * implement cache delete and handle borsch errors * use only one cache map * remove flushed bool * root of transactions by stateless merkledb * make root generation a function * preallocate memory for merkle array and consumebytes flag * add <*.code-workspace> to .gitignore and remove it from git commit * move root generation func to merkle package, tx root by items of [txID + result] * rebase & blk marshal/unmarshal & merkleroot to ids.ID * write benches for the merkle package * use crypto/rand, fix var name, report allocs * put the 10k bench back * pass config by parameter * happy clippy * borrow V * add TODO * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "put the 10k bench back" This reverts commit 058d7e7. * Revert "use crypto/rand, fix var name, report allocs" This reverts commit 214005b. * Revert "write benches for the merkle package" This reverts commit 07993bf. * Revert "rebase & blk marshal/unmarshal & merkleroot to ids.ID" This reverts commit 7442836. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "add <*.code-workspace> to .gitignore and remove it from git commit" This reverts commit ce00289. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * merge main! * merge imports --------- Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]>
* add cache * implement cache reads * actually cache reads * implement cache delete and handle borsch errors * use only one cache map * remove flushed bool * root of transactions by stateless merkledb * make root generation a function * preallocate memory for merkle array and consumebytes flag * add <*.code-workspace> to .gitignore and remove it from git commit * move root generation func to merkle package, tx root by items of [txID + result] * rebase & blk marshal/unmarshal & merkleroot to ids.ID * write benches for the merkle package * use crypto/rand, fix var name, report allocs * put the 10k bench back * pass config by parameter * happy clippy * borrow V * add TODO * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "put the 10k bench back" This reverts commit 058d7e7. * Revert "use crypto/rand, fix var name, report allocs" This reverts commit 214005b. * Revert "write benches for the merkle package" This reverts commit 07993bf. * Revert "rebase & blk marshal/unmarshal & merkleroot to ids.ID" This reverts commit 7442836. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "add <*.code-workspace> to .gitignore and remove it from git commit" This reverts commit ce00289. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * merge main! * merge imports --------- Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]>
* add cache * implement cache reads * actually cache reads * implement cache delete and handle borsch errors * use only one cache map * remove flushed bool * root of transactions by stateless merkledb * make root generation a function * preallocate memory for merkle array and consumebytes flag * add <*.code-workspace> to .gitignore and remove it from git commit * move root generation func to merkle package, tx root by items of [txID + result] * rebase & blk marshal/unmarshal & merkleroot to ids.ID * write benches for the merkle package * use crypto/rand, fix var name, report allocs * put the 10k bench back * pass config by parameter * happy clippy * borrow V * add TODO * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "put the 10k bench back" This reverts commit 058d7e7. * Revert "use crypto/rand, fix var name, report allocs" This reverts commit 214005b. * Revert "write benches for the merkle package" This reverts commit 07993bf. * Revert "rebase & blk marshal/unmarshal & merkleroot to ids.ID" This reverts commit 7442836. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "add <*.code-workspace> to .gitignore and remove it from git commit" This reverts commit ce00289. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * merge main! * merge imports --------- Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]>
* support program passing in param * fix inter-program interaction * update fixture * keep using `SmartPtr` for now * remove the need of a new Param type * lint * remove param * fix nits * remove whitespace * Cached state values in the program state (#840) * add cache * implement cache reads * actually cache reads * implement cache delete and handle borsch errors * use only one cache map * remove flushed bool * root of transactions by stateless merkledb * make root generation a function * preallocate memory for merkle array and consumebytes flag * add <*.code-workspace> to .gitignore and remove it from git commit * move root generation func to merkle package, tx root by items of [txID + result] * rebase & blk marshal/unmarshal & merkleroot to ids.ID * write benches for the merkle package * use crypto/rand, fix var name, report allocs * put the 10k bench back * pass config by parameter * happy clippy * borrow V * add TODO * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "put the 10k bench back" This reverts commit 058d7e7. * Revert "use crypto/rand, fix var name, report allocs" This reverts commit 214005b. * Revert "write benches for the merkle package" This reverts commit 07993bf. * Revert "rebase & blk marshal/unmarshal & merkleroot to ids.ID" This reverts commit 7442836. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "add <*.code-workspace> to .gitignore and remove it from git commit" This reverts commit ce00289. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * merge main! * merge imports --------- Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]> * [x/programs] safe wrapper around C ffi interface (#869) * macro skeleton * write macro for ffi-safe bindings * avoid panicking todo! Signed-off-by: Franfran <[email protected]> * remove unused arms --------- Signed-off-by: Franfran <[email protected]> --------- Signed-off-by: Franfran <[email protected]> Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]>
* support program passing in param * fix inter-program interaction * update fixture * keep using `SmartPtr` for now * remove the need of a new Param type * lint * remove param * fix nits * remove whitespace * Cached state values in the program state (#840) * add cache * implement cache reads * actually cache reads * implement cache delete and handle borsch errors * use only one cache map * remove flushed bool * root of transactions by stateless merkledb * make root generation a function * preallocate memory for merkle array and consumebytes flag * add <*.code-workspace> to .gitignore and remove it from git commit * move root generation func to merkle package, tx root by items of [txID + result] * rebase & blk marshal/unmarshal & merkleroot to ids.ID * write benches for the merkle package * use crypto/rand, fix var name, report allocs * put the 10k bench back * pass config by parameter * happy clippy * borrow V * add TODO * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "put the 10k bench back" This reverts commit 058d7e7. * Revert "use crypto/rand, fix var name, report allocs" This reverts commit 214005b. * Revert "write benches for the merkle package" This reverts commit 07993bf. * Revert "rebase & blk marshal/unmarshal & merkleroot to ids.ID" This reverts commit 7442836. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "add <*.code-workspace> to .gitignore and remove it from git commit" This reverts commit ce00289. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * merge main! * merge imports --------- Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]> * [x/programs] safe wrapper around C ffi interface (#869) * macro skeleton * write macro for ffi-safe bindings * avoid panicking todo! Signed-off-by: Franfran <[email protected]> * remove unused arms --------- Signed-off-by: Franfran <[email protected]> --------- Signed-off-by: Franfran <[email protected]> Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]>
* add cache * implement cache reads * actually cache reads * implement cache delete and handle borsch errors * use only one cache map * remove flushed bool * root of transactions by stateless merkledb * make root generation a function * preallocate memory for merkle array and consumebytes flag * add <*.code-workspace> to .gitignore and remove it from git commit * move root generation func to merkle package, tx root by items of [txID + result] * rebase & blk marshal/unmarshal & merkleroot to ids.ID * write benches for the merkle package * use crypto/rand, fix var name, report allocs * put the 10k bench back * pass config by parameter * happy clippy * borrow V * add TODO * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "put the 10k bench back" This reverts commit 058d7e7. * Revert "use crypto/rand, fix var name, report allocs" This reverts commit 214005b. * Revert "write benches for the merkle package" This reverts commit 07993bf. * Revert "rebase & blk marshal/unmarshal & merkleroot to ids.ID" This reverts commit 7442836. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "add <*.code-workspace> to .gitignore and remove it from git commit" This reverts commit ce00289. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * merge main! * merge imports --------- Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]>
* add cache * implement cache reads * actually cache reads * implement cache delete and handle borsch errors * use only one cache map * remove flushed bool * root of transactions by stateless merkledb * make root generation a function * preallocate memory for merkle array and consumebytes flag * add <*.code-workspace> to .gitignore and remove it from git commit * move root generation func to merkle package, tx root by items of [txID + result] * rebase & blk marshal/unmarshal & merkleroot to ids.ID * write benches for the merkle package * use crypto/rand, fix var name, report allocs * put the 10k bench back * pass config by parameter * happy clippy * borrow V * add TODO * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "put the 10k bench back" This reverts commit 058d7e7. * Revert "use crypto/rand, fix var name, report allocs" This reverts commit 214005b. * Revert "write benches for the merkle package" This reverts commit 07993bf. * Revert "rebase & blk marshal/unmarshal & merkleroot to ids.ID" This reverts commit 7442836. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "add <*.code-workspace> to .gitignore and remove it from git commit" This reverts commit ce00289. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * merge main! * merge imports --------- Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]>
* add cache * implement cache reads * actually cache reads * implement cache delete and handle borsch errors * use only one cache map * remove flushed bool * root of transactions by stateless merkledb * make root generation a function * preallocate memory for merkle array and consumebytes flag * add <*.code-workspace> to .gitignore and remove it from git commit * move root generation func to merkle package, tx root by items of [txID + result] * rebase & blk marshal/unmarshal & merkleroot to ids.ID * write benches for the merkle package * use crypto/rand, fix var name, report allocs * put the 10k bench back * pass config by parameter * happy clippy * borrow V * add TODO * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "put the 10k bench back" This reverts commit 058d7e7. * Revert "use crypto/rand, fix var name, report allocs" This reverts commit 214005b. * Revert "write benches for the merkle package" This reverts commit 07993bf. * Revert "rebase & blk marshal/unmarshal & merkleroot to ids.ID" This reverts commit 7442836. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "add <*.code-workspace> to .gitignore and remove it from git commit" This reverts commit ce00289. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * merge main! * merge imports --------- Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]>
* support program passing in param * fix inter-program interaction * update fixture * keep using `SmartPtr` for now * remove the need of a new Param type * lint * remove param * fix nits * remove whitespace * stop using SmartPtr * fix tests * Cached state values in the program state (#840) * add cache * implement cache reads * actually cache reads * implement cache delete and handle borsch errors * use only one cache map * remove flushed bool * root of transactions by stateless merkledb * make root generation a function * preallocate memory for merkle array and consumebytes flag * add <*.code-workspace> to .gitignore and remove it from git commit * move root generation func to merkle package, tx root by items of [txID + result] * rebase & blk marshal/unmarshal & merkleroot to ids.ID * write benches for the merkle package * use crypto/rand, fix var name, report allocs * put the 10k bench back * pass config by parameter * happy clippy * borrow V * add TODO * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "put the 10k bench back" This reverts commit 058d7e7. * Revert "use crypto/rand, fix var name, report allocs" This reverts commit 214005b. * Revert "write benches for the merkle package" This reverts commit 07993bf. * Revert "rebase & blk marshal/unmarshal & merkleroot to ids.ID" This reverts commit 7442836. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "add <*.code-workspace> to .gitignore and remove it from git commit" This reverts commit ce00289. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * merge main! * merge imports --------- Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]> * stop using SmartPtr * Cached state values in the program state (#840) * add cache * implement cache reads * actually cache reads * implement cache delete and handle borsch errors * use only one cache map * remove flushed bool * root of transactions by stateless merkledb * make root generation a function * preallocate memory for merkle array and consumebytes flag * add <*.code-workspace> to .gitignore and remove it from git commit * move root generation func to merkle package, tx root by items of [txID + result] * rebase & blk marshal/unmarshal & merkleroot to ids.ID * write benches for the merkle package * use crypto/rand, fix var name, report allocs * put the 10k bench back * pass config by parameter * happy clippy * borrow V * add TODO * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "put the 10k bench back" This reverts commit 058d7e7. * Revert "use crypto/rand, fix var name, report allocs" This reverts commit 214005b. * Revert "write benches for the merkle package" This reverts commit 07993bf. * Revert "rebase & blk marshal/unmarshal & merkleroot to ids.ID" This reverts commit 7442836. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "add <*.code-workspace> to .gitignore and remove it from git commit" This reverts commit ce00289. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * merge main! * merge imports --------- Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]> * [x/programs] safe wrapper around C ffi interface (#869) * macro skeleton * write macro for ffi-safe bindings * avoid panicking todo! Signed-off-by: Franfran <[email protected]> * remove unused arms --------- Signed-off-by: Franfran <[email protected]> * support program passing in param * keep using `SmartPtr` for now * remove the need of a new Param type * lint * stop using SmartPtr * fix tests * back off file * handle put and delete return as a status and remove the `SmartPointer` * cargo fmt * fix test * pass only context ptr as i32 * fix token test * lint * remove ignored lint * update fixtures * move `CPointer` from `program` to `memory` * update fixutes to release * cargo fmt * Consolidate CI (#828) * Add rust-ci local github-action * Abstract install-go action * Centralize Go install parameters * Consolidate CI * Comment out code coverage * Finish centralizing the Go installation for CI * Handle releases * Fix passing secret to release-actions * [ci] Small Tweaks (#875) * nits * remove labels --------- Co-authored-by: Patrick O'Grady <[email protected]> * Update vm-release.yml (#876) Signed-off-by: Richard Pringle <[email protected]> * fix inter-program interaction * keep using `SmartPtr` for now * lint * remove param * fix nits * stop using SmartPtr * fix tests * Cached state values in the program state (#840) * add cache * implement cache reads * actually cache reads * implement cache delete and handle borsch errors * use only one cache map * remove flushed bool * root of transactions by stateless merkledb * make root generation a function * preallocate memory for merkle array and consumebytes flag * add <*.code-workspace> to .gitignore and remove it from git commit * move root generation func to merkle package, tx root by items of [txID + result] * rebase & blk marshal/unmarshal & merkleroot to ids.ID * write benches for the merkle package * use crypto/rand, fix var name, report allocs * put the 10k bench back * pass config by parameter * happy clippy * borrow V * add TODO * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "put the 10k bench back" This reverts commit 058d7e7. * Revert "use crypto/rand, fix var name, report allocs" This reverts commit 214005b. * Revert "write benches for the merkle package" This reverts commit 07993bf. * Revert "rebase & blk marshal/unmarshal & merkleroot to ids.ID" This reverts commit 7442836. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "add <*.code-workspace> to .gitignore and remove it from git commit" This reverts commit ce00289. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * merge main! * merge imports --------- Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]> * stop using SmartPtr * Cached state values in the program state (#840) * add cache * implement cache reads * actually cache reads * implement cache delete and handle borsch errors * use only one cache map * remove flushed bool * root of transactions by stateless merkledb * make root generation a function * preallocate memory for merkle array and consumebytes flag * add <*.code-workspace> to .gitignore and remove it from git commit * move root generation func to merkle package, tx root by items of [txID + result] * rebase & blk marshal/unmarshal & merkleroot to ids.ID * write benches for the merkle package * use crypto/rand, fix var name, report allocs * put the 10k bench back * pass config by parameter * happy clippy * borrow V * add TODO * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "put the 10k bench back" This reverts commit 058d7e7. * Revert "use crypto/rand, fix var name, report allocs" This reverts commit 214005b. * Revert "write benches for the merkle package" This reverts commit 07993bf. * Revert "rebase & blk marshal/unmarshal & merkleroot to ids.ID" This reverts commit 7442836. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "add <*.code-workspace> to .gitignore and remove it from git commit" This reverts commit ce00289. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * merge main! * merge imports --------- Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]> * [x/programs] safe wrapper around C ffi interface (#869) * macro skeleton * write macro for ffi-safe bindings * avoid panicking todo! Signed-off-by: Franfran <[email protected]> * remove unused arms --------- Signed-off-by: Franfran <[email protected]> * keep using `SmartPtr` for now * fix tests * handle put and delete return as a status and remove the `SmartPointer` * cargo fmt * move `CPointer` from `program` to `memory` * cargo fmt --------- Signed-off-by: Franfran <[email protected]> Signed-off-by: Richard Pringle <[email protected]> Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]> Co-authored-by: Patrick O'Grady <[email protected]>
* support program passing in param * fix inter-program interaction * update fixture * keep using `SmartPtr` for now * remove the need of a new Param type * lint * remove param * fix nits * remove whitespace * Cached state values in the program state (#840) * add cache * implement cache reads * actually cache reads * implement cache delete and handle borsch errors * use only one cache map * remove flushed bool * root of transactions by stateless merkledb * make root generation a function * preallocate memory for merkle array and consumebytes flag * add <*.code-workspace> to .gitignore and remove it from git commit * move root generation func to merkle package, tx root by items of [txID + result] * rebase & blk marshal/unmarshal & merkleroot to ids.ID * write benches for the merkle package * use crypto/rand, fix var name, report allocs * put the 10k bench back * pass config by parameter * happy clippy * borrow V * add TODO * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "put the 10k bench back" This reverts commit 058d7e7. * Revert "use crypto/rand, fix var name, report allocs" This reverts commit 214005b. * Revert "write benches for the merkle package" This reverts commit 07993bf. * Revert "rebase & blk marshal/unmarshal & merkleroot to ids.ID" This reverts commit 7442836. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "add <*.code-workspace> to .gitignore and remove it from git commit" This reverts commit ce00289. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * merge main! * merge imports --------- Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]> * [x/programs] safe wrapper around C ffi interface (#869) * macro skeleton * write macro for ffi-safe bindings * avoid panicking todo! Signed-off-by: Franfran <[email protected]> * remove unused arms --------- Signed-off-by: Franfran <[email protected]> --------- Signed-off-by: Franfran <[email protected]> Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]>
…rough plan run (#884) * fix logging * fix nits * set log level to error in the simulator client & write logs to Stderr * [x/programs] Fix program calling another program on the Rust side (#866) * support program passing in param * fix inter-program interaction * update fixture * keep using `SmartPtr` for now * remove the need of a new Param type * lint * remove param * fix nits * remove whitespace * Cached state values in the program state (#840) * add cache * implement cache reads * actually cache reads * implement cache delete and handle borsch errors * use only one cache map * remove flushed bool * root of transactions by stateless merkledb * make root generation a function * preallocate memory for merkle array and consumebytes flag * add <*.code-workspace> to .gitignore and remove it from git commit * move root generation func to merkle package, tx root by items of [txID + result] * rebase & blk marshal/unmarshal & merkleroot to ids.ID * write benches for the merkle package * use crypto/rand, fix var name, report allocs * put the 10k bench back * pass config by parameter * happy clippy * borrow V * add TODO * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "put the 10k bench back" This reverts commit 058d7e7. * Revert "use crypto/rand, fix var name, report allocs" This reverts commit 214005b. * Revert "write benches for the merkle package" This reverts commit 07993bf. * Revert "rebase & blk marshal/unmarshal & merkleroot to ids.ID" This reverts commit 7442836. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "add <*.code-workspace> to .gitignore and remove it from git commit" This reverts commit ce00289. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * Revert "pass config by parameter" This reverts commit 4aec589. * Revert "move root generation func to merkle package, tx root by items of [txID + result]" This reverts commit e551960. * Revert "preallocate memory for merkle array and consumebytes flag" This reverts commit 68e49b6. * Revert "make root generation a function" This reverts commit aa44f97. * merge main! * merge imports --------- Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]> * [x/programs] safe wrapper around C ffi interface (#869) * macro skeleton * write macro for ffi-safe bindings * avoid panicking todo! Signed-off-by: Franfran <[email protected]> * remove unused arms --------- Signed-off-by: Franfran <[email protected]> --------- Signed-off-by: Franfran <[email protected]> Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]> * stdin subcommand * use argparse * iteratively parse subcommand approach * use a real shell parser * nil pointer deref * enable steps reading from stdin * run steps sequentially * sequential plan * reduce changes * read plan from file * fix hanging on stdout result * fix forgotten stdout * kill process to avoid EOF * add failing assertion test and fix unreachable in simulator * apply review suggestions * fix last nits * add license * apply commit suggestions * apply review suggestions * own the data streams instead * stop using double pointers * Make `SimulatorChild` generic * simplify stdin run command interaction * fix nits * remove useless test * address most comments * fix handle getting * pass db to `Run` * Make delete return the old data (#890) * Make delete return the old data * Add comments about enum * Make `#[public]` ffi functions private and unsafe (#893) * Make `#[public]` ffi functions private and unsafe * Fix macro warning through type swap * Encapsulate mutability in the macro * [x/programs] Debug arbitrary variable in programs (#892) * add log * reb * implement linker function * remove debug leftover * remove host file * remove unused explicit type * apply review suggestions * address review * Remove `Log` error from `state::Error` Signed-off-by: Richard Pringle <[email protected]> --------- Signed-off-by: Richard Pringle <[email protected]> Co-authored-by: Richard Pringle <[email protected]> * Make Rust crate naming conventions consistent (#895) * Make all #[public] functions allocate the response (#896) --------- Signed-off-by: Franfran <[email protected]> Signed-off-by: Richard Pringle <[email protected]> Co-authored-by: bianyuanop <[email protected]> Co-authored-by: Richard Pringle <[email protected]>
Closes #722
Add a cache to the program state in order to be able to return values that were previously written / read instead of always getting it from the runtime to benefit from a performance boost.