Servo

eksperymentalny silnik przeglądarki internetowej rozwijany przez Mozillę i Samsunga

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].

Servo
Logo 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

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 edytuj

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

 
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 edytuj

Cele projektu edytuj

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

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

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

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

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

Linki zewnętrzne edytuj