Rust Synchronization

Open-source Rust projects categorized as Synchronization Edit details

Top 7 Rust Synchronization Projects

  • crossbeam

    Tools for concurrent programming in Rust

    Project mention: Rust multithreaded vector. | | 2022-08-06

    Appending to a data structure across multiple threads is hard, because there's contention for the point where the appending happens. There are good ways to solve this, of course, depending on what exactly you're trying to accomplish. Most of those things end up looking like thread-safe queues, and that's what MPSC channels and the like are built on. Crossbeam has several different high-performance solutions to this class of problem.

  • docker-compose-wait

    A simple script to wait for other docker images to be started while using docker-compose

    Project mention: Any easy way to wait for dependend on containers to actually be ready in docker-compose? | | 2022-04-22
  • Scout APM

    Less time debugging, more time building. Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.

  • bus

    Efficient, lock-free, bounded Rust broadcast channel (by jonhoo)

  • BoilR

    Synchronize games from other platforms into your Steam library (by PhilipK)

    Project mention: Can I just plop on a DRM free version of a game into the steamapps folder and have it automatically be recognized? | | 2022-08-11
  • bita

    Differential file synchronization over http

    Project mention: rsync, article 3: How does rsync work? | | 2022-07-02

    Nice write up. rsync is great as an application but I found it more cumbersome to use when wanting to integrate it into my own application. There's librsync but the documentation is threadbare and it requires an rsync server to run. I found bita/bitar ( which is inspired by rsync & family. It works more like zsync which leverages HTTP Range requests so it doesn't require anything running on the server to get chunks. Works like a treat using s3/b2 storage to serve files and get incremental differential updates on the client side!

  • triple-buffer

    Implementation of triple buffering in Rust

    Project mention: Rust Is Hard, Or: The Misery of Mainstream Programming | | 2022-06-02

    Rust marks cross-thread shared memory as immutable in the general case, and allows you to define your own shared mutability constructs out of primitives like mutexes, atomics, and UnsafeCell. As a result you don't get rope to hang yourself with by default, but atomic orderings are more than enough rope to devise incorrect synchronizations (especially with more than 2 threads or memory locations). To quote an earlier post of mine:

    In terms of shared-memory threading concurrency, Send and Sync, and the distinction between &T and &Mutex and &mut T, were a revelation when I first learned them. It was a principled approach to shared-memory threading, with Send/Sync banning nearly all of the confusing and buggy entangled-state codebases I've seen and continue to see in C++ (much to my frustration and exasperation), and &Mutex providing a cleaner alternative design (there's an excellent article on its design at

    My favorite simple concurrent data structure is It beautifully demonstrates how you can achieve principled shared mutability, by defining two "handle" types (living on different threads), each carrying thread-local state (not TLS) and a pointer to shared memory, and only allowing each handle to access shared memory in a particular way. This statically prevents one thread from calling a method intended to run on another thread, or accessing fields local to another thread (since the methods and fields now live on the other handle). It also demonstrates the complexity of reasoning about lock-free algorithms (

    I find that writing C++ code the Rust way eliminates data races practically as effectively as writing Rust code upfront, but C++ makes the Rust way of thread-safe code extra work (no Mutex unless you make one yourself, and you have to simulate &(T: Sync) yourself using T const* coupled with mutable atomic/mutex fields), whereas the happy path of threaded C++ (raw non-Arc pointers to shared mutable memory) leads to pervasive data races caused by missing or incorrect mutex locking or atomic synchronization.

  • etebase-py

    A Python client library for Etebase

    Project mention: error on linux: No module named 'etesync_dav' | | 2021-12-19

    Basically, you need to reinstall the DAV using yay (it will remember your configuration, no worries). However, the pypi etebase package still needs to be updated as well. I notified Tasn and created an issue, so it should be resolved swiftly.

  • SonarLint

    Clean code begins in your IDE with SonarLint. Up your coding game and discover issues early. SonarLint is a free plugin that helps you find & fix bugs and security issues from the moment you start writing code. Install from your favorite IDE marketplace today.

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2022-08-11.

Rust Synchronization related posts


What are some of the best open-source Synchronization projects in Rust? This list will help you:

Project Stars
1 crossbeam 5,111
2 docker-compose-wait 1,328
3 bus 542
4 BoilR 470
5 bita 194
6 triple-buffer 66
7 etebase-py 58
Find remote jobs at our new job board There are 3 new remote jobs listed recently.
Are you hiring? Post a new remote job listing for free.
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives