Astro 7.4.1: 컴파일러와 Markdown 처리를 Rust로 옮기고 빌드 시간 내역까지 보여준다

요약

Astro 7.4.1은 가장 느린 두 단계를 Rust로 옮기고 Vite 8과 묶어 빌드 전체를 15에서 61퍼센트 줄인다. 빌드 명령에는 시간을 재는 인자가 붙어 단계별, 확장별, 페이지 렌더링별 내역을 늘어놓는다.

추천
이름
Astro
버전
7.4.1
요금
무료
오픈소스
오픈소스
운영체제
WindowsmacOSLinux
공식 사이트
https://astro.build/
업데이트
2026-10-21 15:57

Astro의 일곱 번째 계열은 기능 목록이 아니라 빌드 흐름 자체에 힘을 실었다. 가장 느린 두 단계를 Rust 구현으로 옮기고, 남은 의문은 소요 시간 내역이 답하게 한다.

현재 안정판은 7.4.1

지금의 안정판은 7.4.1이고 2026년 10월 19일에 나왔다. 이 계열에는 두 지점이 있다. 일곱 번째 계열이 시작된 것이 2026년 6월 22일, 이번 갱신이 나온 것이 10월 15일이다. 기획은 MIT 허용으로 공개되며 저장소의 주 언어는 TypeScript다.

가장 느린 두 단계를 Rust가 맡았다

일곱 번째 계열의 첫 공개가 한 일은 한 문장으로 정리된다. astro 부품 컴파일러를 통째로 바꿔 Go판에서 Rust판으로 다시 썼고, Markdown과 MDX 처리를 Rust 흐름으로 옮겼고, 그리기 엔진은 대기열을 바탕으로 한 방식으로 바꿔 그리기를 기다리는 조각을 더 효율적으로 세웠다.

공식 이유는 이렇다. 빌드는 세 단계로 나뉘고 첫 단계가 시간을 먹는다. 페이지와 내용, 브라우저 쪽 부품을 먼저 하나의 JavaScript 묶음으로 싸고, 그다음 미리 그릴 페이지마다 요청을 보내 HTML로 만든다. 느린 부분이 마침 컴파일과 Markdown 처리라서 두 단계가 기반 코드로 옮겨졌다. 기본 Markdown 처리기도 함께 바뀌어 기존 확장 조합에서 자체 흐름이 되었다. 표준 Markdown만 쓰는 사이트는 거의 느끼지 못한다. 문법 나무를 고치는 확장을 여러 개 얹은 기획은 하나씩 확인해야 한다.

Vite 8과 그것이 데려오는 묶음 도구

속도의 나머지 절반은 Vite 8에서 온다. 그 판의 가장 큰 변화는 Rust로 쓴 묶음 도구를 안에 넣은 것이다. 원래 일을 나눠 맡던 두 도구를 하나로 합치면서 확장 접점은 그대로 두었다. 합친 뒤 공식은 폭을 제시한다. 빌드 전체 시간이 15에서 61퍼센트 줄고, 일부 사이트는 두 배 이상 빨라진다.

기준 표가 분포를 더 잘 보여 준다. 육천 페이지가 넘는 문서 사이트가 약 115초에서 약 74초로, 만 삼천 페이지짜리가 약 386초에서 약 326초로 내려갔다. 페이지가 많은 사이트일수록 비율 이득은 작아진다. 페이지 그리기 자체는 Rust로 옮겨지지 않아 남은 시간에서 차지하는 몫이 커지기 때문이다.

얼마나 얻는지는 그 사이트의 시간 중 얼마가 컴파일과 Markdown에 쓰이는지에 달렸고, 수천 편의 Markdown이 쌓인 콘텐츠 사이트가 바로 컴파일이 큰 몫을 차지하는 부류다.

Astro 빌드 소요 시간 내역

이번 갱신은 빌드를 한 장의 보고서로 만든다

첫 공개는 어떻게 빨라지는지에 답했고, 이번은 어디가 빠르고 어디가 느린지에 답한다. 빌드 명령에 인자가 하나 늘어 끝나면 내역을 찍는다. 각 단계, 확장의 종류별, Markdown 처리와 문법 강조, 페이지 그리기, 그림 처리, 통합별 소요 시간과 비중에 더해 가장 느린 페이지의 중간값과 상위값까지 붙는다.

공식은 블로그 시작 틀로 시연한다. 틀에는 페이지가 아홉 개뿐이고 전체가 약 2초 반이며 그중 페이지 생성이 2초 남짓으로 약 80퍼센트를 차지한다. 가장 느린 페이지는 글 틀을 적용한 것들에 거의 한정되고, 첫 화면과 구독 피드는 밀리초 단위에 머문다. 문제 지적은 분명하다. 틀 안에서 댓글 칸이 먼저 댓글을 가져오고 그다음 각 댓글의 작성자 정보를 가져온다. 두 번의 요청이 이어지면서 모든 페이지가 기다린다.

한 번에 나란히 가져와 결과를 아래로 넘기는 형태로 바꾸자 페이지 생성이 2초 남짓에서 약 1초로 내려갔고 글 한 편의 그리기 시간이 절반이 되었다. 이 예의 값어치는 그 1초가 아니라, 보고서 없이는 찾기 어려운 것을 드러냈다는 데 있다. 편집 화면에서는 코드가 아무 문제 없어 보인다.

