Skip to content

docs: cover four undocumented behaviour changes and the CLI flags the reference pages lack - #43044

Open
robobun wants to merge 2 commits into
mainfrom
robobun/f4e9d3ae/docs-changes-since-1-4-2
Open

robobun wants to merge 2 commits into
mainfrom
robobun/f4e9d3ae/docs-changes-since-1-4-2

Conversation

@robobun

@robobun robobun commented Sep 17, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

Fix

Background

  • The files in docs/snippets/cli/ are hand-written <ParamField> lists that the command pages import. No script generates them.
  • HTTP pipelining: a client sends several requests on one connection before it reads the first response. RFC 9112 section 9.6 forbids the server to process requests behind one that closes the connection.
  • A CSS module exports an object that maps each local class name to its scoped name.
Notes

Not in this PR, because another open PR or file already has it

Output on main 630e921 (debug build, linux x64)

CompressionStream, 160 kB of repeated text:

gzip         default 901 | level 0: 160033 | level 1: 1735 | level 9: 276
brotli       default 20 | level 0: 100 | level 4: 20 | level 11: 20
gzip 99  -> RangeError: The compression level must be an integer between 0 and 9 for gzip
gzip 1.5 -> RangeError: The compression level must be an integer between 0 and 9 for gzip
brotli 12 -> RangeError: The compression level must be an integer between 0 and 11 for brotli
zstd 0   -> RangeError: The compression level must be an integer between 1 and 22 for zstd

Bun.serve, one write of pipelined requests over a raw socket. rc is a request that the handler answers with a Connection: close header:

/a (Connection: close), /b        handlers ran: /a      server closed: true
/0, /1 (Connection: close), /2, /3  handlers ran: /0 /1   server closed: true
/a (HTTP/1.0), /b                 handlers ran: /a      server closed: true
/a (HTTP/1.0 + keep-alive), /b    handlers ran: /a      server closed: true
/a, /b?rc, /c, /d                 handlers ran: /a /b   server closed: true
/a, /b, /c                        handlers ran: /a /b /c  server closed: false

The canary at c6b7fcb (before #33005) runs the handler of every request in all six cases. A static Response in routes with a Connection: close header does not close the connection on main, so the new text names only the response that a handler returns.

CSS module with one rule for each of the five pseudo-elements, for example ::view-transition-group(.slide):

::view-transition-group(.slide_-MSaAA) {
::view-transition-group-children(.kids_-MSaAA) {
::view-transition-image-pair(.pair_-MSaAA) {
::view-transition-old(.old_-MSaAA) {
::view-transition-new(.new_-MSaAA) {
{"card":"card_-MSaAA","slide":"slide_-MSaAA","kids":"kids_-MSaAA","pair":"pair_-MSaAA","old":"old_-MSaAA","new":"new_-MSaAA"}

bun test with a 20 s test, signal sent after 3 s from Bun.spawn. Each test file writes a marker file from afterEach and afterAll:

serial SIGTERM:      exitCode=null signalCode=SIGTERM  afterEach ran=false afterAll ran=false
serial SIGINT:       exitCode=null signalCode=SIGINT   afterEach ran=false afterAll ran=false
parallel=2 SIGTERM:  exitCode=143  signalCode=null     afterEach ran=false afterAll ran=false
parallel=2 SIGINT:   exitCode=130  signalCode=null

A shell reports 143 and 130 for the two serial rows.

CLI flags

  • I compared the <ParamField path> values of each page with the flags of bun <command> --help. src/runtime/cli/ is the same at c6b7fcb and 630e921.
  • I ran these flags on the debug build and saw the documented effect: --changed, --changed=HEAD~1, --no-env-file, --no-warnings, --disable-warning, --redirect-warnings, --tls-min-v1.3, --tls-max-v1.2, --feature, --cron-title with --cron-period (both are required, and Bun calls scheduled()), --experimental-stream-iter.
  • --heap-prof-interval: src/runtime/cli/Arguments.rs:1383 accepts the flag for Node.js parity and does not use it. The text follows docs/project/benchmarking.mdx, not the help text.
  • --quiet on the install pages: it selects LogLevel::Quiet, and show_progress() is false for it. bun install --quiet prints the same lines as bun install. The text is the one link.mdx and patch.mdx already use.
  • publish.mdx is not changed. The help of bun publish lists the shared install flags (--global, --lockfile-only, --linker), and the page documents only the flags that apply to a publish.
  • prettier --check passes on every changed file.

no test proof · iteration 0 · docs-only change; test-proof not applicable

- CompressionStream(format, { level }) and its RangeError
- Bun.serve and Connection: close with pipelined requests
- view transition names and classes in CSS modules
- bun test after SIGINT or SIGTERM: the exit status is 128 + the signal
  number, and no hooks run
- bun test: --parallel, --parallel-delay, --isolate, --no-isolate, --shard,
  --timings, --update-timings, --only, --path-ignore-patterns, --changed,
  --only-failures, --no-orphans
- bun run: the --cpu-prof and --heap-prof families, the process warning
  flags, --tls-min-v1.x and --tls-max-v1.x, --no-env-file, --no-orphans,
  --feature, --insecure-http-parser, the experimental fetch and stream
  flags, --cron-title and --cron-period
- bun build: --no-split-require
- install family: --offline, --prefer-offline, --quiet, and on the pages
  that lacked them --linker, --minimum-release-age, --cpu and --os
- bun update: --interactive, --exact, --filter, --recursive
@coderabbitai

coderabbitai Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Warning

Review paused — included plan limit reached

Keep your review moving with free on-demand reviews.

  • Run this review for free

On-demand reviews are free for the next 3 days.

  • Ask an admin to make reviews automatic

Open in CodeRabbit

Reviews can continue after your included limit without a manual trigger. An admin must approve usage-based billing.

Promotion and pricing details

On-demand reviews are free for the next 3 days. After that, they cost $0.25 per reviewed file.

Review limit details

Or wait 4 minutes for your next included review.

Check out review usage here.

Limit details: You’ve used all 10 included reviews currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Essentials

Run ID: c0db9eb9-b589-4771-8906-0122650e82be

📥 Commits

Reviewing files that changed from the base of the PR and between 630e921 and 3e17890.

📒 Files selected for processing (14)
  • docs/bundler/css.mdx
  • docs/runtime/http/server.mdx
  • docs/runtime/nodejs-compat.mdx
  • docs/snippets/cli/add.mdx
  • docs/snippets/cli/build.mdx
  • docs/snippets/cli/install.mdx
  • docs/snippets/cli/link.mdx
  • docs/snippets/cli/outdated.mdx
  • docs/snippets/cli/patch.mdx
  • docs/snippets/cli/remove.mdx
  • docs/snippets/cli/run.mdx
  • docs/snippets/cli/test.mdx
  • docs/snippets/cli/update.mdx
  • docs/test/runtime-behavior.mdx

Comment @coderabbitai help to get the list of available commands.

@robobun

robobun commented Sep 17, 2026 •

Copy link
Copy Markdown
Collaborator Author
Updated 2:34 AM PT - Sep 17th, 2026

✅ @robobun, your commit 3e1789063120e3bebcbba1667294783da9e5675e passed in Build #116956! 🎉


🧪   To try this PR locally:

bunx bun-pr 43044

That installs a local version of the PR into your bun-43044 executable, so you can run:

bun-43044 --bun

@robobun

robobun commented Sep 17, 2026

Copy link
Copy Markdown
Collaborator Author

Status

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code review found no issues

No high-confidence issues detected in this change.

8 verified lower-impact observations (convention, logging or cleanup points) were not posted.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants