Servo

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania
Servo
Autor Mozilla Foundation,
Mozilla Corporation,
Samsung[1]
Aktualna wersja stabilna 0.21.0
(31 grudnia 2018) [±]
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].

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

Nazwa „Servo” pochodzi od Toma Servo, robota z telewizyjnego show Mystery Science Theater 3000[6].

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[7], w celu zapewnienia wysokiej wydajności[8]. 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[8].

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

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[10]. Dopiero 27 marca 2012 r. miał miejsce pierwszy, podstawowy commit kodu[11].

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ę[12]. 13 kwietnia 2017 rozpoczęto udostępnianie wersji również dla 64-bitowego systemu Windows[13].

Od 14 września 2018 r. wersje binarne są dostępne do pobrania dla systemu Android[14].

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[7], a także bezpieczeństwo, za sprawą wykorzystania języka programowania Rust, który zapewnia bezpieczeństwo wątków i pamięci[15][16].

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

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

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[19]. Wsparcie dla CEF nigdy jednak nie osiągnęło użytecznego stanu i zostało ono usunięte na początku 2018 roku[20][21].

Przypisy[edytuj | edytuj kod]

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

Linki zewnętrzne[edytuj | edytuj kod]