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 Status First released version  
P1361 P2372 Formatting chrono          
[time.syn] Formatter chrono::duration<Rep, Period>   Mark de Wever In Progress    
[time.syn] Formatter chrono::sys_time<Duration>   Mark de Wever In Progress    
[time.syn] Formatter chrono::utc_time<Duration> A <chrono> implementation Not assigned      
[time.syn] Formatter chrono::tai_time<Duration> A <chrono> implementation Not assigned      
[time.syn] Formatter chrono::gps_time<Duration> A <chrono> implementation Not assigned      
[time.syn] Formatter chrono::file_time<Duration>   Not assigned      
[time.syn] Formatter chrono::local_time<Duration>   Not assigned      
[time.syn] Formatter chrono::local-time-format-t<Duration> A <chrono> implementation Not assigned      
[time.syn] Formatter chrono::day   Mark de Wever In Progress    
[time.syn] Formatter chrono::month   Mark de Wever In Progress    
[time.syn] Formatter chrono::year   Mark de Wever In Progress    
[time.syn] Formatter chrono::weekday   Mark de Wever In Progress    
[time.syn] Formatter chrono::weekday_indexed   Mark de Wever In Progress    
[time.syn] Formatter chrono::weekday_last   Mark de Wever In Progress    
[time.syn] Formatter chrono::month_day   Mark de Wever In Progress    
[time.syn] Formatter chrono::month_day_last   Mark de Wever In Progress    
[time.syn] Formatter chrono::month_weekday   Mark de Wever In Progress    
[time.syn] Formatter chrono::month_weekday_last   Mark de Wever In Progress    
[time.syn] Formatter chrono::year_month   Mark de Wever In Progress    
[time.syn] Formatter chrono::year_month_day   Mark de Wever In Progress    
[time.syn] Formatter chrono::year_month_day_last   Mark de Wever In Progress    
[time.syn] Formatter chrono::year_month_weekday   Mark de Wever In Progress    
[time.syn] Formatter chrono::year_month_weekday_last   Mark de Wever In Progress    
[time.syn] Formatter chrono::hh_mm_ss<duration<Rep, Period>>   Mark de Wever In Progress    
[time.syn] Formatter chrono::sys_info A <chrono> implementation Not assigned      
[time.syn] Formatter chrono::local_info A <chrono> implementation Not assigned      
[time.syn] Formatter chrono::zoned_time<Duration, TimeZonePtr> A <chrono> implementation Not assigned      
P2286R8 Formatting ranges          
[format.syn] Concept formattable   Mark de Wever In Progress    
[format.string.std] std-format-spec type debug   Mark de Wever In Progress    
[format.range] Formatting for ranges: sequences   Mark de Wever In Progress    
[format.range] Formatting for ranges: associative   Mark de Wever      
[format.range] Formatting for ranges: container adaptors   Mark de Wever      
[format.range] Formatting for ranges: pair and tuple   Mark de Wever In Progress    
[format.range] Formatting for ranges: vector<bool>   Mark de Wever      

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 Standard Assignee Status First released version
P0645 Text Formatting C++20 Mark de Wever Complete Clang 14
P1652 Printf corner cases in std::format C++20 Mark de Wever Complete Clang 14
P1892 Extended locale-specific presentation specifiers for std::format C++20 Mark de Wever Complete Clang 14
P1868 width: clarifying units of width and precision in std::format (Implements the unicode support.) C++20 Mark de Wever Complete Clang 14
P2216 std::format improvements C++20 Mark de Wever Complete Clang 15
P2418 Add support for std::generator-like types to std::format C++20 Mark de Wever Complete Clang 15
P2093R14 Formatted output C++23      
P2286R8 Formatting Ranges C++23 Mark de Wever In Progress  
P2508R1 Exposing std::basic-format-string C++23 Mark de Wever Complete Clang 15
P2585R0 Improving default container formatting C++23      
           
P1361 Integration of chrono with text formatting C++20 Mark de Wever In Progress  
P2372 Fixing locale handling in chrono formatters C++20 Mark de Wever In Progress  
P2419R2 Clarify handling of encodings in localized formatting of chrono types C++23