- O comitê TC39 adicionou o novo estágio "2.7" para tornar o processo de atualização do JavaScript mais rápido e fluido
- Contexto da atualização
- Desde o ECMAScript 2015, o JavaScript recebe novas atualizações todos os anos
- O comitê TC39 tem dedicado grande esforço ao trabalho de padronização para aprimorar a linguagem
- Foi introduzido um processo em múltiplos estágios para garantir projeto, testes e implementação minuciosos de novos recursos
Processo em etapas para qualidade e compatibilidade
- Stage 0: exploração de ideias de novos recursos e definição de problemas
- Stage 1: deve haver um repositório e um "champion" que expliquem a utilidade do recurso, incluindo uma descrição clara e possíveis problemas
- Stage 2: rascunho inicial do design da especificação. O comitê espera que o recurso passe a fazer parte da linguagem
- Stage 3: proposta candidata em que o recurso está praticamente concluído, mas ainda é necessária experiência prática por meio da implementação em navegadores ou runtimes do lado do servidor
- Stage 4: significa que todo o trabalho da especificação foi concluído e que ela está pronta para ser incluída na especificação completa da linguagem. Etapa de aprovação final
Testes como marco explícito
- No processo original, ao chegar ao Stage 3, em alguns casos era necessário reescrever os testes
- Isso fazia com que, especialmente em propostas grandes, voltar ao Stage 2 fosse mais doloroso do que voltar ao Stage 3 quando era preciso alterar o design
- Escrever testes exige uma carga de trabalho considerável, então, quando isso precisava ser feito duas vezes, a movimentação entre estágios se tornava mais penosa do que o pretendido
- O novo Stage 2.7 foi introduzido para separar a etapa de testes da implementação
Requisitos do Stage 2.7
- Foi aprovado "em princípio", mas ainda precisa ser validado
- Escrever testes é uma das melhores formas de considerar todas as consequências do design de um recurso. Alguns recursos podem exigir a escrita de testes antes mesmo de o design estar concluído
- É preciso desenvolver o conjunto completo de testes e um protótipo, além de obter experiência suficiente para demonstrar que a implementação é viável
- O texto da especificação do recurso está concluído, e o comitê TC39 não exige mudanças além das que surgirem por meio de testes, implementação e uso
- O Stage 2.7 ajuda a reduzir trabalho duplicado desnecessário e permite que as propostas avancem diretamente para o Stage 3
- O Stage 3 agora passa a se concentrar em obter experiência de implementação e descobrir problemas de compatibilidade com a web ou de integração
Aplicação prática do Stage 2.7
- Ao adicionar o Stage 2.7, o comitê TC39 revisou todas as propostas existentes em Stage 3, e alguns projetos permaneceram em Stage 3 porque, embora ainda não tivessem registrado todos os testes, estavam quase prontos
- Algumas propostas, como deferred import e o método Math.sumPrecise, já chegaram ao Stage 2.7
Regexp.escape, que oferece suporte a escape de strings dentro de expressões regulares, chegou ao Stage 2.7 e avançou para o Stage 3 junto com o conjunto de testes
- Por outro lado, a proposta "microwaits" (atualmente chamada
atomics.pause) era difícil para a escrita de testes úteis, passou recentemente ao Stage 2.7, e grande parte da discussão era sobre quais observações colocar na especificação para a implementação
Ainda não há comentários.