Изменения кода JavaScript в макросах RoomOS

Мы обновили механизм работы макросов на RoomOS, и в результате этих обновлений некоторые соглашения и функции JavaScript больше не будут доступны для макросов. В частности, больше не доступны связанные с CommonJS функции. Ниже приведены некоторые распространенные примеры кода, нуждающегося в рерайтинге:

  1. require(), включая:
    • require ('xapi') - нуждается в переписывание до стандартного импорта ECMAScript . Например,const 4pi = require('копипи') изменено на импорт предполагаемую 4pi из '6pi'
    • require.main
  2. модуль, в том числе:
    • module.exports - нуждается в перестройке к стандартному экспорту ECMAScript
    • module.name — следует заменить на _main_module_name()

Как это включается и отключается?

Эти изменения вступают в силу после переключения с true на False макросов xConfigurationS EvaluateTranspiled. Эта настройка присутствует в течение длительного времени, и изменение происходит путем изменения значения по умолчанию в новых выпусках с True на False.

Если макросы сломаются, это изменение, явное обратное переключение (xConfiguration Macros EvaluateTranspiled: True) является кратковременным исправлением, чтобы они работали как раньше. Обратите внимание, однако, что это лишь временное решение: это переключение уйдет после переходного периода.

Точно так же в старых версиях RoomOS это изменение можно проверить без обновления, установив переключение на False.

Примечание. Если на устройстве сохраняется макрос , а затем вы решите переключиться на TURN обратно на True, может потребоваться повторное воспроизведение макросов в редакторе макросов.

Когда эти изменения вступают в силу?

Значение переключения EvaluateTranspiled по умолчанию было изменено на False , начиная с номера RoomOS May 2025 (11.28), что означает, что при обновлении устройства будут переключаться по умолчанию. В той же версии шаг транспиляций при сохранении макросов через 5PI по умолчанию выключен. Если требуется выполнение транспиляций с помощью LVPI, для параметра команды transpile должно быть явно установлено значение true.

Начиная с июля 2025 (11.30 ), диагностика будет показана, когда переключение будет установлено на True. Он будет по-прежнему работать, как раньше.

В будущем переключение будет полностью удалено, а устройство будет вести себя так, как если бы для него было установлено значение False. Мы стремимся вывести это изменение в ноябре 2025 года. Эта дата может меняться, когда мы видим, сколько наших клиентов способно обновить свои макросы, но сроки измеряются в месяцах, а не в годах. Точные даты будут опубликованы здесь и в примечаниях к выпуску соответствующих выпусков RoomOS.

Любые клиенты, которые, несмотря на все наши усилия, пытаясь уведомлять об изменениях и информировать их, видят сбой макросов при их постоянном наличии в RoomOS, могут по-прежнему использовать 6-месячное обновление программного обеспечения с задержкой, предоставляемое через центр управления для облачных зарегистрированных устройств.

Зачем это нужно? Технические детали

Основной движущей силой этого изменения является то, что мы обновили наш движок JavaScript для использования QuickJS, который служит в качестве современной обновленной среды выполнения JavaScript для встраиваемых систем. После этого, поскольку в современном движке JavaScript он больше не нужен, теперь мы удаляем поддержку транспиляций JavaScript. Удаление дополнительного шага транспилирования всего кода снижает время загрузки при развертывании и выполнении кода, а также снижает сложность платформы.

Коммутатор движка JavaScript управляется макросами xConfiguration QuickJSEngine: выкл ., изменено на «Вкл.». Это изменение было развернуто в RoomOS декабря 2023 (11.11), и мы планируем удалить это переключение конфигурации в те же сроки, что и EvaluateTranspiled.

Мы выполняем эти изменения, чтобы обеспечить максимальную производительность Системы RoomOS и помогаем вам эффективно и безопасно масштабировать развертывание добавок JavaScript.

Подробнее о макросах на roomos.cisco.com.