libc++ Format Status

Overview

This document contains the status of the 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 Complete Clang 16  
[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 Complete Clang 16  
[time.syn] Formatter chrono::month   Mark de Wever Complete Clang 16  
[time.syn] Formatter chrono::year   Mark de Wever Complete Clang 16  
[time.syn] Formatter chrono::weekday   Mark de Wever Complete Clang 16  
[time.syn] Formatter chrono::weekday_indexed   Mark de Wever Complete Clang 16  
[time.syn] Formatter chrono::weekday_last   Mark de Wever Complete Clang 16  
[time.syn] Formatter chrono::month_day   Mark de Wever Complete Clang 16  
[time.syn] Formatter chrono::month_day_last   Mark de Wever Complete Clang 16  
[time.syn] Formatter chrono::month_weekday   Mark de Wever Complete Clang 16  
[time.syn] Formatter chrono::month_weekday_last   Mark de Wever Complete Clang 16  
[time.syn] Formatter chrono::year_month   Mark de Wever Complete Clang 16  
[time.syn] Formatter chrono::year_month_day   Mark de Wever Complete Clang 16  
[time.syn] Formatter chrono::year_month_day_last   Mark de Wever Complete Clang 16  
[time.syn] Formatter chrono::year_month_weekday   Mark de Wever Complete Clang 16  
[time.syn] Formatter chrono::year_month_weekday_last   Mark de Wever Complete Clang 16  
[time.syn] Formatter chrono::hh_mm_ss<duration<Rep, Period>>   Mark de Wever Complete Clang 17  
[time.syn] Formatter chrono::sys_info A <chrono> implementation Mark de Wever      
[time.syn] Formatter chrono::local_info A <chrono> implementation Mark de Wever      
[time.syn] Formatter chrono::zoned_time<Duration, TimeZonePtr> A <chrono> implementation Mark de Wever      
P2286R8 Formatting ranges          
[format.syn] Concept formattable   Mark de Wever Complete Clang 16  
[format.string.std] std-format-spec type debug   Mark de Wever Complete Clang 16  
[format.range] Formatting for ranges: sequences   Mark de Wever Complete Clang 16  
[format.range.fmtmap] Formatting for ranges: map   Mark de Wever Complete Clang 16  
[format.range.fmtset] Formatting for ranges: set   Mark de Wever Complete Clang 16  
[format.range] Formatting for ranges: container adaptors   Mark de Wever Complete Clang 16  
[format.range] Formatting for ranges: pair and tuple   Mark de Wever Complete Clang 16  
[format.range] Formatting for ranges: vector<bool>   Mark de Wever Complete Clang 16  
P2585R0 Improving default container formatting          
[format.range.fmtstr] Formatting for ranges: strings   Mark de Wever In Progress    
[format.range.fmtstr] Formatting for ranges: strings   Mark de Wever In Progress    
P2693R1 Formatting thread::id and stacktrace          
[thread.thread.id] Formatting thread::id   Mark de Wever In Progress    
[stacktrace.format] Formatting stacktrace A <stacktrace> implementation 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 Complete Clang 16
P2508R1 Exposing std::basic-format-string C++23 Mark de Wever Complete Clang 15
P2585R0 Improving default container formatting C++23 Mark de Wever In Progress  
P2539R4 Should the output of std::print to a terminal be synchronized with the underlying stream? C++23      
P2713R1 Escaping improvements in std::format C++23 Mark de Wever    
P2675R1 format’s width estimation is too approximate and not forward compatible C++23 Mark de Wever    
P2572R1 std::format fill character allowances C++23 Mark de Wever In Progress  
P2693R1 Formatting thread::id and stacktrace C++23 Mark de Wever In Progress  
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