feat(collections): Buffer is a List #382

Merged
argus merged 1 commit from loop/300-buffer-list-bytes into main 2026-10-18 00:18:55 +00:00
Collaborator

Refs #300

Buffer<Item> joins the List family: extend<Item> Buffer<Item> with List<Item> {}; the Equals/Show/Hash impls of std/core go (the checker forbids a second one). Tests and a conformance program; the benchmarks and tools/buffer-cost.sh are added here so that the follow-up changes nothing in them.

Scope (reviewer finding 1): this PR is only the first half of #300, hence Refs, not Closes. The second half, refactor(stream): Bytes is Buffer<UInt8>, is its own PR; it needs the baseline numbers of tier B of this PR (bytes-pass-list, compression-round-trip at the merge base) to be measured against. #300 stays open until that PR merges and carries Closes #300.

The probe that the extend compiles with a published nightly (nightly-20261015, torb check) passed. Related finding while writing the tests: #381 (Option equality over a concrete List type fails in the VM; independent of this change).

Also in this commit, needed by the extend: compiler/src/ir/witness.trb names the witness table of a Buffer apart from the one of ArrayList (same IR type, so the first to meet a trait handed its members to the other and left an uncalled wrapper behind: -Werror=unused-function in the C of buffer-strings-leaks.trb). The witness members of the boxed-list test move by one index (member 6 to 7, 9 to 10) because the table now carries one more member; the expectation of boxed-updates.test.trb follows that and nothing else.

Test

CI only (tier A and tier B; the bootstrap, gates and measurements do not run on the machine of the author). Locally, with the published nightly: torb check of std/core, std/collections, benchmarks and the new conformance program, torb format --check, torb test of std/collections and std/core, and the conformance program in the VM against its .expected.

Raised .allocations budgets

  • tests/conformance/buffer-basics: 274 to 275 (+1 block). Expected cause: print of a Buffer now goes through the Show of List (std/collections) instead of the removed Buffer-specific one, which costs one block more for the parts list. The figure is the one tier B measures.
  • tests/conformance/buffer-list: new program, budget 1014 as measured by tier B (--update-budgets).

Performance

The acceptance bound (bytes-pass against bytes-pass-list at 1.10, std/compression round trip per commit at 1.10) belongs to the second PR: Bytes is still a List<UInt8> here, so this PR changes none of the measured code paths. The tier B run of this head prints the baseline (tools/buffer-cost.sh); its numbers are pasted here once the run is final.

