일본 한달살이 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
이 아예 반환을 하지 않는다는 것을 알게 됐다.