rsevents-extra
memflow
rsevents-extra | memflow | |
---|---|---|
4 | 4 | |
15 | 691 | |
- | 3.5% | |
4.1 | 8.4 | |
12 months ago | 17 days ago | |
Rust | Rust | |
GNU General Public License v3.0 or later | 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.
rsevents-extra
-
Implementing truly safe semaphores in rust
A couple of months ago there was a discussion on r/rust about why the standard library doesn't include a semaphore and I mentioned that it's a deceivingly difficult synchronization primitive to safely model in a rusty way. I ended up nerd-sniping myself into trying anyway [0], [1] and decided to share a writeup with some of the issues I ran into trying to come up with a safe and no/low-cost rusty interface for a semaphore.
It ended up being a great example of some of the things I love about the rust ecosystem (though it did also reveal some of the weaknesses of the rust ro^rw borrow semantics) in terms of the thought and care it takes to make an api that's resistant to misuse but still (hopefully) ergonomic.
[0]: https://github.com/neosmart/rsevents-extra
[1]: https://docs.rs/rsevents-extra/latest/rsevents_extra/struct....
-
Implementing truly safe semaphores in rust, and the cost we pay for safety
A couple of months ago, there was a discussion here on r/rust about why there's no semaphore in the rust standard library. I mentioned that it's a deceivingly difficult type to model in a way that would be appropriate for rust's std, but nerd-sniped myself into writing my own (docs.rs link) and thought there might be some interest in the tradeoffs involved and what makes it a difficult synchronization primitive to safely model in a rusty way, and so here we are.
-
Finding the “Second Bug” in Glibc’s Condition Variable
Rust’s synchronization types are built on the semantics of shared objects, with the synchronization object owning the data access to which is channeled exclusively via the synchronization type.
Events and signals aren’t intended to be used off you’re trying to share ownership of memory or data - you should use the std types in that case. They’re for signaling between threads or for building your own synchronization objects atop of. For example, an auto reset event can be used in lieu of a one-bit channel (sort of like Mpmc<()>) and manual reset events can be used to implement the same in broadcast mode, much more efficiently than the channel crates. A common usage is to block until an event is available or a shutdown has been requested - in lieu of manually polling an AtomicBool and aborting if it is true, making your code more responsive (no delay between polls) and more efficient (no repeated polling, no busy waits, etc). They can be used to signal state transitions or readiness, which doesn’t have anything to “own”, for example, the rsevents-extra crate [0] implements a countdown event (event becomes available when n outstanding tasks have finished in parallel threads) or a semaphore (restricting concurrency to a region of code, not limiting access to a variable or object).
[0]: https://github.com/neosmart/rsevents-extra
-
rsevents-extra 0.2.0 released: useful synchronization primitives for multithreaded processing
rsevents-extra v0.2.0 has been published to crates.io and is available under the MIT license on GitHub. The repository README is just a rundown of the crate's components and doesn't contain any code or examples, but the crate documentation has been thoroughly overhauled and contains extensive type- and function-level documentation plus examples.
memflow
- Memflow: Live memory introspection of running systems
- Can cloud providers like aws, gcp, hetzner gain root access to my cloud instances?
-
What are the options of distributing a closed-source library in Rust?
Depending on how big your API surface is (and how trait heavy it is), you may want to look into [shameless_plug] automatically generating it with cglue. That's what we did for memflow. [/shameless_plug] It's goals are not much different from abi_stable (in fact, rather a small subset of it focused on traits), but does create C-compatible code.
-
Indian Man Beats VALORANT's Shady Anticheat...
Now make a c++ program that runs outside the virtual machine utilizing vmread and vmwrite kek https://github.com/memflow/memflow
What are some alternatives?
pevents - Implementation of Win32 events for *nix platforms, built on top of pthreads.
heim - Cross-platform async library for system information fetching 🦀
rsevents - Auto- and manual-reset events for rust
meilisearch-rust - Rust wrapper for the Meilisearch API.
libpthread
rustflake - Thread-safe "twitter" snowflakes.
nsync - nsync is a C library that exports various synchronization primitives, such as mutexes
rs-process-memory - A rust library that allows you to read/write into the memory of other processes
go-plugin - Golang plugin system over RPC.
abi_stable_crates - Rust-to-Rust ffi,ffi-safe equivalents of std types,and creating libraries loaded at startup.
virtual-display-rs - A Windows virtual display driver to add multiple virtual monitors to your PC! For Win10+. Works with VR, obs, streaming software, etc
cglue - Rust ABI safe code generator