TECH 으로 돌아가기
TECH HACKER NEWS 8분 읽기 24 READS

Servo 0.7.0, 527개 커밋으로 본 러스트 브라우저 엔진의 현주소

Servo 0.7.0, 527개 커밋으로 본 러스트 브라우저 엔진의 현주소
SOURCE IMAGE · HACKER NEWS

러스트로 작성되는 독립 브라우저 엔진 Servo가 9월 작업을 모은 0.7.0을 공개했다. 이번 버전에는 527개의 커밋이 반영됐는데, 화려한 단일 기능보다는 웹 표준 적합성, 메모리 안전성, 임베더(embedder) API 정리 같은 '엔진의 기초 체력'을 끌어올리는 변화가 주를 이룬다. 공식 요약은 요소, 둥근 사각형, 새로운 CSS 함수, WebGL2 개선을 앞세웠지만, 실질적인 의미는 Servo를 자신의 애플리케이션에 내장하려는 개발자와 웹 호환성을 가늠하려는 실무자 양쪽 모두에게 걸쳐 있다.

웹 표준 적합성의 꾸준한 전진

가장 눈에 띄는 영역은 WebGL2다. 다수의 커밋이 적합성(conformance) 테스트 통과율을 끌어올리는 데 투입됐으며, 이는 --pref dom_webgl2_enabled 플래그로 활성화된다. 비디오 자막 쪽에서는 WebVTT 처리가 상당히 진전됐다. 텍스트 트랙이 enter·exit·cuechange 이벤트를 발생시키고, 미디어 요소가 정렬된 전체 트랙 목록을 반환하며, 큐(cue)의 활성 계산과 순서가 올바르게 처리된다. 파싱 중 오류가 발생해도 복구할 수 있게 된 점은 실제 웹 콘텐츠의 불완전한 자막 파일을 다룰 때 중요한 안정성 요소다.

contenteditable 기반의 WYSIWYG 에디터 지원도 '매우 잘 진행되고 있다'고 밝혔다. --pref dom_exec_command_enabled가 켜진 상태에서 키보드 입력이 연결되면서 많은 편집기가 실제로 동작하는 단계에 이르렀다. Control+A(맥에서는 Command+A)로 문서 전체를 선택할 수 있게 됐고, 비밀번호 입력 필드의 텍스트 복사는 차단됐다. 선택 영역 기능은 섀도 트리를 가로질러 확장되고, 높이와 위치가 일관되게 표시되며, 복사·전체 선택을 위한 컨텍스트 메뉴 항목까지 추가됐다.

IndexedDB는 IDBIndex의 openCursor()·openKeyCursor(), IDBCursor의 advance()·continue()·continuePrimaryKey() 구현으로 커서 기반 조작이 가능해졌고, Web Animations의 getTimeline()·setTimeline()과 Sanitizer API의 javascriptURLs 속성도 추가됐다. stylo 의존성 갱신으로 contrast-color(), color-mix(), calc(), attr(), content: attr() 등 최신 CSS 함수 호환성도 개선됐다.

임베더가 주목해야 할 API 변화

Servo를 라이브러리로 내장하는 개발자라면 호환성을 깨는 변경에 주의해야 한다. WebView::set_throttled API가 제거되고, 스로틀링은 WebView가 숨겨지면 자동으로 적용되고 표시되면 해제되는 방식으로 바뀌었다. 포커스 처리도 WebViewDelegate::notify_focus_changed와 focus·blur 메서드가 사라졌으며, 이제 임베더가 시스템 포커스 획득·상실 시마다 직접 WebView::set_focused를 호출해야 한다. 접근성 도구 이벤트를 전달하는 Servo::forward_accessibility_action, 세션 히스토리를 비우는 WebView::clear_session_history 같은 새 API도 생겼다.

빌드 구성도 재정비됐다. WebGL이 default_web_features에 포함되어 WebGL을 빼려면 기본 기능을 명시적으로 비활성화해야 하고, 멀티프로세스 모드는 새 Cargo 기능 multprocess로 분리되어 이를 제거하면 바이너리 크기를 약 2MB 줄일 수 있다. 메모리 제약이 큰 기기를 겨냥한 가비지 컬렉터 튜닝 설정(js_mem_gc_malloc_threshold_base_mb, js_mem_gc_urgent_threshold_mb)도 추가돼, 임베디드·모바일 환경에서 Servo를 쓰려는 쪽에 선택지를 넓혔다.

안정성과 성능, 그리고 한계

이번 릴리스에서 비중이 큰 또 다른 축은 신뢰성이다. SpiderMonkey v153.3과 mozangle v0.7로 업그레이드하며 상위 프로젝트에 보고된 보안 버그 수정을 함께 반영했고, WebRTC··SharedWorker· 등에서 발생하던 다수의 패닉을 바로잡았다. 멀티프로세스 종료 시, IntersectionObserver 사용 시, WebDriver 명령이 남은 상태에서 브라우징 컨텍스트를 닫을 때 멈추던 행(hang) 현상도 해결됐다. 불필요한 할당 제거, 단일 프로세스 모드에서의 IPC 회피, 버퍼 재사용을 통한 메모리 절감 등 성능 작업도 폭넓게 진행됐으며, 리눅스에서는 스레드 친화도 부스팅을 켜 일부 CPU 아키텍처의 성능을 개선했다. 수거 불가능한 GC 순환으로 메모리가 새는 결함을 컴파일 단계에서 정적으로 막으려는 대규모 작업도 여러 기여자가 함께 진행 중이다.

다만 실무 적용 관점에서 한계는 분명하다. WebGL2, IndexedDB, Web Animations, Sanitizer, 접근성 등 핵심 기능 상당수가 여전히 기본 비활성 상태의 --pref 플래그 뒤에 있어, 안정 버전을 그대로 제품에 쓰기보다는 임베딩 실험과 러스트 기반 렌더링 연구 용도에 가깝다. Servo 팀은 자신들이 즐겨 쓰는 사이트가 Servo에서 얼마나 잘 돌아가는지에 대한 성공·실패 보고를 적극적으로 요청하고 있는데, 이는 역으로 아직 실제 웹 호환성이 광범위한 검증 단계에 있음을 뜻한다. 프로젝트는 현재 월 8,144달러의 정기 후원을 받으며 CI·벤치마크 서버 운영과 유지보수 인력을 충당하고 있다. 크로미움·웹킷 일극 체제에 대한 대안으로서 러스트 엔진의 가능성을 지켜보려는 국내 개발자라면, 완성된 브라우저가 아니라 성숙해 가는 엔진이라는 전제를 두고 흐름을 추적하는 편이 현실적이다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://servo.org/blog/2026/11/05/september-in-servo/
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...