robobun
46e7a3b3c5
Implement birthtime support on Linux using statx syscall ( #23209 )
...
## Summary
- Adds birthtime (file creation time) support on Linux using the `statx`
syscall
- Stores birthtime in architecture-specific unused fields of the kernel
Stat struct (x86_64 and aarch64)
- Falls back to traditional `stat` on kernels < 4.11 that don't support
`statx`
- Includes comprehensive tests validating birthtime behavior
Fixes #6585
## Implementation Details
**src/sys.zig:**
- Added `StatxField` enum for field selection
- Implemented `statxImpl()`, `fstatx()`, `statx()`, and `lstatx()`
functions
- Stores birthtime in unused padding fields (architecture-specific for
x86_64 and aarch64)
- Graceful fallback to traditional stat if statx is not supported
**src/bun.js/node/node_fs.zig:**
- Updated `stat()`, `fstat()`, and `lstat()` to use statx functions on
Linux
**src/bun.js/node/Stat.zig:**
- Added `getBirthtime()` helper to extract birthtime from
architecture-specific storage
**test/js/node/fs/fs-birthtime-linux.test.ts:**
- Tests non-zero birthtime values
- Verifies birthtime immutability across file modifications
- Validates consistency across stat/lstat/fstat
- Tests BigInt stats with nanosecond precision
- Verifies birthtime ordering relative to other timestamps
## Test Plan
- [x] Run `bun bd test test/js/node/fs/fs-birthtime-linux.test.ts` - all
5 tests pass
- [x] Compare behavior with Node.js - identical behavior
- [x] Compare with system Bun - system Bun returns epoch, new
implementation returns real birthtime
🤖 Generated with [Claude Code](https://claude.com/claude-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>
2025-10-04 04:57:29 -07:00
taylor.fish
437e15bae5
Replace catch bun.outOfMemory() with safer alternatives ( #22141 )
...
Replace `catch bun.outOfMemory()`, which can accidentally catch
non-OOM-related errors, with either `bun.handleOom` or a manual `catch
|err| switch (err)`.
(For internal tracking: fixes STAB-1070)
---------
Co-authored-by: Dylan Conway <dylan.conway567@gmail.com >
2025-08-26 12:50:25 -07:00
taylor.fish
41b1efe12c
Rename disabled parameter in Output.scoped ( #21769 )
...
It's very confusing.
(For internal tracking: fixes STAB-977)
2025-08-11 20:19:34 -07: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
pfg
83760fc446
Sort imports in all files ( #21119 )
...
Co-authored-by: taylor.fish <contact@taylor.fish >
2025-07-21 13:26:47 -07:00
taylor.fish
a1c0f74037
Simplify/fix threading utilities ( #21089 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-18 22:02:36 -07:00
190n
6b14f77252
fix nonsense test name and elapsed time when beforeEach callback has thrown ( #21118 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-17 02:02:57 -07:00
taylor.fish
c6bce38ead
Fix incorrect negation of isEmpty() in assertion ( #20952 )
2025-07-10 15:34:46 -07:00
taylor.fish
5a1a3b425c
Refactor UnboundedQueue ( #20926 )
2025-07-10 14:46:10 -07:00
Dylan Conway
f24e8cb98a
implement "nodeLinker": "isolated" in bun install ( #20440 )
...
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
2025-07-09 00:19:57 -07:00
Meghan Denny
f9712ce309
make node:buffer,zlib,stream,fs exception checker clear ( #20494 )
2025-06-25 18:36:08 -07:00
Jarred Sumner
c7b1e5c709
Fix fs.watchFile ignoring atime ( #20575 )
...
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2025-06-22 18:22:41 -07:00
Meghan Denny
6b4662ff55
zig: .jsUndefined -> .js_undefined ( #20377 )
...
Co-authored-by: nektro <5464072+nektro@users.noreply.github.com >
2025-06-13 16:14:57 -07:00
Meghan Denny
dedd433cbf
zig: prefer .jsUndefined() over .undefined for JSValue ( #20332 )
2025-06-12 13:18:46 -07:00
Jarred Sumner
3ea6133c46
CI: Remove unused top-level decls in formatter in zig ( #19879 )
...
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com >
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-05-23 22:49:48 -07:00
190n
b5f31a6ee2
node:worker_threads: improve error messages, support environmentData, emit worker event ( #18768 )
...
Co-authored-by: 190n <7763597+190n@users.noreply.github.com >
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
2025-05-08 19:27:46 -07:00
chloe caruso
32c1dcb70d
dev server: unref source maps ( #19371 )
...
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-05-02 04:13:54 -07:00
chloe caruso
80aff24951
fix: require.extensions uses Strong instead of being clever ( #19231 )
2025-04-23 17:52:41 -07:00
chloe caruso
3349c995b5
no usingnamespace, organize jsc namespace, enable -fincremental ( #19122 )
...
Co-authored-by: Dylan Conway <35280289+dylan-conway@users.noreply.github.com >
2025-04-22 16:34:15 -07:00
chloe caruso
4ec410e0d7
internal: make @import("bun") work in zig ( #19096 )
2025-04-17 12:32:47 -07:00
chloe caruso
be77711a4e
delete usingnamespace in bindings generator ( #19020 )
2025-04-15 12:14:47 -07:00
chloe caruso
c1dc5f1b73
remove some usingnamespaces ( #18765 )
2025-04-10 14:16:30 -07:00
Jarred Sumner
4806e84cc1
Revert "remove many usingnamespace, introduce new ref count and ref leak debugging tools ( #18353 )"
...
This reverts commit a199b85f2b . It does not compile on Windows.
2025-04-01 08:35:51 -07:00
chloe caruso
a199b85f2b
remove many usingnamespace, introduce new ref count and ref leak debugging tools ( #18353 )
2025-03-31 17:17:38 -07:00
Jarred Sumner
c3be6732d1
Fixes #18572 ( #18578 )
...
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com >
Co-authored-by: Dylan Conway <35280289+dylan-conway@users.noreply.github.com >
2025-03-31 02:15:27 -07:00
Dylan Conway
c820b0c5e1
node:crypto: implement generatePrime(Sync) and checkPrime(Sync) (#18268 )
2025-03-18 11:48:24 -07:00
190n
ee6bdc1588
Restore TimerHeap but with behavior matching Node.js ( #17811 )
2025-02-28 19:24:30 -08:00
chloe caruso
4f58ff7933
changes to JSC.Strong, fix memory leaks in dev server ( #17738 )
2025-02-27 15:09:35 -08:00
190n
b3edef5989
node:timers fixes ( #16855 )
2025-02-26 16:45:02 -08:00
Meghan Denny
26d3688e53
zig: update to 0.14.0-dev ( #16862 )
...
Co-authored-by: nektro <5464072+nektro@users.noreply.github.com >
2025-02-01 01:11:02 -08:00
190n
af27f9e697
Allow WTF timers to participate in the event loop ( #15557 )
...
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
Co-authored-by: 190n <190n@users.noreply.github.com >
Co-authored-by: 190n <7763597+190n@users.noreply.github.com >
2025-01-28 17:47:53 -08:00
Jarred Sumner
f7c5b0d5fc
Fix Stat constructor, remove native code allocation for stat objects ( #16694 )
2025-01-24 04:40:00 -08:00
Jarred Sumner
b54f3f33f0
Clean up node:fs utimes, futimes , and lutimes ( #16634 )
2025-01-23 05:09:07 -08:00
chloe caruso
834ad11d48
get node:fs tests passing part 1 ( #16270 )
2025-01-14 20:53:02 -08:00
Jarred Sumner
2465ccae53
Re-sync our Mutex implementation with zig stdlib ( #16271 )
2025-01-08 21:09:27 -08:00
Meghan Denny
c3f63bcdc4
zig: make throwInvalidArguments use JSError ( #15305 )
2024-11-21 16:19:13 -08:00
Meghan Denny
1efab7f42d
zig: JSValue: make .get and .toSliceOrNull use JSError ( #15270 )
2024-11-20 13:26:41 -08:00
Meghan Denny
befb269b2d
zig: align fromJS methods to using JSError ( #15165 )
2024-11-15 22:14:18 -08:00
Meghan Denny
fdd8d35845
allow zig js host functions to return JSError ( #15120 )
2024-11-13 21:11:56 -08:00
dave caruso
32ddf343ee
bake: csr, streaming ssr, serve integration, safer jsvalue functions, &more ( #14900 )
...
Co-authored-by: paperdave <paperdave@users.noreply.github.com >
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
2024-11-13 18:19:12 -08:00
Meghan Denny
f8979b05b1
rid nearly all use of ExceptionRef in zig ( #15100 )
...
Co-authored-by: nektro <nektro@users.noreply.github.com >
2024-11-13 15:23:52 -08:00
dave caruso
c2c2048072
framework api: init / work in progress ( #13215 )
...
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
2024-09-12 16:44:03 -07:00
Meghan Denny
f7cb2da542
use .undefined literal instead of jsUndefined() call ( #12834 )
2024-07-26 04:03:55 -07:00
Meghan Denny
d97260869d
replace JSValue .callWithThis with always explicit .call ( #12789 )
2024-07-24 23:07:28 -07:00
Jarred Sumner
c2a5451e93
Fix argument validation with callbacks in node:fs ( #12412 )
2024-07-07 20:18:07 -07:00
Jarred Sumner
b0018465cc
WebKit upgrade ( #12246 )
...
Co-authored-by: Jarred-Sumner <Jarred-Sumner@users.noreply.github.com >
2024-07-01 23:27:59 -07:00
dave caruso
b76376f8a6
chore: upgrade zig to 0.13.0 ( #9965 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
Co-authored-by: Grigory <grigory.orlov.set@gmail.com >
Co-authored-by: Dylan Conway <35280289+dylan-conway@users.noreply.github.com >
Co-authored-by: Meghan Denny <hello@nektro.net >
Co-authored-by: Kenta Iwasaki <63115601+lithdew@users.noreply.github.com >
Co-authored-by: John-David Dalton <john.david.dalton@gmail.com >
Co-authored-by: Dale Seo <5466341+DaleSeo@users.noreply.github.com >
Co-authored-by: Zack Radisic <56137411+zackradisic@users.noreply.github.com >
Co-authored-by: paperdave <paperdave@users.noreply.github.com >
Co-authored-by: Georgijs Vilums <georgijs.vilums@gmail.com >
Co-authored-by: Dylan Conway <dylan.conway567@gmail.com >
2024-06-20 13:48:39 -07:00
Ciro Spaciari
60af985863
fix(fs.watchFile) ( #11669 )
2024-06-07 22:54:10 -07:00
Ciro Spaciari
1d89c5988e
refactor OOM errors ( #11540 )
2024-06-02 22:56:26 -07:00
Meghan Denny
e5de03b8eb
replace [bun.MAX_PATH_BYTES + 1]u8 with bun.PathBuffer ( #11163 )
2024-05-21 20:53:34 -07:00