This patch release fixes copying an assocarray/array containing a SceneGraph node: the node itself was being cloned rather than carried over, leaving a broken copy whose script scope read back invalid — the fix and its container-copy semantics (dropped uncopyable members, cycle safety, clone() base-type behavior) are verified against a real device across four new probes. A related fix corrects the class hierarchy so every built-in node beyond a direct Group child reports its full isSubtype()/parentSubtype() chain instead of collapsing to "Node", and adds RenderableNode as a documented Group alias. The remaining documented ChannelStore node commands — Roku Pay credential storage and TVOD partner orders — are now mocked, along with several spec deviations in the commands already implemented. The core engine also gains a performance improvement that defers roArray/roAssociativeArray/roList/roRegion/roBitmap's method-surface construction to first use, cutting a representative SceneGraph layout benchmark by 30%. Also fixed: roMessagePort.PeekMessage() left a pending roUrlTransfer async job in the callback queue instead of consuming it, causing the common PeekMessage()+GetMessage() poll idiom to re-fire the same HTTP request and deliver duplicate roUrlEvents forever. Read the full release notes below for more details.
Release Changes
Core Engine
- (brs) Build expensive component method surfaces (
roArray,roAssociativeArray,roList,roRegion,roBitmap) lazily, improving SceneGraph layout performance by up to 30% by @lvcabral in #1208 - (draw2d) Simplified
IfDraw2D.tsand added dedicated unit tests by @lvcabral in #1212 - (brs) Fixed
roMessagePort.PeekMessage()not consuming a pendingroUrlTransfercallback, which caused duplicate HTTP requests and repeatedroUrlEventdelivery in thePeekMessage()+GetMessage()poll idiom by @lvcabral in #1215
SceneGraph Extension (brs-scenegraph release v0.5.3)
- (rsg) Mocked the remaining documented
ChannelStorenode commands (Roku Pay credential storage and TVOD partner orders) and fixed spec deviations in existing ones by @lvcabral in #1205 - (rsg) Aligned container and node copy semantics with the device, so copying an
assocarray/arrayno longer clones a SceneGraph node inside it by @lvcabral in #1207 - (rsg) Added
RenderableNodeas an alias forGroupand fixed multi-level subtype hierarchy registration by @lvcabral in #1210
Chores, Build and Dependencies
- build(deps): bump
fflatefrom 0.8.2 to 0.8.3 by @dependabot in #1211 - Upgraded dependencies
Full Changelog: v2.5.2...v2.5.3