Skip to content

Resolve final 0.26 feedback and complete the upgrade guide - #534

Merged
lukewilliamboswell merged 5 commits into
mainfrom
release/0.26-final-notes
Oct 21, 2026
Merged

lukewilliamboswell merged 5 commits into
mainfrom
release/0.26-final-notes

Conversation

@lukewilliamboswell

@lukewilliamboswell lukewilliamboswell commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator

Bodyless HTTP requests stop adding Content-Type, and requests send a default User-Agent while preserving explicit overrides. Command stdout and stderr can write directly to files, so a long-running child can log independently of the Roc application without capturing output in memory.

  • HTTP defaults are applied once before redirect rewriting. Non-empty bodies retain the text/plain default; JSON and explicit headers are preserved. User-Agent defaults to roc-basic-cli/0.26 with case-insensitive override detection.
  • Cmd.StdoutMode and Cmd.StderrMode accept File(path, mode, options), reusing File.WriteMode and File.WriterOptions, including exclusive creation and enforced permissions. Relative paths use command cwd. Merged stderr shares stdout's open file description and append mode. Files are opened before spawn; failed starts may leave created/truncated files. Pending stop requests are checked before file opens. File-backed streams do not use capture or pending-output budgets.
  • Keep Utc focused on clock effects and signed epoch conversions. Recommend roc-time for parsing/calendars/richer formatting and explicitly describe its microsecond precision versus Utc's nanoseconds. A roc-time 0.3 parser example type-checks with the release's pinned compiler.
  • Complete the 0.25 → 0.26 narrative and upgrade guide: OS discovery/witnesses, command-builder and Path type changes, bare Interrupted results, HTTP timeout conventions, child lifetime, Pipe versus Capture, and example URL upgrades. Replace the former limitations section with implemented behavior and the deliberate timestamp package boundary.

Validation: full native source/build/runtime suite passed on macOS, including 194 host tests, 688 platform tests, real HTTP wire-header cases, and cross-platform Roc command cases for append/truncate/exclusive creation, command cwd, merged output, separate stderr, and large uncaptured logs under tiny capture budgets. Ownership tests cover redirected path cleanup on failed conversion and a pending stop preserving an existing log. Native and Linux ARM64 Clippy pass with warnings denied; generated ABI verification, formatting, generated docs, and all release-note examples pass. Generated Rust ABI was regenerated with the pinned compiler. The pinned compiler can emit invalid cached loop code after check/test warm-up: a controlled Linux comparison reproduced the crash with caching and passed the same original stress case with --no-cache (diagnostic run). A temporary, version-gated workaround disables the build cache only for x64musl/x64mac with compiler 2664a27; Unix check/test stages and other targets retain caching, and the existing Windows behavior is unchanged. A linked TODO calls for removing the workaround after the cached reproduction passes on an updated compiler. Repeated-write and large-block tests verify exact file contents. All 30 native five-target and release bundle checks pass on the scoped workaround, including cached ARM builds and all four packaged bundle smoke suites.

Closes #531.
Closes #532.

Documents the package boundary discussed in #533. No timestamp parser or additional formatting API is added to the native platform.

@lukewilliamboswell lukewilliamboswell changed the title Complete the 0.26.0 release notes and migration guide Complete 0.26.0 release notes and document rc3 feedback Oct 20, 2026
@lukewilliamboswell lukewilliamboswell changed the title Complete 0.26.0 release notes and document rc3 feedback Resolve final 0.26 feedback and complete the upgrade guide Oct 20, 2026
@lukewilliamboswell
lukewilliamboswell merged commit 8c69648 into main Oct 21, 2026
32 checks passed
@lukewilliamboswell
lukewilliamboswell deleted the release/0.26-final-notes branch October 21, 2026 00:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant