Transpile припинення старіння на RoomOS

list-menuНадіслати відгук?
Ми оновили наш JavaScript-рушій, щоб використовувати QuickJS, який слугує сучасним, оновленим JavaScript-середовищем виконання для вбудованих систем. У рамках цього кроку ми плануємо прибрати підтримку транспілювання JavaScript на нашій платформі.

Зміни коду JavaScript у макросах RoomOS

Ми оновили механізми, що виконують макроси на RoomOS, і внаслідок цих оновлень деякі конвенції та функції JavaScript більше не будуть доступні для макросів. Зокрема, функції, пов'язані з CommonJS , більше недоступні. Деякі поширені приклади потреби переписування коду:

  1. rerequirement(), зокрема:
    • require('xapi') — потребує переписування на стандартний імпорт ECMAScript . Наприклад,const xapi = require('xapi') змінено на імпорт xapi з 'xapi'
    • require.main
  2. модуль, включаючи:
    • module.exports - потребує перезапису у стандартний експорт ECMAScript
    • module.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.

Чи була ця стаття корисною?
Чи була ця стаття корисною?