Show a cover letter.

GET /api/covers/2226690/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2226690,
    "url": "http://patchwork.ozlabs.org/api/covers/2226690/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/gcc/cover/bmm.hhuod45t0o.gcc.gcc-TEST.tkaminsk.48.1.0@forge-stage.sourceware.org/",
    "project": {
        "id": 17,
        "url": "http://patchwork.ozlabs.org/api/projects/17/?format=api",
        "name": "GNU Compiler Collection",
        "link_name": "gcc",
        "list_id": "gcc-patches.gcc.gnu.org",
        "list_email": "gcc-patches@gcc.gnu.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<bmm.hhuod45t0o.gcc.gcc-TEST.tkaminsk.48.1.0@forge-stage.sourceware.org>",
    "list_archive_url": null,
    "date": "2026-04-22T18:21:29",
    "name": "[v1,0/1] libstdc++: Implement debug format for strings and charcters formatters [PR109162]",
    "submitter": {
        "id": 93223,
        "url": "http://patchwork.ozlabs.org/api/people/93223/?format=api",
        "name": "tkaminsk via Sourceware Forge",
        "email": "forge-bot+tkaminsk@forge-stage.sourceware.org"
    },
    "mbox": "http://patchwork.ozlabs.org/project/gcc/cover/bmm.hhuod45t0o.gcc.gcc-TEST.tkaminsk.48.1.0@forge-stage.sourceware.org/mbox/",
    "series": [
        {
            "id": 501074,
            "url": "http://patchwork.ozlabs.org/api/series/501074/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=501074",
            "date": "2026-04-22T18:21:29",
            "name": "libstdc++: Implement debug format for strings and charcters formatters [PR109162]",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/501074/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/covers/2226690/comments/",
    "headers": {
        "Return-Path": "<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "gcc-patches@gcc.gnu.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@legolas.ozlabs.org",
            "gcc-patches@gcc.gnu.org"
        ],
        "Authentication-Results": [
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)",
            "sourceware.org; dmarc=none (p=none dis=none)\n header.from=forge-stage.sourceware.org",
            "sourceware.org;\n spf=pass smtp.mailfrom=forge-stage.sourceware.org",
            "server2.sourceware.org;\n arc=none smtp.remote-ip=38.145.34.39"
        ],
        "Received": [
            "from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g178L6Xphz1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 04:30:58 +1000 (AEST)",
            "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 1CE4A431571B\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 18:30:57 +0000 (GMT)",
            "from forge-stage.sourceware.org (vm08.sourceware.org [38.145.34.39])\n by sourceware.org (Postfix) with ESMTPS id 294B24422C2E\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 18:23:05 +0000 (GMT)",
            "from forge-stage.sourceware.org (localhost [IPv6:::1])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256)\n (No client certificate requested)\n by forge-stage.sourceware.org (Postfix) with ESMTPS id ECF8843453\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 18:23:04 +0000 (UTC)"
        ],
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 sourceware.org 1CE4A431571B",
            "OpenDKIM Filter v2.11.0 sourceware.org 294B24422C2E"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 294B24422C2E",
        "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 294B24422C2E",
        "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776882185; cv=none;\n b=ijxMu2VmWzP257LkmQziEtsH4qTUidJuBOx1AfEAde6GNYCwATS5fCqWsu2hMfpZOecnurEQR+jEi6k7gfgsS5bn0pOwV2Scd0Tmm8cl+LcPBnngYojThVrmbSUb0GH+Xoa+gST52keycWGbFvjmyiMjjczp3fFYK4HjZHo6RGQ=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776882185; c=relaxed/simple;\n bh=8vvkI2u16nS7DFU5Gy9p4eVxQ0wPmFDOKKVehK0omBI=;\n h=From:Date:Subject:MIME-Version:To:Message-ID;\n b=unZONIxWYnVyuuZVIydrjib09PhnowaLJeCjOXEKMMJ0dZvbKeOGfvNj5jfRBTkUXAOatkMk6OwCDrFPvVnyapnA+NktXWCpC4OUIgfNY+KpzoIhrYh/C/4O2jS5WMXKvdg0D2LkhoKhBbzlih+xG4O8/MHocsvrKjnihipWHWY=",
        "ARC-Authentication-Results": "i=1; server2.sourceware.org",
        "From": "tkaminsk via Sourceware Forge\n <forge-bot+tkaminsk@forge-stage.sourceware.org>",
        "Date": "Wed, 22 Apr 2026 18:21:29 +0000",
        "Subject": "[PATCH v1 0/1] libstdc++: Implement debug format for strings and\n charcters formatters [PR109162]",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "To": "gcc-patches mailing list <gcc-patches@gcc.gnu.org>",
        "Message-ID": "\n <bmm.hhuod45t0o.gcc.gcc-TEST.tkaminsk.48.1.0@forge-stage.sourceware.org>",
        "X-Mailer": "batrachomyomachia",
        "X-Pull-Request-Organization": "gcc",
        "X-Pull-Request-Repository": "gcc-TEST",
        "X-Pull-Request": "https://forge.sourceware.org/gcc/gcc-TEST/pulls/48",
        "X-BeenThere": "gcc-patches@gcc.gnu.org",
        "X-Mailman-Version": "2.1.30",
        "Precedence": "list",
        "List-Id": "Gcc-patches mailing list <gcc-patches.gcc.gnu.org>",
        "List-Unsubscribe": "<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>",
        "List-Archive": "<https://gcc.gnu.org/pipermail/gcc-patches/>",
        "List-Post": "<mailto:gcc-patches@gcc.gnu.org>",
        "List-Help": "<mailto:gcc-patches-request@gcc.gnu.org?subject=help>",
        "List-Subscribe": "<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>",
        "Reply-To": "gcc-patches mailing list <gcc-patches@gcc.gnu.org>,\n tkaminsk@gcc.gnu.org",
        "Errors-To": "gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"
    },
    "content": "Hi gcc-patches mailing list,\ntkaminsk via Sourceware Forge <forge-bot+tkaminsk@forge-stage.sourceware.org> has requested that the following forgejo pull request\nbe published on the mailing list.\n\nCreated on: 2025-04-03 07:25:24+00:00\nLatest update: 2025-08-14 09:28:44+00:00\nChanges: 0 changed files, 0 additions, 0 deletions\nHead revision: tkaminsk/gcc ref refs/pull/48/head commit f326a82fe007b4ae688d50ac17be5d33737aad6d\nBase revision: gcc/gcc-TEST ref master commit 84d668b0ca67c5d3fe6430f101d61e60aa796a81 r15-9198-g84d668b0ca67c5\nMerge base: 84d668b0ca67c5d3fe6430f101d61e60aa796a81\nFull diff url: https://forge.sourceware.org/gcc/gcc-TEST/pulls/48.diff\nDiscussion:  https://forge.sourceware.org/gcc/gcc-TEST/pulls/48\nRequested Reviewers:\n\nThis patch implements part P2286R8 that specified debug (escaped)\nformat for the stings and characters sequecenes. This include both\nhandling of the '?' formatt specifier and set_debug_format member.\n\nTo indicate partial support we define __glibcxx_format_ranges macro\nvalue 1, without defining __cpp_lib_format_ranges.\n\nWe provide two separate escaping routines depending on the literal\nencoding for the corresponding character types. If the charcter\nencoding we follow the specification for the standard\n(__format::__write_escaped_unicode).\nFor other encodings, we escape only characters in range [0x00, 0x80),\ninterpreting them as ACII values: [0x00, 0x20), 0x7f and  '\\t', '\\r',\n'\\n', '\\\\', '\"', '\\'' are escaped. We assume every character outside\nthis range is printable (__format::_write_escpaed_ascii).\nIn particular we do not yet implement special handling of shift\nsequences.\n\nFor Unicode escaping a new __escape_edges table is introduced,\nthat encodes information if character belongs tp General_Category\nthat is escaped by the standard (Control or Other). This table\nis generated from DerivedGeneralCategory.txt provided by Unicode.\nOnly boolean flag is preserved to reduce the number of entires.\nThe additional rules for escaping are handled by __should_escape_unicode.\n\nWhen width of precision is specified, we emit escaped string to the temporary\nbuffer and format the resulting string according ot the format spec.\nFor characters fixed size stack buffer, for which a new _Fixedbuf_sink is\nintroduced. For strings, we user _Str_sink and to avoid allocations,\nwe compute the estimated size of (possibly truncated) input, and if it is\nlarger than width field we print directly.\n\nFinally this patch corrects handling of UTF-32LE and UTF32-BE\nin __unicode::__literal_encoding_is_unicode<_CharT>, and now they\nare properly recognized as unicode.\n\ncontrib/ChangeLog:\n\n\t* unicode/README:\n\tMentioned `DerivedGeneralCategory.txt`\n\t* unicode/gen_libstdcxx_unicode_data.py:\n\tGeneration __escape_edges table from DerivedGeneralCategory.txt.\n\tUpdate file name in comments.\n\t* unicode/DerivedGeneralCategory.txt:\n\tCopy of file distrubuted by Unicode Consortium\n\tftp://ftp.unicode.org/Public/UNIDATA/extracted/DerivedGeneralCategory.txt.\n\nlibstdc++-v3/ChangeLog:\n\n\t* include/bits/chrono_io.h (_GLIBCXX_WIDEN_, _GLIBCXX_WIDEN)\n\t(__detail::_Widen): Moved to std/format file.\n\t* include/bits/unicode-data.h:\n\tRegnerate using contrib/unicode/gen_libstdcxx_unicode_data.py.\n\t* include/bits/unicode.h (__unicode::_Utf_iterator::_M_units)\n\t(__unicode::__should_escape_category): Define.\n\t(__unicode::__literal_encoding_is_unicode<_CharT>):\n\tCorrected handing for UTF-16 and UTF-32 with \"LE\" or \"BE\" suffix.\n\t* include/bits/version.def:\n\tDefine __glibcxx_format_ranges without corresponding std name.\n\t* include/bits/version.h: Regenerate.\n\t* include/std/format (_GLIBCXX_WIDEN_, _GLIBCXX_WIDEN):\n\tMoved from include/bits/chrono_io.h.\n\t(__format::_Term_char, __format::_Escapes, __format::_Separators)\n\t(__format::__should_escape_ascii, __format::__should_escape_unicode)\n\t(__format::__write_escape_seq, __format::__write_escaped_char)\n\t(__format::__write_escaped_acii, __format::__write_escaped_unicode)\n\t(__format::__write_escaped): Define.\n\t(__formatter_str::_S_format): Extracted truncation of character\n\tsequences.\n\t(__formatter_str::format): Handle _Pres_esc.\n\t(__formatter_int::_M_do_parse): Parse '?' if__glibcxx_format_ranges\n\tif set.\n\t(__formatter_int::_M_format_character_escaped): Define.\n\t(formatter<_CharT, _CharT>::format, formatter<char, wchar_t>::format):\n\tHandle _Pres_esc.\n\t(__formatter_str::set_debug_format, formatter<...>::set_debug_format)\n\tGuard with __glibcxx_format_ranges.\n\t(__format::_Fixedbuf_sink): Define.\n\t* testsuite/std/format/debug.cc: New test.\n\t* testsuite/std/format/parse_ctx.cc (escaped_strings_supported):\n\tDefine to true if __glibcxx_format_ranges is defined.\n\t* testsuite/std/format/string.cc (escaped_strings_supported):\n\tDefine to true if __glibcxx_format_ranges is defined.\n\n\nChanged files:\n- A: contrib/unicode/DerivedGeneralCategory.txt\n- A: libstdc++-v3/testsuite/std/format/debug.cc\n- M: contrib/unicode/README\n- M: contrib/unicode/gen_libstdcxx_unicode_data.py\n- M: libstdc++-v3/include/bits/chrono_io.h\n- M: libstdc++-v3/include/bits/unicode-data.h\n- M: libstdc++-v3/include/bits/unicode.h\n- M: libstdc++-v3/include/std/format\n- M: libstdc++-v3/testsuite/23_containers/vector/bool/format.cc\n- M: libstdc++-v3/testsuite/std/format/parse_ctx.cc\n- M: libstdc++-v3/testsuite/std/format/string.cc\n\n\nTomasz Kamiński (1):\n  libstdc++: Implement debug format for strings and charcters formatters\n    [PR109162]\n\n contrib/unicode/DerivedGeneralCategory.txt    | 4323 +++++++++++++++++\n contrib/unicode/README                        |    3 +-\n contrib/unicode/gen_libstdcxx_unicode_data.py |   46 +-\n libstdc++-v3/include/bits/chrono_io.h         |   16 +-\n libstdc++-v3/include/bits/unicode-data.h      |  260 +-\n libstdc++-v3/include/bits/unicode.h           |   17 +\n libstdc++-v3/include/std/format               |  482 +-\n .../23_containers/vector/bool/format.cc       |    3 +-\n libstdc++-v3/testsuite/std/format/debug.cc    |  422 ++\n .../testsuite/std/format/parse_ctx.cc         |    2 +-\n libstdc++-v3/testsuite/std/format/string.cc   |    2 +-\n 11 files changed, 5489 insertions(+), 87 deletions(-)\n create mode 100644 contrib/unicode/DerivedGeneralCategory.txt\n create mode 100644 libstdc++-v3/testsuite/std/format/debug.cc"
}