Transpile прекратяване на RoomOS

list-menuОбратна връзка?
Обновихме нашия JavaScript енджин, за да използва QuickJS, който служи като модерен, обновен JavaScript runtime за вградени системи. Като част от тази стъпка планираме да премахнем поддръжката за транспилация на JavaScript в нашата платформа.

Промени в JavaScript кода в макросите на RoomOS

Актуализирахме машините, които изпълняват макросите в RoomOS, и в резултат на тези актуализации някои JavaScript конвенции и функции вече няма да са достъпни за макросите. По-специално, функции, свързани с CommonJS , вече не са налични. Някои често срещани примери за код, нуждаещ се от пренаписване, са:

  1. require(), включително:
    • 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 беше променена на False , започвайки с RoomOS май 2025 (11.28), което означава, че устройствата ще се превключват по подразбиране при ъпгрейд. В същата версия стъпката за транспилация при запазване на макроси през XAPI е изключена по подразбиране. Ако транспилацията е необходима чрез XAPI, опцията за транспилиране трябва изрично да бъде зададена на true.

Започвайки с RoomOS юли 2025 (11.30) ще се показва диагностика, когато превключвателят е настроен на True. Ще работи както преди.

Оттук нататък превключвателят ще бъде напълно премахнат и устройството ще се държи сякаш е настроено на False. Целим да въведем тази промяна през юни 2026 г. Тази дата може да се промени, когато видим колко от нашите клиенти могат да актуализират макросите си, но времевата рамка се измерва в месеци, а не в години. Точните дати ще бъдат публикувани тук и в бележките към изданията на съответните RoomOS издания.

Всеки клиент, който въпреки усилията ни да уведомим и информираме за промените, видят как макросите им се провалят, когато промените са постоянно въведени в RoomOS, все още могат да използват (до) 6-месечната забавена софтуерна актуализация, предоставена чрез Control Hub за облачно регистрирани устройства, за да забавят промяната.

Защо е необходимо това? Технически подробности

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

Превключвателят на JavaScript двигателя се контролира от xConfiguration Macros QuickJSEngine: Изключено е променено на Включено. Тази промяна беше въведена в RoomOS декември 2023 (11.11), и планираме да премахнем този превключвател за конфигурация на същия времеви график като EvaluateTranspiled.

Правим тези промени, за да гарантираме, че RoomOS работи максимално и да ви помогнем да мащабирате внедряването на JavaScript разширения по ефективен и сигурен начин.

Прочетете повече за макросите в roomos.cisco.com.

Беше ли полезна тази статия?
Беше ли полезна тази статия?