Back to Diary

일본 한달살이 19일차 (5월 16일)

아침은 간단하게 고기 먹었다.

점심은 적당히 먹었고, 저녁은 사온 카레에 고기추가해서 먹었다.


작업 일지

SWC minifier 버그 수정 1

repro를 클론해서 디버깅용 로그를 여기저기 추가했다. 그러다가 CSL.parseXml이라는 함수에 console.log를 추가하니까 작동했다. 이것은 CSL.parseXml 압축이 잘못되었고, console.log로 인해 해당 함수 내의 변수 분석 결과가 바뀌면 버그가 사라진다는 의미이므로, 저 함수만 보면 된다.

저 함수만 떼와서 테스트 케이스를 만들었다.

아예

return [][0];

이 생겨버린다. 디버깅을 해보니

var _obj = { children: [] }; var _stack = [_obj.children]; // 처리 코드 return _obj.children[0];

에서 hoist_props 패스가 _obj_obj_children 으로 바꾸고 배열 inlining 과정에서 var _stack = [_obj_children]; 를 고려하지 않는 게 문제였다. [_obj_children] 을 고려하게 바꾸니까 이슈가 해결됐다.

SWC Minifier 버그 수정 2

hoist_props 패스가 eval의 존재 여부를 따지지 않고 변수를 추가해버려서 발생하는 문제였다.

swc_core PR 업데이트

이슈 몇개 triage하다가 minifier PR들이 머지됐길래 swc_core 버전 업데이트 PR에 관련된 패치들을 추가했다.

@swc/core 패키지 정리

swc 메인 레포지토리를 제대로 된 모노레포로 만들기 위한 PR이다.

터보팩 Tree shaking PR

function sendReady(): Promise<void> { const length = Buffer.from([0, 0, 0, 0]); return new Promise((resolve, reject) => { socket.write(length, (err) => { console.trace(`sendReady callback 1 ${err}`) process.stderr.write(`TURBOPACK_OUTPUT_D\n`); process.stdout.write(`TURBOPACK_OUTPUT_D\n`); console.trace(`sendReady callback 2 ${err}`) if (err != null) { reject(err); } else { resolve(); console.trace(`sendReady callback done`) } }); }); }

디버깅을 위해서 로그를 추가하다가 process.stdout.write 이 아예 반환을 하지 않는다는 것을 알게 됐다.