10 puntos por GN⁺ 2025-06-30 | 3 comentarios | Compartir por WhatsApp
  • En la reciente 108.ª reunión de TC39, 9 propuestas que marcarán el futuro de JavaScript avanzaron en sus respectivas etapas de estandarización
  • En Stage 4 (aprobación final) se incluyen funciones como using, Array.fromAsync y Error.isError, orientadas a mejorar la productividad y la seguridad del desarrollo
  • En Stage 3~1 se están discutiendo varias propuestas útiles, como ArrayBuffer inmutable, random con semilla, clamp, mejoras para NumberFormat y funciones Random
  • Deno participa activamente en la adopción y experimentación con los estándares más recientes, y algunas funciones ya pueden usarse en Deno y en navegadores modernos
  • Se espera que las discusiones de estandarización continúen en el futuro, y que el ecosistema de JavaScript evolucione hacia algo más seguro y conciso

Últimas tendencias de estandarización en TC39 y principales nuevas funciones de JavaScript

Stage 4: funciones que se adoptarán oficialmente

Gestión explícita de recursos (using)

  • La declaración using garantiza la limpieza automática al finalizar la vida útil de objetos de recursos, como archivos o sockets de red
  • Inspirado en estructuras de C# y Python, el objeto implementa los métodos [Symbol.dispose]() o [Symbol.asyncDispose]() para que se invoquen al salir del bloque
  • La limpieza se realiza automáticamente incluso si ocurre una excepción, lo que reduce el riesgo de fugas de recursos como file handles
  • Ya cuenta con soporte en Chrome 134, Firefox 134, Deno v2.3 y otros; en Deno puede usarse de inmediato en trabajo real con archivos, sockets y más

Array.fromAsync

  • Método estándar que convierte iterables asíncronos en arreglos y devuelve una Promise
  • Recolecta valores secuencialmente desde un async generator y al final entrega el arreglo resultante mediante una Promise
  • Su uso es similar al de Array.from síncrono y admite función de mapping y thisArg
  • Tiene soporte en todos los navegadores principales, Node v22 y Deno v1.38 o superior

Error.isError

  • Función integrada que permite determinar fácilmente si un valor es un objeto Error real
  • Funciona de forma confiable incluso en casos complejos, como cross-realm y errores con subclases
  • Mejora la confiabilidad al desarrollar polyfills y librerías

Stage 3: ArrayBuffer inmutable

Immutable ArrayBuffer

  • Está previsto agregar los métodos transferToImmutable() y sliceToImmutable() para admitir la inmutabilidad de ArrayBuffer
  • Un buffer inmutable, una vez creado, no puede modificarse ni separarse, lo que ayuda a compartirlo de forma segura entre threads y workers y mejora el rendimiento
  • En entornos como Deno, puede aprovecharse eficientemente al procesar datos binarios sin copias innecesarias

Stage 2: nuevas funciones propuestas

Random.Seeded

  • Con un PRNG basado en semilla (Random.Seeded(seed)), es posible generar la misma secuencia de números aleatorios entre ejecuciones repetidas
  • Es útil en áreas donde la reproducibilidad es importante, como juegos y simulaciones
  • A diferencia de Math.random(), ofrece funciones avanzadas como especificar la semilla y clonar el estado

Number.prototype.clamp

  • Método para limitar rangos numéricos que ajusta automáticamente un valor al intervalo mínimo-máximo indicado
  • Sustituye de forma más breve y clara el patrón Math.min(Math.max(x, min), max)

Stage 1: propuestas en discusión inicial

Keep Trailing Zeros

  • Nueva opción de Intl.NumberFormat para controlar con precisión si se mantienen o eliminan los 0 después del punto decimal
  • Refuerza la expresividad deseada en interfaces para montos, decimales fijos y casos similares

Comparisons

  • Busca estandarizar una representación legible para humanos de los valores y la salida de diff, de forma similar a util.inspect de Node.js
  • Aporta consistencia en frameworks de pruebas, salidas de consola y más

Random Functions

  • Introducción de un nuevo namespace Random, con funciones relacionadas con aleatoriedad como generación de números, sampling y shuffle de forma segura y concisa
  • Ayuda a prevenir errores off-by-one y admite de manera intuitiva varios patrones de recolección y muestreo

El futuro de Deno y del ecosistema JavaScript

  • Deno participa activamente en las discusiones de estandarización y refleja rápidamente las funciones más recientes en el trabajo práctico
  • Ejemplo: propagación de async context, OpenTelemetry integrado y nuevos patrones de gestión de recursos
  • Está previsto que las discusiones de estandarización continúen en reuniones adicionales de TC39 después de septiembre
  • Los desarrolladores de JavaScript podrán experimentar en adelante un entorno de lenguaje más potente, seguro y conveniente

3 comentarios

 
carnoxen 2025-07-03

propuesta de operaciones await

Esto, ¿cuándo...

 
dohyun682 2025-06-30

¿Cuándo lo agregarán? El pattern matching ya me da curiosidad.

 
click 2025-06-30

Hay signals en stage 1, pero parece que todavía falta bastante para su lanzamiento oficial.