Skip to content

P0829 and freestanding implementations #117

Open
@Morwenn

Description

@Morwenn

P0829 proposes to update the requirements for freestanding implmentations of the C++ standard, with notably a plea to make most of the header <algorithm> available to those implementations. Since cpp-sort mostly provides algorithms, it would be interesting to make most of it available for freestanding implementations too once the committee agrees in what should be available. We could introduce a simple CPPSORT_FREESTANDING switch to require that cpp-sort builds with freestanding implementations.

A few things wouldn't be available anyway:

  • A few algorithms such a merge_sort allocate dynamic memory: those should either be excluded or be made to fallback to non-allocating versions, which might still be desirable. It would be a good reason to replace the deprecated std::get_temporary_buffer by a safer custom solution that would simply return nullptr in freestanding mode.
  • Algorithms specifically dealing with floating point should be excluded because freestanding implementations wouldn't be required to support floating point types.
  • The evolutions proposed in Parallel sorting algorithms #22 wouldn't be available since they would rely on threads and standard execution policies.
  • A few math functions might have to be replaced by hand since most of them can set the thread_local variable std::errno.

On the other hand, we could introduce more compile time switches through macros to have more granularity: no floating point numbers, no memory allocation, no threads, etc...

I will keep track of the progress of P0829 and probably start working when the committee starts to get close to a new specification for freestanding implementations.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions