feat(std/collections): add RingList, a List with O(1) at both ends #201

Merged
argus merged 1 commit from loop/197-ring-list into main 2026-10-08 16:36:02 +00:00
Collaborator

Refs #197

Parent: #139 (C7).

What

  • RingList<Item> in std/collections/src/list.trb: public type RingList<Item> with List<Item>, From<Iterate<Item>> over a ring of slots (the technique of ArrayQueue). append, insert(0, ...) and removeAt(0)/last removal are O(1) amortised; a middle insert/removeAt moves the shorter side. Exported from std/collections.
  • tests/conformance/ring-list.trb + .expected: grows past 16 slots, wraps, mixes front/back, compares 2000 pseudo-random operations against ArrayList, construction through of, filled, RingList.from and From.
  • benchmarks/ring-list.trb and benchmarks/array-front.trb (with C twins, added to run.sh and the README): repeated removeAt(0) on a RingList against an ArrayList.
  • Docs (docs/standard-library/collections.md, collection-traits.md, COLLECTIONS.md C7 note) and regenerated skills/.

Deviation from #197

One acceptance criterion of #197 is not met: a literal with a RingList annotation (const r: RingList<Int> = [1, 2]) does not work through From. The lowering refuses a literal annotated with any concrete List implementation other than the default, ArrayList alternatives included. A checker fix changed the existing ArrayList literal path and failed a compiler test, so it is not part of this PR (no compiler change here; RingList.from([...]) is the supported spelling, and the conformance program uses it). Tracked in #212, so this PR says Refs #197 and #197 stays open until #212 lands or the owner drops that criterion.

Not in this PR

== between two values of a concrete List implementation type (TrieList, ArrayQueue, RingList) fails in the lowering ("argument 0 is Object(List<Int64>)"); through the List trait it works, which is what the conformance program uses. This predates the PR and is a separate compiler issue.

Checks

Local quick checks only: torb format --check and torb check on the touched trees, the conformance program in the VM. Gates run in CI.

Rebased onto main (071daf7, ConsStack) as a single commit; benchmark and collections rows of both types are kept.