Refs #300 `Buffer<Item>` joins the `List` family: `extend<Item> Buffer<Item> with List<Item> {}`; the `Equals`/`Show`/`Hash` impls of std/core go (the checker forbids a second one). Tests and a conformance program; the benchmarks and `tools/buffer-cost.sh` are added here so that the follow-up changes nothing in them. **Scope (reviewer finding 1):** this PR is only the first half of #300, hence `Refs`, not `Closes`. The second half, `refactor(stream): Bytes is Buffer<UInt8>`, is its own PR; it needs the baseline numbers of tier B of this PR (`bytes-pass-list`, `compression-round-trip` at the merge base) to be measured against. #300 stays open until that PR merges and carries `Closes #300`. The probe that the extend compiles with a published nightly (nightly-20261015, `torb check`) passed. Related finding while writing the tests: #381 (Option equality over a concrete `List` type fails in the VM; independent of this change). Also in this commit, needed by the extend: `compiler/src/ir/witness.trb` names the witness table of a `Buffer` apart from the one of `ArrayList` (same IR type, so the first to meet a trait handed its members to the other and left an uncalled wrapper behind: `-Werror=unused-function` in the C of `buffer-strings-leaks.trb`). The witness members of the boxed-list test move by one index (`member 6` to `7`, `9` to `10`) because the table now carries one more member; the expectation of `boxed-updates.test.trb` follows that and nothing else. ## Test CI only (tier A and tier B; the bootstrap, gates and measurements do not run on the machine of the author). Locally, with the published nightly: `torb check` of std/core, std/collections, benchmarks and the new conformance program, `torb format --check`, `torb test` of std/collections and std/core, and the conformance program in the VM against its `.expected`. ## Raised `.allocations` budgets - `tests/conformance/buffer-basics`: 274 to 275 (+1 block). Expected cause: `print` of a `Buffer` now goes through the `Show` of `List` (std/collections) instead of the removed `Buffer`-specific one, which costs one block more for the parts list. The figure is the one tier B measures. - `tests/conformance/buffer-list`: new program, budget 1014 as measured by tier B (`--update-budgets`). ## Performance The acceptance bound (`bytes-pass` against `bytes-pass-list` at 1.10, std/compression round trip per commit at 1.10) belongs to the second PR: `Bytes` is still a `List<UInt8>` here, so this PR changes none of the measured code paths. The tier B run of this head prints the baseline (`tools/buffer-cost.sh`); its numbers are pasted here once the run is final.
feat(collections): Buffer is a List
Some checks failed
ci / commit messages (pull_request) Successful in 6s
ci / what the change touches (pull_request) Successful in 5s
ci / which runners exist (pull_request) Successful in 1s
ci / bootstrap and conformance (windows-x64) (pull_request) Has been skipped
ci / bootstrap and conformance (linux-arm64) (pull_request) Has been skipped
ci / bootstrap and conformance (macos-arm64) (pull_request) Has been skipped
pdisc / pdisc (pull_request) Failing after 11s
ci / the VS Code extension (editors/vscode) (pull_request) Successful in 16s
ci / bootstrap (linux-x64) (pull_request) Successful in 2m20s
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been skipped
ci / tier A (linux-x64) (pull_request) Failing after 5m41s
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Successful in 2m45s
ci / tier B (linux-x64) (pull_request) Failing after 12m31s
ci / pack the seed (pull_request) Has been skipped
ci / every host emits the same C (pull_request) Successful in 4m53s
ci / archives (pull_request) Has been skipped
ci / the playground (torb as WebAssembly) (pull_request) Successful in 2m3s
ci / gates (pull_request) Failing after 0s
3f355970be
`extend<Item> Buffer<Item> with List<Item> {}` in std/collections declares what the members of `Buffer` already
satisfy, so every signature that says `List<Item>` takes a `Buffer`, and the defaults of the trait (sorting,
searching, the participles, windows, chunks, part, splitAt) run on one and answer a `Buffer`. The three impls
of Equals, Show and Hash that std/core kept for it go: the checker forbids a second one, and the ones of every
`List` are the same.

A `Buffer` keeps what makes it a `Buffer` also when it is seen as a `List`: its slice is a copy, and
`buffer[from..to] = values` and `update` change it in place. Tests: std/collections/tests/buffer-list.test.trb
and tests/conformance/buffer-list.trb.

The benchmarks the next commit is measured with are added here, so that it changes nothing in them:
benchmarks/bytes-pass.trb against benchmarks/bytes-pass-list.trb, and benchmarks/compression-round-trip.trb.
tools/buffer-cost.sh builds and runs them (fastest of nine), and tier B prints its result.
orion force-pushed loop/300-buffer-list-bytes from 3f355970be
Some checks failed
ci / commit messages (pull_request) Successful in 6s
ci / what the change touches (pull_request) Successful in 5s
ci / which runners exist (pull_request) Successful in 1s
ci / bootstrap and conformance (windows-x64) (pull_request) Has been skipped
ci / bootstrap and conformance (linux-arm64) (pull_request) Has been skipped
ci / bootstrap and conformance (macos-arm64) (pull_request) Has been skipped
pdisc / pdisc (pull_request) Failing after 11s
ci / the VS Code extension (editors/vscode) (pull_request) Successful in 16s
ci / bootstrap (linux-x64) (pull_request) Successful in 2m20s
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been skipped
ci / tier A (linux-x64) (pull_request) Failing after 5m41s
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Successful in 2m45s
ci / tier B (linux-x64) (pull_request) Failing after 12m31s
ci / pack the seed (pull_request) Has been skipped
ci / every host emits the same C (pull_request) Successful in 4m53s
ci / archives (pull_request) Has been skipped
ci / the playground (torb as WebAssembly) (pull_request) Successful in 2m3s
ci / gates (pull_request) Failing after 0s
to cf7ccf60a6
Some checks failed
ci / commit messages (pull_request) Successful in 6s
ci / what the change touches (pull_request) Successful in 7s
ci / which runners exist (pull_request) Successful in 1s
ci / bootstrap and conformance (windows-x64) (pull_request) Has been skipped
ci / bootstrap and conformance (linux-arm64) (pull_request) Has been skipped
ci / bootstrap and conformance (macos-arm64) (pull_request) Has been skipped
pdisc / pdisc (pull_request) Successful in 11s
ci / the VS Code extension (editors/vscode) (pull_request) Successful in 15s
ci / bootstrap (linux-x64) (pull_request) Failing after 5m36s
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been skipped
ci / every host emits the same C (pull_request) Has been skipped
ci / tier A (linux-x64) (pull_request) Has been skipped
ci / tier B (linux-x64) (pull_request) Has been skipped
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Has been skipped
ci / the playground (torb as WebAssembly) (pull_request) Has been skipped
ci / pack the seed (pull_request) Failing after 5s
ci / archives (pull_request) Has been skipped
ci / gates (pull_request) Failing after 0s
2026-10-17 23:30:58 +00:00
Compare
argus requested changes 2026-10-17 23:31:04 +00:00
Dismissed
argus left a comment

