Repository navigation
Conversation
misctools/gen-unicode-table.ts and misctools/unicode-generator.ts emit Zig source for identifier tables. The repository has no Zig sources and the tables live in src/bun_core/string/identifier.rs as Rust. Nothing references the two scripts. misctools/package.json only held their @unicode dependencies, and the remaining misctools scripts import only node builtins. BunBuiltinNames.h: the writer private identifier has no user in the JS builtins, the C++ bindings, or the generated code.
|
Updated 11:38 PM PT - Sep 5th, 2026
❌ @robobun, your commit 46729e5 has 1 failures in
🧪 To try this PR locally: bunx bun-pr 41473That installs a local version of the PR into your bun-41473 --bun |
|
No test is added on purpose. Every removed line is unreferenced, so there is no behavior a test can observe before and after the change. The code paths next to this change are already covered and pass on the debug build of this branch: |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Essentials Run ID: 📒 Files selected for processing (5)
💤 Files with no reviewable changes (4)
Included review availability: Your plan provides up to 10 included reviews per hour; 0 remain after this review. WalkthroughThe PR deletes Unicode table generator tooling, updates the generated Unicode table comment, and removes ChangesUnicode generator cleanup
Builtin name cleanup
Merge Risk: ⚪ Minimal · up to This cleanup removes unused tooling and a stale builtin identifier while only clarifying Unicode table metadata. No current merge-blocking risk is identified. 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
Comment |
ConsoleObject.ts reaches it by string through $getByIdDirectPrivate(this, "writer"), so the console.write builtin needs the private symbol registered.
There was a problem hiding this comment.
LGTM — with the src/ edits reverted, this is now a pure deletion of three unreferenced Zig-era codegen files.
What was reviewed:
- Grepped the tree for
gen-unicode-table,unicode-generator, andmisctools/package.json— zero hits;identifier.rsdoes not name the script. - Confirmed the two remaining misctools scripts import only node builtins and
bun, so droppingmisctools/package.jsonleaves nothing unresolved. - Verified the net diff against base touches only the three deleted files; the earlier
BunBuiltinNames.handidentifier.rsedits are fully backed out.
Extended reasoning...
Overview
The PR now deletes exactly three files under misctools/: gen-unicode-table.ts (108 lines), unicode-generator.ts (138 lines), and package.json (14 lines). The two scripts emitted Zig source (pub fn ... (cp: u21) bool, [_]u16{...}) for identifier lookup tables — output the Rust codebase cannot consume. The package.json existed solely to declare their @ unicode/* dependencies. Since my earlier review, the author reverted the BunBuiltinNames.h macro(writer) removal (which CI showed was live via $getByIdDirectPrivate(this, "writer")) and the identifier.rs comment reword, so the diff no longer touches src/ at all.
Security risks
None. This is a pure deletion of local developer tooling that is not built, shipped, or invoked by any script, workflow, or source file. No runtime code, dependency manifest that ships, or CI configuration is affected.
Level of scrutiny
Low. The only obligation for a deletion-only PR under REVIEW.md is proving nothing still references what is removed. A repo-wide grep for each filename and for misctools/package.json returns zero hits; src/bun_core/string/identifier.rs does not reference the script by name. The two surviving misctools scripts (generate-add-completions.ts, generate-cli-completions.ts) import only fs/path/bun, so removing the manifest cannot break them. No CODEOWNERS rule covers misctools/.
Other factors
My prior inline comment concerned the since-reverted BunBuiltinNames.h change and is now moot — that file is no longer in the diff. There are no outstanding third-party CHANGES_REQUESTED reviews. The bug hunt exited on dry_streak with no findings. Given the diff is now a 260-line pure deletion of demonstrably dead Zig-targeting codegen with no remaining references, approval is appropriate.
|
CI status: the diff deletes three files under |
Problem
misctools/gen-unicode-table.tsandmisctools/unicode-generator.ts(246 lines) emit Zig source (pub fn name(cp: u21) bool,[_]u16{...}). The repository has no Zig sources. The identifier tables they produced live insrc/bun_core/string/identifier.rsas Rust. Nothing references either script.misctools/package.jsonexists only for their@unicode/*dependencies. The two remaining misctools scripts import node builtins only.Fix
misctools/package.json. That is the whole diff: three files, 260 lines, nothing undersrc/.identifier.rs("re-run the identifier-table generator with .rs output") stays as it is. No.rsoutput mode ever existed, so the comment already points at work not yet done. A reword belongs with a port of the generator, if one happens.bun bdbuilds.bun bd testpasses ontest/bundler/transpiler/transpiler.test.js,test/bundler/transpiler/template-literal.test.ts,test/js/web/console/console-log.test.ts, andtest/internal/source-lints/dead-code-escapes.test.ts.Background
test/internal/source-lints/CLAUDE.mdasks for no lint tests for dead symbols.Notes
History of this PR: the first revision also removed the
writerentry fromsrc/js/builtins/BunBuiltinNames.hand reworded theidentifier.rscomment. Thewriterremoval was wrong.ConsoleObject.tsreaches the private symbol by string,$getByIdDirectPrivate(this, "writer"), soconsole.writecrashed in CI (build 110635,ASSERTION FAILED: symbolinemit_intrinsic_getByIdDirectPrivate). Bothsrc/edits were reverted. A private name can be live with no$nameornamePrivateName()mention anywhere.Scans run against HEAD
f42e980255, with every file listed in an open robobun dead-code PR excluded:dead_codeandunreachable_pub, so intra-crate dead code cannot exist. A cross-crate scan of 14,624pubitems, enum variants, andpubstruct fields (rg on the name, comment lines excluded) found 0 unclaimed dead items. Every hit was a proc-macro entry point, an FFI struct field, a derive-parsed CSS keyword variant, or a symbol an open PR already deletes.src/js): 3,608 top-level declarations, 0 dead outsideinternal-for-testing.ts. All 45export functions insrc/js/builtinsare referenced.tsc --noUnusedLocalsreports only intentional_-prefixed locals.kServerSocketinnet.tsis write-only by design (a GC edge)..hfiles. Every zero-reference hit is a macro-pasted name (jsWebStreamsHandler_*,Bun__*JobCtx__*), an N-API export, sqlite, or already claimed.v8config.h, already claimed. Unused Cargo dependencies: onlybytemuckinbun_paths, already claimed..rsfiles outside anymodtree: none.BunBuiltinNames.h: every entry is live.mockedFunctionis aliased byBunCommonStrings.h.writeris reached through$getByIdDirectPrivate(this, "writer"). Both escape a plain$namesearch.Unreferenced but deliberately kept, left for a human decision (not in this diff):
packages/h3blast/(1,465 lines): a standalone HTTP/3 load tool added in Bun.serve: HTTP/3 (QUIC) support viah3: true#29768. Nothing builds, tests, or documents it.packages/bun-plugin-yaml/(220 lines): the published package source. Tests install it from npm. Bun has a native YAML loader now.packages/bun-debug-adapter-protocol/src/protocol/protocol.json(3,779 lines): the generator writes it, nothing reads it.index.d.tsis the consumed output.scripts/lldb-inline-tool.cpp+lldb-inline.sh,scripts/gamble.ts,scripts/debug-coredump.ts,scripts/github-metrics.ts,scripts/trace.sh: hand-run developer tools with no caller.misctools/lldb/bun_pretty_printer.py: loaded from.lldbinit, but its printers match Zig type names (ZigString,baby_list.BabyList) that no longer exist.scripts/packer/build-image.pkr.hcl:machine.mjsonly ever selects theazure-armsources. Thedocker.debianandamazon-ebs.debiansources are never built.no test proof · iteration 3 · no src or test change; test-proof not applicable