Firefox 52 mit WebAssembly-Unterstützung veröffentlicht


3D-Rendering der Zen Garden-Demo in Firefox 52 mit WebAssembly-Unterstützung

Mozilla hat Firefox 52 veröffentlicht , den neuesten Browser mit Unterstützung für das Windows XP-Betriebssystem. Eine Reihe wichtiger Änderungen wurden vorgenommen : Die Verbindung zu Hotspots wurde vereinfacht. Sie müssen sich zuerst beim Browser anmelden. Gefahrenwarnungen werden angezeigt, wenn auf der Seite nach einem Kennwort für eine unsichere Verbindung gefragt wird (nicht HTTPS). Die Unterstützung für NPAPI-Plugins ist verschwunden (außer Flash, und die vollständige Unterstützung bleibt im ESR-Build erhalten.) 28 Schwachstellen geschlossen.

Nichts ist vergleichbar mit der Haupt- und Grundinnovation - der Unterstützung der einfachen Programmiersprache WebAssembly (wasm) wie Assembler, die als eine der bedeutendsten Innovationen der Webplattform im letzten Jahrzehnt bezeichnet wird. Dies ist, was JavaScript fehlte.

Webassembly



Die Entwickler erklären, warum WebAssembly erstellt werden musste . Tatsache ist, dass JavaScript ursprünglich als einfache Sprache für einfache Skripte konzipiert wurde. Niemand ahnte, in was es hineinwachsen würde und wie es anfangen würde, angewendet zu werden. Es wurde für Anfänger in der Programmierung erfunden - für einfache Dinge wie das Schreiben eines Formulars auf einer Webseite.

Seitdem hat sich viel geändert. Moderne Webanwendungen sind komplexe Computerprogramme mit Client- und Servercode, von denen die meisten in JavaScript geschrieben sind. Trotz der Fortschritte bei der Entwicklung von JavaScript selbst und aller Versuche von Entwicklern, effektive Engines für die schnelle Ausführung von JavaScript zu erstellen, kam nichts dabei heraus, es ist einfach physikalisch unmöglich. JavaScript weist inhärente Einschränkungen auf. Der Browser kann diesen Code einfach nicht mindestens so schnell ausführen wie den nativen Code im Betriebssystem.

Mozilla war der erste, der reifte, bevor er eine Art virtuelle Maschine in einem Browser entwickelte, in dem Sie Code auf niedriger Ebene ausführen können. Vor einigen Jahren wurde asm.js als Demonstration veröffentlicht (Google experimentierte mit der Native Client-API ). Die Sublanguage von asm.js erwies sich als so gut, dass klar wurde: Wir müssen uns mit allen größten Entwicklungsunternehmen zu einem gemeinsamen Projekt zusammenschließen, das das Web vorantreibt.

Die Low-Level-Sprache WebAssembly kann in Verbindung mit JavaScript verwendet werden und ermöglicht die Ausführung von Webanwendungen mit viel höherer Leistung - fast wie native Anwendungen im Betriebssystem.

Jetzt können Sie in einem Browser leistungsstarke 3D-Spiele, CAD-Systeme (Computer Aided Design), Video-Editoren, Grafik-Editoren, wissenschaftliche Visualisierungen, ressourcenintensives Computing und Videokodierung ausführen - alles.

Im Laufe der Zeit verwenden viele vorhandene Webanwendungen - E-Mails, soziale Netzwerke, Texteditoren - und JavaScript-Frameworks mit größerer Wahrscheinlichkeit WebAssembly, wodurch die Download-Geschwindigkeit erheblich erhöht und die Leistung während der Arbeit erheblich gesteigert wird.

Im Gegensatz zu anderen Ansätzen wie Flash, bei denen ein Plug-In in einem Browser installiert werden muss, um Anwendungen mit einer Geschwindigkeit auszuführen, die mit nativen Anwendungen vergleichbar ist, passt WebAssembly vollständig in die Standard-Webplattform. Es ist ein offener und kompatibler Standard, der in Browser integriert ist. Dies bedeutet, dass Entwickler WebAssembly-Bibliotheken für CPU-intensives Computing (Komprimierung, Gesichtserkennung, Physik) direkt in vorhandene Webanwendungen integrieren können, die JavaScript verwenden.

WebAssembly ist ein offener Standard, der von Mozilla, Google, Microsoft und Apple entwickelt wurde. Wie Sie sehen können, repräsentiert diese Gruppe die Entwickler der vier am häufigsten verwendeten Browser, sodass Sie sich darauf verlassen können, dass Wasm als universeller Standard gilt. Google verspricht, die Unterstützung für WebAssembly in der nächsten Version von Chrome (57) zu implementieren. Microsoft arbeitet bereits an einer Implementierung in Edge.

Eine einfache Sprache wird zu einer Art Ergänzung zu JavaScript und sollte am Ende überall dort funktionieren, wo JS funktioniert: in allen Browsern und in allen Laufzeitumgebungen wie Node.js.

Wer profitiert von WebAssembly? Es geht nicht nur darum, neue Anwendungen in wasm zu schreiben. Über Compiler wie Emscripten können ganze Spiele und vorgefertigte native Anwendungen ins Web portiert werden. Der portierte C / C ++ - Code, der diesen Compiler verwendet, wird im Browser fast mit der gleichen Geschwindigkeit wie die native Anwendung ausgeführt. Neben C / C ++ bietet Rust auch vorläufige Unterstützung für WebAssembly.

Sie können beispielsweise die Zen Garden-Demo abspielen (erfordert den Firefox 52-Browser, derzeit wird nur die Desktop-Version unterstützt).


JavaScript-Funktionen rufen WebAssembly-Funktionen auf und umgekehrt. Das heißt, Sie können in einem einzelnen Programm in einer JavaScript-Hochsprache schreiben und manchmal nach Bedarf zu C / C ++ / Rust wechseln.

Entwickler werden damit beginnen, WebAssembly-Module auf niedriger Ebene zu verteilen und wiederzuverwenden, ohne ihr Gerät verstehen zu müssen, da sie jetzt minimierte JavaScript-Bibliotheken verwenden.

Mozilla stellt fest, dass aufgrund der Ebene der Wiederverwendung von Code und der Softwarearchitektur die Mauer zwischen nativen und Webanwendungen allmählich zusammenbricht, und dies ist nur der Anfang. Entwicklertools, Debugger und Compiler werden ebenso wie die Kompatibilität, Leistung und Funktionalität von WebAssembly weiterentwickelt. Mozillas Plan ist nun beispielsweise, die Unterstützung für SIMD-Multithreading und Parallelität zu implementieren.

"In gewisser Weise verändert WebAssembly die Bedeutung eines Webentwicklers", sagt David Bryant, Manager für Plattformentwicklung bei Mozilla, "da es die grundlegenden Eigenschaften des Webs verändert."

Tatsächlich ist es jetzt möglich, C / C ++ - Programme für die Ausführung in einem Browser zu portieren, und in naher Zukunft kann dies auch für die Sprachen erfolgen, in denen mobile Anwendungen geschrieben sind - Java, Swift, C #. Alle von ihnen werden mit der Standard-Webplattform kompatibel. Es stellt sich heraus, dass in gewissem Sinne alle Programmierer schließlich Webentwickler werden.

Source: https://habr.com/ru/post/de402173/


All Articles