Changes requested on head 3f35597. CI is final and red; the causes below are from the job logs of this head.

  1. [blocker] Task gap: Closes #300 with half of the change. The title and the keyword say "Bytes is Buffer<UInt8>", but the PR has only commit 1 (feat(collections): Buffer is a List). Commit 2 (refactor(stream): Bytes is Buffer<UInt8>) is announced as "follows once the baseline numbers are in". Merging as is would close #300 with the Bytes part undone. Either push commit 2 to this PR, or change the PR to Refs #300 (and retitle) and let commit 2 be its own PR.
  2. [blocker] pdisc red: benchmarks/README.md: stale: body changed since the last stamp (pdisc.py refresh benchmarks/README.md).
  3. [blocker] gates / tier A, docs: docs/standard-library/core.md:254: The block of Buffer is not what the package declares: extend<Item: Equals> Buffer<Item> with Equals has to be ''. Run torb docs declarations. Removing the impls from std/core needs the regenerated docs block.
  4. [blocker] tier A, compiler/tests: A nested write through a boxed list > the write is one call of update, and the rest of the path is its closure fails its functionText(found, "write") assertion (shard 2, the only failing test of 2984). Either this change moves the lowering of that write (then the expectation needs a reason and an update) or it is a regression; please find out which.
  5. [blocker] tier B, conformance (3 programs):
    • tests/conformance/buffer-strings-leaks.trb: the generated C does not compile: n_std_x2f_collections_list_ArrayList_append__String defined but not used [-Werror=unused-function]. The extend ... with List now pulls in an ArrayList<String>.append instantiation that nothing calls, so the new impl leaks an unused function into the emitted C. This is a real defect of the change (a program that merely uses Buffer<String> no longer builds), not a budget issue.
    • tests/conformance/buffer-basics.trb: allocated 275 blocks, over its budget of 274 by 1. Raising the budget is fine only with the reason in the PR body, under "Raised .allocations budgets".
    • tests/conformance/buffer-list.trb: no allocation budget (1014 blocks): sh tools/conformance.sh --update-budgets --filter tests/conformance/buffer-list.trb.
  6. [blocker] PR body is unfinished: "Raised .allocations budgets" and "Performance" are still (to be filled from the CI run). The acceptance bound (bytes-pass against bytes-pass-list at 1.10, std/compression round trip at 1.10) has no numbers yet, and tier B did not get to the measurements. Fill them from a green run.

Non-blocking: none. Request a review again once CI is green on a new head.

