Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduction to Rust in Production - Servo Mozilla project (Talk)

134 views

Published on

FRENCH - Talk made at the OVH Meetup on the 4th April, see the slides with the same name.

This presentation was made by a Mozilla Reps and not an employee working on the project.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Introduction to Rust in Production - Servo Mozilla project (Talk)

  1. 1. Patience surInternetest-elle morte ?!L’Internetvavite…le navigateurdoitsuivreaujourd’hui ! Parallèle Parallaxe • Par exemple,récemmentessayé àuneffetparallaxesurmonsite avecl’idée d’un scroll rapide etlisse…cependant • Différentes approchesqui obligentle devàpenserlessoucisde performancesetles soucisde compatibilitéentre nav • Servovientrépondre àcette problématiqueenapportantplusde vitesseaux chargementde vospageset une fluidité sansprécédent… Nom de code Quantum • Firefox utilise moteurde renduGeckoenC++ -> effetquantum=créer une nouvelle expérience pourl’utilisateur • Chargementde page plusrapide et fluidité • Servo= une initiative de MozillaResearch2012 desirde : • Autantde performance etde puissance que le C++ • Mais sans risque de bugetde faillesde sécurité • Basé sur un mécanisme d’exécution multi-process=HTML et CSS • Programmation parallèle autoriséemaisseulementsouscertainscas ->WebGL shaderGPU and Web WorkersinJS • Samsumgrejoint2015 • ARMsupportet Android  Démo ServoExperiments.com Avantage de Rust • Contre la corruptionde mémoire • C++ -> écriture de plusde donnée que dansle buffer • Accéderà desblocsde mémoire déjàfreed • Parallélisation etthreadsafety • Une approche pluscontrôlée de laparallélisation =built-inconcurencypourdes tachesparalléliséesetdesprogrammesexécutés enparallèle.Le partage des donnéesalorsplusexplicite ->système d’erreuralacompi
  2. 2. • Bas niveau • Rust compile versducode machine natif =autant de perf que le c++ en 2015 et aujourd’hui +de perf …… • Enjeusur lesperf etlaminimisationde laconsoénergétique.HeartbeatsAPIcapable d’enregistrerdesdonnéesd’utilénergie de taches parallèle etcrossplatform  Démo servoexperiments.com [PAUSE] Rust en production avec Servo 1. Rust rapidité ?? ~150k line de code (2016) VS Blink (chromium) had700k linesof C++ code and WebKit1.3Mlines • Servo-Shell =WebBrowserutilisantseulementJSetCSS • BrowserChrome utilisantdesAPISqui s’exécute surServo etpermettentde se différencierducontenude lapage chargé = superperf • CSS ~120 propriétéssupportésenMai 2015 2. Plusieurs Crates • Stylo Liste despropriété CSS,unparseurde CSS en multithread : https://docs.google.com/spreadsheets/d/1CxLS8w8GwK- 2euVErrqpUUb76PiZa6w5h5EnGsL9KFs/edit#gid=555855884 • WebRender Utilise le GPUau lieuduCPU, le renduestalorsfait de deux manières: 1. Servo analyse le layout de la page et renvois celle-ci sous forme de Display élément 2. Le GPU reçoit les données et les initialise les fonctions de rendu 3. Puis il rend « instantanément » tout ce qu’on lui a donné C’estenréalité une descriptiondufrontanalysé poursavoircommentoptimiserlescmdGPU. WebRenderutilise OpenGLet destechniquesde Shader.
  3. 3. Quantum Compositor The Quantum Compositor moves Gecko’s compositor into its own process. Since graphics driver instability is a major source of Firefox crashes, we expect that moving code that interacts with the GPU into its own process will make Firefox more stable. This work is tracked in bug 1264543. Quantum DOM The Quantum DOM project will make Gecko more responsive, especially when there are a lot of background tabs open. When Quantum DOM is finished, JS code for different tabs (and possibly different iframes) will run in separate cooperatively scheduled threads; the code for some background tabs will never run at all. Bill McCloskey wrote more about Quantum DOM on his blog. Quantum Flow The Quantum Flow project is part of a bigger Quantum Initiative. It explore performance improvements not covered by the other Quantum components, such as UI optimizations. 3. Contribution facile • Git-Hubavecune communauté trèsouverte etavenante pourlesnouveauxvenus • Stackoverflow surRustc’est4,6k de questionset 5,9k de réponsespour2,6k de personnes • IRC,mailinglist,Reddit… • Utilisationd’ungestionnaire Machqui réduitle nombre de commande pourcompileretdev Servo • Servoestprincipalementcodé enRust,maisil reste 2/3 enC/C++ = SpiderMonky,JS Engine..Cargoavecsa configurationen.toml permetde gérertoutesses dépendance etde vérifierdesmisesàjourdansun système de compatibilité • Système de testunitaire spécialementdestestsde compentre Cratessinontest cross-plateformpourle WPTetle CSS • Servocapable d’exécuter • GithubDuckDuck Go WikipediaReddit…  Démo Servo Nigthly avec GitHub, Reddit et Wikipedia Conclusion Et surtout unprojetde recherche qui vise àapporterplusde rapidité etde fluidité aux navigateursactuelle.Ce n’estpasunnouveaunavigateurmaisune nouvelletechnologie qui se doitd’être intégrable(testsunitairescross-plateforme) -> IntégrationpetitàpetitdansFirefox (dernière miseàjourmars 2017)

×