Propose the bulk helpers, and a voice pass on the paper - #56
Open
steve-downey wants to merge 3 commits into
Open
Propose the bulk helpers, and a voice pass on the paper#56steve-downey wants to merge 3 commits into
steve-downey wants to merge 3 commits into
Conversation
4269f434 Improve paper layout make rules and tests 7a81154f Split Makefile fragments by project layout git-subtree-dir: papers/wg21 git-subtree-split: 4269f434ed688170d404be3324235768e82d5e77
decode_to / encode_to / decode_into / encode_into already existed in
detail/bulk_transcode.hpp, and detail/ is only a directory convention here:
the umbrella header includes it and the module exports it, the same as
null_term and transcode_string. So they were public API while the paper, the
README, and the header comment all said they were not proposed. The tests had
been rewritten to exercise the pipelines instead ("replaces decode_to(codec,
range)"), leaving all eight helpers with no coverage.
Settle it the other way: propose them. Converting a buffer to a container is
the operation users come for, and withholding the name only moves the question
to every code review and every committee discussion of the paper. Each helper
is a one-line forward to the pipeline it names, and the paper specifies it as
that pipeline.
- paper: the section now runs the concession rather than the assertion --
the principled reason not to propose them, then why we do anyway. Overview,
examples, comparison table and footnote 2 follow.
- README: drop "no dedicated bulk API is needed"; name the helpers in the
four bulk rows.
- constexpr on the WHATWG decode_to/encode_to overloads, which lacked it
while the pluggable overloads had it.
- 18 tests covering all eight helpers, four of them consteval. Each
container-returning case is checked against a literal and against the
pipeline it is specified as.
Also a voice pass over the paper's prose. The abstract opens on the thesis,
Context and Motivation is broken up, and the design decisions that had an
objection worth raising -- rejecting char8_t, the compile-time codec -- now
argue by concession instead of asserting. Five TODO markers are left for
prose only I can write, including the answer to Jan's epigraph.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bulk helpers
decode_to/encode_to/decode_into/encode_intoalready existed indetail/bulk_transcode.hpp, anddetail/is only a directory convention in this repo — the umbrella header includes it and the module exports it, the same asnull_termandtranscode_string. So they were public API while the paper, the README, and the header comment all said they were not proposed. The tests had been rewritten to exercise the pipelines instead (// decode(codec) | ranges::to — replaces decode_to(codec, range)), leaving all eight helpers with no coverage.This settles it the other way and proposes them. They are trivial wrappers, and that is the point: converting a buffer to a container is the operation users come for, and withholding the name does not stop anyone wanting it — it only moves the question to every code review and every committee discussion of the paper.
However, we propose them. Overview, user-facing examples, the API comparison table, and footnote 2 follow.constexpr— added to the WHATWGdecode_to/encode_tooverloads, which lacked it while the pluggable overloads had it.constify/STATIC_REQUIRE. Each container-returning case is checked both against a literal and against the pipeline it is specified as.Voice pass on the paper
Separately, a pass over the paper's prose. The abstract opens on the thesis with no wind-up, Context and Motivation is broken into short paragraphs, and the two design decisions that had a real objection worth raising — rejecting
char8_t, and the compile-time codec parameter — now argue by concession rather than asserting and then supplying reasons.Five
<!-- TODO(sdowney) -->markers are left in for prose only I can write:Verification
make compileclean, 729/729 ctest pass,make lintclean exceptgitleakserroring on its own CLI (unknown command "git" for "gitleaks"), which is pre-existing and not a finding.Not verified locally: the paper does not render here —
make transcode-view.htmlfails fetching wg21.link behind a TLS-intercepting proxy — so fence, div, and table balance were checked by hand. CI should render it. That is part of why this PR exists.🤖 Generated with Claude Code