Zum Hauptinhalt springen

V8 Version v8.5 Veröffentlichung

· 4 Minuten Lesezeit
Zeynep Cankara, verfolgt einige Maps

Alle sechs Wochen erstellen wir einen neuen Zweig von V8 im Rahmen unseres Veröffentlichungsverfahrens. Jede Version wird direkt vor einem Chrome Beta-Meilenstein von V8s Git-Master verzweigt. Heute freuen wir uns, unseren neuesten Zweig bekanntzugeben, V8 Version 8.5, der sich bis zur Veröffentlichung in Zusammenarbeit mit Chrome 85 Stable in einigen Wochen in der Beta befindet. V8 v8.5 ist gefüllt mit allerlei Entwickler-freundlichen Funktionen. Dieser Beitrag bietet eine Vorschau auf einige der Highlights im Vorfeld der Veröffentlichung.

V8-Version v8.4

· 5 Minuten Lesezeit
Camillo Bruni, genießt einige frische Booleans

Alle sechs Wochen erstellen wir als Teil unseres Veröffentlichungsprozesses einen neuen V8-Branch. Jede Version wird direkt vom Git-Master von V8 abgeleitet, bevor ein Chrome Beta-Meilenstein erreicht wird. Heute präsentieren wir stolz unsere neueste Version, V8 Version 8.4, die sich bis zur Veröffentlichung in Koordination mit Chrome 84 Stable in einigen Wochen in der Beta-Phase befindet. V8 v8.4 ist voller Entwickler-freundlicher Features. Dieser Beitrag bietet einen Ausblick auf einige Highlights in Erwartung der Veröffentlichung.

Hochleistungs-Müllsammlung für C++