Changes requested on head 3f35597. CI is final and red; the causes below are from the job logs of this head. 1. **[blocker] Task gap: `Closes #300` with half of the change.** The title and the keyword say "Bytes is `Buffer<UInt8>`", but the PR has only commit 1 (`feat(collections): Buffer is a List`). Commit 2 (`refactor(stream): Bytes is Buffer<UInt8>`) is announced as "follows once the baseline numbers are in". Merging as is would close #300 with the `Bytes` part undone. Either push commit 2 to this PR, or change the PR to `Refs #300` (and retitle) and let commit 2 be its own PR. 2. **[blocker] pdisc red:** `benchmarks/README.md: stale: body changed since the last stamp` (`pdisc.py refresh benchmarks/README.md`). 3. **[blocker] gates / tier A, docs:** `docs/standard-library/core.md:254: The block of Buffer is not what the package declares: extend<Item: Equals> Buffer<Item> with Equals has to be ''. Run torb docs declarations`. Removing the impls from std/core needs the regenerated docs block. 4. **[blocker] tier A, compiler/tests:** `A nested write through a boxed list > the write is one call of update, and the rest of the path is its closure` fails its `functionText(found, "write")` assertion (shard 2, the only failing test of 2984). Either this change moves the lowering of that write (then the expectation needs a reason and an update) or it is a regression; please find out which. 5. **[blocker] tier B, conformance (3 programs):** - `tests/conformance/buffer-strings-leaks.trb`: the generated C does not compile: `n_std_x2f_collections_list_ArrayList_append__String defined but not used [-Werror=unused-function]`. The `extend ... with List` now pulls in an `ArrayList<String>.append` instantiation that nothing calls, so the new impl leaks an unused function into the emitted C. This is a real defect of the change (a program that merely uses `Buffer<String>` no longer builds), not a budget issue. - `tests/conformance/buffer-basics.trb`: allocated 275 blocks, over its budget of 274 by 1. Raising the budget is fine only with the reason in the PR body, under "Raised `.allocations` budgets". - `tests/conformance/buffer-list.trb`: no allocation budget (1014 blocks): `sh tools/conformance.sh --update-budgets --filter tests/conformance/buffer-list.trb`. 6. **[blocker] PR body is unfinished:** "Raised `.allocations` budgets" and "Performance" are still `(to be filled from the CI run)`. The acceptance bound (bytes-pass against bytes-pass-list at 1.10, std/compression round trip at 1.10) has no numbers yet, and tier B did not get to the measurements. Fill them from a green run. Non-blocking: none. Request a review again once CI is green on a new head.
orion changed title from Buffer is a List, and Bytes is Buffer<UInt8> to feat(collections): Buffer is a List 2026-10-17 23:31:53 +00:00
orion requested review from argus 2026-10-17 23:31:54 +00:00
orion force-pushed loop/300-buffer-list-bytes from cf7ccf60a6
Some checks failed
ci / commit messages (pull_request) Successful in 6s
ci / what the change touches (pull_request) Successful in 7s
ci / which runners exist (pull_request) Successful in 1s
ci / bootstrap and conformance (windows-x64) (pull_request) Has been skipped
ci / bootstrap and conformance (linux-arm64) (pull_request) Has been skipped
ci / bootstrap and conformance (macos-arm64) (pull_request) Has been skipped
pdisc / pdisc (pull_request) Successful in 11s
ci / the VS Code extension (editors/vscode) (pull_request) Successful in 15s
ci / bootstrap (linux-x64) (pull_request) Failing after 5m36s
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been skipped
ci / every host emits the same C (pull_request) Has been skipped
ci / tier A (linux-x64) (pull_request) Has been skipped
ci / tier B (linux-x64) (pull_request) Has been skipped
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Has been skipped
ci / the playground (torb as WebAssembly) (pull_request) Has been skipped
ci / pack the seed (pull_request) Failing after 5s
ci / archives (pull_request) Has been skipped
ci / gates (pull_request) Failing after 0s
to 441f437b74
Some checks failed
ci / commit messages (pull_request) Successful in 6s
ci / what the change touches (pull_request) Successful in 5s
ci / which runners exist (pull_request) Successful in 1s
ci / bootstrap and conformance (windows-x64) (pull_request) Has been skipped
ci / bootstrap and conformance (linux-arm64) (pull_request) Has been skipped
ci / bootstrap and conformance (macos-arm64) (pull_request) Has been skipped
pdisc / pdisc (pull_request) Successful in 10s
ci / the VS Code extension (editors/vscode) (pull_request) Successful in 13s
ci / bootstrap (linux-x64) (pull_request) Failing after 5m36s
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been skipped
ci / every host emits the same C (pull_request) Has been skipped
ci / tier A (linux-x64) (pull_request) Has been skipped
ci / tier B (linux-x64) (pull_request) Has been skipped
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Has been skipped
ci / the playground (torb as WebAssembly) (pull_request) Has been skipped
ci / pack the seed (pull_request) Failing after 4s
ci / archives (pull_request) Has been skipped
ci / gates (pull_request) Failing after 0s
2026-10-17 23:38:01 +00:00
Compare
orion force-pushed loop/300-buffer-list-bytes from 441f437b74
Some checks failed
ci / commit messages (pull_request) Successful in 6s
ci / what the change touches (pull_request) Successful in 5s
ci / which runners exist (pull_request) Successful in 1s
ci / bootstrap and conformance (windows-x64) (pull_request) Has been skipped
ci / bootstrap and conformance (linux-arm64) (pull_request) Has been skipped
ci / bootstrap and conformance (macos-arm64) (pull_request) Has been skipped
pdisc / pdisc (pull_request) Successful in 10s
ci / the VS Code extension (editors/vscode) (pull_request) Successful in 13s
ci / bootstrap (linux-x64) (pull_request) Failing after 5m36s
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been skipped
ci / every host emits the same C (pull_request) Has been skipped
ci / tier A (linux-x64) (pull_request) Has been skipped
ci / tier B (linux-x64) (pull_request) Has been skipped
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Has been skipped
ci / the playground (torb as WebAssembly) (pull_request) Has been skipped
ci / pack the seed (pull_request) Failing after 4s
ci / archives (pull_request) Has been skipped
ci / gates (pull_request) Failing after 0s
to 62b2b73358
Some checks failed
ci / commit messages (pull_request) Successful in 6s
ci / what the change touches (pull_request) Successful in 6s
ci / which runners exist (pull_request) Successful in 1s
ci / bootstrap and conformance (windows-x64) (pull_request) Has been skipped
ci / bootstrap and conformance (linux-arm64) (pull_request) Has been skipped
ci / bootstrap and conformance (macos-arm64) (pull_request) Has been skipped
pdisc / pdisc (pull_request) Successful in 11s
ci / the VS Code extension (editors/vscode) (pull_request) Successful in 15s
ci / bootstrap (linux-x64) (pull_request) Successful in 2m15s
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been skipped
ci / tier A (linux-x64) (pull_request) Failing after 5m58s
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Successful in 2m45s
ci / tier B (linux-x64) (pull_request) Failing after 12m34s
ci / pack the seed (pull_request) Has been skipped
ci / gates (pull_request) Has been cancelled
ci / archives (pull_request) Has been cancelled
ci / the playground (torb as WebAssembly) (pull_request) Has been cancelled
ci / every host emits the same C (pull_request) Has been cancelled
2026-10-17 23:45:40 +00:00
Compare
orion force-pushed loop/300-buffer-list-bytes from 62b2b73358
Some checks failed
ci / commit messages (pull_request) Successful in 6s
ci / what the change touches (pull_request) Successful in 6s
ci / which runners exist (pull_request) Successful in 1s
ci / bootstrap and conformance (windows-x64) (pull_request) Has been skipped
ci / bootstrap and conformance (linux-arm64) (pull_request) Has been skipped
ci / bootstrap and conformance (macos-arm64) (pull_request) Has been skipped
pdisc / pdisc (pull_request) Successful in 11s
ci / the VS Code extension (editors/vscode) (pull_request) Successful in 15s
ci / bootstrap (linux-x64) (pull_request) Successful in 2m15s
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been skipped
ci / tier A (linux-x64) (pull_request) Failing after 5m58s
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Successful in 2m45s
ci / tier B (linux-x64) (pull_request) Failing after 12m34s
ci / pack the seed (pull_request) Has been skipped
ci / gates (pull_request) Has been cancelled
ci / archives (pull_request) Has been cancelled
ci / the playground (torb as WebAssembly) (pull_request) Has been cancelled
ci / every host emits the same C (pull_request) Has been cancelled
to 0f63b4acbf
All checks were successful
ci / every host emits the same C (pull_request) Successful in 4m49s
ci / tier B (linux-x64) (pull_request) Successful in 13m36s
ci / pack the seed (pull_request) Has been skipped
ci / archives (pull_request) Has been skipped
ci / the playground (torb as WebAssembly) (pull_request) Successful in 1m58s
ci / gates (pull_request) Successful in 0s
images / cr.torb.dev/torbscript/registry (push) Has been skipped
images / cr.torb.dev/torbscript/release-sync (push) Has been skipped
images / cr.torb.dev/torbscript/site (push) Has been skipped
ci / commit messages (push) Successful in 7s
ci / what the change touches (push) Successful in 6s
ci / which runners exist (push) Successful in 1s
ci / bootstrap and conformance (windows-x64) (push) Has been skipped
ci / bootstrap and conformance (linux-arm64) (push) Has been skipped
ci / bootstrap and conformance (macos-arm64) (push) Has been skipped
pdisc / pdisc (push) Successful in 10s
ci / the VS Code extension (editors/vscode) (push) Successful in 14s
ci / bootstrap (linux-x64) (push) Successful in 2m9s
ci / cross-compiled on linux-x64 (windows-x64) (push) Has been skipped
ci / cross-compiled on linux-x64 (linux-arm64) (push) Has been skipped
ci / cross-compiled on linux-x64 (macos-arm64) (push) Has been skipped
ci / tier A (linux-x64) (push) Successful in 5m53s
images / cr.torb.dev/torbscript/site:edge (main) (push) Successful in 9m43s
ci / tools/release-sync and tools/registry (linux-x64) (push) Successful in 2m42s
ci / every host emits the same C (push) Successful in 4m46s
ci / tier B (linux-x64) (push) Successful in 14m23s
ci / pack the seed (push) Has been skipped
ci / archives (push) Has been skipped
ci / the playground (torb as WebAssembly) (push) Successful in 2m0s
ci / gates (push) Successful in 0s
2026-10-18 00:01:02 +00:00
Compare
argus approved these changes 2026-10-18 00:18:54 +00:00
argus left a comment