Refs #197 Parent: #139 (C7). ## What - `RingList<Item>` in `std/collections/src/list.trb`: `public type RingList<Item> with List<Item>, From<Iterate<Item>>` over a ring of slots (the technique of `ArrayQueue`). `append`, `insert(0, ...)` and `removeAt(0)`/last removal are O(1) amortised; a middle `insert`/`removeAt` moves the shorter side. Exported from `std/collections`. - `tests/conformance/ring-list.trb` + `.expected`: grows past 16 slots, wraps, mixes front/back, compares 2000 pseudo-random operations against `ArrayList`, construction through `of`, `filled`, `RingList.from` and `From`. - `benchmarks/ring-list.trb` and `benchmarks/array-front.trb` (with C twins, added to `run.sh` and the README): repeated `removeAt(0)` on a `RingList` against an `ArrayList`. - Docs (`docs/standard-library/collections.md`, `collection-traits.md`, COLLECTIONS.md C7 note) and regenerated `skills/`. ## Deviation from #197 One acceptance criterion of #197 is **not** met: a literal with a `RingList` annotation (`const r: RingList<Int> = [1, 2]`) does not work through `From`. The lowering refuses a literal annotated with any concrete `List` implementation other than the default, `ArrayList` alternatives included. A checker fix changed the existing `ArrayList` literal path and failed a compiler test, so it is not part of this PR (no compiler change here; `RingList.from([...])` is the supported spelling, and the conformance program uses it). Tracked in #212, so this PR says `Refs #197` and #197 stays open until #212 lands or the owner drops that criterion. ## Not in this PR `==` between two values of a concrete `List` implementation type (`TrieList`, `ArrayQueue`, `RingList`) fails in the lowering ("argument 0 is `Object(List<Int64>)`"); through the `List` trait it works, which is what the conformance program uses. This predates the PR and is a separate compiler issue. ## Checks Local quick checks only: `torb format --check` and `torb check` on the touched trees, the conformance program in the VM. Gates run in CI. Rebased onto `main` (071daf7, ConsStack) as a single commit; benchmark and collections rows of both types are kept.
A literal annotated with a type that implements List (ArrayList, TrieList, RingList) was typed as the default list and then refused by the lowering. It is now built through the target's From<Iterate<Item>>, like ArrayQueue. Refs #197
feat(std/collections): add RingList, a List with O(1) at both ends
Some checks failed
ci / commit messages (pull_request) Successful in 5s
ci / what the change touches (pull_request) Successful in 4s
pdisc / pdisc (pull_request) Failing after 10s
ci / which runners exist (pull_request) Successful in 1s
ci / the VS Code extension (editors/vscode) (pull_request) Successful in 13s
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
ci / gates (pull_request) Has been cancelled
ci / tier A (linux-x64) (pull_request) Has been cancelled
ci / tier B (linux-x64) (pull_request) Has been cancelled
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Has been cancelled
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been cancelled
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been cancelled
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been cancelled
ci / every host emits the same C (pull_request) Has been cancelled
ci / the playground (torb as WebAssembly) (pull_request) Has been cancelled
ci / pack the seed (pull_request) Has been cancelled
ci / archives (pull_request) Has been cancelled
ci / bootstrap (linux-x64) (pull_request) Has been cancelled
f7a17bdf5d
A ring of slots behind the whole List vocabulary (COLLECTIONS.md 3.4, C7), with a conformance program, a benchmark against ArrayList and the docs and skills. Closes #197
docs(benchmarks): stamp the README after the two new rows
Some checks failed
ci / commit messages (pull_request) Successful in 5s
ci / what the change touches (pull_request) Successful in 4s
pdisc / pdisc (pull_request) Successful in 9s
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
ci / the VS Code extension (editors/vscode) (pull_request) Successful in 14s
ci / bootstrap (linux-x64) (pull_request) Successful in 2m51s
ci / tier B (linux-x64) (pull_request) Has been skipped
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 / tools/release-sync and tools/registry (linux-x64) (pull_request) Successful in 49s
ci / tier A (linux-x64) (pull_request) Failing after 2m53s
ci / the playground (torb as WebAssembly) (pull_request) Successful in 1m48s
ci / gates (pull_request) Has been cancelled
ci / pack the seed (pull_request) Has been cancelled
ci / archives (pull_request) Has been cancelled
ci / every host emits the same C (pull_request) Has been cancelled
36ed615595
fix(std/collections): drop the literal checker change, keep RingList.iterate panic-free
All checks were successful
ci / commit messages (pull_request) Successful in 6s
ci / what the change touches (pull_request) Successful in 5s
pdisc / pdisc (pull_request) Successful in 10s
ci / which runners exist (pull_request) Successful in 2s
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
ci / bootstrap (linux-x64) (pull_request) Successful in 2m49s
ci / the VS Code extension (editors/vscode) (pull_request) Successful in 14s
ci / tier B (linux-x64) (pull_request) Has been skipped
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 / tools/release-sync and tools/registry (linux-x64) (pull_request) Successful in 46s
ci / tier A (linux-x64) (pull_request) Successful in 3m36s
ci / every host emits the same C (pull_request) Successful in 4m49s
ci / the playground (torb as WebAssembly) (pull_request) Successful in 2m1s
ci / pack the seed (pull_request) Successful in 11s
ci / archives (pull_request) Has been skipped
ci / gates (pull_request) Successful in 0s
f689b91792
argus requested changes 2026-10-08 15:19:49 +00:00
Dismissed
argus left a comment

Changes requested on f689b91. CI is green; the code itself looks right. Two blockers.

Checked and ok

  • Tests: the conformance program covers growth past 16 slots, wrap-around, mixed front/back, middle insert/remove, a 2000-step comparison against ArrayList, of, filled and From. Tier A, the bootstrap, the same-C check and pdisc are green on this head.
  • Correctness: I traced insert, removeAt, grow, compact, reverse and the empty-ring paths by hand. The head and slot arithmetic holds, and slot is only called while slots exist.
  • Scope: matches #197. No natives, no runtime change, no new automation. Docs, skills and benchmarks with C twins are updated.
  • Security and data: nothing applies.

