libc++ Format Status

Overview

This document contains the status of the C++20 Format library in libc++. It is used to track both the status of the sub-projects of the Format library and who is assigned to these sub-projects. This is imperative to effective implementation so that work is not duplicated and implementors are not blocked by each other.

If you are interested in contributing to the libc++ Format library, please send a message to the #libcxx channel in the LLVM discord. Please do not start working on any of the assigned items below.

Sub-Projects in the Format library

Section

Description

Dependencies

Assignee

Patch

Status

First released version

[charconv.to.chars]

Fix integral conformance

Mark de Wever

D100722

Complete

Clang 13

[charconv.to.chars]

Add floating-point conversion

D100722

Mark de Wever (Code provided by Stephan T. Lavavej of Microsoft)

D70631

Complete

Clang 14

[format.error]

Class format_error

Mark de Wever

D92214

Complete

Clang 13

[format.parse.ctx]

Class template basic_format_parse_context

Mark de Wever

D93166

Complete

Clang 13

[format.context]

Class template basic_format_context

Mark de Wever

D103357

Complete

Clang 14

[format.args]

Class template basic_format_args

Mark de Wever

D103357

Complete

Clang 14

[format.arg]

Class template basic_format_arg

Mark de Wever

D103357

Complete

Clang 14

[format.arg]

Class template basic_format_arg - handle

Mark de Wever

Complete

Clang 14

[format.arg]

Class template basic_format_arg - pointers

Mark de Wever

Complete

Clang 14

[format.arg.store]

Class template format-arg-store

Mark de Wever

D103357

Complete

Clang 14

[format.formatter.spec]

Formatter specializations - character types

Mark de Wever

D96664 D103466

Complete

Clang 14

[format.formatter.spec]

Formatter specializations - string types

Mark de Wever

D96664 D103425

Complete

Clang 14

[format.formatter.spec]

Formatter specializations - boolean type

Mark de Wever

D96664 D103670

Complete

Clang 14

[format.formatter.spec]

Formatter specializations - integral types

Mark de Wever

D96664 D103433

Complete

Clang 14

[format.formatter.spec]

Formatter specializations - floating-point types

D70631

Mark de Wever

D114001

Complete

Clang 14

[format.formatter.spec]

Formatter specializations - pointer types

Mark de Wever

Complete

Clang 14

[format.string.std]

Standard format specifiers - character types

Mark de Wever

D103368

Complete

Clang 14

[format.string.std]

Standard format specifiers - string types

D103379

Mark de Wever

D103368 D103413

Complete

Clang 14

[format.string.std]

Standard format specifiers - boolean type

D103379

Mark de Wever

D103368 D103413

Complete

Clang 14

[format.string.std]

Standard format specifiers - integral types

Mark de Wever

D103368

Complete

Clang 14

[format.string.std]

Standard format specifiers - floating-point types

Mark de Wever

D114001

Complete

Clang 14

[format.string.std]

Standard format specifiers - pointer types

Mark de Wever

Complete

Clang 14

[format.functions]

Format functions - format(string_view fmt, const Args&… args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - format(wstring_view fmt, const Args&… args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - format(const locale& loc, string_view fmt, const Args&… args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - format(const locale& loc, wstring_view fmt, const Args&… args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - vformat(string_view fmt, format_args args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - vformat(wstring_view fmt, wformat_args args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - vformat(const locale& loc, string_view fmt, format_args args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - vformat(const locale& loc, wstring_view fmt, wformat_args args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - format_to(Out out, wstring_view fmt, const Args&… args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - format_to(Out out, const locale& loc, wstring_view fmt, const Args&… args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - vformat_to(Out out, string_view fmt, format_args_t<type_identity_t<Out>, char> args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - vformat_to(Out out, wstring_view fmt, format_args_t<type_identity_t<Out>, char> args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - vformat_to(Out out, const locale& loc, string_view fmt, format_args_t<type_identity_t<Out>, char> args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - vformat_to(Out out, const locale& loc, wstring_view fmt,format_args_t<type_identity_t<Out>, wchar_t> args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - format_to_n(Out out, iter_difference_t<Out> n, string_view fmt, const Args&… args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - format_to_n(Out out, iter_difference_t<Out> n, wstring_view fmt, const Args&… args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - format_to_n_result<Out> format_to_n(Out out, iter_difference_t<Out> n, const locale& loc, string_view fmt, const Args&… args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - format_to_n_result<Out> format_to_n(Out out, iter_difference_t<Out> n, const locale& loc, wstring_view fmt, const Args&… args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - formatted_size(string_view fmt, const Args&… args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - formatted_size(wstring_view fmt, const Args&… args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - formatted_size(const locale& loc, string_view fmt, const Args&… args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - formatted_size(const locale& loc, wstring_view fmt, const Args&… args);

Mark de Wever

D96664

Complete

Clang 14

[format.functions]

Format functions - Improve performance format_to_n

Mark de Wever

D110499

Review

[format.functions]

Format functions - Improve performance formatted size

Mark de Wever

D110500

Review

[format.functions]

P2216 - Compile-time checks

Mark de Wever

In Progress

[format.functions]

P2216 - Binary size

Mark de Wever

D110494

Complete

Clang 14

Misc. Items and TODOs

(Please mark all Format-related TODO comments with the string TODO FMT, so we can find them easily.)

Paper and Issue Status

Number

Name

Assignee

Patch

Status

First released version

P0645

Text Formatting

Mark de Wever

Complete

Clang 14

P1652

Printf corner cases in std::format

Mark de Wever

D103433, D114001

Complete

Clang 14

P1892

Extended locale-specific presentation specifiers for std::format

Mark de Wever

D103368

Complete

Clang 14

P1868

width: clarifying units of width and precision in std::format (Implements the unicode support.)

Mark de Wever

D103413 D103425 D103670

Complete

Clang 14

P2216

std::format improvements

Mark de Wever

In Progress

P2418

Add support for std::generator-like types to std::format

Mark de Wever

In Progress

P1361

Integration of chrono with text formatting

Not Started

P2372

Fixing locale handling in chrono formatters

Not Started