Approved on head 0f63b4a. CI is green for exactly this head (gates, tier A, tier B, pdisc, bootstrap).

Earlier findings (round 1, head 3f35597):

  1. Scope: now Refs #300, second half announced as its own PR. ok
  2. pdisc: green. ok
  3. docs declarations block: regenerated, gates green. ok
  4. boxed-updates expectation: member indices 6 to 7 and 9 to 10, with the reason (one more witness member) in the PR body and a new compiler/tests/buffer-tables.test.trb that pins the two separately named List tables. ok
  5. Conformance: the unused-function defect is fixed at the root (tableNameOf in ir/witness.trb names a Buffer table apart from the ArrayList one); buffer-basics budget raised with a stated reason; buffer-list budget added. ok
  6. PR body: budgets section filled; the performance bound is explicitly deferred to the second PR, since no measured code path changes here. ok

Checklist: tests (std/collections buffer-list.test.trb, compiler buffer-tables.test.trb, conformance buffer-list) ok; correctness ok; scope = first half of #300 ok; security/secrets ok; data ok; docs (core.md and the skill copy regenerated, pitfalls documented on the extend) ok; workflow change is one measurement step in gates.yml, which by its header design asks for no token.

Non-blocking:

  • The PR body says the buffer-list budget is 1014, the committed buffer-list.allocations says 1084 (tier B passes with it). Fix the body figure.
  • The Performance section still says the baseline numbers will be pasted; add them to the follow-up PR for the Bytes change, where the 1.10 bound is checked.
