Commit Graph

13093 Commits

Author SHA1 Message Date
Ali
1058d0dee4 fix import.meta.url in hmr (#21386)
### What does this PR do?

<!-- **Please explain what your changes do**, example: -->
use `window.location.origin` in browser instead of `bun://` .
should fix [9910](https://github.com/oven-sh/bun/issues/19910)
<!--

This adds a new flag --bail to bun test. When set, it will stop running
tests after the first failure. This is useful for CI environments where
you want to fail fast.

-->

- [ ] Documentation or TypeScript types (it's okay to leave the rest
blank in this case)
- [x] Code changes

### How did you verify your code works?

<!-- **For code changes, please include automated tests**. Feel free to
uncomment the line below -->

<!-- I wrote automated tests -->

<!-- If JavaScript/TypeScript modules or builtins changed:

- [ ] I included a test for the new code, or existing tests cover it
- [ ] I ran my tests locally and they pass (`bun-debug test
test-file-name.test`)

-->

<!-- If Zig files changed:

- [ ] I checked the lifetime of memory allocated to verify it's (1)
freed and (2) only freed when it should be
- [ ] I included a test for the new code, or an existing test covers it
- [ ] JSValue used outside of the stack is either wrapped in a
JSC.Strong or is JSValueProtect'ed
- [ ] I wrote TypeScript/JavaScript tests and they pass locally
(`bun-debug test test-file-name.test`)
-->

<!-- If new methods, getters, or setters were added to a publicly
exposed class:

- [ ] I added TypeScript types for the new methods, getters, or setters
-->

<!-- If dependencies in tests changed:

- [ ] I made sure that specific versions of dependencies are used
instead of ranged or tagged versions
-->

<!-- If a new builtin ESM/CJS module was added:

- [ ] I updated Aliases in `module_loader.zig` to include the new module
- [ ] I added a test that imports the module
- [ ] I added a test that require() the module
-->
2025-07-26 20:31:45 -07:00
Zack Radisic
679a07caef Fix assertion failure in dev server related to deleting files (#21304)
### What does this PR do?

Fixes an assertion failure in dev server which may happen if you delete
files. The issue was that `disconnectEdgeFromDependencyList(...)` was
wrong and too prematurely setting `g.first_deps[idx] = .none`.

Fixes #20529

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-26 16:16:55 -07:00
pfg
0bd73b4363 Fix toIncludeRepeated (#21366)
Fixes #12276: toIncludeRepeated should check for the exact repeat count
not >=

This is a breaking change because some people may be relying on the
existing behaviour. Should it be feature-flagged for 1.3?

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-25 22:22:04 -07:00
Meghan Denny
bbdc3ae055 node: sync updated tests (#21147) 2025-07-25 19:14:22 -07:00
Meghan Denny
81e08d45d4 node: fix test-worker-uncaught-exception-async.js (#21150) 2025-07-25 19:13:48 -07:00
pfg
89eb48047f Auto reduce banned word count (#20929)
Co-authored-by: pfgithub <6010774+pfgithub@users.noreply.github.com>
2025-07-25 18:13:43 -07:00
taylor.fish
712d5be741 Add safety checks to MultiArrayList and BabyList (#21063)
Ensure we aren't using multiple allocators with the same list by storing
a pointer to the allocator in debug mode only.

This check is stricter than the bare minimum necessary to prevent
illegal behavior, so CI may reveal certain uses that fail the checks but
don't cause IB. Most of these cases should probably be updated to comply
with the new requirements—we want these types' invariants to be clear.

(For internal tracking: fixes ENG-14987)
2025-07-25 18:12:21 -07:00
taylor.fish
60823348c5 Optimize WaitGroup implementation (#21260)
`add` no longer locks a mutex, and `finish` no longer locks a mutex
except for the last task. This could meaningfully improve performance in
cases where we spawn a large number of tasks on a thread pool. This
change doesn't alter the semantics of the type, unlike the standard
library's `WaitGroup`, which also uses atomics but has to be explicitly
reset.

(For internal tracking: fixes ENG-19722)

---------

Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2025-07-25 18:12:12 -07:00
190n
2f0ddf3018 gamble.ts: print summary of runs so far before exit upon ctrl-c (#21296)
### What does this PR do?

lets you get useful info out of this script even if you set the number
of attempts too high and you don't want to wait

### How did you verify your code works?

local testing

(I cancelled CI because this script is not used anywhere in CI so it
wouldn't tell us anything useful)
2025-07-25 17:46:34 -07:00
190n
1ab76610cf [STAB-861] Suppress known-benign core dumps in CI (#21321)
### What does this PR do?

- for these kinds of aborts which we test in CI, introduce a feature
flag to suppress core dumps and crash reporting only from that abort,
and set the flag when running the test:
    - libuv stub functions
- Node-API abort (used in particular when calling illegal functions
during finalizers)
    - passing `process.kill` its own PID
- core dumps are suppressed with `setrlimit`, and crash reporting with
the new `suppress_reporting` field. these suppressions are only engaged
right before crashing, so we won't ignore new kinds of crashes that come
up in these tests.
- for the test bindings used to test the crash handler in
`run-crash-handler.test.ts`, disables core dumps but does not disable
crash reporting (because crashes get reported to a server that the test
is running to make sure they are reported)
- fixes a panic when printing source code around an error containing
`\n\r`
- updates the code where we clone vendor tests to checkout the right tag
- adds `vendor/elysia/test/path/plugin.test.ts` to
no-validate-exceptions
- this failure was exposed by starting to test the version of elysia we
have been intending to test. the crash trace suggests it may be fixed by
#21307.
- makes dumping core or uploading a crash report count as a failing test
- this ensures we don't realize a crash has occurred if it happened in a
subprocess and the main test doesn't adequately check the exit code. to
spawn a subprocess you expect to fail, prefer `expect(code).toBe(1)`
over `expect(code).not.toBe(0)`. if you really expect multiple possible
erroneous exit codes, you might try `expect(signal).toBeNull()` to still
disallow crashes.

### How did you verify your code works?

Running affected tests on a Linux machine with core dumps set up and
checking no new ones appear.

https://buildkite.com/bun/bun/builds/21465 has no core dumps.
2025-07-25 16:22:04 -07:00
taylor.fish
d3927a6e09 Fix isolated install atomics/synchronization (#21365)
Also fix a race condition with hardlinking on Windows during hoisted
installs, and a bug in the process waiter thread implementation causing
items to be skipped.

(For internal tracking: fixes STAB-850, STAB-873, STAB-881)
2025-07-25 16:17:50 -07:00
robobun
8424caa5fa Fix bounds check in lexer for single # character (#21341) 2025-07-25 13:59:33 -07:00
robobun
3e6d792b62 Fix PostgreSQL index out of bounds crash during batch inserts (#21311) (#21316)
## Summary

Fixes the "index out of bounds: index 0, len 0" crash that occurs during
large batch PostgreSQL inserts, particularly on Windows systems.

The issue occurred when PostgreSQL DataRow messages contained data but
the `statement.fields` array was empty (len=0), causing crashes in
`DataCell.Putter.putImpl()`. This typically happens during large batch
operations where there may be race conditions or timing issues between
RowDescription and DataRow message processing.

## Changes

- **Add bounds checking** in `DataCell.Putter.putImpl()` before
accessing `fields` and `list` arrays
(src/sql/postgres/DataCell.zig:1043-1050)
- **Graceful degradation** - return `false` to ignore extra fields
instead of crashing
- **Debug logging** to help diagnose field metadata issues
- **Comprehensive regression tests** covering batch inserts, empty
results, and concurrent operations

## Test Plan

- [x] Added regression tests in `test/regression/issue/21311.test.ts`
- [x] Tests pass with the fix: All 3 tests pass with 212 expect() calls
- [x] Existing PostgreSQL tests still work (no regressions)

The fix prevents the crash while maintaining safe operation, allowing
PostgreSQL batch operations to continue working reliably.

## Root Cause

The crash occurred when:
1. `statement.fields` array was empty (len=0) due to timing issues
2. PostgreSQL DataRow messages contained actual data 
3. Code tried to access `this.list[index]` and `this.fields[index]`
without bounds checking

This was particularly problematic on Windows during batch operations due
to potential differences in:
- Network stack message ordering
- Memory allocation behavior
- Threading/concurrency during batch operations
- Statement preparation timing

Fixes #21311

🤖 Generated with [Claude Code](https://claude.ai/code)

---------

Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Ciro Spaciari <ciro.spaciari@gmail.com>
2025-07-25 12:53:49 -07:00
aspizu
9bb2474adb fix: display of eq token in shell lexer (#21275)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Zack Radisic <56137411+zackradisic@users.noreply.github.com>
2025-07-25 12:47:48 -07:00
pfg
fe94a36dbc Make execArgv empty when in compiled executable (#21298)
```ts
// a.js
console.log({
    argv: process.argv,
    execArgv: process.execArgv,
});
```

```diff
$> node a.js -a --b
{
  argv: [
    '/opt/homebrew/Cellar/node/24.2.0/bin/node',
    '/tmp/a.js',
    '-a',
    '--b'
  ],
  execArgv: []
}

$> bun a.js -a --b
{
  argv: [ "/Users/pfg/.bun/bin/bun", "/tmp/a.js",
    "-a", "--b"
  ],
  execArgv: [],
}

$> bun build --compile a.js --outfile=a
   [5ms]  bundle  1 modules
  [87ms] compile  

$> ./a -a --b

{
  argv: [ "bun", "/$bunfs/root/a", "-a", "--b" ],
- execArgv: [ "-a", "--b" ],
+ execArgv: [],
}
```

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-25 12:47:10 -07:00
pfg
cb2887feee Fix Bun.resolve() returning a promise throwing a raw exception instead of an Error (#21302)
I haven't checked all uses of tryTakeException but this bug is probably
not the only one.

Caught by running fuzzy-wuzzy with debug logging enabled. It tried to
print the exception. Updates fuzzy-wuzzy to have improved logging that
can tell you what was last executed before a crash.

---------

Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-25 12:46:33 -07:00
Meghan Denny
64361eb964 zig: delete deprecated bun.jsc.Maybe (#21327)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: taylor.fish <contact@taylor.fish>
2025-07-25 12:38:06 -07:00
Meghan Denny
3413a2816f node:fs: fix leak of mkdir return value (#21360) 2025-07-25 01:00:20 -07:00
190n
97a530d832 [publish images] [BAPI-2103] use gdb and bun.report code to print stack traces upon crash in CI (#21143)
### What does this PR do?

Closes #13012

On Linux, when any Bun process spawned by `runner.node.mjs` crashes, we
run GDB in batch mode to print a backtrace from the core file.

And on all platforms, we run a mini `bun.report` server which collects
crashes reported by any Bun process executed during the tests, and after
each test `runner.node.mjs` fetches and prints any new crashes from the
server.

<details>
<summary>example 1</summary>

```
#0  crash_handler.crash () at crash_handler.zig:1513
#1  0x0000000002cf4020 in crash_handler.crashHandler (reason=..., error_return_trace=0x0, begin_addr=...) at crash_handler.zig:479
#2  0x0000000002cefe25 in crash_handler.handleSegfaultPosix (sig=<optimized out>, info=<optimized out>) at crash_handler.zig:800
#3  0x00000000045a1124 in WTF::jscSignalHandler (sig=11, info=0x7ffe044e30b0, ucontext=0x0) at vendor/WebKit/Source/WTF/wtf/threads/Signals.cpp:548
#4  <signal handler called>
#5  JSC::JSCell::type (this=0x0) at vendor/WebKit/Source/JavaScriptCore/runtime/JSCellInlines.h:137
#6  JSC::JSObject::getOwnNonIndexPropertySlot (this=0x150bc914fe18, vm=..., structure=0x150a0102de50, propertyName=..., slot=...) at vendor/WebKit/Source/JavaScriptCore/runtime/JSObject.h:1348
#7  JSC::JSObject::getPropertySlot<false> (this=0x150bc914fe18, globalObject=0x150b864e0088, propertyName=..., slot=...) at vendor/WebKit/Source/JavaScriptCore/runtime/JSObject.h:1433
#8  JSC::JSValue::getPropertySlot (this=0x7ffe044e4880, globalObject=0x150b864e0088, propertyName=..., slot=...) at vendor/WebKit/Source/JavaScriptCore/runtime/JSCJSValueInlines.h:1108
#9  JSC::JSValue::get (this=0x7ffe044e4880, globalObject=0x150b864e0088, propertyName=..., slot=...) at vendor/WebKit/Source/JavaScriptCore/runtime/JSCJSValueInlines.h:1065
#10 JSC::LLInt::performLLIntGetByID (bytecodeIndex=..., codeBlock=0x150b861e7740, globalObject=0x150b864e0088, baseValue=..., ident=..., metadata=...) at vendor/WebKit/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:878
#11 0x0000000004d7b055 in llint_slow_path_get_by_id (callFrame=0x7ffe044e4ab0, pc=0x150bc92ea0e7) at vendor/WebKit/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:946
#12 0x0000000003dd6042 in llint_op_get_by_id ()
#13 0x0000000000000000 in ?? ()
```

</details>

<details>
<summary>example 2</summary>

```
  #0  crash_handler.crash () at crash_handler.zig:1513
  #1  0x0000000002c5db80 in crash_handler.crashHandler (reason=..., error_return_trace=0x0, begin_addr=...) at crash_handler.zig:479
  #2  0x0000000002c59f60 in crash_handler.handleSegfaultPosix (sig=<optimized out>, info=<optimized out>) at crash_handler.zig:800
  #3  0x00000000042ecc88 in WTF::jscSignalHandler (sig=11, info=0xfffff60141b0, ucontext=0xfffff6014230) at vendor/WebKit/Source/WTF/wtf/threads/Signals.cpp:548
  #4  <signal handler called>
  #5  bun.js.api.FFIObject.Reader.u8 (globalObject=0x4000554e0088) at /var/lib/buildkite-agent/builds/ip-172-31-75-92/bun/bun/src/bun.js/api/FFIObject.zig:65
  #6  bun.js.jsc.host_fn.toJSHostCall__anon_1711576 (globalThis=0x4000554e0088, args=...) at /var/lib/buildkite-agent/builds/ip-172-31-75-92/bun/bun/src/bun.js/jsc/host_fn.zig:97
  #7  bun.js.jsc.host_fn.DOMCall("Reader"[0..6],bun.js.api.FFIObject.Reader,"u8"[0..2],.{ .reads = .{ ... }, .writes = .{ ... } }).slowpath (globalObject=0x4000554e0088, thisValue=70370172175040, arguments_ptr=0xfffff6015460, arguments_len=1) at /var/lib/buildkite-agent/builds/ip-172-31-75-92/bun/bun/src/bun.js/jsc/host_fn.zig:490
  #8  0x000040003419003c in ?? ()
  #9  0x0000400055173440 in ?? ()
```

</details>

I used GDB instead of LLDB (as the branch name suggests) because it
seems to produce more useful stack traces with musl libc.

- [x] on linux, use gdb to print from core dump of main bun process
crashed
- [x] on linux, use gdb to print from all new core dumps (so including
bun subprocesses spawned by the test that crashed)
- [x] on all platforms, use a mini bun.report server to print a
self-reported trace (depends on oven-sh/bun.report#15; for now our
package.json points to a commit on the branch of that repo)
- [x] fix trying to fetch stack traces too early on windows
- [x] use output groups so the traces show up alongside the log for the
specific test instead of having to find it in the logs from the entire
run
- [x] get oven-sh/bun.report#15 merged, and point to a bun.report commit
on the main branch instead of the PR branch in package.json

### How did you verify your code works?

Manually, and in CI with a crashing test.

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-24 23:32:54 -07:00
Meghan Denny
72a6278b3f Delete test/js/node/test/parallel/test-http-url.parse-https.request.js
flaky on macos ci atm
2025-07-24 19:06:38 -07:00
Meghan Denny
bd232189b4 node: fix test-http-server-keepalive-req-gc.js (#21333) 2025-07-24 13:46:50 -07:00
Meghan Denny
87df7527bb node: fix test-http-url.parse-https.request.js (#21335) 2025-07-24 13:44:55 -07:00
190n
a1f756fea9 Fix running bun test on multiple node:test tests (#19354)
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-24 11:48:55 -07:00
190n
03dfd7d96b Run callback passed to napi_module_register after dlopen returns instead of during call (#20478) 2025-07-24 11:46:56 -07:00
Meghan Denny
9fa8ae9a40 fixes #21274 (#21278)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-23 22:31:42 -07:00
Ciro Spaciari
e4dd780c2a fix(s3) ref before calling unlink (#21317)
Co-authored-by: Meghan Denny <meghan@bun.sh>
2025-07-23 22:23:58 -07:00
taylor.fish
76c623817f Fix Bake WatcherAtomics (#21328) 2025-07-23 22:23:35 -07:00
Dylan Conway
f90a007593 [PKG-513, ENG-19757] bun install: fix non-ascii edge case and simplify task lifetimes (#21320) 2025-07-23 19:23:54 -07:00
Meghan Denny
ea12cb5801 ci: show the retries count on flaky tests (#21325)
Co-authored-by: 190n <ben@bun.sh>
Co-authored-by: taylor.fish <contact@taylor.fish>
2025-07-23 19:11:18 -07:00
Meghan Denny
75027e9616 ci: give windows a bit more time for tests
noticed in the wild napi compiling slow
2025-07-23 18:04:20 -07:00
Meghan Denny
e8d0935717 zig: delete deprecated some bun.jsc apis (#21309) 2025-07-23 17:10:58 -07:00
190n
ace81813fc [STAB-851] fix debug-coredump.ts (#21318) 2025-07-23 12:23:14 -07:00
Zack Radisic
71e2161591 Split DevServer.zig into multiple files (#21299)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-23 05:29:22 +00:00
taylor.fish
07cd45deae Refactor Zig imports and file structure (part 1) (#21270)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-22 17:51:38 -07:00
Meghan Denny
73d92c7518 Revert "Fix beforeAll hooks running for unmatched describe blocks when using test filters" (#21292)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-22 12:53:53 -07:00
Jarred Sumner
5c44553a02 Update vscode-release.yml 2025-07-21 23:25:57 -07:00
Michael H
f4116bfa7d followup for vscode test runner (#21024)
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-21 23:21:05 -07:00
Jarred Sumner
5aeede1ac7 Quieter build commands 2025-07-21 21:56:41 -07:00
Meghan Denny
6d2a0e30f5 test: node: revert the previous tmpdirName commit 2025-07-21 21:34:00 -07:00
Jarred Sumner
382fe74fd0 Remove noisy copy_file logs on Linux 2025-07-21 21:24:35 -07:00
Jarred Sumner
aac646dbfe Suppress linker alignment warnings in debug build on macOS 2025-07-21 21:24:35 -07:00
Jarred Sumner
da90ad84d0 Fix windows build in git bash 2025-07-21 21:24:35 -07:00
robobun
6383c8f94c Fix beforeAll hooks running for unmatched describe blocks when using test filters (#21195)
Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-21 20:21:29 -07:00
robobun
718e7cdc43 Upgrade libarchive to v3.8.1 (#21250)
Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Zack Radisic <zack@theradisic.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-21 20:08:00 -07:00
robobun
cd54db1e4b Fix Windows cross-compilation missing executable permissions (#21268)
Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-21 19:47:00 -07:00
Jarred Sumner
171169a237 Update CLAUDE.md 2025-07-21 19:14:24 -07:00
Jarred Sumner
5fbd99e0cb Fix parsing bug with non-sha256 integrity hashes when migrating lockfiles (#21220) 2025-07-21 17:10:06 -07:00
pfg
60faa8696f Auto cpp->zig bindings (#20881)
Co-authored-by: pfgithub <6010774+pfgithub@users.noreply.github.com>
Co-authored-by: Ben Grant <ben@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
2025-07-21 16:26:07 -07:00
Meghan Denny
d2a4fb8124 test: node: much more robust tmpdirName for use with --parallel 2025-07-21 15:56:32 -07:00
Meghan Denny
a4d031a841 meta: add a --parallel flag to the runner for faster local testing (#21140)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-21 15:17:19 -07:00