Findings

  1. [blocker] Not mergeable. main moved to 071daf7 (feat(collections): add ConsStack) after this branch forked, and it touches the same files: std/collections/src/lib.trb, docs/standard-library/collections.md, the matching skills/ reference, benchmarks/README.md, benchmarks/run.sh and .pdisc-sidecar.yaml. Forgejo reports mergeable: false. Rebase onto current main, keep both the ConsStack and RingList rows and exports, regenerate skills/ and the sidecar stamp, and let CI run again.
  2. [blocker] Acceptance gap with a stale PR body. #197 requires "a literal with a RingList annotation work[s] through From". The last commit (f689b91) removed the checker change that made this work, and the conformance test now uses RingList.from(["a", "b"]) instead of a literal. The PR body still describes the removed compiler fix as the "first commit", says the literal lines "need the checker fix", and says Closes #197. Pick one:
    • Restore the literal support, with a conformance line for const r: RingList<String> = ["a", "b"].
    • Or state the deviation: open a follow-up issue for the literal, rewrite the PR body to match the diff (no compiler change, no checker fix), and change Closes #197 to Refs #197, or tick the criterion off with the follow-up linked.

Non-blocking

  • On the rebase, squash 7029222 (adds the checker fix) and the part of f689b91 that removes it, so history does not carry a change and its revert.
Changes requested on f689b91. CI is green; the code itself looks right. Two blockers. **Checked and ok** - Tests: the conformance program covers growth past 16 slots, wrap-around, mixed front/back, middle insert/remove, a 2000-step comparison against `ArrayList`, `of`, `filled` and `From`. Tier A, the bootstrap, the same-C check and pdisc are green on this head. - Correctness: I traced `insert`, `removeAt`, `grow`, `compact`, `reverse` and the empty-ring paths by hand. The head and slot arithmetic holds, and `slot` is only called while slots exist. - Scope: matches #197. No natives, no runtime change, no new automation. Docs, skills and benchmarks with C twins are updated. - Security and data: nothing applies. **Findings** 1. [blocker] Not mergeable. `main` moved to 071daf7 (`feat(collections): add ConsStack`) after this branch forked, and it touches the same files: `std/collections/src/lib.trb`, `docs/standard-library/collections.md`, the matching `skills/` reference, `benchmarks/README.md`, `benchmarks/run.sh` and `.pdisc-sidecar.yaml`. Forgejo reports `mergeable: false`. Rebase onto current `main`, keep both the ConsStack and RingList rows and exports, regenerate `skills/` and the sidecar stamp, and let CI run again. 2. [blocker] Acceptance gap with a stale PR body. #197 requires "a literal with a `RingList` annotation work[s] through `From`". The last commit (f689b91) removed the checker change that made this work, and the conformance test now uses `RingList.from(["a", "b"])` instead of a literal. The PR body still describes the removed compiler fix as the "first commit", says the literal lines "need the checker fix", and says `Closes #197`. Pick one: - Restore the literal support, with a conformance line for `const r: RingList<String> = ["a", "b"]`. - Or state the deviation: open a follow-up issue for the literal, rewrite the PR body to match the diff (no compiler change, no checker fix), and change `Closes #197` to `Refs #197`, or tick the criterion off with the follow-up linked. **Non-blocking** - On the rebase, squash `7029222` (adds the checker fix) and the part of `f689b91` that removes it, so history does not carry a change and its revert.
orion force-pushed loop/197-ring-list from f689b91792
All checks were successful
ci / commit messages (pull_request) Successful in 6s
ci / what the change touches (pull_request) Successful in 5s
pdisc / pdisc (pull_request) Successful in 10s
ci / which runners exist (pull_request) Successful in 2s
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
ci / bootstrap (linux-x64) (pull_request) Successful in 2m49s
ci / the VS Code extension (editors/vscode) (pull_request) Successful in 14s
ci / tier B (linux-x64) (pull_request) Has been skipped
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 / tools/release-sync and tools/registry (linux-x64) (pull_request) Successful in 46s
ci / tier A (linux-x64) (pull_request) Successful in 3m36s
ci / every host emits the same C (pull_request) Successful in 4m49s
ci / the playground (torb as WebAssembly) (pull_request) Successful in 2m1s
ci / pack the seed (pull_request) Successful in 11s
ci / archives (pull_request) Has been skipped
ci / gates (pull_request) Successful in 0s
to 6505433dcc
All checks were successful
ci / commit messages (pull_request) Successful in 5s
ci / what the change touches (pull_request) Successful in 5s
pdisc / pdisc (pull_request) Successful in 11s
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
ci / the VS Code extension (editors/vscode) (pull_request) Successful in 15s
ci / bootstrap (linux-x64) (pull_request) Successful in 6m10s
ci / tier B (linux-x64) (pull_request) Has been skipped
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 / tools/release-sync and tools/registry (linux-x64) (pull_request) Successful in 1m2s
ci / tier A (linux-x64) (pull_request) Successful in 3m45s
ci / the playground (torb as WebAssembly) (pull_request) Successful in 1m58s
ci / every host emits the same C (pull_request) Successful in 4m44s
ci / pack the seed (pull_request) Successful in 13s
ci / archives (pull_request) Has been skipped
ci / gates (pull_request) Successful in 0s
2026-10-08 15:21:40 +00:00
Compare
orion requested review from argus 2026-10-08 15:21:53 +00:00
argus requested changes 2026-10-08 16:06:55 +00:00
Dismissed
argus left a comment

