Saltar al contenido principal

Lanzamiento de V8 v8.5

· 5 min de lectura
Zeynep Cankara, siguiendo algunos Mapas

Cada seis semanas, creamos una nueva rama de V8 como parte de nuestro proceso de lanzamiento. Cada versión se deriva del maestro de Git de V8 inmediatamente antes de un hito de Chrome Beta. Hoy nos complace anunciar nuestra nueva rama, V8 versión 8.5, que está en beta hasta su lanzamiento en coordinación con Chrome 85 Estable en varias semanas. V8 v8.5 está lleno de todo tipo de novedades orientadas a los desarrolladores. Este post ofrece un adelanto de algunos de los aspectos más destacados en anticipación al lanzamiento.

Lanzamiento de V8 v8.4

· 5 min de lectura
Camillo Bruni, disfrutando de algunos booleanos frescos

Cada seis semanas, creamos una nueva rama de V8 como parte de nuestro proceso de lanzamiento. Cada versión se bifurca del maestro de Git de V8 justo antes de un hito de Chrome Beta. Hoy estamos encantados de anunciar nuestra rama más reciente, V8 versión 8.4, que está en beta hasta su lanzamiento en coordinación con Chrome 84 Stable en varias semanas. V8 v8.4 está lleno de todo tipo de novedades orientadas a desarrolladores. Esta publicación ofrece un adelanto de algunos de los aspectos destacados en anticipación al lanzamiento.

Recolección de basura de alto rendimiento para C++

· 11 min de lectura
Anton Bikineev, Omer Katz ([@omerktz](https://twitter.com/omerktz)), y Michael Lippautz ([@mlippautz](https://twitter.com/mlippautz)), expertos en memoria de C++

En el pasado ya hemos escrito bastante sobre la recolección de basura para JavaScript, el modelo de objetos del documento (DOM) y cómo todo esto está implementado y optimizado en V8. Sin embargo, no todo en Chromium es JavaScript, ya que la mayor parte del navegador y su motor de renderizado Blink, donde V8 está integrado, están escritos en C++. JavaScript puede usarse para interactuar con el DOM, que luego es procesado por la tubería de renderizado.

Comprendiendo la especificación ECMAScript, parte 4

· 7 min de lectura
[Marja Hölttä](https://twitter.com/marjakh), espectadora especulativa de especificaciones

Todos los episodios

Mientras tanto, en otras partes de la Web

Jason Orendorff de Mozilla publicó un excelente análisis en profundidad de las peculiaridades sintácticas de JS. Aunque los detalles de implementación difieran, cada motor JS enfrenta los mismos problemas con estas peculiaridades.

Hasta 4GB de memoria en WebAssembly

· 8 min de lectura
Andreas Haas, Jakob Kummerow y Alon Zakai

Introducción

Gracias a trabajos recientes en Chrome y Emscripten, ahora puedes usar hasta 4GB de memoria en aplicaciones de WebAssembly. Esto supera el límite anterior de 2GB. Podría parecer extraño que alguna vez haya existido un límite: después de todo, ¡no se necesitaba trabajo adicional para usar 512MB o 1GB de memoria! Pero resulta que hay algunas particularidades en el salto de 2GB a 4GB, tanto en el navegador como en la cadena de herramientas, que describiremos en esta publicación.

Lanzamiento de V8 v8.3

· 4 min de lectura
[Victor Gomes](https://twitter.com/VictorBFG), trabajando de forma segura desde casa

Cada seis semanas, creamos una nueva rama de V8 como parte de nuestro proceso de lanzamiento. Cada versión se deriva del maestro Git de V8 inmediatamente antes de un hito Beta de Chrome. Hoy nos complace anunciar nuestra rama más reciente, V8 versión 8.3, que estará en beta hasta su lanzamiento en coordinación con Chrome 83 Stable en varias semanas. V8 v8.3 está lleno de todo tipo de novedades orientadas a desarrolladores. Este artículo ofrece un adelanto de algunos de los aspectos destacados en anticipación al lanzamiento.

¿Qué hay en ese `.wasm`? Presentando: `wasm-decompile`

· 8 min de lectura
Wouter van Oortmerssen ([@wvo](https://twitter.com/wvo))

Contamos con un número creciente de compiladores y otras herramientas que generan o manipulan archivos .wasm, y a veces podrías querer echarles un vistazo. Tal vez eres desarrollador de una de estas herramientas, o más directamente, eres programador que trabaja con Wasm y te preguntas cómo luce el código generado, por razones de rendimiento u otras.

Entendiendo la especificación ECMAScript, parte 3

· 13 min de lectura
[Marja Hölttä](https://twitter.com/marjakh), espectadora especulativa de especificaciones

Todos los episodios

En este episodio, profundizaremos en la definición del lenguaje ECMAScript y su sintaxis. Si no estás familiarizado con las gramáticas libres de contexto, ahora es un buen momento para revisar los conceptos básicos, ya que la especificación utiliza gramáticas libres de contexto para definir el lenguaje. Consulta el capítulo sobre gramáticas libres de contexto en "Crafting Interpreters" para una introducción accesible o la página de Wikipedia para una definición más matemática.

Compresión de punteros en V8

· 24 min de lectura
Igor Sheludko y Santiago Aboy Solanes, *los* compresores de punteros

Hay una batalla constante entre la memoria y el rendimiento. Como usuarios, nos gustaría que las cosas fueran rápidas y que consumieran la menor cantidad de memoria posible. Desafortunadamente, generalmente mejorar el rendimiento tiene un costo en el consumo de memoria (y viceversa).

Entendiendo la especificación de ECMAScript, parte 2

· 11 min de lectura
[Marja Hölttä](https://twitter.com/marjakh), espectadora especulativa de especificaciones

Practiquemos un poco más nuestras increíbles habilidades para leer especificaciones. ¡Si todavía no has visto el episodio anterior, ahora es un buen momento para hacerlo!

Todos los episodios

¿Listo para la parte 2?

Una forma divertida de conocer la especificación es comenzar con una característica de JavaScript que sabemos que existe y averiguar cómo está especificada.

¡Advertencia! Este episodio contiene algoritmos copiados de la especificación ECMAScript de febrero de 2020. Eventualmente estarán desactualizados.

Sabemos que las propiedades se buscan en la cadena de prototipos: si un objeto no tiene la propiedad que intentamos leer, subimos por la cadena de prototipos hasta encontrarla (o encontramos un objeto que ya no tiene prototipo).

Por ejemplo:

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

¿Dónde está definida la cadena de prototipos?

Intentemos averiguar dónde se define este comportamiento. Un buen lugar para comenzar es una lista de Métodos Internos de Objetos.

Existen tanto [[GetOwnProperty]] como [[Get]] — estamos interesados en la versión que no está restringida a propiedades propias, así que iremos con [[Get]].

Desafortunadamente, el tipo de especificación Descriptor de Propiedades también tiene un campo llamado [[Get]], así que mientras navegamos por la especificación en busca de [[Get]], debemos distinguir cuidadosamente entre los dos usos independientes.