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
[edytuj | edytuj kod]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
[edytuj | edytuj kod]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
[edytuj | edytuj kod]Cele projektu
[edytuj | edytuj kod]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
[edytuj | edytuj kod]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
[edytuj | edytuj kod]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
[edytuj | edytuj kod]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
[edytuj | edytuj kod]- ↑ a b c d e Servo, the Parallel Browser Engine Project. Servo. [dostęp 2018-12-08]. (ang.).
- ↑ a b Servo Developer Preview Downloads. Servo. [dostęp 2018-12-08]. (ang.).
- ↑ a b GitHub – servo/LICENSE. GitHub. [dostęp 2018-12-08]. (ang.).
- ↑ a b Brendan Eich: Mozilla and Samsung Collaborate on Next Generation Web Browser Engine. Mozilla Blog, 2013-04-03. [dostęp 2018-12-08]. (ang.).
- ↑ Servo’s new home. Servo Blog, 2020-11-17. [dostęp 2022-03-22]. (ang.).
- ↑ Jack Moffitt: Another Big Milestone for Servo—Acid2. Mozilla Research, 2014-04-17. [dostęp 2018-12-08]. (ang.).
- ↑ Brendan Eich: Add a new UI crate. GitHub, 2012-10-14. [dostęp 2018-12-08]. Cytat: MST3K SSSS mashup? MST3K required cuz I named Servo for Tom. (ang.).
- ↑ a b Lin Clark: The whole web at maximum FPS: How WebRender gets rid of jank. Mozilla Hacks, 2017-10-10. [dostęp 2018-12-08]. (ang.).
- ↑ a b Servo engine – How does it work?. Mozilla Research. [dostęp 2018-12-08]. (ang.).
- ↑ Using Rust Spidermonkey Prototype. GitHub. [dostęp 2018-12-08]. (ang.).
- ↑ Dave Herman: Initial add. GitHub, 2012-02-08. [dostęp 2018-12-08]. (ang.).
- ↑ Patrick Walton: Add some stubs and a makefile. GitHub, 2012-03-27. [dostęp 2018-12-08]. (ang.).
- ↑ Servo Nightly Builds Available. Servo Blog, 2016-06-30. [dostęp 2018-12-08]. (ang.).
- ↑ Windows nightly builds now available. Servo Blog, 2017-04-13. [dostęp 2018-12-08]. (ang.).
- ↑ Paul Rouget: Add Android download link. GitHub, 2018-09-14. [dostęp 2018-12-08]. (ang.).
- ↑ Servo engine. Mozilla Research. [dostęp 2018-12-08]. (ang.).
- ↑ Design. GitHub. [dostęp 2018-12-08]. (ang.).
- ↑ GitHub – servo/README.md. GitHub. [dostęp 2018-12-08]. Cytat: Servo welcomes contribution from everyone. See CONTRIBUTING.md and HACKING_QUICKSTART.md for help getting started. (ang.).
- ↑ Quantum. Mozilla Wiki. [dostęp 2018-12-08]. (ang.).
- ↑ Servo Continues Pushing Forward. Servo Blog, 2015-05-01. [dostęp 2018-12-08]. (ang.).
- ↑ Paul Rouget: Dropping CEF support?. Google Groups, 2018-01-30. [dostęp 2018-12-08]. (ang.).
- ↑ Paul Rouget: Drop CEF support. GitHub, 2018-01-30. [dostęp 2018-12-08]. (ang.).