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

16.0

[time.syn]

Formatter chrono::sys_time<Duration>

Mark de Wever

Complete

17.0

[time.syn]

Formatter chrono::utc_time<Duration>

A <chrono> implementation

Mark de Wever

[time.syn]

Formatter chrono::tai_time<Duration>

A <chrono> implementation

Mark de Wever

[time.syn]

Formatter chrono::gps_time<Duration>

A <chrono> implementation

Mark de Wever

[time.syn]

Formatter chrono::file_time<Duration>

Mark de Wever

Complete

17.0

[time.syn]

Formatter chrono::local_time<Duration>

Mark de Wever

Complete

17.0

[time.syn]

Formatter chrono::local-time-format-t<Duration>

Nothing To Do

[time.syn]

Formatter chrono::day

Mark de Wever

Complete

16.0

[time.syn]

Formatter chrono::month

Mark de Wever

Complete

16.0

[time.syn]

Formatter chrono::year

Mark de Wever

Complete

16.0

[time.syn]

Formatter chrono::weekday

Mark de Wever

Complete

16.0

[time.syn]

Formatter chrono::weekday_indexed

Mark de Wever

Complete

16.0

[time.syn]

Formatter chrono::weekday_last

Mark de Wever

Complete

16.0

[time.syn]

Formatter chrono::month_day

Mark de Wever

Complete

16.0

[time.syn]

Formatter chrono::month_day_last

Mark de Wever

Complete

16.0

[time.syn]

Formatter chrono::month_weekday

Mark de Wever

Complete

16.0

[time.syn]

Formatter chrono::month_weekday_last

Mark de Wever

Complete

16.0

[time.syn]

Formatter chrono::year_month

Mark de Wever

Complete

16.0

[time.syn]

Formatter chrono::year_month_day

Mark de Wever

Complete

16.0

[time.syn]

Formatter chrono::year_month_day_last

Mark de Wever

Complete

16.0

[time.syn]

Formatter chrono::year_month_weekday

Mark de Wever

Complete

16.0

[time.syn]

Formatter chrono::year_month_weekday_last

Mark de Wever

Complete

16.0

[time.syn]

Formatter chrono::hh_mm_ss<duration<Rep, Period>>

Mark de Wever

Complete

17.0

[time.syn]

Formatter chrono::sys_info

Mark de Wever

Complete

19.0

[time.syn]

Formatter chrono::local_info

Mark de Wever

Complete

19.0

[time.syn]

Formatter chrono::zoned_time<Duration, TimeZonePtr>

Mark de Wever

Complete

19.0

P2693R1

Formatting thread::id and stacktrace

[thread.thread.id]

Formatting thread::id

Mark de Wever

Complete

17.0

[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

14.0

P1652

Printf corner cases in std::format

C++20

Mark de Wever

Complete

14.0

P1892

Extended locale-specific presentation specifiers for std::format

C++20

Mark de Wever

Complete

14.0

P1868

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

C++20

Mark de Wever

Complete

14.0

P2216

std::format improvements

C++20

Mark de Wever

Complete

15.0

P2418

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

C++20

Mark de Wever

Complete

15.0

P2093R14

Formatted output

C++23

Mark de Wever

Complete

18.0

P2286R8

Formatting Ranges

C++23

Mark de Wever

Complete

16.0

P2508R1

Exposing std::basic-format-string

C++23

Mark de Wever

Complete

15.0

P2585R0

Improving default container formatting

C++23

Mark de Wever

Complete

17.0

P2539R4

Should the output of std::print to a terminal be synchronized with the underlying stream?

C++23

Mark de Wever

Complete

18.0

P2713R1

Escaping improvements in std::format

C++23

Mark de Wever

Complete

19.0

P2675R1

format’s width estimation is too approximate and not forward compatible

C++23

Mark de Wever

Complete

17.0

P2572R1

std::format fill character allowances

C++23

Mark de Wever

Complete

17.0

P2693R1

Formatting thread::id and stacktrace

C++23

Mark de Wever

In Progress

P2510R3

Formatting pointers

C++26

Mark de Wever

Complete

17.0

P2757R3

Type-checking format args

C++26

P2637R3

Member visit

C++26

Hristo Hristov

Complete

19.0

P2905R2

Runtime format strings

C++26 DR

Mark de Wever

Complete

18.0

P2918R2

Runtime format strings II

C++26

Mark de Wever

Complete

18.0

P2909R4

Fix formatting of code units as integers (Dude, where’s my char?)

C++26 DR

Mark de Wever

Complete

18.0

P3107R5

Permit an efficient implementation of std::print

C++26 DR

Mark de Wever

In Progress

P3142R0

Printing Blank Lines with println

C++26 DR

Hristo Hristov

Complete

19.0

P2845R8

Formatting of std::filesystem::path

C++26

Mark de Wever

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