소스 정보
- 저장소
- oven-sh/bun
- 최근 소스 활동
- 2026년 8월 12일 06:44
- 감지된 SKILL.md 언어
- 영어
- 스타
- 95,806
- 포크
- 5,019
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/oven-sh/bun --skill verify명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
Implements JavaScript classes in C++ using JavaScriptCore. Use when creating new JS classes with C++ bindings, prototypes, or constructors.
Creates JavaScript classes using Bun's Rust bindings generator (.classes.ts). Use when implementing new JS APIs in Rust with JSC integration, prototypes, or constructors.
JSC GC reference for Bun. Use for use-after-free, JS object leaks, "collected too early", or when touching WriteBarrier, visitChildren, visitAdditionalChildren, JSRef, JSC::Strong/Weak, hasPendingActivity, ensureStillAlive, addOpaqueRoot, reportExtraMemoryAllocated, IsoSubspace, HeapAnalyzer, finalize.
SOC 직업 분류 기준
| name | verify |
| description | Verify a Bun runtime change by driving the debug binary end-to-end. |
Build and drive the debug binary directly — never bun test, never import-and-call.
bun bd --version # builds ./build/debug/bun-debug and prints its version
For any JS-visible change, run the debug binary with -e and observe stdout:
bun bd -e '<repro>' # builds, then runs; sets BUN_DEBUG_QUIET_LOGS for you
For worker/subprocess-shaped changes, spawn a subprocess (still -e) so worker teardown / event-loop-idle paths are exercised. Cross-check against node -e '<same repro>' for Node-compat changes.
src/js/** edit can silently not reach the binary. bundle-modules
regenerates build/<cfg>/codegen/InternalModuleRegistryConstants.h, but the C++
TU that embeds it is not always recompiled, so the build succeeds while the
binary still runs the OLD JS. Gate on the binary, not the build: ask the binary
you just built — bun bd -e 'console.log(<Class>.toString().includes("<new-id>"))'
(or run ./build/<cfg>/bun directly). Plain bun is the system Bun on $PATH and
never has your edit, so it answers about the wrong binary.
If false, touch src/jsc/bindings/InternalModuleRegistry.cpp and rebuild.bun bd with PATH="$HOME/.cargo/bin:$PATH" — Homebrew's rust
formula shadows the pinned nightly, and bun bd dies with the option 'Z' is only accepted on the nightly compiler. bun bd re-runs cargo on every invocation, so
this is needed for follow-up runs too, not just the first build.node:cluster changes can't be driven with -e: cluster.fork() re-execs argv[1], so workers need a real file on disk. Write a scratch script and run ./build/debug/bun-debug <file>.bun bd per worktree at a time — a second one blocks on the build lock and looks like a runtime hang. Build once, then drive ./build/debug/bun-debug directly under timeout.BUN_DEBUG_QUIET_LOGS=1 suppresses debug-build log spam.[cachefs]/[sys] lines to stdout; filter them before diffing
output against node..on/.off are added by requiring worker_threads — plain new MessageChannel() ports only have addEventListener until then.