Transpile припинення старіння на RoomOS
Зміни коду JavaScript у макросах RoomOS
Ми оновили механізми, що виконують макроси на RoomOS, і внаслідок цих оновлень деякі конвенції та функції JavaScript більше не будуть доступні для макросів. Зокрема, функції, пов'язані з CommonJS , більше недоступні. Деякі поширені приклади потреби переписування коду:
rerequirement(), зокрема:require('xapi')— потребує переписування на стандартний імпорт ECMAScript. Наприклад,constxapi = 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 було змінено на Хибне , починаючи з RoomOS травня 2025 (11.28), що означає, що пристрої автоматично перемикаються при оновленні. У тій же версії крок транспіляції при збереженні макросів через XAPI за замовчуванням вимкнений. Якщо транспіляція потрібна через XAPI, опція команди transpile має бути явно встановлена як true.
Починаючи з RoomOS липня 2025 (11.30) з'явиться діагностика, коли перемикач встановлено на True. Все працюватиме як раніше.
Далі перемикач буде повністю видалений, і пристрій поводитиметься так, ніби встановлений на False. Ми плануємо впровадити цю зміну у червні 2026 року. Ця дата може змінюватися, коли ми бачимо, скільки наших клієнтів можуть оновлювати свої макроси, але часова рамка вимірюється місяцями, а не роками. Точні дати будуть опубліковані тут і в нотатках до релізу відповідних релізів RoomOS.
Будь-які клієнти, які, незважаючи на всі наші зусилля щодо повідомлення та інформування про зміни, бачать, що їхні макроси виходять з ладу, коли зміни назавжди впроваджені в RoomOS, все ще можуть використовувати (до) 6-місячне оновлення програмного забезпечення, яке надається через Control Hub для пристроїв, зареєстрованих у хмарі, щоб відтермінувати зміни.
Чому це необхідно? Технічні деталі
Головним рушієм цієї зміни є оновлення JavaScript-движка для використання QuickJS, який є сучасним, оновленим JavaScript-середовищем виконання для вбудованих систем. Після цього, оскільки він більше не потрібен у сучасному JavaScript-рушії, ми прибираємо підтримку транспіляції JavaScript. Усунення додаткового етапу транспілювання всього коду зменшує час завантаження під час розгортання та виконання коду, а також знижує складність платформи.
Перемикач движка JavaScript керується макросами xConfiguration QuickJSEngine: Off змінено на On. Ця зміна була впроваджена в RoomOS грудня 2023 (11.11), і ми плануємо прибрати цей перемикач конфігурації на тій же часовій лінії, що й EvaluateTranspiled.
Ми робимо ці зміни, щоб RoomOS працював максимально ефективно і щоб допомогти вам ефективно та безпечно масштабувати розгортання JavaScript-розширень.
Дізнайтеся більше про макроси на roomos.cisco.com.