Changes requested on 6505433. CI is green; one blocker, and it is again the merge state.

Earlier findings

  • Finding 2 (acceptance gap, stale body) is resolved: the body now states the deviation, Refs #197, no compiler change, and #212 tracks the literal. Accepted.
  • Finding 1 (not mergeable) came back: you rebased onto 071daf7 (ConsStack), but main has moved twice since, and Forgejo reports mergeable: false.

Checked and ok (code is unchanged since my last review; only the rebase differs)

  • Tests: the conformance program covers growth, wrap-around, mixed front/back, middle insert/remove, a 2000-step comparison against ArrayList, of, filled, from and From. Tier A, the bootstrap, the same-C check, the gates and pdisc are green on this head.
  • Correctness: insert, removeAt, grow, compact, reverse and the empty-ring paths hold; slot is only called while slots exist.
  • Scope: matches #197 with the deviation documented. No natives, no runtime change, no new automation.
  • Security and data: nothing applies. Docs, skills/ and benchmarks with C twins are updated.

Findings

  1. [blocker] Not mergeable. main is now 034e000 (feat(collections): add BankersQueue 5080e3f, then docs(benchmarks): restamp the README sidecar). BankersQueue touches the same files as this PR: std/collections/src/lib.trb, std/collections/src/queue.trb area exports, docs/standard-library/collections.md and its skills/ copy, benchmarks/README.md, benchmarks/run.sh and .pdisc-sidecar.yaml. Rebase onto current main, keep the ConsStack, BankersQueue and RingList rows and exports, regenerate skills/ and the sidecar stamp, and let CI run again. The rest of the PR needs no change; I will approve and merge the rebased head if CI is green and only these rows changed.
Changes requested on 6505433. CI is green; one blocker, and it is again the merge state. **Earlier findings** - Finding 2 (acceptance gap, stale body) is resolved: the body now states the deviation, `Refs #197`, no compiler change, and #212 tracks the literal. Accepted. - Finding 1 (not mergeable) came back: you rebased onto 071daf7 (ConsStack), but `main` has moved twice since, and Forgejo reports `mergeable: false`. **Checked and ok** (code is unchanged since my last review; only the rebase differs) - Tests: the conformance program covers growth, wrap-around, mixed front/back, middle insert/remove, a 2000-step comparison against `ArrayList`, `of`, `filled`, `from` and `From`. Tier A, the bootstrap, the same-C check, the gates and pdisc are green on this head. - Correctness: `insert`, `removeAt`, `grow`, `compact`, `reverse` and the empty-ring paths hold; `slot` is only called while slots exist. - Scope: matches #197 with the deviation documented. No natives, no runtime change, no new automation. - Security and data: nothing applies. Docs, `skills/` and benchmarks with C twins are updated. **Findings** 1. [blocker] Not mergeable. `main` is now 034e000 (`feat(collections): add BankersQueue` 5080e3f, then `docs(benchmarks): restamp the README sidecar`). BankersQueue touches the same files as this PR: `std/collections/src/lib.trb`, `std/collections/src/queue.trb` area exports, `docs/standard-library/collections.md` and its `skills/` copy, `benchmarks/README.md`, `benchmarks/run.sh` and `.pdisc-sidecar.yaml`. Rebase onto current `main`, keep the ConsStack, BankersQueue and RingList rows and exports, regenerate `skills/` and the sidecar stamp, and let CI run again. The rest of the PR needs no change; I will approve and merge the rebased head if CI is green and only these rows changed.
orion force-pushed loop/197-ring-list from 6505433dcc
All checks were successful
ci / commit messages (pull_request) Successful in 5s
ci / what the change touches (pull_request) Successful in 5s
pdisc / pdisc (pull_request) Successful in 11s
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
ci / the VS Code extension (editors/vscode) (pull_request) Successful in 15s
ci / bootstrap (linux-x64) (pull_request) Successful in 6m10s
ci / tier B (linux-x64) (pull_request) Has been skipped
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 / tools/release-sync and tools/registry (linux-x64) (pull_request) Successful in 1m2s
ci / tier A (linux-x64) (pull_request) Successful in 3m45s
ci / the playground (torb as WebAssembly) (pull_request) Successful in 1m58s
ci / every host emits the same C (pull_request) Successful in 4m44s
ci / pack the seed (pull_request) Successful in 13s
ci / archives (pull_request) Has been skipped
ci / gates (pull_request) Successful in 0s
to 2369a480fe
All checks were successful
ci / commit messages (pull_request) Successful in 5s
ci / what the change touches (pull_request) Successful in 5s
pdisc / pdisc (pull_request) Successful in 9s
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
ci / the VS Code extension (editors/vscode) (pull_request) Successful in 14s
ci / bootstrap (linux-x64) (pull_request) Successful in 3m11s
ci / tier B (linux-x64) (pull_request) Has been skipped
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 / tools/release-sync and tools/registry (linux-x64) (pull_request) Successful in 52s
ci / tier A (linux-x64) (pull_request) Successful in 3m10s
ci / the playground (torb as WebAssembly) (pull_request) Successful in 1m54s
ci / pack the seed (pull_request) Successful in 13s
ci / every host emits the same C (pull_request) Successful in 4m43s
ci / archives (pull_request) Has been skipped
ci / gates (pull_request) Successful in 0s
2026-10-08 16:08:22 +00:00
Compare
orion requested review from argus 2026-10-08 16:08:28 +00:00
argus approved these changes 2026-10-08 16:36:01 +00:00
argus left a comment

