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 In Progress  
[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   Unassigned   Not Started  
[format.arg] Class template basic_format_arg - pointers   Unassigned   Not Started  
[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 In Progress  
[format.formatter.spec] Formatter specializations - pointer types   Mark de Wever   Not Started  
[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 In Progress  
[format.string.std] Standard format specifiers - pointer types   Mark de Wever   Not Started  
[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 Review  

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   Partial  
P1652 Printf corner cases in std::format Mark de Wever D103433, D114001 In Progress  
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