2026-04-12

날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.

요약 (AI 작성)

zntc는 거의 하루 내내 Reanimated worklet 변환을 다듬었습니다. 클로저 분석을 어느 시점의 함수 본문으로 할지가 핵심 쟁점이었습니다. 변환 전 원본 본문(#1107), 방문 후 본문(#1127, #1128)을 오간 끝에, ES5 헬퍼가 끼지 않은 방문 전 본문을 쓰고 codegen이 TS·Flow 노드를 걷어 내며 JS 전역 목록을 넓히는 방식으로 정리했습니다(#1134~#1139). 그 사이 scope hoisting rename이 __closure와 worklet 해시 할당에 반영되지 않던 문제(#1111, #1112, #1117), 화살표 함수 worklet에 플러그인이 호출되지 않던 문제(#1119), 클로저 변수 이름의 use-after-free(#1132), dev 모드 크래시를 막는 __stackDetails(#1133)를 고쳤습니다.

이어서 클로저 분석을 화이트리스트 대신 노드 레이아웃 기반 범용 AST walker로 바꾸고(#1162), 중첩 함수·메서드 본문 순회, 메서드 매개변수와 지역 변수 제외, 자기 참조 제외, cover grammar 화살표 매개변수를 처리했습니다(#1155, #1158, #1159, #1163, #1165). 알려진 함수 호출의 인자를 자동으로 worklet으로 만드는 auto-workletization(#1148), 객체 메서드의 worklet directive(#1167), Layout Animation SIGABRT를 일으키던 두 원인 수정(#1172)이 뒤를 이었습니다. 이어 Babel react-native-worklets/plugin의 테스트 169개를 기준선으로 포팅하고(#1174), .withCallback() Layout Animation auto-worklet, getter/setter worklet, __pluginVersion 주입, substituteWebPlatformChecks 옵션, generator/async parity 테스트를 단계별로 병합했습니다(#1175~#1180).

worklet 밖에서는 ES5 클래스 필드 초기화를 super() 호출 직후로 옮기고(#1146), re-export 체인을 거치는 CJS default import를 canonical export 이름으로 해석하게 했으며(#1153), CSS 의존성 갱신과 함께 @emotion/react·Tailwind v4 스모크 테스트를 추가했습니다(#1126). CLAUDE.md는 329줄에서 52줄로 줄였습니다(#1123).

bungae는 worklet 수정이 들어갈 때마다 ZTS 서브모듈을 올렸고, ZTS 네이티브 worklet 변환으로 대체된 reanimated를 Babel 플러그인 감지 대상에서 뺐습니다. RN 프리셋에 빠져 있던 strictExecutionOrder를 넣고, 예제 앱에 Layout Animation 등 worklet parity 데모를 추가했습니다.

공개 커밋 92개, 해당일 생성 또는 병합된 PR 62개를 정리했습니다. PR 생성 62개·병합 60개는 같은 PR이 양쪽에 포함될 수 있습니다.

커밋

ohah/bungae

ohah/zntc

PR (해당일 생성/머지)

상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.

저장소PR해당일 활동상태대상 브랜치제목
ohah/zntc#1180생성 · 병합mergedmaintest(worklet): activate generator/async parity (Phase 6.3)
ohah/zntc#1179생성 · 병합mergedmainfeat(worklet): substituteWebPlatformChecks option (Phase 6.2)
ohah/zntc#1178생성 · 병합mergedmainfeat(worklet): inject __pluginVersion property (Phase 6.1)
ohah/zntc#1177생성 · 병합mergedmainfix(worklet): dispatcher body-offset for arrow_function_expression (Phase 4)
ohah/zntc#1176생성 · 병합mergedmainfeat(worklet): getter/setter worklet via factory body (Phase 3)
ohah/zntc#1175생성 · 병합mergedmainfeat(worklet): Layout Animation auto-worklet via .withCallback() (Phase 2)
ohah/zntc#1174생성 · 병합mergedmaintest(worklet): port Babel plugin 169 test cases as parity baseline (Phase 1)
ohah/zntc#1172생성 · 병합mergedmainfix(worklet): RN auto-enable + strip directive from method IIFE body (#1169)
ohah/zntc#1170생성closedmainfix(worklet): expand object method shorthand in __initData.code
ohah/zntc#1168생성 · 병합mergedmainfix(worklet): skip getter/setter methods in worklet transformation
ohah/zntc#1167생성 · 병합mergedmainfeat(worklet): support object method worklet directive (#1143)
ohah/zntc#1166생성 · 병합mergedmainrefactor(worklet): unify param collection with collectAllIdentifiers
ohah/zntc#1165생성 · 병합mergedmainfix(worklet): handle cover grammar arrow params in closure analysis
ohah/zntc#1164생성 · 병합mergedmainrefactor(worklet): extract walkScopedBody helper
ohah/zntc#1163생성 · 병합mergedmainfix(worklet): traverse nested function/arrow bodies for closure capture
ohah/zntc#1162생성 · 병합mergedmainrefactor(worklet): generic AST walker for closure analysis using nodeLayout()
ohah/zntc#1161생성 · 병합mergedmainfix(napi): pass func_name to getClosureVars
ohah/zntc#1160생성 · 병합mergedmainrefactor(worklet): move self-reference exclusion into collectClosureVars
ohah/zntc#1159생성 · 병합mergedmainfix(worklet): exclude function self-reference from __closure
ohah/zntc#1158생성 · 병합mergedmainfix(worklet): exclude method params and body locals from closure refs
ohah/zntc#1157생성 · 병합mergedmainfix(worklet): fix closure analysis shadowing bug in method traversal
ohah/zntc#1156생성closedmainfix(worklet): fix closure analysis shadowing bug in method traversal
ohah/zntc#1155생성 · 병합mergedmainfix(worklet): traverse object method/getter/setter bodies in closure analysis
ohah/zntc#1153생성 · 병합mergedmainfix(linker): use canonical export name for CJS re-export default resolution
ohah/zntc#1151생성 · 병합mergedmainchore(worklet): clarify dual-strip comment in worklet plugin
ohah/zntc#1150생성 · 병합mergedmainfix(worklet): strip directive from visited body to preserve inner auto-worklet
ohah/zntc#1149생성 · 병합mergedmainfix(worklet): save/restore auto_worklet_next flag to prevent nested call leaking
ohah/zntc#1148생성 · 병합mergedmainfeat(worklet): auto-workletization for known function callees
ohah/zntc#1146생성 · 병합mergedmainfix(es5): insert class fields after super() call, before constructor body
ohah/zntc#1142생성 · 병합mergedmainchore: zig fmt
ohah/zntc#1141생성 · 병합mergedmaintest(worklet): comprehensive test coverage for all worklet fixes
ohah/zntc#1140생성 · 병합mergedmainfix(worklet): handle assignment_expression in param binding names
ohah/zntc#1139생성 · 병합mergedmainfix(worklet): pre-visit body with expanded JS_GLOBALS
ohah/zntc#1138생성 · 병합mergedmainfix(codegen): add Flow expression node stripping
ohah/zntc#1137생성 · 병합mergedmainfix(worklet): codegen TS stripping for pre-visit worklet body
ohah/zntc#1136생성 · 병합mergedmainfix(worklet): skip ES5 lowering inside worklet function bodies
ohah/zntc#1135생성 · 병합mergedmainfix(worklet): generate initData code from pre-visit body
ohah/zntc#1134생성 · 병합mergedmainfix(worklet): use pre-visit body for closure analysis and initData code
ohah/zntc#1133생성 · 병합mergedmainfix(worklet): add __stackDetails to prevent dev mode crash
ohah/zntc#1132생성 · 병합mergedmainfix(worklet): dupe closure var names to prevent use-after-free
ohah/zntc#1131생성 · 병합mergedmainchore: simplify worklet nested closure tests
ohah/zntc#1130생성 · 병합mergedmaintest(worklet): add nested function closure analysis tests
ohah/zntc#1129생성 · 병합mergedmainfix(worklet): walk nested function bodies for closure analysis
ohah/zntc#1128생성 · 병합mergedmainfix(worklet): use post-visit body for function declaration closure analysis
ohah/zntc#1127생성 · 병합mergedmainfix(worklet): use post-visit body for arrow closure analysis
ohah/zntc#1126생성 · 병합mergedmainchore: CSS deps bump + @emotion/react · Tailwind v4 스모크 테스트
ohah/zntc#1125생성 · 병합mergedmainchore: remove duplicate comment and debug print
ohah/zntc#1124생성 · 병합mergedmainfix(worklet): handle assignment_target_identifier in arrow param exclusion
ohah/zntc#1123생성 · 병합mergedmaindocs: CLAUDE.md 축약 — CLI 옵션/JS API 예시 제거
ohah/zntc#1122생성 · 병합mergedmainchore: run zig fmt
ohah/zntc#1121생성 · 병합mergedmaintest(worklet): add integration tests for worklet transformation
ohah/zntc#1120생성 · 병합mergedmainrefactor(worklet): extract dispatchFunctionPlugins helper + fix original_body_idx
ohah/zntc#1119생성 · 병합mergedmainfix(worklet): add plugin dispatch for arrow→function lowering
ohah/zntc#1118생성 · 병합mergedmainrefactor(worklet): remove dead guard on ref_idx in buildClosureObject
ohah/zntc#1117생성 · 병합mergedmainfix(worklet): copy symbol_id to __closure identifier for scope hoisting rename
ohah/zntc#1116생성 · 병합mergedmainfix(worklet): unary_expression uses data.extra, not data.unary
ohah/zntc#1113생성 · 병합mergedmainfix(napi): use original body/params for closure analysis
ohah/zntc#1112생성 · 병합mergedmainfix(worklet): copy symbol_id for scope hoisting rename
ohah/zntc#1111생성 · 병합mergedmainfix(worklet): use original binding span for scope hoisting rename
ohah/zntc#1109생성 · 병합mergedmaintest(worklet): add edge case tests for closure analysis
ohah/zntc#1108생성 · 병합mergedmainfix(worklet): if_statement/try_statement/for_in use ternary data format
ohah/zntc#1107생성 · 병합mergedmainrefactor(worklet): use original body for closure analysis (Babel-compatible)