· 10 Minuten Lesezeit
Anton Bikineev, Omer Katz ([@omerktz](https://twitter.com/omerktz)) und Michael Lippautz ([@mlippautz](https://twitter.com/mlippautz)), C++ Speicherflüsterer

In der Vergangenheit haben wir bereits über die Müllsammlung für JavaScript, das Document Object Model (DOM) und wie dies alles in V8 implementiert und optimiert wird, geschrieben. Nicht alles in Chromium ist jedoch JavaScript, da der größte Teil des Browsers und seiner Blink-Rendering-Engine, in die V8 eingebettet ist, in C++ geschrieben wurde. JavaScript kann verwendet werden, um mit dem DOM zu interagieren, das dann von der Rendering-Pipeline verarbeitet wird.

Verstehen der ECMAScript-Spezifikation, Teil 4

· 7 Minuten Lesezeit
[Marja Hölttä](https://twitter.com/marjakh), spekulativer Spezifikationsbeobachter

Alle Episoden

Unterdessen in anderen Teilen des Webs

Jason Orendorff von Mozilla veröffentlichte eine großartige tiefgehende Analyse von JS-syntaktischen Eigenheiten. Auch wenn sich die Implementierungsdetails unterscheiden, sieht sich jede JS-Engine denselben Problemen mit diesen Eigenheiten gegenüber.

Bis zu 4 GB Speicher in WebAssembly

· 8 Minuten Lesezeit
Andreas Haas, Jakob Kummerow und Alon Zakai

Einführung

Dank der jüngsten Arbeit in Chrome und Emscripten können Sie jetzt bis zu 4 GB Speicher in WebAssembly-Anwendungen nutzen. Das ist eine Steigerung gegenüber dem vorherigen Limit von 2 GB. Es mag seltsam erscheinen, dass es jemals ein Limit gab – schließlich war keine Arbeit notwendig, damit Menschen 512 MB oder 1 GB Speicher nutzen konnten! – aber es stellt sich heraus, dass beim Sprung von 2 GB auf 4 GB sowohl im Browser als auch in der Werkzeugkette einige besondere Dinge geschehen, die wir in diesem Beitrag beschreiben werden.

V8-Version v8.3

· 4 Minuten Lesezeit
[Victor Gomes](https://twitter.com/VictorBFG), sicher von zu Hause aus arbeitend

Alle sechs Wochen erstellen wir im Rahmen unseres Freigabeprozesses einen neuen V8-Branch. Jede Version wird direkt vor einem Chrome-Beta-Meilenstein aus V8s Git-Master verzweigt. Heute freuen wir uns, unseren neuesten Branch anzukündigen, V8 Version 8.3, der sich bis zur Veröffentlichung in Abstimmung mit Chrome 83 Stable in einigen Wochen in der Beta-Phase befindet. V8 v8.3 ist vollgepackt mit allerlei Entwickler-Features. Dieser Artikel gibt eine Vorschau auf einige der Highlights, um die Veröffentlichung vorwegzunehmen.

Was steckt in dieser `.wasm`? Einführung: `wasm-decompile`

· 7 Minuten Lesezeit
Wouter van Oortmerssen ([@wvo](https://twitter.com/wvo))

Wir haben eine wachsende Anzahl von Compilern und anderen Werkzeugen, die .wasm-Dateien erzeugen oder bearbeiten, und manchmal möchte man hineinschauen. Vielleicht sind Sie Entwickler eines solchen Werkzeugs oder direkt Programmierer, der auf Wasm abzielt und darüber nachdenkt, wie der erzeugte Code aussieht - aus Leistungsgründen oder anderen Gründen.

Das ECMAScript-Spezifikation verstehen, Teil 3

· 12 Minuten Lesezeit
[Marja Hölttä](https://twitter.com/marjakh), spekulative Spezifikationsbeobachterin

Alle Episoden

In dieser Episode vertiefen wir uns in die Definition der ECMAScript-Sprache und ihrer Syntax. Falls Sie mit kontextfreien Grammatiken nicht vertraut sind, ist jetzt ein guter Zeitpunkt, die Grundlagen zu überprüfen, da die Spezifikation kontextfreie Grammatiken zur Definition der Sprache verwendet. Sehen Sie das Kapitel über kontextfreie Grammatiken in "Crafting Interpreters" für eine zugängliche Einführung oder die Wikipedia-Seite für eine mathematischere Definition.

Pointer-Komprimierung in V8

· 21 Minuten Lesezeit
Igor Sheludko und Santiago Aboy Solanes, *die* Pointer-Komprimierer

Es gibt einen ständigen Kampf zwischen Speicher und Leistung. Als Nutzer wünschen wir uns, dass Dinge sowohl schnell sind als auch möglichst wenig Speicher verbrauchen. Leider geht eine Leistungssteigerung gewöhnlich mit einem höheren Speicherverbrauch einher (und umgekehrt).

Verständnis der ECMAScript-Spezifikation, Teil 2

· 11 Minuten Lesezeit
[Marja Hölttä](https://twitter.com/marjakh), spekulativer Spezifikationsbeobachter

Lass uns unsere fantastischen Fähigkeiten im Lesen der Spezifikation weiter üben. Falls du dir die vorherige Folge noch nicht angeschaut hast, ist jetzt ein guter Zeitpunkt dafür!

Alle Folgen

Bereit für Teil 2?

Eine unterhaltsame Möglichkeit, die Spezifikation kennenzulernen, besteht darin, mit einer JavaScript-Funktion zu beginnen, von der wir wissen, dass sie existiert, und herauszufinden, wie sie spezifiziert ist.

Warnung! Diese Folge enthält kopierte Algorithmen aus der ECMAScript-Spezifikation von Februar 2020. Sie werden irgendwann veraltet sein.

Wir wissen, dass Eigenschaften in der Prototypenkette nachgeschlagen werden: Wenn ein Objekt die Eigenschaft, die wir lesen möchten, nicht hat, gehen wir die Prototypenkette hinauf, bis wir sie finden (oder ein Objekt finden, das keinen Prototyp mehr hat).

Zum Beispiel:

const o1 = { foo: 99 };
const o2 = {};
Object.setPrototypeOf(o2, o1);
o2.foo;
// → 99

Wo ist der Prototypenlauf definiert?

Lass uns versuchen herauszufinden, wo dieses Verhalten definiert ist. Ein guter Ausgangspunkt ist eine Liste von Internen Methoden von Objekten.

Es gibt sowohl [[GetOwnProperty]] als auch [[Get]] — wir sind an der Version interessiert, die sich nicht nur auf eigene Eigenschaften beschränkt, also entscheiden wir uns für [[Get]].

Leider hat der Spezifikationstyp Property Descriptor ebenfalls ein Feld namens [[Get]], daher müssen wir beim Durchblättern der Spezifikation für [[Get]] sorgfältig zwischen den beiden unabhängigen Verwendungen unterscheiden.