Transpile deprecation en RoomOS
Cambios en el código JavaScript en las macros de RoomOS
Hemos actualizado la maquinaria que ejecuta las macros en RoomOS y, como resultado de estas actualizaciones, algunas convenciones y funciones de JavaScript ya no estarán disponibles para las macros. En particular, las funciones relacionadas con CommonJS ya no están disponibles. Algunos ejemplos comunes de código que necesita ser reescrito son:
require()
, incluyendo:require('xapi'):
necesita reescribirse en la importación estándar de ECMAScript. Por ejemplo,
const xapi = require('xapi')
changed paraimportar xapi desde 'xapi'
require.main
módulo
, que incluye:module.exports
: necesita reescribirse en la exportación estándar de ECMAScriptmodule.name
- debe ser reemplazado por_main_module_name()
¿Cómo se activa y desactiva?
Estos cambios surten efecto una vez que xConfiguration Macros EvaluateTranspiled
cambia de Verdadero
a Falso
. Esta configuración ha estado presente durante mucho tiempo y el cambio se implementa cambiando el valor predeterminado en las nuevas versiones de Verdadero
a Falso
.
Si las macros interrumpen este cambio, establecer explícitamente el interruptor hacia atrás (xConfiguration Macros EvaluateTranspiled: True
) es una solución a corto plazo para que funcionen como antes. Tenga en cuenta, sin embargo, que esta es solo una solución temporal: este interruptor desaparecerá después de un período de transición.
Del mismo modo, en versiones anteriores de RoomOS, este cambio se puede probar sin actualizar configurando el interruptor en False
.
Nota: Si se guarda una macro en el dispositivo mientras el interruptor es Falso
y más tarde decides TURN el interruptor de nuevo a Verdadero , puede ser necesario volver a
guardar esas macros en el editor de macros.
¿Cuándo entrarán en vigor estos cambios?
El valor predeterminado del conmutador EvaluateTranspiled
se cambió a Falso
a partir de RoomOS May 2025 (11.28), lo que significa que los dispositivos cambiarán de forma predeterminada cuando se actualicen. En la misma versión, el paso de transpilación al guardar macros a través de XAPI está desactivado por defecto. Si se requiere transpilación a través de XAPI, la opción de comando transpilar debe establecerse explícitamente en true.
A partir de RoomOS July 2025 (11.30) se mostrará un diagnóstico activado cuando el interruptor esté configurado en True
. Seguirá funcionando como antes.
En el futuro, el interruptor se eliminará por completo y el dispositivo se comportará como si estuviera configurado en Falso
. Nuestro objetivo es implementar este cambio en noviembre de 2025. Esta fecha puede cambiar a medida que veamos cuántos de nuestros clientes pueden actualizar sus macros, pero la escala de tiempo se mide en meses, no en años. Las fechas exactas se publicarán aquí y en las notas de la versión de las versiones relevantes de RoomOS.
Cualquier cliente que, a pesar de nuestros mejores esfuerzos para intentar notificar e informar sobre los cambios, vea que sus macros fallan cuando los cambios están permanentemente implementados en RoomOS aún puede usar la actualización de software retrasada de (hasta) 6 meses que se proporciona a través de Control Hub para dispositivos registrados en la nube para retrasar el cambio.
¿Por qué es necesario? Técnicas
El principal impulsor de este cambio es que hemos actualizado nuestro motor JavaScript para usar QuickJS, que sirve como un tiempo de ejecución de JavaScript moderno y actualizado para sistemas integrados. Después de eso, dado que ya no es necesario con un motor JavaScript moderno, ahora estamos eliminando el soporte para la transpilación de JavaScript. Eliminar el paso adicional de transpilar todo el código reduce el tiempo de carga al implementar y ejecutar código, así como la complejidad en la plataforma.
El conmutador del motor JavaScript se controla mediante xConfiguration Macros QuickJSEngine: Off
cambiado a On
. Este cambio se implementó en RoomOS en diciembre 2023 (11.11), y planeamos eliminar este interruptor de configuración en la misma línea de tiempo que EvaluateTranspiled
.
Estamos haciendo estos cambios para garantizar que RoomOS funcione al máximo, y que podamos ayudarlo a escalar la implementación de extensiones de JavaScript de una manera eficiente y segura.
Lea más sobre macros en roomos.cisco.com.