Closed
Description
The relationship between
std::sys_common
,std::sys
and the rest ofstd
is complex, with dependencies going in all directions:std
depending onsys_common
,sys_common
depending onsys
, andsys
depending onsys_common
andstd
. Ideallysys_common
would be split into two and the dependencies between them all would form a dag.
There is a lot of interdependence between std
, sys
and sys_common
, this is because sys_common
contains several types of code:
- abstractions over the different platform implementations in std::sys (for example
std::sys_common::mutex
) - code shared between platforms (for example
std::sys_common::alloc
) - code that is not platform-dependent (for example
std::sys_common::poison
)
In order to reduce the interdependence, sys_common
will be restructured:
- A new module
sys::common
is introduced; code that is shared by all platforms will be moved fromsys_common
to this new module. - Code that is shared between some but not all platforms will be moved to
sys
and shared using#[path]
instead. - Code that is not platform-dependent will be moved out of
sys_common
to the appropriate place instd
.
Ideally the end-result of this is sys_common
again only containing platform-independent abstractions on top of sys
.
Metadata
Metadata
Assignees
Labels
Area: Internal cleanup workCategory: PRs that clean code up or issues documenting cleanup.Category: An issue tracking the progress of sth. like the implementation of an RFCCall for participation: Help is requested to fix this issue.Relevant to the library team, which will review and decide on the PR/issue.