Transpilera utfasning på RoomOS
Ändringar av JavaScript-koden i RoomOS-makron
Vi har uppdaterat maskinerna som kör makron på RoomOS, och som ett resultat av dessa uppdateringar kommer vissa JavaScript-konventioner och funktioner inte längre att vara tillgängliga för makron. I synnerhet är CommonJS-relaterade funktioner inte längre tillgängliga. Några vanliga exempel på kod som behöver skrivas om är:
require()
, inklusive:require('xapi')
- behöver skrivas om till standardimporten av ECMAScript. T.ex.
const xapi = require('xapi')
changed för attimportera xapi från 'xapi'
require.main
modul
, inklusive:module.exports
- behöver skrivas om till standardexporten av ECMAScriptmodule.name
- bör ersättas med_main_module_name()
Hur slås detta på och av?
Dessa ändringar träder i kraft när xConfiguration Macros EvaluateTranspiled
växlas från True
till False
. Den här inställningen har funnits länge och ändringen rullas ut genom att ändra standardvärdet i nya versioner från Sant
till Falskt
.
Om makron bryts vid den här ändringen är det en kortsiktig lösning att uttryckligen återställa växlingsknappen (xConfiguration Macros EvaluateTranspiled: True
) för att få dem att fungera som tidigare. Observera dock att detta bara är en tillfällig lösning: Denna växling försvinner efter en övergångsperiod.
På äldre RoomOS-versioner kan den här ändringen testas utan uppgradering genom att växla till Falskt
.
Om ett makro sparas på enheten medan växlingsknappen är Falskt
och du senare bestämmer dig för att TURN växlar tillbaka till Sant
, kan det vara nödvändigt att spara om dessa makron i makroredigeraren.
När träder dessa ändringar i kraft?
Standardvärdet för växlingsknappen EvaluateTranspiled
ändrades till False
från och med RoomOS May 2025 (11.28), vilket innebär att enheter växlar som standard när de uppgraderas. I samma version är transpileringssteget när makron sparas via XAPI inaktiverat som standard. Om transpilering krävs via XAPI måste kommandoalternativet transpilera uttryckligen anges till true.
Från och med RoomOS July 2025 (11.30) visas en diagnostik när växlingsknappen är inställd på Sant
. Det kommer fortfarande att fungera som tidigare.
Framöver kommer växeln att tas bort helt och enheten kommer att bete sig som om den var inställd på Falskt
. Vi siktar på att lansera denna förändring i november 2025. Detta datum kan ändras eftersom vi ser hur många av våra kunder som kan uppdatera sina makron, men tidslinjen mäts i månader, inte år. De exakta datumen kommer att publiceras här och i versionsinformationen för relevanta RoomOS-utgåvor.
Alla kunder som, trots våra bästa ansträngningar för att försöka meddela och informera om ändringarna, ser att deras makron misslyckas när ändringarna är permanent på plats i RoomOS kan fortfarande använda den (upp till) 6 månader försenade programuppdateringen som tillhandahålls via Control Hub för molnregistrerade enheter för att fördröja ändringen.
Varför är detta nödvändigt? Tekniska detaljer
Den främsta drivkraften för den här ändringen är att vi har uppdaterat vår JavaScript-motor för att använda QuickJS, som fungerar som en modern, uppdaterad JavaScript-körning för inbäddade system. Efter det, eftersom det inte längre behövs med en modern JavaScript-motor, tar vi nu bort stödet för transpilering av JavaScript. Att ta bort det extra steget att transpilera all kod minskar laddningstiden vid distribution och körning av kod samt minskar komplexiteten i plattformen.
JavaScript-motorväxeln styrs av xConfiguration Macros QuickJSEngine: Off
ändrad till On
. Den här ändringen lanserades i RoomOS December 2023 (11.11), och vi planerar att ta bort den här konfigurationsväxlingsknappen på samma tidslinje som EvaluateTranspiled
.
Vi gör dessa ändringar för att säkerställa att RoomOS presterar maximalt och att vi kan hjälpa dig att skala distributionen av JavaScript-tillägg på ett effektivt och säkert sätt.
Läs mer om makron på roomos.cisco.com.