pfg
05d0475c6c
Update to zig 0.15.2 ( #24204 )
...
Fixes ENG-21287
Build times, from `bun run build && echo '//' >> src/main.zig && time
bun run build`
|Platform|0.14.1|0.15.2|Speedup|
|-|-|-|-|
|macos debug asan|126.90s|106.27s|1.19x|
|macos debug noasan|60.62s|50.85s|1.19x|
|linux debug asan|292.77s|241.45s|1.21x|
|linux debug noasan|146.58s|130.94s|1.12x|
|linux debug use_llvm=false|n/a|78.27s|1.87x|
|windows debug asan|177.13s|142.55s|1.24x|
Runtime performance:
- next build memory usage may have gone up by 5%. Otherwise seems the
same. Some code with writers may have gotten slower, especially one
instance of a counting writer and a few instances of unbuffered writers
that now have vtable overhead.
- File size reduced by 800kb (from 100.2mb to 99.4mb)
Improvements:
- `@export` hack is no longer needed for watch
- native x86_64 backend for linux builds faster. to use it, set use_llvm
false and no_link_obj false. also set `ASAN_OPTIONS=detect_leaks=0`
otherwise it will spam the output with tens of thousands of lines of
debug info errors. may need to use the zig lldb fork for debugging.
- zig test-obj, which we will be able to use for zig unit tests
Still an issue:
- false 'dependency loop' errors remain in watch mode
- watch mode crashes observed
Follow-up:
- [ ] search `comptime Writer: type` and `comptime W: type` and remove
- [ ] remove format_mode in our zig fork
- [ ] remove deprecated.zig autoFormatLabelFallback
- [ ] remove deprecated.zig autoFormatLabel
- [ ] remove deprecated.BufferedWriter and BufferedReader
- [ ] remove override_no_export_cpp_apis as it is no longer needed
- [ ] css Parser(W) -> Parser, and remove all the comptime writer: type
params
- [ ] remove deprecated writer fully
Files that add lines:
```
649 src/deprecated.zig
167 scripts/pack-codegen-for-zig-team.ts
54 scripts/cleartrace-impl.js
46 scripts/cleartrace.ts
43 src/windows.zig
18 src/fs.zig
17 src/bun.js/ConsoleObject.zig
16 src/output.zig
12 src/bun.js/test/debug.zig
12 src/bun.js/node/node_fs.zig
8 src/env_loader.zig
7 src/css/printer.zig
7 src/cli/init_command.zig
7 src/bun.js/node.zig
6 src/string/escapeRegExp.zig
6 src/install/PnpmMatcher.zig
5 src/bun.js/webcore/Blob.zig
4 src/crash_handler.zig
4 src/bun.zig
3 src/install/lockfile/bun.lock.zig
3 src/cli/update_interactive_command.zig
3 src/cli/pack_command.zig
3 build.zig
2 src/Progress.zig
2 src/install/lockfile/lockfile_json_stringify_for_debugging.zig
2 src/css/small_list.zig
2 src/bun.js/webcore/prompt.zig
1 test/internal/ban-words.test.ts
1 test/internal/ban-limits.json
1 src/watcher/WatcherTrace.zig
1 src/transpiler.zig
1 src/shell/builtin/cp.zig
1 src/js_printer.zig
1 src/io/PipeReader.zig
1 src/install/bin.zig
1 src/css/selectors/selector.zig
1 src/cli/run_command.zig
1 src/bun.js/RuntimeTranspilerStore.zig
1 src/bun.js/bindings/JSRef.zig
1 src/bake/DevServer.zig
```
Files that remove lines:
```
-1 src/test/recover.zig
-1 src/sql/postgres/SocketMonitor.zig
-1 src/sql/mysql/MySQLRequestQueue.zig
-1 src/sourcemap/CodeCoverage.zig
-1 src/css/values/color_js.zig
-1 src/compile_target.zig
-1 src/bundler/linker_context/convertStmtsForChunk.zig
-1 src/bundler/bundle_v2.zig
-1 src/bun.js/webcore/blob/read_file.zig
-1 src/ast/base.zig
-2 src/sql/postgres/protocol/ArrayList.zig
-2 src/shell/builtin/mkdir.zig
-2 src/install/PackageManager/patchPackage.zig
-2 src/install/PackageManager/PackageManagerDirectories.zig
-2 src/fmt.zig
-2 src/css/declaration.zig
-2 src/css/css_parser.zig
-2 src/collections/baby_list.zig
-2 src/bun.js/bindings/ZigStackFrame.zig
-2 src/ast/E.zig
-3 src/StandaloneModuleGraph.zig
-3 src/deps/picohttp.zig
-3 src/deps/libuv.zig
-3 src/btjs.zig
-4 src/threading/Futex.zig
-4 src/shell/builtin/touch.zig
-4 src/meta.zig
-4 src/install/lockfile.zig
-4 src/css/selectors/parser.zig
-5 src/shell/interpreter.zig
-5 src/css/error.zig
-5 src/bun.js/web_worker.zig
-5 src/bun.js.zig
-6 src/cli/test_command.zig
-6 src/bun.js/VirtualMachine.zig
-6 src/bun.js/uuid.zig
-6 src/bun.js/bindings/JSValue.zig
-9 src/bun.js/test/pretty_format.zig
-9 src/bun.js/api/BunObject.zig
-14 src/install/install_binding.zig
-14 src/fd.zig
-14 src/bun.js/node/path.zig
-14 scripts/pack-codegen-for-zig-team.sh
-17 src/bun.js/test/diff_format.zig
```
`git diff --numstat origin/main...HEAD | awk '{ print ($1-$2)"\t"$3 }' |
sort -rn`
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Dylan Conway <dylan.conway567@gmail.com >
Co-authored-by: Meghan Denny <meghan@bun.com >
Co-authored-by: tayor.fish <contact@taylor.fish >
2025-11-10 14:38:26 -08:00
pfg
1f48dcebed
'vi' was missing from bun test globals ( #23674 )
...
```ts
// a.test.ts
console.log(vi);
// $> bun test ./a.test.ts
// before: not defined
// after: defined
```
https://github.com/oven-sh/bun/issues/1825#issuecomment-3094507154
2025-10-15 14:31:27 -07:00
pfg
9d01a7b91a
Require deinit function for memory.deinit() ( #22923 )
...
Co-authored-by: taylor.fish <contact@taylor.fish >
2025-09-26 13:47:24 -07:00
pfg
e577a965ac
Implement xit/xtest/xdescribe aliases ( #21529 )
...
For jest compatibility. Fixes #5228
---------
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-08-25 17:37:12 -07:00
pfg
a72d74e09a
Split JS parser into multiple files ( #20880 )
...
Splits up js_parser.zig into multiple files. Also changes visitExprInOut
to use function calls rather than switch
Not ready:
- [ ] P.zig is ~70,000 tokens, still needs to get smaller
- [x] ~~measure zig build time before & after (is it slower?)~~ no
significant impact
---------
Co-authored-by: pfgithub <6010774+pfgithub@users.noreply.github.com >
2025-08-05 20:52:16 -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
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
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
Zack Radisic
f4339df16b
SSG stuff ( #20998 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
2025-07-20 22:37:50 -07:00
Jarred Sumner
9e4700ee2d
Remove unused Symbol.for(primitive) calls in bundler ( #20888 )
...
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Jarred Sumner <Jarred-Sumner@users.noreply.github.com >
2025-07-12 00:52:07 -07:00
Jarred Sumner
9e4f460d17
Improve tree-shaking of try statements in dead code ( #20934 )
2025-07-11 15:47:04 -07:00
Jarred Sumner
eabbd5cbfb
Fix React HMR duplicate identifier error for named default exports ( #20812 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2025-07-04 03:06:00 -07:00
Dylan Conway
f53aff0935
Fix TypeScript non-null assertion with new operator ( #20363 )
...
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Dylan Conway <dylan-conway@users.noreply.github.com >
2025-06-13 19:30:52 +02:00
Jarred Sumner
6ebad50543
Introduce ahead of time bundling for HTML imports with bun build ( #20265 )
...
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com >
Co-authored-by: Dylan Conway <dylan.conway567@gmail.com >
Co-authored-by: dylan-conway <35280289+dylan-conway@users.noreply.github.com >
2025-06-10 21:26:00 -07:00
Jarred Sumner
df84f665a5
mark as noalias ( #20262 )
...
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2025-06-08 08:20:09 -07:00
Jarred Sumner
498186764a
Remove a memcpy ( #20261 )
...
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2025-06-08 05:07:09 -07:00
wldfngrs
c42539b0bf
Fix parse segfault #18888 ( #19817 )
...
Co-authored-by: Dylan Conway <dylan.conway567@gmail.com >
2025-05-29 08:44:19 -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
Dylan Conway
a844957eb3
Use operationMathPow for parser constant folding ( #19853 )
2025-05-22 20:16:37 -07:00
Jarred Sumner
95af099a0c
Fixes #19695 ( #19712 )
2025-05-16 22:29:28 -07:00
chloe caruso
5cc34b667c
fix dce on unused call in comma ( #19233 )
2025-04-23 17:52:52 -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
Jarred Sumner
879fdd7ef6
Bump Zig again ( #18948 )
2025-04-11 19:13:20 -07:00
Dylan Conway
ba0bd426ed
deflake napi_async_work test ( #18836 )
2025-04-07 18:52:05 -07:00
chloe caruso
c29933f823
implement require.extensions attempt 2 ( #18686 )
2025-04-01 14:31:16 -07:00
Jarred Sumner
f3da1b80bc
Use macOS signpost api for tracing ( #14871 )
...
Co-authored-by: Jarred-Sumner <Jarred-Sumner@users.noreply.github.com >
Co-authored-by: Don Isaac <donald.isaac@gmail.com >
Co-authored-by: DonIsaac <DonIsaac@users.noreply.github.com >
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2025-03-31 04:13:11 -07:00
Jarred Sumner
f38d35f7c9
Revert #18562 #18478 ( #18610 )
2025-03-28 20:23:49 -07:00
chloe caruso
8f4575c0e4
fix: detection module type from extension ( #18562 )
2025-03-27 20:47:31 -07:00
190n
de4182f305
chore: upgrade zig to 0.14.0 ( #17820 )
...
Co-authored-by: 190n <7763597+190n@users.noreply.github.com >
Co-authored-by: Zack Radisic <56137411+zackradisic@users.noreply.github.com >
Co-authored-by: pfg <pfg@pfg.pw >
Co-authored-by: pfgithub <6010774+pfgithub@users.noreply.github.com >
Co-authored-by: Dylan Conway <dylan.conway567@gmail.com >
2025-03-14 22:13:31 -07:00
chloe caruso
d1c77f5061
fix dev server regressions from 1.2.5's hmr rewrite ( #18109 )
...
Co-authored-by: Zack Radisic <zack@theradisic.com >
Co-authored-by: zackradisic <56137411+zackradisic@users.noreply.github.com >
2025-03-14 21:24:14 -07:00
chloe caruso
589fa6274d
dev server: forgotten changes ( #17985 )
...
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
2025-03-07 17:53:07 -08:00
chloe caruso
66cf62c3c4
dev server: rewrite HMRModule, support sync esm + hot.accept ( #17954 )
...
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
2025-03-07 15:12:16 -08:00
Zack Radisic
e6cb0de539
CSS modules ( #17958 )
2025-03-06 23:35:06 -08:00
Jacob Barrieault
1570d4f0a7
Fix 14585 — unminified identifier collisions ( #17930 )
2025-03-06 15:06:30 -08:00
pfg
d502df353c
Support import with { type: "json" } and others ( #16624 )
2025-03-06 15:04:29 -08:00
chloe caruso
25c95f3bdc
hmr stability fixes ( #17794 )
2025-03-01 00:07:20 -08:00
chloe caruso
ac8fb0e1f5
fix(bundler): bundling invalid html / export star as / react refresh fixes ( #17685 )
2025-02-25 22:04:10 -08:00
chloe caruso
fb6f7e43d8
Dev Server: improve react refresh and export default handling ( #17538 )
2025-02-21 20:08:21 -08:00
chloe caruso
3b956757d9
disable async in script tags in dev server ( #17517 )
...
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
2025-02-21 11:28:27 -08:00
chloe caruso
dc5fae461d
Implement simple barrel file optimization ( #17514 )
...
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
2025-02-20 22:50:51 -08:00
Don Isaac
f0e7251b61
chore: remove dead in transpiler ( #17379 )
2025-02-16 02:20:39 -08:00
Don Isaac
cdf62b35ff
refactor: move string-like structs into string module ( #17369 )
2025-02-15 21:52:43 -08:00
chloe caruso
f912e0abc4
hot module reloading for HTML import development mode ( #16955 )
2025-02-08 00:31:30 -08:00
Jarred Sumner
7a918d24a7
Fix loading react-jsxdev instead of react-jsx ( #17013 )
...
Co-authored-by: chloe caruso <git@paperclover.net >
2025-02-03 14:10:09 -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
pfg
1fd7ed6751
Fix typescript emitDecoratorMetadata for getters ( #16389 )
...
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
2025-01-20 22:14:04 -08:00
Meghan Denny
68089a099f
zig: else branch is implicitly void ( #16406 )
2025-01-15 15:14:43 -08:00
chloe caruso
a3cbf974eb
transpiler: dont inline import.meta.require ( #16222 )
2025-01-07 23:14:09 -08:00