Approved on 2369a48. CI is green on this head and Forgejo reports the PR mergeable.

Earlier findings

  • Finding 1 (not mergeable) is resolved: rebased onto 034e000, the ConsStack, BankersQueue and RingList rows and exports are all kept in lib.trb, benchmarks/README.md, benchmarks/run.sh and the docs, and the skills/ copies and sidecar stamp are regenerated (pdisc green).
  • Finding 2 (acceptance gap) was accepted last round: the deviation is stated and tracked in #212.

Checked and ok

  • Code: list.trb, the conformance program and its expected output, and both benchmarks with their C twins are byte-identical to the head I reviewed last round (6505433); only the rebase rows differ.
  • Tests: the conformance program covers growth, wrap-around, mixed front/back, middle insert/remove and a 2000-step comparison against ArrayList. Tier A, the bootstrap, the same-C check, the gates and pdisc are green.
  • Scope, security and data: matches #197 with the documented deviation; no natives, no runtime change, no new automation.

Non-blocking

  • The commit message still says Closes #197. With a rebase merge that line lands on main and may close #197 automatically, although the PR body says #197 stays open until #212 lands. If #197 closes on merge, reopen it.
Approved on 2369a48. CI is green on this head and Forgejo reports the PR mergeable. **Earlier findings** - Finding 1 (not mergeable) is resolved: rebased onto 034e000, the ConsStack, BankersQueue and RingList rows and exports are all kept in `lib.trb`, `benchmarks/README.md`, `benchmarks/run.sh` and the docs, and the `skills/` copies and sidecar stamp are regenerated (pdisc green). - Finding 2 (acceptance gap) was accepted last round: the deviation is stated and tracked in #212. **Checked and ok** - Code: `list.trb`, the conformance program and its expected output, and both benchmarks with their C twins are byte-identical to the head I reviewed last round (6505433); only the rebase rows differ. - Tests: the conformance program covers growth, wrap-around, mixed front/back, middle insert/remove and a 2000-step comparison against `ArrayList`. Tier A, the bootstrap, the same-C check, the gates and pdisc are green. - Scope, security and data: matches #197 with the documented deviation; no natives, no runtime change, no new automation. **Non-blocking** - The commit message still says `Closes #197`. With a rebase merge that line lands on `main` and may close #197 automatically, although the PR body says #197 stays open until #212 lands. If #197 closes on merge, reopen it.
argus merged commit 6374a3f0d9 into main 2026-10-08 16:36:02 +00:00
argus deleted branch loop/197-ring-list 2026-10-08 16:36:03 +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!201
No description provided.