im-rs
syncbuf
im-rs | syncbuf | |
---|---|---|
6 | 3 | |
1,459 | 5 | |
- | - | |
0.0 | 0.0 | |
over 1 year ago | about 1 month ago | |
Rust | Rust | |
Mozilla Public License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
im-rs
-
Steel – An embedded scheme interpreter in Rust
They're using hash array mapped tries. I don't have my own personal implementation, I have been using https://github.com/bodil/im-rs until I can get around to making my own implementation (not that I really need to, but it would be a fun exercise).
Functions generate a hash based on a unique id generated for the function, plus the hash of any captured variables, and a hash of the pointer address to the function). That is off the top of my head though so I could be missing some details.
Hashing maps is tricky! With a sufficiently deep hash map you can run into problems since that invokes an equality check as well - at least how I handle it, is that you just attempt to naively hash the keys and values of the hash map, to create a hash code for that object. If the equality check ends up with a sufficiently large depth, eq returns false so we don't stack overflow.
-
for_ch: The hydraulic machine for your code
Too late my friend ;) https://github.com/bodil/im-rs
- (Risp (In (Rust) (Lisp)))
-
Noteworthy concurrent data structures?
There’s also im.
-
Providing a thread safe and non thread safe version of a library.
rc/Cargo.toml specifies paths such as ../src/lib.rs and ../build.rs to point at the same source files
-
High performance functional data structures in Rust
If you indeed do care about access to historical versions of data, take a look at the I’m crate: https://github.com/bodil/im-rs
syncbuf
-
Is this code sound for concurrent use?
I was trying to do something similar a little while back and ended up writing the Synclist type in Syncbuf. This has the tradeoff that the elements are spread across non-contiguous chunks, so it can't be sliced. But it has the advantage of being able to contain any type, memory usage is monotonic, and "reallocation" is much cheaper since nothing is copied.
-
Noteworthy concurrent data structures?
Since you asked, my little project in this area has been Syncbuf: https://github.com/bplevin36/syncbuf. It has 2 lock-free concurrent buffer types that are low-overhead by being append-only.
-
What's everyone working on this week (7/2021)?
I was writing a toy virtual machine when I realized that in order to make it multi-threaded, it would be very helpful to maintain a global symbol table that allowed adding new symbols without invalidating references to old ones. No such thing appeared to exist yet, so I wrote it: https://github.com/bplevin36/syncbuf
What are some alternatives?
dashmap - Blazing fast concurrent HashMap for Rust.
math_lang - in progress pretty printing calculator language [Moved to: https://github.com/mkhan45/CalcuLaTeX]
concurrent - A crate with some concurrent data structures.
panamax - Mirror rustup and crates.io repositories, for offline Rust and cargo usage. [Moved to: https://github.com/panamax-rs/panamax]
im-lists - Immutable unrolled linked lists
cacao - Rust bindings for AppKit (macOS) and UIKit (iOS/tvOS). Experimental, but working!
glsp - The GameLisp scripting language
magic-wormhole.rs - Rust implementation of Magic Wormhole, with new features and enhancements
crossbeam - Tools for concurrent programming in Rust
steel - An embedded scheme interpreter in Rust
manymouser - A RIIRed version of manymouse because I can't C