Repository navigation
Remove dead code from libtcc1.c, four C++ preprocessor conditions, JSPropertyIterator, and hawk.toml - #44126
Remove dead code from libtcc1.c, four C++ preprocessor conditions, JSPropertyIterator, and hawk.toml#44126robobun wants to merge 2 commits into
Conversation
|
Updated 3:05 AM PT - Oct 18th, 2026
❌ @robobun, your commit b9126de has 1 failures in
🧪 To try this PR locally: bunx bun-pr 44126That installs a local version of the PR into your bun-44126 --bun |
|
Status: ready for review. Rebased onto
Review of 2026-10-18:
One stale The first review reports no actionable comments. Two lines of its walkthrough read as a behavior change. They are not:
To check: |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
WalkthroughThis change removes conditional defaults, platform-specific implementations, and public-symbol expectations across several JavaScriptCore, SQLite, WebCore, and FFI components. It also makes MimallocMalloc use mimalloc for all listed allocation operations. ChangesPublic-symbol expectations
Iterator conversion
Mimalloc allocation
SQLite loading macro
URLPattern vtable verification
Remote inspector startup
libtcc1 implementations
Priority: ⬇️ Low Merge Risk: ⚪ Minimal · up to
|
There was a problem hiding this comment.
LGTM — pure dead-code removal, each deleted branch is unreachable under the flags the build script always passes.
What was reviewed:
- Preprocessor arms:
USE_BUN_MIMALLOC=1has nowhenin scripts/build/flags.ts,LAZY_LOAD_SQLITEis always passed as 0 or 1 (no-Wundefin the flag table), and BunDebugger.cpp already hard-requiresJSGlobalObjectDebuggable, so theENABLE(REMOTE_INSPECTOR)fallback could never compile in. - libtcc1.c: the only consumer is
include_bytes!undercfg(target_arch = "x86_64")in src/runtime/ffi/ffi_body.rs; no remaining reference to any removed symbol (__udivmoddi4,__ashldi3,__tcc_fpu_control, ...) anywhere in src/. - Rust/config: no
NonNull<JSObject>is passed toJSPropertyIterator::initat any of the ~30 call sites; the sevenhawk.tomlvariants no longer exist inErrorKind/SSRKind. - JSURLPattern.cpp: the Itanium branch was already what a
BUILDING_JSCONLY__build selects, so Windows behaviour is unchanged; the 13 sibling bindings still carrying thePLATFORM(WIN)arm are called out in the description as handled elsewhere.
Extended reasoning...
The change deletes 519 lines across one embedded C file, five C++ files, one Rust file and hawk.toml, adding nothing. It touches no security-sensitive surface: the allocator header keeps calling the same mi_* functions it did at base (USE_BUN_MIMALLOC=1 is unconditional, including ASAN builds), and the sqlite/inspector/URLPattern edits only drop preprocessor arms. Every removed C/C++ arm is gated by a macro the build script fixes or that the rest of the tree already assumes, so any mistake would surface as a compile error in CI rather than a runtime change; the one runtime-embedded file (libtcc1.c) is only compiled on x86_64 where TinyCC predefines x86_64. No CODEOWNERS entry covers the changed paths and the timeline shows no outstanding objections, which decided approve over defer.
|
@robobun wake up!! |
|
@robobun wake up!! |
|
I am here. The PR is ready and waits for one approval.
I did not push anything, because nothing needs a fix. If you want something else from this PR, tell me which one:
|
…ed (#45641) Behaviour change: none ### Problem - `test/bake/dev/react-response.test.ts` has a test that renders `typeof Response.render` in a server component and expects `undefined`. - #45461 deleted `bun:app` and its `Response` class. It also deleted the parser rewrite that put that class in place of the global `Response`. The assertion can fail only if that feature comes back. - `REVIEW.md` line 56 says: "Do not add tests to check dead code stays dead." ### Fix - Remove the test (18 lines). No other file changes. - Correct because no live code loses its test. `test/bake/dev/request-cookies.test.ts` renders a React page with `streaming = false` and `mode = "ssr"`. - Verified: `bun bd test test/bake/dev/react-response.test.ts` on main at f0c6cbc. 2 pass, 0 fail. ### Background - `bun:app` was a built-in module. It exported a `Response` subclass for Bake pages, with `Response.render()` and JSX bodies. The parser replaced the global `Response` in each server-side module with that class. - The test came with commit b958f25 of #45461, when `bun:app` still existed. It proved that the parser no longer made the swap. Commit e03e21f of the same PR deleted `bun:app`, and the test lost its purpose. - A [review comment](#45461 (comment)) reported the test seven minutes after #45461 merged. - Considered a replacement test for a page that returns a plain `Response`, as the review comment proposed. Such a page answers 500 today, because React gets the `Response` as a child. That is an error, not a behavior to keep. <details><summary>Notes</summary> - Probe for the last Background bullet, on a debug build of main at f0c6cbc: a page that returns `new Response("plain text", { status: 201 })` answers 500. The error is "Only plain objects, and a few built-ins, can be passed to Client Components from Server Components." - After this change, `git grep -n "Response\.render\|bun:app"` finds nothing in the tree. - The same review reported the `hawk.toml` override for `webcore::bake_response::SSRKind::Regular`. It is not in this PR. The override was stale before #45461 (#43650 removed the variant), and #44126 removes it. </details> <!-- robobun:evidence:begin --> --- **[auto-merge]** gate passed · iteration 0 · 1 files touched <details><summary>passes on PR (with fix)</summary> ```console Test-only change. Debug/ASAN (expected pass): $ bun bd test 'test/bake/dev/react-response.test.ts' $ BUN_DEBUG_QUIET_LOGS=1 bun scripts/build.ts --profile=debug --quiet test test/bake/dev/react-response.test.ts bun test v1.4.4 (367d939) test/bake/dev/react-response.test.ts: Dev server testing directory: /tmp/bun-dev-test-yqPS5A bun add v1.4.4 (367d939) Saved lockfile installed react@0.0.0-experimental-603e6108-20241029 installed react-dom@0.0.0-experimental-603e6108-20241029 installed react-server-dom-bun@0.0.0-experimental-603e6108-20241029 installed react-refresh@0.0.0-experimental-603e6108-20241029 6 packages installed [167.00ms] bun install v1.4.4 (367d939) Checked 6 installs across 7 packages (no changes) [196.00ms] �[0;30mdev|�[0m Started development server: http://localhost:33163 �[0;30mdev|�[0m �[32mBundled page in 1019ms�[0m�[2m:�[0m pages/index.tsx �[2m+ 2 more�[0m �[0;30mdev|�[0m �[0m�[1m1 |�[0m �[0m�[35mexport�[0m �[0m�[35mconst�[0m streaming = �[0m�[33mfalse�[0m�[0m�[2m;�[0m �[0;30mdev|�[0m �[0m�[1m2 |�[0m �[0m�[35mexport�[0m �[0m�[35mconst�[0m mode = �[0m�[32m"ssr"�[0m�[0m�[2m;�[0m �[0;30mdev|�[0m �[0m�[1m3 |�[0m �[0;30mdev|�[0m �[0m�[1m4 |�[0m �[0m�[35mexport�[0m �[0m�[35mdefault�[0m �[0m�[35masync�[0m �[0m�[35mfunction�[0m IndexPage() { �[0;30mdev|�[0m �[39m�[1m^�[0m �[0;30mdev|�[0m �[0m�[39merror�[0m�[2m:�[0m �[1mLMAO�[0m �[0;30mdev|�[0m �[0m �[2mat �[0mIndexPage�[2m (�[0m�[0m�[36m�[2m/tmp/bun-dev-test-yqPS5A/react-response1/�[0m�[36mpages/index.tsx�[0m�[2m:�[0m�[33m4�[0m�[2m:�[33m1�[0m�[2m)�[0m �[0;30mdev|�[0m �[0m �[2mat �[0mreact-stack-bottom-frame�[2m (�[0m�[0m�[36m�[2m/tmp/bun-dev-test-yqPS5A/react-response1/�[0m�[36mnode_modules/react-server-dom-bun/cjs/react-server-dom-webpack-server.node.unbundled.development.js�[0m�[2m:�[0m�[33m3971�[0m�[2m:�[33m15�[0m�[2m)�[0m �[0;30mdev|�[0m �[0m �[2mat �[0m�[0m�[36munknown�[0m�[2m:�[0m�[33m1�[0m�[2m:�[33m1�[0m �[0;30mdev|�[0m �[0m �[2mat �[0mrun�[2m (�[0m�[0m�[36mnode:async_hooks�[0m�[2m:�[0m�[33m226�[0m�[2m:�[33m29�[0m�[2m)�[0m �[0;30mdev|�[0m �[0m ... (truncated) Exit: 0 ``` </details> <details><summary>diff hotspot</summary> ``` test/bake/dev/react-response.test.ts | 18 ------------------ 1 file changed, 18 deletions(-) ``` </details> **gate history** · 1 passed · 0 rejected · iteration 0 <details><summary>evidence per changed file</summary> ``` file reads edits tests test/bake/dev/react-response.test.ts 1 1 9 ``` </details> <!-- robobun:evidence:end -->
…PropertyIterator, and hawk.toml
3ccf88e to
090d01c
Compare
There was a problem hiding this comment.
Nothing blocking. The comments below are optional suggestions. There is no need to push a fix for them before merging.
Beyond the inline nit, I also checked that none of the symbols deleted from libtcc1.c (__udivmoddi4, __divdi3, __ashrdi3, etc.) are referenced anywhere else under src/, that the removed hawk.toml overrides point at variants that no longer exist (ErrorKind now has only the five BundlerLog* variants and the bake_response/SSRKind module is gone entirely), and that LAZY_LOAD_SQLITE is emitted as either =0 or =1 by scripts/build/flags.ts with no -Wundef, so dropping the in-header defaults cannot change which branch #if LAZY_LOAD_SQLITE takes.
Extended reasoning...
Pure deletion PR (517 lines removed, nothing added) across libtcc1.c, four C++ preprocessor sites, one Rust trait impl, and stale hawk.toml overrides; no security-sensitive surface. The one inline finding is a leftover include; the remaining risk is build-only (cfg-gated Rust and preprocessor-gated C++ cannot be type-checked here), which the author reports covering with 19 cargo check configurations.
Additional findings (outside the current diff — GitHub can't attach inline comments there):
-
🟡
src/jsc/bindings/MimallocWTFMalloc.h— nit: maintainers keep an include that this PR made dead.#include <wtf/PlatformOS.h>at src/jsc/bindings/MimallocWTFMalloc.h:7 existed only for the!OS(WINDOWS)branch of tryAlignedMalloc, which the diff removes; nothing else in the header uses an OS() macro. Fix: drop the include in the same PR that removed its last consumer (the header still gets ASSERT/CRASH from wtf/Assertions.h and ALWAYS_INLINE from wtf/Compiler.h).Why this was flagged
The base branch's tryAlignedMalloc had an
#elif !OS(WINDOWS)arm that needed the OS() macro from wtf/PlatformOS.h. The diff deletes that arm (src/jsc/bindings/MimallocWTFMalloc.h:66-72 now calls mi_malloc_aligned unconditionally), leaving no use of OS() anywhere in the header, but keeps the include at line 7. No runtime consequence; it is a leftover of the removed branch, contrary to the repository rule to delete dead code in the PR that makes it dead. No safeguard applies; it is a cleanliness nit.Verification: nit. Triggering condition: unconditional — the include is simply left without a consumer once this diff lands. The only OS() use in base src/jsc/bindings/MimallocWTFMalloc.h was line 85
#elif !OS(WINDOWS)inside tryAlignedMalloc; the diff removes that arm. After the change the header contains noOS(orUSE(token at all, yet line 7#include <wtf/PlatformOS.h>remains.
There was a problem hiding this comment.
I reviewed the current push (through b9126de) and found no bugs; since this is a 518-line deletion spanning the FFI runtime library, the WTF allocator shim, sqlite, URLPattern and the inspector entry point, a human look is still worthwhile before merging.
What was reviewed:
- Confirmed each removed preprocessor branch is constant-false in every build:
USE_BUN_MIMALLOC=1andLAZY_LOAD_SQLITE=0|1are inscripts/build/flags.tsdefines, whichscripts/build/bun.ts(line 241) passes to every C/C++ TU including the PCH;ENABLE_REMOTE_INSPECTOR: "ON"inscripts/build/deps/webkit.tsandBunDebugger.cppalready requires it unconditionally. libtcc1.c: the only consumer isinclude_bytes!under#[cfg(target_arch = "x86_64")]insrc/runtime/ffi/ffi_body.rs, and the deleted block#errors on anything but i386; nothing it defined is referenced by the kept functions or elsewhere in the repo.- Rust/data: no
NonNull<JSObject>appears anywhere in the tree, and the removedhawk.tomloverrides nameErrorKindvariants that no longer exist and abake_responsemodule that no longer exists at all. - Noted that 13 sibling
JS*.cppfiles still carry the samePLATFORM(WIN)vtable branch; the description assigns those to other open PRs, which a human may want to confirm.
Extended reasoning...
The change is deletion-only across 8 files: constant-false preprocessor arms in MimallocWTFMalloc.h, JSSQLStatement.h/NodeSqlite.cpp, JSURLPattern.cpp and BunJSCModule.h, the non-x86_64 half of the embedded TinyCC runtime libtcc1.c, an unused trait impl in JSPropertyIterator.rs, and stale hawk.toml lint overrides. It touches no security-sensitive surface; the inspector function's reachable code path is unchanged and the allocator shim resolves to the same mi_* calls as before. I verified the build-flag and usage claims from scripts/build and the source tree rather than from the PR text, and found them accurate. Deferring rather than approving because the PR is bot-authored, large, touches the bun:ffi runtime library that user C code links against, and a maintainer comment from 2026-09-28 whose content I cannot see precedes the latest rewrite, so I cannot establish that no human concern is outstanding.
Behaviour change: none
Problem
hawk.tomlentries for removed enum variants.dead_code.Fix
src/runtime/ffi/libtcc1.c: remove the#ifndef __x86_64__block (380 lines) and the#elsearm of an#if 1.#elsebranches ofUSE(BUN_MIMALLOC)andENABLE(REMOTE_INSPECTOR), thePLATFORM(WIN)branches ofJSURLPattern.cpp, and theLAZY_LOAD_SQLITEfallbacks.impl IntoIterObject for NonNull<JSObject>and 7hawk.tomloverrides for variants that build: link the Rust crates' rlibs directly; no libbun_runtime.a #43650 removed.bun bd,cargo checkin 19 configurations,cargo clippy, and the suites in Notes. Self-reviewed: 9 concerns raised, 9 addressed.Background
bun:ffi. Bun embedslibtcc1.c, and TinyCC compiles it on x86_64 only, where it defines__x86_64__. The embedded file shrinks from 14,454 to 6,869 bytes.scripts/build/flags.tsdefinesUSE_BUN_MIMALLOC=1andLAZY_LOAD_SQLITEfor every C++ file. WebKit's JSCOnly port sets everyPLATFORM(X)to 0.cargo checkneeds 337 of them on other targets, in tests, or in generated code.Downsides
git grep -wover sources, tests and generated code. Trial merges with the 80 open pull requests that can touch the same files add no conflict.Notes
Rebase on 2026-10-18
The branch is rebased onto main at 5667cd6. One file had a conflict,
BunJSCModule.h: #44171 added a check at the start offunctionStartRemoteDebugger. The check stays and runs first. Each removal was checked again on the new main: the evidence table below,bun bd, the 19 configurations,cargo clippy, the six test files, and the trial merges.The sections from "Taken out" to the end describe main at 36cd151 (2026-09-26), the commit of the scan. For the items under "Taken out", the state of each named pull request and the presence of each item on main were checked again on 2026-10-18. The scan was not run again.
Evidence per removal
libtcc1.clines 109-488,#ifndef __x86_64__include_bytes!("libtcc1.c")insrc/runtime/ffi/ffi_body.rs, inside#[cfg(target_arch = "x86_64")]. TinyCC defines__x86_64__for that target (vendor/tinycc/x86_64-gen.c:121). Nothing callsundefine_symbol. The block ends in#error unsupported CPU typefor every CPU except i386. No name that the block defines has a use after it.libtcc1.c#if 1/#else#elsearm of a literal#if 1.MimallocWTFMalloc.h, 7#else/#elifarmsscripts/build/flags.tshasUSE_BUN_MIMALLOC=1with nowhen. Incompile_commands.json705 of Bun's 706 own files carry the define. The other one issqlite3.c, which does not include the header. The include ofwtf/PlatformOS.hgoes too: its only user was the!OS(WINDOWS)arm.JSSQLStatement.h,NodeSqlite.cpp:#ifndef LAZY_LOAD_SQLITEflags.tsdefinesLAZY_LOAD_SQLITE=0whenstaticSqliteand=1when not.LAZY_LOAD_SQLITE_DEFAULT_SETTINGhas 4 hits, all in the removed lines.JSURLPattern.cpp:#if PLATFORM(WIN)flags.tsdefinesBUILDING_JSCONLY__for every file.wtf/PlatformLegacy.hgives noPLATFORM()macro to that port. The enclosingENABLE(BINDING_INTEGRITY)is off on Windows. #40525 and #42431 remove the same pattern from 13 sibling files.BunJSCModule.h:ENABLE(REMOTE_INSPECTOR)BunDebugger.cpphas no preprocessor guard and derives fromJSC::JSGlobalObjectDebuggable, which exists only with the flag on. So a build with the flag off does not compile. The#elsebranch and the two guards go.impl IntoIterObject for NonNull<JSObject>into_iter_objectof this impl. Without itcargo checkpasses in all 19 configurations. The impls for*mut JSObject,&JSObjectand&mut JSObjectstay.hawk.toml, 7 overridesErrorKindinserialized_failure.rshas only the fiveBundlerLog*variants. #43650 removed the others.SSRKindno longer exists: #45461 removed thebake_responsemodule.The 19 configurations of
cargo checkAll 12 targets of
scripts/build/rust.ts, the host with--all-targets, Linux, Windows and macOS with--cfg=bun_asan --cfg=bun_debug --cfg=socket_fault_injection, the same three in the release profile with--cfg=bun_codegen_embed, andbun_shim_implwith--features shim_standalone. Each one reports the same single warning as main. The three release configurations read the generated code of a release configure (build/release/codegen). The debug one holds bindings forbindgen_test, a module that exists only withdebug_assertions(since #45104).Tests run with the debug build, all pass
test/js/bun/ffi/cc.test.ts,test/js/bun/ffi/ffi.test.js,test/js/bun/sqlite/sqlite.test.js,test/js/node/sqlite/node-sqlite.test.ts,test/js/web/urlpattern/urlpattern.test.ts,test/js/bun/jsc/bun-jsc.test.ts. Run with--timeout 180000.Taken out because an open pull request uses, removes, or is next to the item
Each of these has no user on main. A trial merge (
git merge-tree) with the named pull request showed a new conflict, or its diff names the item.SetCurrentDirectoryinsrc/sys/windows/mod.rs: Remove libuv on Windows #42819 removes it with the block around it.bun_jsc::event_loop_handle(src/jsc/EventLoopHandle.rs, onepub use): FileSink, Bun.write: remove unsafe from FileSink.rs and blob/write_file.rs #40213 adds a type to the file and imports through the module.impl Hash for PropertyId: css: compare custom property names inPropertyIdequality and importance in duplicate-rule detection #33684 rewrites it and calls it (decl.property_id().hash(..)).URLSearchParams::needsSorting(only written): URL, URLSearchParams: throw a RangeError when the percent-encoded result does not fit in a string #42534 and url: throw a RangeError instead of aborting when URLSearchParams or FormData outgrows its Vector #40577 move the lines that write it.sort_internal::<_, false>insrc/collections/multi_array_list.rs(bun_collections_sort_unstable_context,sift_down, 59 lines; the one caller passestrue): collections: MultiArrayList stable sort is O(n log n), not insertion sort #34525 rewrote the stable sort next to it. It closed on 2026-10-17 without a merge, so the item is free for a later sweep.src/jsc/bindings/webcore/HTTPHeaderNames.in(120 lines, no script reads it, the live table isHTTPHeaderNames.gperf): http: replace picohttpparser with a Rust parser; classify headers once and build fetch Response headers lazily #37132 names the file as the order reference in new code. Bun.serve: remove unsafe from server/mod.rs and server_body.rs #40214, bake DevServer: remove unsafe from DevServer.rs and dev_server/* #40255 and Bun global + crypto: remove unsafe from BunObject.rs and runtime/crypto #40399 add code next to the Rust comment that names it.hawk.tomloverride forErrorKind::JsError: stale like the other 7, next to a hunk of Remove dead code from bun_css, bun_react_compiler, bun_jsc, and smaller crates #40690.css_printerinsrc/css/css_parser.rs: next to a hunk of Remove dead code from bun_collections, bun_core, the JSC bindings, and 37 re-exports #41268.#if OPENSSL_VERSION_MAJOR >= 3inncrypto.cpp(lines 18-20 and 727-747), theEVP_PKEY_CTX_set_dsa_paramgen_q_bitsshim (25-34) andOSSL3_CONSTinncrypto.h: never compiled with BoringSSL, next to hunks of Remove dead code from SerializedScriptValue, ncrypto, and the WebCore IDL converters #43644.unsupported_implinsrc/threading/Futex.rs: itscfgis false on all 12 targets, next to hunks of Remove dead code from the inspector protocol package, bun_jsc, bun_install, and the Windows named pipe modules #40557.InspectorInstrumentationcalls) inEventTarget.cpp,WebSocket.cppand 8 more files: next to hunks of Remove dead code from bun_core, the JSC bindings, the debugger, and 24 other crates #41385, Remove dead code from the web streams bindings, the test runner formatter, and the bindgen codegen #41445 and Remove dead code from the class and sink generators, JSBuffer, the bake client, bun-error, and the build scripts #43378.use_shared_bufferandstreamswitches of the file read path (read_file_with_handle_implinsrc/resolver/fs.rs,cache::Fs::read_file_with_allocator, the const genericUSE_SHARED_BUFFERinsrc/bundler/transpiler.rs,BOM::remove_and_convert_to_utf8_without_dealloc): every caller passesfalse, the removal is about 200 lines. transpiler cache: answer a hit before the parser and its heap are set up #43834 restructures the same functions and still carriesUSE_SHARED_BUFFER.Kept by an earlier decision
impl IntoLogWrite for &mut Wandimpl ThrowFmtArgs for fmt::Arguments: no user, but Remove dead code: 49 trait impls nothing uses, across 12 crates #43664 lists both as kept because the docs describe them as part of the design.Related lines that stay
NEEDS_COMPILER_RT_FUNCTIONS(ffi_body.rs:2475):libtcc1.cdoes not read it, but C code that a user passes tocc()can.USE(BUN_MIMALLOC)inbun_icu_malloc.cpp:6and the define inflags.ts.#if ENABLE(REMOTE_INSPECTOR)guards inZigGlobalObject.cpp. They have no#else.What was scanned
--gc-sections. The linker drops 9,226 Rust function sections on Linux. 178 belong to hand-written functions that are not generic. With the generic and#[inline]functions that have no symbol at all, and 180 trait impls with no live method, this gives 347 candidates. Each was deleted on trial and put back whencargo checkfailed in one of the 19 configurations. 337 came back: most have a caller on Windows or macOS, some in release builds, tests, or generated code.pubitems that no other crate names were changed topub(crate)in a scratch tree, so that rustc'sdead_codelint covers them. It reports 61 items. Each is a field or variant, is removed by an open pull request, or has a user on Windows or in tests.src/jsc/bindings,packages/bun-uwsandpackages/bun-usockets: 20 small candidates in total. Open pull requests remove 153 items that the same scan finds.src/bun_core/feature_flags.rsall have readers. Nocfg(feature)and no customcfgis without a setter..rsfile, no unused[workspace.dependencies]entry.#if 0: no#if 0outside the SQLite amalgamation. Open pull requests remove every block of 6 lines or more.ErrorCode.ts, 178 names ofBunBuiltinNames.hand 81 exports ofinternal-for-testing.tswere checked. 10 small candidates.Probably dead, left alone on purpose
flushonArrayBufferSink,FetchRequestBodySink,HTTPServerWritableandNetworkSink(the sink generator uses the nameflush),host_fn_this_valueandhost_fn_setter(generate-classes.tsemits calls to them for class shapes that do not exist today).HELP_CATCH_MEMORY_ISSUES: every reader guards a call ofcheck_for_memory_corruption, which has an empty body. The doc comment calls it a placeholder untilGraph.heapis aMimallocArenaagain.cfg!(target_family = "wasm")(IS_WASM,IS_BROWSER,IS_NATIVE,USE_SIMDUTF) and the branches behind them, about 127 lines. No wasm target exists. The removal is a refactor of about 30 call sites.trueflags infeature_flags.rsandENABLEincrash_handler. They are developer switches.SILENTinget_latest_version,IS_SYNCinSpawnArgs::default,KIND_SETandDIR_FWDof the bit set iterators).PerformanceResourceTiming,ResourceTiming,NetworkLoadMetrics,ServerTiming): no instance can exist, but the globals are public. This needs a decision.SequenceTraitsforstd::arrayand twoGenericSequenceConverter::convertoverloads inJSDOMConvertSequences.h: never instantiated. They are surface of the bindings generator library.BuiltinName/BuiltinNamesMapmirror enums andmacro(redirect): no user. Both enums must change in one step.ERR_CRYPTO_INCOMPATIBLE_KEY,ERR_TLS_PROTOCOL_VERSION_CONFLICT,ERR_REDIS_INVALID_DATABASEand 5 message rows of$ERR_*intrinsics that no JS calls.headers.hand 11 more headers for functions that only Rust calls.Bun__signpost_emitwithgenerated_perf_trace_events.h(macOS): no caller. A Rust comment describes it as not wired yet.us_loop_integrate(empty function, Windows only),us_nq_settings_set_scid_len,us_nq_settings_set_delay_onclose,Http3ResponseData::onTimeout._WIN32and__PASE__branches ofsrc/jsc/bindings/libuv/uv.h. The directory is a copy of the libuv headers.src/js_parser/benches/string_map_vs_hashmap.rs(800 lines) and[profile.release-profiling]: nothing runs them. They read as tools for a person.#![feature(arbitrary_self_types_pointers)]inbun_alloc,adt_const_paramsinbun_core,generic_const_exprsinbun_shell_parser: no code seems to need them.hawk.tomloverrides forNapiStatusvariants: the enum ispub(crate)now.no test proof · iteration 0 · the description declares no behaviour change, so there is no failing test to prove; the existing suite in CI is the check