1377 Commits

Author SHA1 Message Date
robobun
9bb4a6af19 Optimize uSockets sweep timer to only run when connections exist (#21456)
## Summary

This PR optimizes the uSockets sweep timer to only run when there are
active connections that need timeout checking, rather than running
continuously even when no connections exist.

**Problem**: The sweep timer was running every 4 seconds
(LIBUS_TIMEOUT_GRANULARITY) regardless of whether there were any active
connections, causing unnecessary CPU usage when Bun applications are
idle.

**Solution**: Implement reference counting for active sockets so the
timer is only enabled when needed.

## Changes

- **Add sweep_timer_count field** to both C and Zig loop data structures
- **Implement helper functions** `us_internal_enable_sweep_timer()` and
`us_internal_disable_sweep_timer()`
- **Timer lifecycle management**:
  - Timer starts disabled when loop is initialized
  - Timer enables when first socket is linked (count 0→1)
  - Timer disables when last socket is unlinked (count 1→0)
- **Socket coverage**: Applied to both regular sockets and connecting
sockets that need timeout sweeping
- **Listen socket exclusion**: Listen sockets don't increment the
counter as they don't need timeout checking

## Files Modified

- `packages/bun-usockets/src/internal/loop_data.h` - Added
sweep_timer_count field
- `src/deps/uws/InternalLoopData.zig` - Updated Zig struct to match C
struct
- `packages/bun-usockets/src/loop.c` - Helper functions and
initialization
- `packages/bun-usockets/src/internal/internal.h` - Function
declarations
- `packages/bun-usockets/src/context.c` - Socket link/unlink
modifications

## Test Results

Verified the optimization works correctly:

1. ** No timer during idle**: 5-second idle test showed no sweep timer
activity
2. ** Timer activates with connections**: Timer enables when server
starts listening
3. ** Timer runs periodically**: Sweep timer callbacks occur every ~4
seconds when connections are active
4. ** Timer deactivates**: Timer disables when connections are closed

## Performance Impact

This change significantly reduces CPU usage for idle Bun applications
with no active HTTP connections by eliminating unnecessary timer
callbacks. The optimization maintains all existing timeout functionality
while only running the sweep when actually needed.

## Test plan

- [x] Verify no timer activity during idle periods
- [x] Verify timer enables when connections are created
- [x] Verify timer runs at expected intervals when active
- [x] Verify timer disables when connections are closed
- [x] Test with HTTP server scenarios
- [ ] Run existing HTTP server test suite to ensure no regressions

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

Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
2025-08-01 21:01:30 -07:00
pfg
bb67f2b345 Add clearAllMocks to mock. (#21555)
Fixes #21437, Fixes #18820
2025-08-01 19:30:51 -07:00
Alistair Smith
d0edcc69ae Support TypeScript 5.9 (#21539)
### What does this PR do?

Fixes #21535

### How did you verify your code works?
2025-08-01 16:09:44 -07:00
pfg
0cf2b71ff1 expect.toHaveReturnedWith/toHaveLastReturnedWith/toHaveNthReturnedWith (#21363)
Fixes #10380

DRAFT: not reviewed

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-01 15:09:03 -07:00
pfg
7a31108019 Implement expectTypeOf (#21513)
Fixes #7569 

This adds expectTypeOf, but not the experimental `--typecheck` flag from
vitest. To use it, you need to typecheck manually with `bunx tsc
--noEmit` in addition to `bun test`

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-01 12:11:03 -07:00
Jack W.
7d4f6efe7a This does NOT return undefined (#21542)
You updated the types but not the comment in Bun 1.1.14

### What does this PR do?

Removes the sentence "This returns `undefined`." in the SQLite
Statement.run function

### How did you verify your code works?

It says this on the website

<img width="787" height="90" alt="Screenshot 2025-08-01 at 2 05 09 PM"
src="https://github.com/user-attachments/assets/63259ab3-b5fd-4392-bf69-8e297f4922f2"
/>
2025-08-01 11:11:37 -07:00
Alistair Smith
8efe7945eb More strictly type bun:sqlite transaction functions (#21495)
### What does this PR do?

Fixes #21479

### How did you verify your code works?

bun-types test updated
2025-07-31 22:06:55 -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
f380458bae Add remoteRoot/localRoot mapping for VSCode (#19884)
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Co-authored-by: robobun <robobun@oven.sh>
2025-07-18 04:19:15 -07:00
Michael H
f4444c0e4d fix --tsconfig-override (#21045) 2025-07-15 22:00:17 -07:00
Michael H
8898c4c455 Vscode test runner support (#20645) 2025-07-13 21:57:44 -07:00
Jarred Sumner
a976a048b7 Delete unused and confusing bun-internal-test package (#21008)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2025-07-13 02:23:50 -07:00
Alistair Smith
c594e7ecc1 Add non-default-referenced ambient declaration file to globally declare test runner symbols (#20977) 2025-07-11 18:06:45 -07:00
Alistair Smith
70c22d41d6 types: NodeJS.ProcessEnv does not extend ImportMetaEnv (#20976) 2025-07-11 14:16:11 -07:00
Alistair Smith
a8780632a6 fix typo 2025-07-10 22:56:21 -07:00
Alistair Smith
65ccb39778 Convert bun-types.test.ts to TS compiler api, fix forward-declared empty interfaces (#20960) 2025-07-10 22:47:42 -07:00
Alistair Smith
6a62784e89 fix(types): Non-empty TextDecoderStream and TextEncoderStream when outside DOM (#20953) 2025-07-10 17:48:45 -07:00
Michael H
000ae5c6b9 types: Bun.serve routes supportes Bun.file's (#20919) 2025-07-10 11:49:26 -07:00
Michael H
5dbaf08e4a Bun Lambda keep old bun url (#20941) 2025-07-10 03:35:44 -07:00
Jarred Sumner
55a9cccac0 bun.sh -> bun.com (#20909) 2025-07-10 00:10:43 -07:00
190n
8b7888aeee [publish images] upload encrypted core dumps from CI (#19189)
Co-authored-by: 190n <7763597+190n@users.noreply.github.com>
Co-authored-by: Ashcon Partovi <ashcon@partovi.net>
2025-07-09 15:42:11 -07:00
Alistair Smith
d4a52f77c7 Move ReadableStream#{text,bytes,json,blob} to global (#20879)
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2025-07-07 23:06:27 -07:00
Alistair Smith
19a855e02b types: Introduce SQL.Helper in Bun.sql (#20809)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-07-07 17:47:51 -07:00
CountBleck
d306e65d0e Remove duplicate toBeInstanceOf type declaration for Expect (#20844) 2025-07-05 17:25:52 -07:00
Adam
7ba4b1d01e Fix: deprecated goo.gl links in snapshots raised in issue #20086 (#20424) 2025-07-05 00:58:42 -07:00
Jarred Sumner
27c979129c Introduce Bun.randomUUIDv5 (#20782)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: jarred <jarred@bun.sh>
Co-authored-by: Meghan Denny <meghan@bun.sh>
2025-07-02 22:47:14 -07:00
Zack Radisic
0b9bab34d8 SSG (#20745)
Co-authored-by: Alistair Smith <hi@alistair.sh>
2025-07-02 20:06:43 -07:00
Jarred Sumner
74e65317f2 Fix type for HTML imports (#20744) 2025-06-30 23:36:41 -07:00
pfg
3223da2734 ReadableStream .text(), .json(), .arrayBuffer(), .bytes() (#20694)
Co-authored-by: pfgithub <6010774+pfgithub@users.noreply.github.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2025-06-28 00:27:57 -07:00
Ciro Spaciari
964f2a8941 fix(fetch/s3) Handle backpressure when upload large bodies (#20481)
Co-authored-by: cirospaciari <6379399+cirospaciari@users.noreply.github.com>
2025-06-27 20:52:46 -07:00
Ciro Spaciari
c15190990c fix(sockets) some fixes and improvements (#20652) 2025-06-26 15:57:06 -07:00
Jarred Sumner
4cc61a1b8c Fix NODE_PATH for bun build (#20576)
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2025-06-22 20:51:45 -07:00
Michael H
b9e72d0d2e Make bunx work with npm i -g bun on windows (#20471) 2025-06-18 12:00:16 -07:00
Jarred Sumner
f46df399eb Update package.json 2025-06-15 19:30:11 -07:00
berzan
155475693b Change clip-path property to clipPath. (#20409) 2025-06-15 13:19:56 -07:00
Meghan Denny
139f2b23a2 chore: trim trailing space in uws (#20388) 2025-06-15 08:59:12 -07:00
pfg
e0924ef226 Implement require('tls').getCACertificates() (#20364)
Co-authored-by: pfgithub <6010774+pfgithub@users.noreply.github.com>
2025-06-13 17:30:04 -07:00
Meghan Denny
a445b45e55 empty commit to trigger formatting ci (#20378)
Co-authored-by: nektro <5464072+nektro@users.noreply.github.com>
2025-06-13 15:18:28 -07:00
Christian Rishøj
82b34bbbdd feat(sqlite): Add columnTypes and declaredTypes to Statement (#20232)
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2025-06-13 19:48:37 +02:00
Kuba Ellwart
4329a66a1d fix(types): make the RedisClient.del accept spread keys by default (#20348) 2025-06-12 17:06:51 -07:00
Alistair Smith
3d19c1156c support multiple keys in RedisClient#del (#20307) 2025-06-11 17:31:35 -07:00
Jarred Sumner
8750f0b884 Add FileRoute for serving files (#20198)
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Co-authored-by: Dylan Conway <dylan.conway567@gmail.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Ciro Spaciari <ciro.spaciari@gmail.com>
2025-06-10 19:41:21 -07:00
Jarred Sumner
601b8e3aaa Add CLAUDE.md to bun-types 2025-06-09 15:06:26 -07:00
Jarred Sumner
c9761d4aa6 Fixes flaky test-http-pipeline-requests-connection-leak.js (#20248) 2025-06-07 05:19:11 -07:00
Jarred Sumner
27abb51561 Add fallback for ADDRCONFIG like Chrome's, avoid glibc UDP port 0 hangs (#19753)
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2025-06-05 20:20:00 -07:00
Jarred Sumner
538caa4d5e Fix incorrect typescript type 2025-06-05 18:28:00 -07:00
Joel Shepherd
13c5b0d9cb Added rapidhash algorithm (#20163) 2025-06-03 03:34:35 -07:00
Kuba Ellwart
d6e45afef9 Support Optional Message Argument in RedisClient.ping() (#20161) 2025-06-03 02:33:10 -07:00
Roman A
13ea970852 A couple grammar fixes (#20096) 2025-05-31 19:14:51 -07:00
Jarred Sumner
010ef4d119 More comments in the socket type definition (#19410)
Co-authored-by: Alistair Smith <hi@alistair.sh>
2025-05-30 19:12:30 -07:00