Skip to content

Merge branch threadshare-tokio-0.2 with master

This is the result of a set of MR which originated in the migration from tokio-0.1.x to tokio-0.2.x. tokio-0.2.x introduced breaking changes and came along with the stablilization of the async & await features in Rust. The migration process followed various beta releases of tokio-0.2.x and was an opportunity to experiment with alternative designs for the threadshare framework.

This MR is the result of the following previous MR:

  • Initial migration to tokio-0.2.0-beta.4, some use of async / await and migration to Rust edition 2018 (nightly, then beta toolchain). !164 (merged)
  • First design rework proposal + migration to tokio-0.2.0-beta.6. This design aimed at factorizing the threadshare components as much as possible in order to simplify the implementation and maintenance of threadshare elements. It was superseded by the Pad{Src,Sink} design (see below). !170 (merged)
  • Pad{Src,Sink}, aka Pad Wrapper design. This design is based on this description and was adopted for merge with master. This version was still based on tokio-0.2.0-beta.6. !204 (merged)
  • tokio-0.2.0 removed functions that the threadshare framework relied on to implement an executor with a throttling strategy. This strategy consists in grouping tasks, timers and I/O handling so as to reduce system calls and context switches, thus reducing CPU load and increasing bandwidth. A branch was created to implement throttling in tokio itself and benefit from tokio's timer implementation instead of relying on our own. The threadshare framework uses this branch until it gets merged in upstream tokio. !211 (merged)

Merge request reports