- El comité TC39 agregó una nueva etapa, "2.7", para hacer que el proceso de actualización de JavaScript sea más rápido y fluido
- Contexto de la actualización
- Desde ECMAScript 2015, JavaScript ha recibido nuevas actualizaciones cada año
- El comité TC39 ha dedicado un gran esfuerzo al trabajo de estandarización para mejorar el lenguaje
- Se introdujo un proceso de múltiples etapas para garantizar el diseño, las pruebas y la implementación exhaustivos de las nuevas funciones
Proceso por etapas para la calidad y la compatibilidad
- Stage 0: exploración de ideas para nuevas funciones y definición de problemas
- Stage 1: debe haber un repositorio y un "champion" que expliquen la utilidad de la función, con una descripción clara y posibles problemas
- Stage 2: borrador inicial del diseño de la especificación. El comité espera que esa función pase a formar parte del lenguaje
- Stage 3: propuesta candidata en la que la función está casi terminada, pero aún se necesita experiencia real mediante la implementación en navegadores o runtimes del lado del servidor
- Stage 4: significa que todo el trabajo de la especificación está completo y que está lista para incluirse en la especificación completa del lenguaje. Etapa de aprobación final
Las pruebas como hito explícito
- En el proceso original, al llegar a Stage 3 a veces había que volver a escribir las pruebas
- Esto hacía que, especialmente en propuestas grandes donde era necesario cambiar el diseño, volver a Stage 2 fuera más doloroso que regresar a Stage 3
- Escribir pruebas requiere una carga de trabajo considerable, por lo que tener que hacerlo dos veces hacía que avanzar entre etapas fuera más doloroso de lo previsto
- La nueva Stage 2.7 se introdujo para separar la etapa de pruebas de la implementación
Requisitos de Stage 2.7
- Ha sido aprobada "en principio", pero aún necesita validación
- Escribir pruebas es una de las mejores maneras de considerar todas las consecuencias del diseño de una función. Algunas funciones pueden requerir la escritura de pruebas incluso antes de que el diseño esté terminado
- Debe obtenerse suficiente experiencia para desarrollar el conjunto completo de pruebas y un prototipo, y demostrar que puede implementarse
- El texto de la especificación de la función está completo, y el comité TC39 no exige cambios más allá de los que surjan de las pruebas, la implementación y el uso
- Stage 2.7 ayuda a reducir el trabajo duplicado innecesario y permite que las propuestas pasen directamente a Stage 3
- Stage 3 ahora trata de obtener experiencia de implementación y descubrir problemas de compatibilidad web o de integración
Aplicación práctica de Stage 2.7
- Al agregar Stage 2.7, el comité TC39 revisó todas las propuestas existentes en Stage 3; algunos proyectos seguían en Stage 3 porque, aunque no habían registrado todas las pruebas, estaban casi listos
- Algunas propuestas, como deferred import y el método Math.sumPrecise, ya llegaron a Stage 2.7
- Regexp.escape, que permite escapes de cadenas dentro de expresiones regulares, llegó a Stage 2.7 y avanzó a Stage 3 junto con su conjunto de pruebas
- En cambio, la propuesta de "microwaits" (actualmente llamada atomics.pause), para la que era difícil escribir pruebas útiles, se movió recientemente a Stage 2.7, y gran parte de la discusión se centró en qué notas de referencia incluir en la especificación para su implementación
Aún no hay comentarios.