Astro 빌드 소요 시간 내역

그림 창구가 빌드 때와 실행 때로 나뉜다

이번에는 그림 창구를 두 벌로 설정할 수 있다. 미리 그리는 페이지용이 한 벌, 요청에 따라 그리는 페이지용이 또 한 벌이다. 빌드 때는 기계 전체와 완전한 환경이 있어 그 자리 최적화 도구가 가장 알맞다. 요청에 따른 그리기는 서버나 가장자리 지점에서 돌아 그 자리 도구가 돌지 못할 수 있어 그림 전송망이 합당한 선택이 된다. 이전에는 둘 중 하나를 고르거나 연결 도구가 대신 정하게 두어야 했다. 이것이 성립하도록 빌드 중 쓰는 그림은 틀 자체의 흐름이 한꺼번에 추적하고, 각 연결 도구가 같은 것을 따로 복제하지 않는다.

엄격해진 컴파일러가 뜻하는 것

컴파일러 교체는 단순한 속도 향상이 아니다. 새 Rust 컴파일러는 올바르지 않은 HTML 표기에 더 엄격하다. 닫히지 않은 표시는 그대로 오류가 되고, 내용이 있는 요소에는 짝이 되는 닫는 표시가 있어야 한다. 뜻으로 올바르지 않은 겹침은 자동으로 고쳐지지 않고 적힌 그대로 브라우저로 넘어간다.

예전 컴파일러는 조용히 도왔다. 표시를 닫고 순서를 맞추고 자리가 틀린 마디를 밖으로 옮겼다. 이 도움이 어떤 경우에는 찾기 어려운 결함을 낳았기에 새 쪽은 돕지 않기로 했다. 대가로 갱신 뒤에는 처음 보는 오류가 나올 수 있고 그리기 결과가 달라졌을 수도 있다. 실제 방법은 소박하다. 갱신하면 먼저 한 번 빌드하고, 닫히지 않은 표시가 있으면 채우고, 그리기가 달라졌으면 틀의 겹침을 되짚는다. 틀이 반듯한 기획은 거의 느끼지 못하고, 역사가 무거운 기획은 한 번 정리하게 된다.

두 개의 시험용 스위치와 몇 가지 새 약속

시험적인 능력이 둘 따라온다. 하나는 나란한 미리 그리기로, 정적 페이지 그리기를 여러 작업 흐름에 나누고 기본으로 하나를 뺀 모든 핵을 쓴다. 흐름이 늘수록 빌드의 메모리도 늘어나므로 메모리가 빠듯하거나 빨라지지 않을 때는 수를 낮춰야 한다. 다른 하나는 직접 만든 넘김 페이지다. 정적 사이트에는 넘김 머리말을 보낼 서버가 없어 넘길 때마다 다시 읽기 지시를 담은 작은 페이지를 만든다. 지금까지 그 문구와 모양과 지연은 고정이었지만, 새 스위치는 자기 틀로 그리며 출처, 목적지, 상태 번호, 지연을 인자로 넘긴다.

새 약속도 몇 가지 적어 둘 만하다. Node의 최소 판이 22로 올라간다. src/fetch.ts는 예약된 이름이 되어 앞선 경로 설정이 자동으로 불러오므로 같은 이름의 파일이 있는 기획은 설정을 바꾸거나 이름을 바꿔야 한다. 글꼴 제공자에는 임의의 되부름이 늘어 그 글꼴이 실제로 가진 굵기, 자형, 부분 집합, 형식을 선언할 수 있다. 제공자가 낼 수 없는 값을 설정에 적으면 이르게 경고가 뜬다. 지금은 임의이고 다음 큰 판에서는 필수가 된다.

어떤 사람에게 맞나

공식은 스스로를 내용이 이끄는 사이트를 위한 틀이라고 부르고, 광고 사이트와 블로그, 판매 사이트를 꼽는다. 핵심 설계는 서버 우선이다. 부품은 서버에서 그려지고 브라우저에는 HTML만 간다. 남는 JavaScript 비용은 없고, 주고받기가 필요한 부분은 섬으로 따로 읽어 들인다. 넓히는 면에서는 주요 화면 틀의 부품을 그대로 받아들여 이미 있는 부품을 그대로 가져올 수 있고, 내용 쪽에서는 모음을 제공해 폴더에 넣은 Markdown과 데이터 파일이 형식 안전과 자동 완성을 얻는다.

도구함에 넣는 이유는 대개 기능 하나가 아니라 빌드 시간과 결과물 크기를 동시에 붙잡을 수 있다는 데 있다. 일곱 번째 계열이 앞의 것을 눌러 내렸고, 이번이 그것을 설명할 수 있게 만들었다.

Astro 7이 하는 이야기는 소박하다. 느린 부분을 더 빠른 언어 구현으로 바꾸고, 남아 설명되지 않는 부분을 읽을 수 있는 보고서로 만든다. 앞은 한 번의 다시 쓰기로 끝나고 뒤는 인자 하나로 충분하다. 기억할 것은 그 백분율이 아니라, 빌드가 느려지면 먼저 보고서를 보고 그다음에 어디를 고칠지 정하는 순서다.

Astro다운로드
지원 운영체제: Windows macOS Linux