Servo

Z Wikipedii, wolnej encyklopedii
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

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

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

  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 | edytuj kod]