Застарілість Transpile на RoomOS
Зміни в коді JavaScript в макросах RoomOS
Ми оновили механізм запуску макросів у RoomOS, і в результаті цих оновлень деякі угоди та функції JavaScript більше не будуть доступні для макросів. Зокрема, функції, пов'язані з CommonJS, більше не доступні. Деякі поширені приклади коду, який потребує переписування:
require(),
включаючи:require('xapi')
- потребує перезапису у стандартний імпорт ECMAScript. Наприклад,
const xapi = require('xapi')
змінено наімпорт xapi з 'xapi'
require.main
модуль
, що включає:module.exports
- потребує перезапису в стандартний експорт ECMAScriptmodule.name
- слід замінити на_main_module_name()
Як це включається і вимикається?
Ці зміни набувають чинності, коли xConfiguration Macros EvaluateTranspiled
перемикається з True
на False
. Цей параметр існує вже давно, і його змінюють шляхом зміни стандартного значення в нових випусках з True
на False
.
Якщо макроси порушуються при цій зміні, явне встановлення перемикача назад (xConfiguration Macros EvaluateTranspiled: True
) є короткостроковим виправленням, щоб вони працювали, як і раніше. Однак зауважте, що це лише тимчасове рішення: цей перемикач зникне після перехідного періоду.
Аналогічно, на старих версіях RoomOS цю зміну можна перевірити без оновлення, встановивши перемикач у положення False
.
Примітка: Якщо макрос збережено на пристрої , а перемикач має значення False,
і ви пізніше вирішите TURN перемикач назад у положення True
, може знадобитися повторне збереження цих макросів у редакторі макросів.
Коли ці зміни набудуть чинності?
Значення за замовчуванням перемикача EvaluateTranspiled
було змінено на False,
починаючи з RoomOS May 2025 (11.28), що означає, що пристрої перемикатимуться за замовчуванням під час оновлення. У цій же версії за замовчуванням вимкнено крок транспіляції при збереженні макросів через XAPI. Якщо транспилювання потрібне через XAPI, параметр команди transpile має бути явно встановлений на true.
Починаючи з RoomOS у липні 2025 (11.30), діагностика буде показана, коли перемикач встановлено на True
. Він все одно працюватиме, як і раніше.
Надалі перемикач буде повністю видалено, і пристрій поводитиметься так, ніби для нього було встановлено значення False
. Ми плануємо впровадити цю зміну в листопаді 2025 року. Ця дата може змінюватися, оскільки ми бачимо, скільки наших клієнтів можуть оновити свої макроси, але часова шкала вимірюється місяцями, а не роками. Точні дати будуть опубліковані тут і в примітках до випуску відповідних релізів RoomOS.
Будь-які клієнти, які, незважаючи на всі наші зусилля сповіщати та інформувати про зміни, бачать, що їхні макроси зазнають невдачі, коли зміни постійно діють у RoomOS, можуть використовувати (до) 6-місячного відкладеного оновлення програмного забезпечення, яке надається через Control Hub для пристроїв, зареєстрованих у хмарі, щоб відстрочити зміну.
Навіщо це потрібно? Технічна інформація
Основною рушійною силою цієї зміни є те, що ми оновили наш рушій JavaScript, щоб використовувати QuickJS, який служить сучасним, оновленим середовищем виконання JavaScript для вбудованих систем. Після цього, оскільки це більше не потрібно з сучасним движком JavaScript, ми тепер видаляємо підтримку транспилювання JavaScript. Видалення зайвого кроку транспіляції всього коду скорочує час завантаження при розгортанні та виконанні коду, а також знижує складність платформи.
Перемикач двигуна JavaScript управляється за допомогою макросів xConfiguration QuickJSEngine: Off
змінено на On
. Ця зміна була впроваджена в RoomOS December 2023 (11.11), і ми плануємо видалити цей перемикач конфігурації на тій же часовій шкалі, що й EvaluateTranspiled
.
Ми вносимо ці зміни, щоб переконатися, що RoomOS працює максимально, і що ми можемо допомогти вам масштабувати розгортання розширень JavaScript ефективним і безпечним способом.
Детальніше про макроси читайте на roomos.cisco.com.