Servo
![]() Logo programu | |
Autor | Mozilla Foundation, Mozilla Corporation, Linux Foundation, Samsung[1] |
---|---|
Aktualna wersja stabilna | 0.22.0 (19 grudnia 2019) [±] |
Język programowania | Rust[1] |
Platforma sprzętowa | x86-64, ARM[2] |
System operacyjny | Windows, macOS, Linux, Android[2] |
Rodzaj | silnik przeglądarki internetowej |
Licencja | MPL[3] |
Strona internetowa |
Servo – silnik przeglądarki internetowej o otwartym kodzie źródłowym stworzony z myślą, by zapewniał wysoką wydajność, bezpieczeństwo oraz modułowość, za sprawą wykorzystania języka Rust[1]. Rozpowszechniany jest na licencji MPL[3].
Projekt został zapoczątkowany przez Mozilla Research, a przedsiębiorstwo Samsung wyraziło chęć przeportowania silnika na procesory ARM i system Android[1][4]. W listopadzie 2020 projekt przeszedł pod opiekę Linux Foundation[5].
Servo jest wciąż na wczesnym etapie rozwoju. Potrafi on już jednak poprawnie renderować niektóre strony internetowe, jak np. stronę Wikipedii czy GitHuba, a także pomyślnie przechodzi test Acid2[6].
Nazwa „Servo” pochodzi od Toma Servo, robota z telewizyjnego show Mystery Science Theater 3000[7].
Funkcje
Servo został zaprojektowany w taki sposób, by był wieloprocesowy, wielowątkowy, a zadania wykonywały się równolegle i były akcelerowane przez GPU[8], w celu zapewnienia wysokiej wydajności[9]. W środowisku takim funkcje programu (takie jak: parsowanie HTML i CSS, dekodowanie obrazów i wideo, renderowanie itd.) są obsługiwane przez drobne, odizolowane zadania, wykonywane równolegle na wielu rdzeniach procesora. Takie podejście pozwala wykorzystać potencjał nowoczesnego sprzętu, a ponadto zwiększa bezpieczeństwo, gdyż niepoprawnie napisany lub wolny kod nie zakłóci działania krytycznych funkcji przeglądarki[9].
Dwa znaczące komponenty wykorzystywane przez Servo nie zostały napisane od podstaw z użyciem języka Rust i bazują na istniejącym wcześniej kodzie Mozilli. Są nimi: silnik JavaScriptu SpiderMonkey oraz biblioteka graficzna Azure, używana do komunikacji z OpenGL i Direct2D[10].
Historia
Rozwój Servo rozpoczął się w 2012 roku. Pierwszy commit z 8 lutego 2012 w serwisie GitHub nie zawierał żadnego kodu źródłowego[11]. Dopiero 27 marca 2012 r. miał miejsce pierwszy, podstawowy commit kodu[12].
W dniu 3 kwietnia 2013 Mozilla ogłosiła współpracę z Samsungiem przy Servo[4].
Od 30 czerwca 2016 roku wersje binarne są dostępne do pobrania dla 64-bitowych systemów macOS i Linux, więc nie ma już konieczności kompilowania kodu na własną rękę[13]. 13 kwietnia 2017 rozpoczęto udostępnianie wersji również dla 64-bitowego systemu Windows[14].
Od 14 września 2018 r. wersje binarne są dostępne do pobrania dla systemu Android[15].
Projekt Servo
Cele projektu
Celem projektu Servo jest stworzenie od podstaw nowego silnika przeglądarki, który oferowałby wysoką wydajność, dzięki wykorzystaniu potencjału nowoczesnego sprzętu poprzez oparcie jego działania na obliczeniach równoległych i akceleracji GPU[8], a także bezpieczeństwo, za sprawą wykorzystania języka programowania Rust, który zapewnia bezpieczeństwo wątków i pamięci[16][17].
Struktura projektu
Projekt Servo jest utrzymywany i rozwijany głównie przez Mozillę oraz osoby z nią powiązane[1]. Jednak z racji tego, że to oprogramowanie o otwartym kodzie źródłowym, wkład od każdego jest możliwy i mile widziany[18].
Relacje z Firefoksem
Mozilla stworzyła projekt zwany „Quantum”, którego celem jest integrowanie kolejnych elementów silnika Servo z silnikiem Gecko, wykorzystywanym m.in. przez przeglądarkę Firefox. Dzięki takiemu podejściu zaobserwować można sukcesywny wzrost wydajności Firefoksa[19].
Chromium Embedded Framework
Do Servo zamierzano dodać obsługę API z Chromium Embedded Framework (CEF), co umożliwiłoby użycie Servo jako zamiennika dla Chromium w aplikacjach korzystających z CEF[20]. Wsparcie dla CEF nigdy jednak nie osiągnęło użytecznego stanu i zostało ono usunięte na początku 2018 roku[21][22].
Przypisy
- ↑ a b c d e Servo, the Parallel Browser Engine Project (ang.). Servo. [dostęp 2018-12-08].
- ↑ a b Servo Developer Preview Downloads (ang.). Servo. [dostęp 2018-12-08].
- ↑ a b GitHub – servo/LICENSE (ang.). GitHub. [dostęp 2018-12-08].
- ↑ a b Brendan Eich: Mozilla and Samsung Collaborate on Next Generation Web Browser Engine (ang.). Mozilla Blog, 2013-04-03. [dostęp 2018-12-08].
- ↑ Servo’s new home (ang.). Servo Blog, 2020-11-17. [dostęp 2022-03-22].
- ↑ Jack Moffitt: Another Big Milestone for Servo—Acid2 (ang.). Mozilla Research, 2014-04-17. [dostęp 2018-12-08].
- ↑ Brendan Eich: Add a new UI crate (ang.). GitHub, 2012-10-14. [dostęp 2018-12-08]. Cytat: MST3K SSSS mashup? MST3K required cuz I named Servo for Tom.
- ↑ a b Lin Clark: The whole web at maximum FPS: How WebRender gets rid of jank (ang.). Mozilla Hacks, 2017-10-10. [dostęp 2018-12-08].
- ↑ a b Servo engine – How does it work? (ang.). Mozilla Research. [dostęp 2018-12-08].
- ↑ Using Rust Spidermonkey Prototype (ang.). GitHub. [dostęp 2018-12-08].
- ↑ Dave Herman: Initial add (ang.). GitHub, 2012-02-08. [dostęp 2018-12-08].
- ↑ Patrick Walton: Add some stubs and a makefile (ang.). GitHub, 2012-03-27. [dostęp 2018-12-08].
- ↑ Servo Nightly Builds Available (ang.). Servo Blog, 2016-06-30. [dostęp 2018-12-08].
- ↑ Windows nightly builds now available (ang.). Servo Blog, 2017-04-13. [dostęp 2018-12-08].
- ↑ Paul Rouget: Add Android download link (ang.). GitHub, 2018-09-14. [dostęp 2018-12-08].
- ↑ Servo engine (ang.). Mozilla Research. [dostęp 2018-12-08].
- ↑ Design (ang.). GitHub. [dostęp 2018-12-08].
- ↑ GitHub – servo/README.md (ang.). GitHub. [dostęp 2018-12-08]. Cytat: Servo welcomes contribution from everyone. See CONTRIBUTING.md and HACKING_QUICKSTART.md for help getting started.
- ↑ Quantum (ang.). Mozilla Wiki. [dostęp 2018-12-08].
- ↑ Servo Continues Pushing Forward (ang.). Servo Blog, 2015-05-01. [dostęp 2018-12-08].
- ↑ Paul Rouget: Dropping CEF support? (ang.). Google Groups, 2018-01-30. [dostęp 2018-12-08].
- ↑ Paul Rouget: Drop CEF support (ang.). GitHub, 2018-01-30. [dostęp 2018-12-08].
Linki zewnętrzne
Media użyte na tej stronie
Mozilla Servo showing ACID2.
Autor: Mozilla Research, Licencja: CC BY-SA 3.0
Mozilla Research projects banner.