10 pontos por GN⁺ 2025-06-30 | 3 comentários | Compartilhar no WhatsApp
  • Na recente 108ª reunião do TC39, 9 propostas que devem guiar o futuro do JavaScript avançaram em diferentes etapas da padronização
  • Em Stage 4 (aprovação final), estão incluídos recursos como using, Array.fromAsync e Error.isError, que aumentam a produtividade e a segurança no desenvolvimento
  • Em Stage 3~1, estão em discussão várias propostas úteis, como ArrayBuffer imutável, aleatoriedade com seed, clamp, melhorias no NumberFormat e funções Random
  • O Deno tem adotado e experimentado ativamente os padrões mais recentes, e alguns recursos já podem ser usados no Deno e nos navegadores modernos
  • As discussões de padronização devem continuar no futuro, e espera-se que o ecossistema JavaScript evolua para se tornar mais seguro e mais conciso

Tendências mais recentes da padronização no TC39 e principais novos recursos do JavaScript

Stage 4: recursos previstos para adoção oficial

Gerenciamento explícito de recursos (using)

  • A declaração using garante a limpeza automática ao fim do ciclo de vida de objetos de recurso, como arquivos e sockets de rede
  • Inspirado em estruturas de linguagens como C# e Python, o objeto implementa os métodos [Symbol.dispose]() ou [Symbol.asyncDispose]() para serem chamados ao fim do bloco
  • Mesmo quando ocorre uma exceção, a limpeza é feita automaticamente, reduzindo o risco de vazamento de recursos, como file handles
  • Já há suporte em Chrome 134, Firefox 134, Deno v2.3 e outros, e no Deno ele já pode ser usado imediatamente em cenários reais com arquivos, sockets etc.

Array.fromAsync

  • Método padrão que converte iteráveis assíncronos em arrays, retornando uma Promise
  • Coleta valores sequencialmente a partir de async generators e, ao final, fornece o resultado em array por meio de uma Promise
  • Tem uso semelhante ao Array.from síncrono já existente e oferece suporte a função de mapeamento e thisArg
  • Compatível com todos os principais navegadores, Node v22 e Deno v1.38 ou superior

Error.isError

  • Função embutida que permite verificar de forma simples se um valor é um objeto Error real
  • Funciona com confiabilidade mesmo em casos complexos, como cross-realm e erros de subclasses
  • Aumenta a confiabilidade em polyfills e no desenvolvimento de bibliotecas

Stage 3: ArrayBuffer imutável

Immutable ArrayBuffer

  • Está prevista a adição dos métodos transferToImmutable() e sliceToImmutable() para dar suporte à imutabilidade de ArrayBuffer
  • Um buffer imutável, depois de criado, não pode ser modificado nem detached, contribuindo para compartilhamento seguro entre threads e workers e para melhor desempenho
  • Em ambientes como o Deno, pode ser usado de forma eficiente no processamento de dados binários sem cópias desnecessárias

Stage 2: novos recursos propostos

Random.Seeded

  • Com o PRNG baseado em seed (Random.Seeded(seed)), é possível gerar a mesma sequência de números aleatórios em execuções repetidas
  • Útil em áreas em que a reprodutibilidade é importante, como jogos e simulações
  • Diferentemente de Math.random(), oferece recursos avançados como definição de seed e clonagem de estado

Number.prototype.clamp

  • Método de limitação de faixa numérica que ajusta automaticamente um valor para ficar dentro do intervalo mínimo~máximo especificado
  • Substitui de forma mais curta e clara o padrão existente Math.min(Math.max(x, min), max)

Stage 1: propostas em discussão inicial

Keep Trailing Zeros

  • Nova opção de Intl.NumberFormat para controlar com mais precisão a manutenção/remoção de zeros após a casa decimal
  • Amplia a expressividade desejada na UI para valores monetários, números de ponto fixo etc.

Comparisons

  • Assim como o util.inspect do Node.js, a proposta busca padronizar a representação amigável para humanos de valores e a saída de diff
  • Pode trazer consistência para frameworks de teste, saída de console e afins

Random Functions

  • Introduz um novo namespace Random, reunindo funções relacionadas a aleatoriedade, amostragem e embaralhamento de forma segura e concisa
  • Ajuda a evitar erros de off-by-one e dá suporte intuitivo a vários padrões de coleta e amostragem

O futuro do Deno e do ecossistema JavaScript

  • O Deno participa ativamente das discussões de padronização e está incorporando rapidamente os recursos mais recentes ao uso prático
  • Ex.) propagação de contexto assíncrono, OpenTelemetry embutido, novos padrões de gerenciamento de recursos etc.
  • As discussões de padronização devem continuar nas próximas reuniões do TC39 após setembro
  • Os desenvolvedores JavaScript poderão experimentar um ambiente de linguagem cada vez mais poderoso, seguro e conveniente no futuro

3 comentários

 
carnoxen 2025-07-03
 
dohyun682 2025-06-30

Quando será que a correspondência de padrões vai ser adicionada?

 
click 2025-06-30

signals no stage 1, mas parece que ainda vai demorar bastante para chegar ao lançamento oficial.