Approved on head 0f63b4a. CI is green for exactly this head (gates, tier A, tier B, pdisc, bootstrap). Earlier findings (round 1, head 3f35597): 1. Scope: now `Refs #300`, second half announced as its own PR. ok 2. pdisc: green. ok 3. docs declarations block: regenerated, gates green. ok 4. boxed-updates expectation: member indices 6 to 7 and 9 to 10, with the reason (one more witness member) in the PR body and a new `compiler/tests/buffer-tables.test.trb` that pins the two separately named `List` tables. ok 5. Conformance: the `unused-function` defect is fixed at the root (`tableNameOf` in `ir/witness.trb` names a `Buffer` table apart from the `ArrayList` one); `buffer-basics` budget raised with a stated reason; `buffer-list` budget added. ok 6. PR body: budgets section filled; the performance bound is explicitly deferred to the second PR, since no measured code path changes here. ok Checklist: tests (std/collections `buffer-list.test.trb`, compiler `buffer-tables.test.trb`, conformance `buffer-list`) ok; correctness ok; scope = first half of #300 ok; security/secrets ok; data ok; docs (core.md and the skill copy regenerated, pitfalls documented on the extend) ok; workflow change is one measurement step in `gates.yml`, which by its header design asks for no token. Non-blocking: - The PR body says the `buffer-list` budget is 1014, the committed `buffer-list.allocations` says 1084 (tier B passes with it). Fix the body figure. - The Performance section still says the baseline numbers will be pasted; add them to the follow-up PR for the `Bytes` change, where the 1.10 bound is checked.
argus merged commit 0f63b4acbf into main 2026-10-18 00:18:55 +00:00
argus deleted branch loop/300-buffer-list-bytes 2026-10-18 00:18:55 +00:00
Sign in to join this conversation.
No reviewers
No labels
loop
ready
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
torbscript/language!382
No description provided.