Servo 0.5.0의 7월 업데이트: Linux aarch64 바이너리, 더 빨라진 캔버스, SVG 웹 글꼴, DOM 선택 표시, 보안 수정 등을 소개합니다.
Servo 0.5.0에는 7월에 반영된 모든 변경 사항이 담겨 있으며, 총 488개의 커밋에 이르렀습니다. 또한 이제 Linux aarch64용 바이너리를 게시합니다 (@mukilan, #46760)!
이제 DOM 텍스트 선택 영역이 표시됩니다 (@mrobinson, @SimonSapin, #46698, #46864, #46742, #46889, #46126). 대화형 선택 기능도 곧 제공될 예정입니다!
보안 수정 사항은 § 보안을 참조하세요.
새로운 DOM API도 대거 추가했습니다.
이번에도 큰 업데이트이므로, 다음은 개요입니다.
다음 월간 업데이트에서 흥미롭게 다뤄질 수 있다고 생각하는 풀 리퀘스트를 작업 중이라면, 100% 확신이 없더라도 아래 단계를 따라 알려주세요.
풀 리퀘스트에 월간 업데이트 레이블을 추가하거나 @servo-highfive monthly update를 댓글로 남깁니다.
Highfive가 몇 가지 질문을 담은 댓글을 게시합니다.
@servo-highfive monthly update answer가 포함된 댓글로 해당 질문에 답합니다.
Servo는 Servo 0.5.0에서 수정된 quick-xml 및 crossbeam-epoch의 취약점에 잠재적으로 영향을 받았습니다 (@atouchet, @Loirooriol, #46737, #46324). 자세한 내용은 RUSTSEC-2026-0194, RUSTSEC-2026-0195, RUSTSEC-2026-0204를 참조하세요.
Firefox 115.x ESR 기반 버전(02755361e26d8)의 **ANGLE**을 Firefox 140.12.0 ESR 기반 버전(f8025617e815f)으로 업데이트했습니다. 여기에는 다수의 보안 수정이 포함되었을 가능성이 높습니다 (@jschwe, @sagudev, #46455, mozangle#100).
SVG 이미지에 영향을 주던 사전 로드 버그를 수정한 뒤, 이제 DuckDuckGo (duckduckgo.com) 랜딩 페이지의 오리가 v0.5.0에서 렌더링됩니다 (@jdm, #46668).
v0.4.0
v0.5.0


랜딩 페이지를 제외한 **Gumroad (gumroad.com)**의 대부분은 v0.4.0에서 전혀 렌더링되지 않았지만, v0.5.0부터는 둘러보기 페이지나 이 제품 페이지와 같은 페이지가 거의 완벽하게 렌더링됩니다.
v0.4.0
v0.5.0


v0.4.0
v0.5.0


여러분이 즐겨 찾는 웹사이트가 Servo에서 얼마나 잘 작동하는지 듣고 싶습니다! 성공 사례는 이 Zulip 스레드에, 실패 사례는 GitHub 이슈에 알려주세요.
Stylo 2026-07-01로의 업그레이드는 내장 CSS 함수에 여러 변경을 가져왔습니다 (@Loirooriol, #46129).
이제 --pref layout_css_alpha_color_function_enabled에서 **‘alpha()’**를 지원합니다.
이제 --pref layout_css_progress_function_enabled에서 **‘progress()’**를 지원합니다.
‘ellipse()’ 값 ‘closest-corner’ 및 **‘farthest-corner’**는 명세의 불확실성으로 더 이상 안정적이지 않지만, --pref layout_css_ellipse_corners_enabled에서 여전히 실험적으로 사용할 수 있습니다.
--pref layout_css_attr_enabled에서 **‘attr()’**의 명세 준수 수준이 향상되었습니다.
이제 WebGPU 콘텐츠는 --pref dom_webgpu_enabled에서 더 나은 명세 준수와 함께 GPUDevice의 GPUExternalTexture 및 **importExternalTexture()**를 사용할 수 있습니다 (@sagudev, #45873, #46178, #46286).
이제 IndexedDB 콘텐츠는 --pref dom_indexeddb_enabled에서 IDBIndex의 name 속성을 사용할 수 있습니다 (@skyz1, #45512).
이제 --pref dom_fontface_enabled에서 document.fonts는 유효한 각각의 **‘@font-face’**에 대한 FontFace를 포함합니다 (@simonwuelker, #46509, #46537).
위의 모든 기능은 servoshell의 실험 모드에서 활성화됩니다.
기본으로 활성화되는 네이티브 자막 및 캡션용 WebVTT 구현을 시작했습니다(--pref 불필요). 아직 렌더링되지는 않지만, 이제 각 <track src>를 가져오고 WebVTT를 분석하며 HTMLTrackElement의 track 속성을 통해 큐를 노출할 수 있습니다 (@TimvdLippe, #46289, #46383).
7월은 --pref accessibility_enabled 아래 Servo의 접근성에 있어 큰 달이었습니다. 이번 달의 초점은 성능이었으며, 접근성 트리는 이제 증분 업데이트를 지원하고 (@alice, @delan, #45578, #45971, #46589, #46691, #46385), HashMap 조회 및 트리 순회를 더 적게 요구하며 (@alice, @delan, #45798, #46740, #46348), DOM 변경을 더 빠르게 처리할 수 있게 되었습니다 (@alice, #46348, #46530).
또한 사용자가 <input type=file> 및 끌어 놓기를 통해 전체 디렉터리를 선택하고 업로드할 수 있도록 파일 및 디렉터리 항목 API 작업을 시작했습니다. 이를 위해 이제 --pref dom_entries_api_enabled에서 DataTransferItem의 **webkitGetAsEntry()**와 FileSystemEntry, FileSystemDirectoryEntry, FileSystemFileEntry에 대한 최소한의 지원을 제공합니다 (@yezhizhen, #46456, #46879, #46832).
servo 크레이트와 WebViewDelegate의 문서를 개선했습니다 (@mukilan, #46193).
호환성이 깨지는 변경: ServoBuilder::webxr_registry()가 제거되었습니다. 대신 servoshell의 시작 시간을 절반으로 줄일 수 있었던 지연 설계의 새 Servo::register_webxr_registry를 사용하세요 (@Narfinger, #46494).
이제 Android용 servoshell은 Android 13+만이 아니라 시장 점유율 91%의 **Android 10+**에서 실행되어, 적응성을 개선하고 낭비를 줄입니다 (@jschwe, #46142, #46308). macOS에서 Android용 빌드 시 발생하던 문제도 수정했습니다 (@jschwe, #46128).
이제 Windows용 servoshell은 콘솔 창에서 실행할 때 더 잘 동작하여, servoshell이 종료될 때까지 명령 프롬프트가 대기합니다 (@yezhizhen, #43010).
Firefox DevTools 사용 시 이제 Console 탭에서 기본적인 자동 완성을 지원합니다 (@freyacodes, #46382).
Android용 servoshell을 Compose UI로 현대화하는 작업을 마쳤으며 (@veyndan, #46085, #46164, #46253, #46257, #46317, #46353, #46565, #46612, #46626, #46666, #46663, #46700), 이제 라이브러리인 Servo를 Kotlin 사용으로 마이그레이션하고 있습니다 (@veyndan, #46817, #46895, #46772).
이제 인라인 SVG는 포함된 페이지에 정의된 웹 글꼴을 사용할 수 있습니다 (@yodalee, #45979). 또한 SVG DOM을 구현하고 있으며, SVGElement, SVGCircleElement, SVGDefsElement, SVGEllipseElement, SVGLineElement, SVGLinearGradientElement, SVGPathElement, SVGPolygonElement, SVGPolylineElement, SVGRadialGradientElement, SVGStopElement, SVGRectElement, SVGSymbolElement, SVGUseElement의 스텁 인터페이스부터 시작했습니다 (@mu-mostafa98, #46558).
이제 **<button>**은 내용을 수직 가운데 정렬하며 (@Loirooriol, @mrobinson, #46590), ‘display: block’ 및 ‘display: inline’에서도 더 잘 동작합니다 (@Loirooriol, #46536).
<form action> 없는 <form> (@kevlu93, #46860), <color> 값 (@Loirooriol, #46129), GamepadEvent (@log101, #46788), document.execCommand(“delete”) (@Psychpsyo, #46539), CSSStyleRule의 selectorText 속성 (@simonwuelker, #46687), WebDriver의 Set Window Rect (@janeoa, #46475, #46477)에 대한 명세 준수 수준을 개선했습니다.
<iframe> (@jschwe, @jdm, #46587), <img> (@yodalee, #46892), <textarea> (@SimonSapin, @mrobinson, #46309), 사용자 지정 속성 (@Loirooriol, #46129), ‘::before’ 및 ‘::after’ (@Loirooriol, #46640), ‘flex-direction: column’ (@simonwuelker, #46697), ‘float’ (@Loirooriol, @mrobinson, #46407, #46500, #46505), ‘@font-face’ (@simonwuelker, #46568, #46271, #46436), ‘position: absolute’ (@simonwuelker, #46358, #46637), Blob (@jdm, #46881), IDBDatabase, IDBObjectStore, IDBIndex (@mrobinson, #46615), ShadowRoot의 adoptedStyleSheets 속성 (@simonwuelker, #46738), FontFaceSet의 delete() (@simonwuelker, #46634), Element의 moveBefore() (@mrobinson, #46599), Window의 resizeTo() (@janeoa, #46477), HTMLOptionElement의 selected 속성 (@rhit-kapilaar, #46386), HTMLSelectElement의 value 속성과 관련된 버그를 수정했습니다 (@simonwuelker, #46230).
이제 2D 캔버스 렌더링이 멀티스레드로 작동하여 프레임 속도는 최대 55% 향상되고 프레임당 전력 소비량은 최대 42% 감소합니다 (@yezhizhen, #46410). 메모리 사용량도 훨씬 적어질 것입니다 (@jschwe, @sagudev, #46786).
같은 텍스트에 서로 다른 ‘font-size’를 사용하는 경우 텍스트 렌더링은 최대 10배 더 빨라졌습니다 (@Loirooriol, #46129).
플렉스 레이아웃 벤치마크는 최대 3% 더 빨라졌고, getElementsByClassName() 개선으로 일부 웹사이트는 최대 1% 더 빨라졌습니다 (@Narfinger, @jdm, #46563, #46595, #46594).
또한 Servo의 여러 부분에서 메모리 사용량, 할당, GC 루팅 단계 및 기타 작업을 줄였습니다 (@mrobinson, @jdm, @yezhizhen, @Narfinger, @Gae24, @SimonSapin, @Taym95, @cychronex-labs, @arayaryoma, #46499, #46411, #46659, #45974, #46377, #45758, #46440, #46762, #46301, #46349, #46419, #46418, #46420, #46460, #46633, #46638, #46690, #46745, #46726, #46564, #46144, #46664, #46462, #46139, #46430, #46446, #46498, #46548, #46598, #46632, #46656, #46678, #46718, #46722, #46238, #46072, #46408, #46438, #46437, #46528, #46124, #46330, #46412, #46807).
메모리 손상을 수반하는 충돌 회귀를 수정했으며 (@mrobinson, #46316), 동적 대여와 관련된 여러 충돌도 수정했습니다 (@Narfinger, @SharanRP, @Taym95, @agrawalx, @amittenak47, @sungmen, #46381, #46384, #46405, #46684, #46452, #46770, #46830, #46763). 또한 다음과 관련된 충돌을 수정했습니다.
"delete") (@TimvdLippe, #46265)Rust 타입 시스템을 사용해 Servo와 SpiderMonkey의 통합을 더 안전하고 신뢰성 있게 만들기 위한 장기적 노력을 계속했습니다 (@Gae24, @Narfinger, @TimvdLippe, @jdm, @kunalmohan, @lumiscosity, @simonwuelker, #46191, #46777, #46890, #46243, #46248, #46246, #46310, #46312, #46333, #46147, #46150, #46151, #46229, #46262, #46375, #46374, #46529, #46584, #46585, #46593, #46693, #46166, #46156, #46254, #46267, #46268, #46269, #46270, #46284, #46285, #46318, #46435, #46461).
Servo에 첫 패치를 반영한 다음 분들께 특별히 감사드립니다.
웹 브라우저 제작을 돕는 데 관심이 있으신가요? 새 기여자에게 적합한 이슈를 모은 목록을 확인해 보세요!
너그러운 지원에 다시 한번 감사드립니다! 이제 매월 반복 기부로 7824 USD/월을 받고 있으며, 이는 6월보다 1.8% 증가한 수치입니다. 이를 통해 신속한CI및벤치마킹서버, 최근의 Outreachy 인턴, 그리고 더 많은 사람이 Servo에 기여하도록 돕는 **관리자 작업**의 비용을 충당할 수 있습니다.
Servo는 thanks.dev에도 등록되어 있으며, Servo에 의존하는 35명의 GitHub 사용자가 이미 그곳에서 후원하고 있습니다. 이는 6월과 같은 수치입니다. url, html5ever, selectors, cssparser 같은 Servo 라이브러리를 사용한다면, thanks.dev에 가입하는 것은 여러분 또는 고용주가 커뮤니티에 환원하는 좋은 방법이 될 수 있습니다.
이제 여러분 또는 여러분의 조직이 지원 사실을 공개적으로 알리며 Servo 프로젝트에 기부할 수 있는 후원 등급이 마련되었습니다. 이런 종류의 후원에 관심이 있다면 join@servo.org로 연락해 주세요.
7824 USD/월
10000
기부금 사용은 기술 운영 위원회의 공개 **자금 요청 절차**를 통해 투명하게 결정되며, 진행 중인 제안은 servo/project#187에서 추적됩니다. 자세한 내용은 후원 페이지를 확인하세요.