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
robobun
c5def80191
Fix Output.enable_ansi_colors usage to check stdout vs stderr ( #24212 )
...
## Summary
Updated all 49 usages of `Output.enable_ansi_colors` to properly check
either `Output.enable_ansi_colors_stdout` or
`Output.enable_ansi_colors_stderr` based on their output destination.
This prevents bugs where ANSI colors are checked against the wrong
stream (e.g., checking stdout colors when writing to stderr).
## Changes
### Added
- `Output.enable_ansi_colors` now a `@compileError` to prevent future
misuse with helpful error message directing to correct variants
### Deleted
- `Output.isEmojiEnabled()` - replaced all usages with
`enable_ansi_colors_stderr` (all were error/progress output)
- `Output.prettyWithPrinterFn()` - removed unused dead code
### Updated by Output Destination
**Stderr (error/diagnostic output):**
- logger.zig: Log messages and errors
- crash_handler.zig: Crash reports and stack traces (10 instances)
- PackageInstaller.zig: Error messages from lifecycle scripts (3
instances)
- JSValue.zig: Test expectation error messages
- JSGlobalObject.zig: Exception throwing
- pack_command.zig: Progress indicators
- VirtualMachine.zig: Exception printing (2 instances)
- Test expect files: Test failure messages and diffs (10 instances)
- diff_format.zig: Test diff output
- ProgressStrings.zig: Package manager progress emojis (6 functions)
- security_scanner.zig: Security scan progress emoji
- output.zig: panic(), resetTerminal()
**Stdout (primary output/interactive UI):**
- hot_reloader.zig: Terminal clearing on reload
- Version.zig: Version diff formatting
- install_with_manager.zig: Package installation tree
- update_interactive_command.zig: Interactive update UI (2 instances)
- init_command.zig: Interactive radio buttons
- create_command.zig: Template creation output (2 instances)
- outdated_command.zig: Outdated packages table
- publish_command.zig: Box drawing characters (6 instances)
**Backward Compatible:**
- BunObject.zig: `Bun.enableANSIColors` property returns `(stdout ||
stderr)` to maintain compatibility
- fmt.zig: Removed unused `.default` field from Options struct
## Test Plan
- ✅ All changes compile successfully with `bun run zig:check`
- ✅ Verified all 49 usages have been updated to appropriate variant
- ✅ Verified no remaining references to deprecated functions/variables
- ✅ Compile error triggers if someone tries to use
`Output.enable_ansi_colors`
## Stats
- 24 files changed
- 58 insertions, 77 deletions (net -19 lines)
- 49 usages correctly updated
- 3 items deleted/deprecated
🤖 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 >
2025-10-31 19:08:41 -07:00
Marko Vejnovic
3bc78598c6
bug(SlicedString.zig): Fix incorrect assertion in SlicedString.sub ( #23934 )
...
### What does this PR do?
Fixes a small bug I found in https://github.com/oven-sh/bun/pull/23107
which caused `SlicedString` not to correctly provide us with subslices.
This would have been a **killer** use-case for the interval utility we
decided to reject in https://github.com/oven-sh/bun/pull/23882 . Consider
how nice the code could've been:
```zig
pub inline fn sub(this: SlicedString, input: string) SlicedString {
const buf_r = bun.math.interval.fromSlice(this.buf);
const inp_r = bun.math.interval.fromSlice(this.input);
if (Environment.allow_assert) {
if (!buf_r.superset(inp_r)) {
bun.Output.panic("SlicedString.sub input [{}, {}) is not a substring of the " ++
"slice [{}, {})", .{ start_i, end_i, start_buf, end_buf });
}
}
return SlicedString{ .buf = this.buf, .slice = input };
}
```
That's a lot more readable than the middle-school algebra we have here,
but here we are.
### How did you verify your code works?
CI
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
2025-10-21 17:54:44 -07:00
Dylan Conway
0601eb0007
Make --linker=isolated the default for bun install ( #23311 )
...
### What does this PR do?
Makes isolated installs the default install strategy for projects with
workspaces in Bun v1.3.
Also fixes creating patches with `bun patch` and `--linker isolated`
Fixes #22693
### How did you verify your code works?
Added tests for node_modules renaming `bun patch` with isolated install.
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Claude Bot <claude-bot@bun.sh >
Co-authored-by: Claude <noreply@anthropic.com >
2025-10-08 18:00:38 -07:00
Dylan Conway
285143dc66
fix(install): change semver core numbers to u64 ( #22889 )
...
### What does this PR do?
Sometimes packages will use very large numbers exceeding max u32 for
major/minor/patch (usually patch). This pr changes each core number in
bun to u64.
Because we serialize package information to disk for the binary lockfile
and package manifests, this pr bumps the version of each. We don't need
to change anything other than the version for serialized package
manifests because they will invalidate and save the new version. For old
binary lockfiles, this pr adds logic for migrating to the new version.
Even if there are no changes, migrating will always save the new
lockfile. Unfortunately means there will be a one time invisible diff
for binary lockfile users, but this is better than installs failing to
work.
fixes #22881
fixes #21793
fixes #16041
fixes #22891
resolves BUN-7MX, BUN-R4Q, BUN-WRB
### How did you verify your code works?
Manually, and added a test for migrating from an older binary lockfile.
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-22 19:28:26 -07:00
Meghan Denny
e8d0935717
zig: delete deprecated some bun.jsc apis ( #21309 )
2025-07-23 17:10:58 -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
Meghan Denny
6c5b863530
safety: a lot more exception checker progress ( #20817 )
2025-07-10 15:34:51 -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
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
98ee30eccf
Implement catalogs in bun install ( #19809 )
...
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Jarred-Sumner <Jarred-Sumner@users.noreply.github.com >
2025-05-20 23:03:21 -07:00
Meghan Denny
d774baa28a
tidyings from 18962 ( #19644 )
2025-05-14 18:47:51 -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
11f2b5fb55
Run zig fmt
2025-04-03 12:04:24 -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
Dylan Conway
4d004b90ca
Fix bun.lock formatting of bin ( #17041 )
2025-02-04 23:55:57 -08:00
Jarred Sumner
aac951bd47
Move semver-related structs into their own files ( #16987 )
2025-02-02 00:20:45 -08:00