Skip to content

Build-systems

  • Published on
    2026년 7월 13일 태그된 Nix 2.35.0의 첫 번째 하이라이트는 "Sources are copied to the store more lazily"입니다. 이 한 줄이 닫은 이슈 #3121은 2019년 10월 7일 Eelco Dolstra 본인이 열었고, 2026년 6월 9일에 닫혔습니다 — 2,437일. 흥미로운 건 정작 머지된 물건이 Dolstra의 lazy trees가 아니라는 점입니다. 그의 PR #6530은 3년을 열려 있다가 머지 없이 닫혔고, 후속인 #13225는 지금도 충돌 상태로 열려 있습니다. 대신 들어간 것은 Sergei Zimmerman의 #15711 — 제목이 "maybe 3rd time's the charm"이고, diff는 14개 파일에 +180/-37입니다(lazy trees v1은 56개 파일에 +1363/-364였습니다). 이 글은 그 사이에 무슨 일이 있었는지 — Determinate Nix가 같은 기능을 다운스트림에서 먼저 출시하고 5퍼센트에서 20퍼센트로 단계 롤아웃한 것, Lix가 아예 플레이크 기능 동결을 택한 것 — 을 정리하고, 무엇보다 이번 변경이 고치지 않은 것을 정직하게 짚습니다. 복사는 사라졌지만 트리 전체를 훑고 NAR 해시를 계산하는 일은 그대로이고, 릴리스 노트가 이걸 직접 "unavoidable"이라고 적었습니다.
  • Published on
    2026년 7월 8일, TypeScript 7.0이 GA됐습니다. Go로 다시 쓴 네이티브 포트가 더 이상 별도 바이너리가 아니라 그냥 tsc입니다 — npm install -D typescript을 하면 그게 들어옵니다. Microsoft가 보고한 전체 빌드 속도 향상은 8~12배이고, VS Code 코드베이스 기준 125.7초에서 10.6초로 떨어졌습니다. 하지만 헤드라인이 가리는 두 가지 비용이 있습니다. 첫째, TypeScript 6에서 폐기 예고된 것들이 전부 하드 에러가 됐습니다 — baseUrl, target es5, moduleResolution node가 사라지고 strict와 types 기본값이 바뀝니다. 둘째, 7.0은 프로그래밍 API를 아예 출하하지 않아서 Volar를 쓰는 Vue·MDX·Astro·Svelte 워크플로와 Angular 템플릿 체크는 당분간 TypeScript 6에 남아야 합니다. 이 글은 GA에서 실제로 무엇이 바뀌었는지, 10배라는 숫자가 어떤 조건에서 나온 것인지, 6과 7을 같이 두는 방법, 그리고 오늘 옮길 수 있는 사람과 없는 사람을 정리합니다.
  • Published on
    Odin 언어를 만든 gingerBill의 글 'Good Tools Are Invisible'을 읽고, 그 논지를 정리한 뒤 현업 관점의 단서를 더한다. 그는 좋은 도구란 마찰 없이 배경으로 사라져야 하며, 결함을 '풀면 재미있는 퍼즐'로 되파는 수사법을 비판한다. 나는 '느끼는 생산성 대 실제 생산성'이라는 구분에는 동의하지만, 인터페이스가 보이지 않는 것과 내부 동작이 불투명한 것은 다르다고 본다. 빌드 시스템과 쿠버네티스 오퍼레이터처럼 너무 조용한 도구는 실패를 숨긴다. 좋은 도구는 쓸 때는 보이지 않되, 고장 나면 크게 보여야 한다.
  • Published on
    빌드가 느린 데는 이유가 있습니다. 컴파일과 링킹의 차이, 증분 빌드와 캐시(ccache, sccache, Turbo, Nx, Bazel), 모노레포의 재빌드 문제, 콜드와 웜의 차이, 병렬성의 한계, CI 캐싱, 그리고 빌드를 프로파일링하는 법까지 — 느린 빌드를 구조적으로 진단하고 빠르게 만드는 방법을 정리합니다.
  • Published on
    2026년 빌드 시스템과 모노레포 툴 지형도. Bazel 8은 Bzlmod이 기본이고 원격 실행이 사실상 표준이 되었다. Buck2는 Rust로 다시 쓰여 사내 도구에서 OSS로 풀렸고, Pants 2는 Python 모노레포의 사실상 표준이다. JS 진영에서는 Nx 20과 Turborepo 2가 양강 구도로 자리잡았고, Moon이 Rust 기반으로 폴리글랏 영역을 노린다. Gradle 8.10·Maven 4·Cargo workspaces·Mise·just·Task까지 한 번에 정리한다.