Skip to main content

Command Palette

Search for a command to run...

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

Updated
2 min readView as Markdown
D
I created SWC, an open-source compiler project, and previously worked at Deno and Vercel. These days, I spend a lot of time building Labor0, along with Watchtower and The AI Platform at Zephyr Cloud IO.

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

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


작업 일지

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

More from this blog