go-evmap
evmap
go-evmap | evmap | |
---|---|---|
1 | 5 | |
9 | 438 | |
- | - | |
0.0 | 1.8 | |
over 1 year ago | almost 3 years ago | |
Go | Rust | |
- | Apache License 2.0 |
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.
go-evmap
evmap
-
Samsara, a safe Rust concurrent cycle collector
The problem is, every single one of these half-dozen crates has at least one known major issue (including UAF), exactly like C++ implementations (which isn't surprising since it's the kind of things where the ownership isn't clear and then the borrow checker can't help us).
-
Rwlock with "snapshot" read
You could also try https://github.com/jonhoo/evmap
-
Jon Gjengset: Rust at speed – building a fast, concurrent database (2018)
In this video, one of the people that worked on creating Noria talks a bit about the implementation of it. Very interesting talk, highly recommend watching it.
He talks, among other things, about lockless eventually consistent concurrent access to data shared between multiple threads. Jon has a crate that he made for this called evmap, for Noria and anyone else to use. GitHub repo https://github.com/jonhoo/evmap and crate https://crates.io/crates/evmap
Jon has a bunch of other interesting videos about Rust on his channel as well. https://youtube.com/c/JonGjengset
-
Call for Help - Open Source Datom/EAV/Fact database in Rust.
He talks, among other things, about lockless eventually consistent concurrent access to data shared between multiple threads. Jon has a crate that he made for this called evmap, for Noria to use. GitHub repo https://github.com/jonhoo/evmap and crate https://crates.io/crates/evmap
-
go-evmap - A generic hash map for lock-free reads (Feedback requested)
The data structure is actually very fascinating, it is optimized for high-read, low-write workloads where readers never have to coordinate with writers. This lack of coordination comes at a cost, "The trade-off exposed by this module is one of eventual consistency: writes are not visible to readers except following explicit synchronization. Specifically, readers only see the operations that preceded the last call to `Refresh` by a writer. This lets writers decide how stale they are willing to let reads get. They can refresh the map after every write to emulate a regular map, or they can refresh only occasionally to reduce the synchronization overhead at the cost of stale reads." (evmap readme)
What are some alternatives?
RxGo - Reactive Extensions for the Go language.
plrust - A Rust procedural language handler for PostgreSQL
haxmap - Fastest and most memory efficient golang concurrent hashmap
lespas - Les Pas, photo album app for Nextcloud user
hashmap - A Golang lock-free thread-safe HashMap optimized for fastest read access.
arc-swap - Support atomic operations on Arc itself
golang-set - A simple, battle-tested and generic set type for the Go language. Trusted by Docker, 1Password, Ethereum and Hashicorp.
leftright-map-java - A (hopefully) Fast, (hopefully) Thread safe map inspired by evmap
algorithms - CLRS study. Codes are written with golang.
Simple-File-Manager - Easy app for managing your files without ads, respecting your privacy & security
einkbro - A small, fast web browser based on Android WebView. It's tailored for E-Ink devices but also works great on normal android devices.