Servo

Servo
Logo Servo
Logo programu
AutorMozilla Foundation,
Mozilla Corporation,
Linux Foundation,
Samsung[1]
Aktualna wersja stabilna0.22.0
(19 grudnia 2019) [±]
Język programowaniaRust[1]
Platforma sprzętowax86-64, ARM[2]
System operacyjnyWindows, macOS, Linux, Android[2]
Rodzajsilnik przeglądarki internetowej
LicencjaMPL[3]
Strona internetowa

Servosilnik 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 pokazujący wynik testu Acid2

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

Diagram przedstawiający projekty Mozilli Research, w tym Servo

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

  1. a b c d e Servo, the Parallel Browser Engine Project (ang.). Servo. [dostęp 2018-12-08].
  2. a b Servo Developer Preview Downloads (ang.). Servo. [dostęp 2018-12-08].
  3. a b GitHub – servo/LICENSE (ang.). GitHub. [dostęp 2018-12-08].
  4. 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].
  5. Servo’s new home (ang.). Servo Blog, 2020-11-17. [dostęp 2022-03-22].
  6. Jack Moffitt: Another Big Milestone for Servo—Acid2 (ang.). Mozilla Research, 2014-04-17. [dostęp 2018-12-08].
  7. 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.
  8. 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].
  9. a b Servo engine – How does it work? (ang.). Mozilla Research. [dostęp 2018-12-08].
  10. Using Rust Spidermonkey Prototype (ang.). GitHub. [dostęp 2018-12-08].
  11. Dave Herman: Initial add (ang.). GitHub, 2012-02-08. [dostęp 2018-12-08].
  12. Patrick Walton: Add some stubs and a makefile (ang.). GitHub, 2012-03-27. [dostęp 2018-12-08].
  13. Servo Nightly Builds Available (ang.). Servo Blog, 2016-06-30. [dostęp 2018-12-08].
  14. Windows nightly builds now available (ang.). Servo Blog, 2017-04-13. [dostęp 2018-12-08].
  15. Paul Rouget: Add Android download link (ang.). GitHub, 2018-09-14. [dostęp 2018-12-08].
  16. Servo engine (ang.). Mozilla Research. [dostęp 2018-12-08].
  17. Design (ang.). GitHub. [dostęp 2018-12-08].
  18. 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.
  19. Quantum (ang.). Mozilla Wiki. [dostęp 2018-12-08].
  20. Servo Continues Pushing Forward (ang.). Servo Blog, 2015-05-01. [dostęp 2018-12-08].
  21. Paul Rouget: Dropping CEF support? (ang.). Google Groups, 2018-01-30. [dostęp 2018-12-08].
  22. 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.png
Mozilla Servo showing ACID2.
Servo Logo.svg
Autor: Mustafa Al-Qinneh, Licencja: MPL 1.1
Logo image for the Servo Browser Engine
Mozilla Research projects.png
Autor: Mozilla Research, Licencja: CC BY-SA 3.0
Mozilla Research projects banner.