stlab/libraries

Task List

sean-parent opened this issue · 1 comments

This list may get broken up into separate tasks, and no prioritization is currently provided. The absence of existing issues in this list is not a statement of their importance. I just wanted to collect some thoughts where they won't get lost.

  • (*) The header-only nature of this library with auto-configuration is causing a number of ODR issues in production. Two options to be considered. Explicit configuration only, or auto-configure but only in .cpp files. Maybe with a generated config.h. (#399)
  • (desirable) Move the library to use the Pitchfork Layout or ModernCPPStarter
  • (*) Improve the WASM support. Main executer.
  • (?) Simplify the build and dependency process (could we use only CMake and dump Conan?) - the goal here is not to eliminate the dependencies, just to move towards a simpler process to manage them. ^1
  • (Sean) Integrate my changes regarding the proper use of scalers into the enum_ops library
  • (*) Add support for lazy-continuation attachments to interoperate with Eric Neibler's sender/receivers. Figure out how cancelation works with sender/receivers as part of this.
  • (*) Rework (again) the portable implementation of blocking_get() to track block counts and add threads to the pool as necessary. Look at the (somewhat) portable implementation of GCD in Swift.
  • (hold) Complete the branch allowing oneTBB as a supported backend for the default executors.
  • (desirable) Work on a standard proposal for system-level executors/schedulers. Should include a prioritized default scheduler, a main scheduler (with a main run loop), and a timed scheduler. Based on the existing library but extended to support senders/receivers.
  • (desirable) Support C++20 (and 23?) modules.
  • (desirable) Support C++20 coroutines in channels and rework channel API to better match how C++20 coroutines operate.
  • (*) Rework how a clean shutdown happens, with canceled tasks still in flight. I believe this requires a pre-exit operation and may lead to a proposal for before_exit() support.
  • (*) Get the tests buildable on all supported platforms (including wasm) with as many platforms as possible in CI (#401 #402)
  • (*) Simplify CI - just use github actions
  • (desirable) Use code spaces
  • (desirable) Move to use the Hyde theme (possibly with improvements to the theme). There is an issue regarding grouping overload sets with Hyde which I believe we can resolve with JS (see how the Hyde theme indexes).

^1 My ideal build system would simply require me to list the dependencies for the library and the tests separately with version ranges. Option requirements (i.e. C++14 or greater) would also be listed for the library and specific options for building test targets. Everything else is picked up from the directory structure.

camio commented

Closing since this mostly duplicates the STLab pain points project