1 unstable release
0.1.0 | Sep 30, 2023 |
---|
#8 in #porting
Used in ppl
12KB
297 lines
FF Buffer
Fork of the FF Buffer by Luca Rinaldi. This fork is used in PPL for the channel backend based on FastFlow.
FF Buffer
An ongoing porting of the C++ FastFlow lock-free queue to Rust.
The library is a simple interface that mimics the mpsc queue of standard Rust and internally uses the C++ implementation of the FastFlow unbounded lock-free buffer.
Build
The library relies on the quite new cross language linking time optimization of LLVM (more), thus the building is not straightforward, for now.
The building process requires that the LLVM version of clang
and lld
match the one of rustc
. I currently use clang
version 8.0.0 with rustc
version 1.37.0 that both have the LLVM 8. For the complete compatibility list see the table here.
Dependency
- FastFlow
- clang
- lld
Ubuntu 19 comes with LLVM 8 on the main repository, thus just:
sudo apt install clang-8 lld-8
In other Ubuntu/Debian version use this external repository.
Build guide
Download the FastFlow library in the home directory
cd ~
git clone https://github.com/fastflow/fastflow.git
Download the ff_buffer
repository and cd inside
git clone https://github.com/lucarin91/ff_buffer.git
cd ff_buffer
Than, using cargo it is possible to build the library, run the example or execute the benchmarks.
cargo build --release
cargo run --example simple
cargo bench
License
MIT license
Dependencies
~0–1.3MB
~11K SLoC