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.
Introduction to Rust in Production - Servo Mozilla project (Talk)
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. • 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. 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)