August in Servo: CSS Grid, text selection, and more
Servo의 8월: CSS Grid, 텍스트 선택 등
Servo 0.6.0에는 8월에 반영한 417개 커밋이 담겼습니다. CSS Grid를 기본 활성화하고 텍스트 선택, 웹 API, 접근성, 탐색과 문서 로딩을 개선했으며 SpiderMonkey v153으로 업데이트했습니다. 일부 기능은 아직 명령행 설정으로 켜야 합니다.
- 주제
에디터 노트
이번 업데이트의 설득력은 기능 추가만이 아니라 브라우저가 실제 사이트에서 부딪히는 레이아웃, 탐색, 입력 문제를 함께 고친 데 있습니다. CSS Grid 기본 활성화와 텍스트 선택, about:blank 및 세션 기록 처리는 웹 호환성에 직접 닿는 변경입니다. 다만 LCP와 execCommand, ServiceWorker 관련 기능은 설정 뒤에 켜야 하며 디스크 캐시는 저장 내용을 지우는 방법이 없습니다. 따라서 이번 릴리스는 기능 범위가 넓어졌다는 사실과 각 기능의 기본 제공 여부를 구분해 읽어야 합니다. 성능 수치도 threadboost를 적용한 환경에서 관찰한 결과로 제시됐습니다.
AI 요약
Servo 0.6.0은 8월에 반영한 417개 커밋을 포함합니다. 가장 눈에 띄는 변화는 CSS Grid를 기본으로 켠 점입니다. 기존 그리드 레이아웃을 쓰는 사이트의 표시가 개선됐고, 개발팀은 rustweek.org를 사례로 들었습니다. 터치 입력으로 시작한 패닝은 움직임이 큰 축을 따라가도록 바뀌어 스크롤 동작도 더 예측 가능해졌습니다. 페이지에서 실제 콘텐츠의 위치와 크기를 고려하도록 스크립트와 레이아웃 코드를 손본 결과, 마우스와 터치로 텍스트를 선택할 수 있게 됐습니다.
웹 플랫폼과 브라우저 호환성
touch-action, animation-composition, color-scheme을 비롯한 웹 플랫폼 기능을 추가했습니다. text-transform에는 full-width, math-auto, full-size-kana 값을 구현했습니다. DedicatedWorkerGlobalScope의 requestAnimationFrame(), Location의 ancestorOrigins, Request의 탐색 관련 속성, focusin과 focusout 이벤트 등 DOM API도 보강했습니다. HTML 문서 탐색과 로딩, 세션 기록을 다듬어 iframe이나 새 창을 여는 페이지가 더 안정적으로 동작하도록 했습니다. 특히 about:blank 문서의 로딩 상태와 이벤트 발생 순서를 조정하고, 뒤로 가기와 앞으로 가기 요청은 진행 중인 기록 이동이 끝난 뒤 처리합니다. JavaScript 엔진 연동은 보안 수정과 충돌 수정이 포함된 SpiderMonkey v153으로 업데이트했습니다.
접근성, 성능, 저장 기능
접근성 기능은 --pref accessibility_enabled 설정으로 켤 수 있습니다. Servo는 접근성 트리 항목의 위치와 크기를 보고하고 여러 ARIA 역할을 접근성 도구에 전달합니다. 개발팀은 이 변경으로 macOS VoiceOver가 더 안정적으로 동작한다고 설명합니다. LargestContentfulPaint 구현은 --pref largest_contentful_paint_enabled 설정 뒤에 추가했으며, Document.execCommand()도 별도 설정으로 켤 수 있습니다. insertText, 줄바꿈, 들여쓰기와 contenteditable 선택 처리 등을 개선했습니다.
ServiceWorker 작업에서는 CookieStore와 Cache 인터페이스를 추가했으며 각각 설정으로 활성화해야 합니다. HTTP 캐시는 디스크에 저장해 실행 사이에도 유지할 수 있지만, 현재 캐시를 지우는 방법은 없습니다. 메모리 보고 기능은 문서 트리 노드와 DOM 바깥 인터페이스, 쿠키 데이터베이스, Canvas 렌더러의 사용량을 나눠 보여줍니다. 불필요한 할당과 가비지 컬렉터 상호작용도 줄였고, 일부 플랫폼에서는 폰트 파일을 시작 시 읽는 비용을 낮췄습니다. OpenHarmony에서 먼저 켜진 실험적 threadboost는 Speedometer 결과를 50% 개선하고 Canvas 렌더링을 초당 60프레임까지 끌어올린 사례가 있다고 Servo 팀은 전했습니다.
플랫폼과 빌드 변화
Android 포트는 Compose UI에 맞춰 손보고 구현을 Kotlin으로 옮겼습니다. OpenHarmony에서는 미국식 키보드 배열의 외부 키보드를 지원하고 CJK 문자용 대체 글꼴 선택도 개선했습니다. Linux arm64 빌드는 Raspberry Pi 5에 맞췄으며, Wayland와 OpenHarmony에서는 시스템 클립보드를 사용합니다. 빌드에는 모든 플랫폼에서 Clang 19 이상이 필요하고 OpenHarmony 빌드에는 cargo-ohos가 추가로 필요합니다. Cargo 기능으로 WebGL, WebCrypto, Brotli 압축 스트림 지원 등을 선택할 수 있게 했습니다.
성능과 개발 기반
Servo 팀은 CSS Grid 라이브러리 Taffy를 0.14로 올려 그리드 이름과 고유 크기 계산을 지원하고 관련 충돌을 수정했습니다. SVG 라이브러리 resvg도 0.48로 업데이트했습니다. Canvas 작업자 스레드 수를 설정할 수 있게 했고, SpiderMonkey와의 연동에서는 Rust 타입 시스템을 활용해 안전성을 높이는 작업을 이어갔습니다. 이번 릴리스에는 미디어 재생, 폰트 처리, WebDriver, 네트워크 요청과 같은 여러 영역의 호환성 수정도 포함됐습니다.
원문: Servo 블로그 / 번역·요약: Trawling