Repository navigation
This release is a round of device-verified accuracy and performance fixes, each checked against a real Roku with a probe app now committed under test/simulator/probes/. Collections can be indexed with any numeric type (Double, LongInteger, boxed numbers) without the whole container being copied on each read, writes with a negative or out-of-capacity index are ignored with the device's warning, and built-in methods read their Integer arguments like the device (a LongInteger index no longer loses its low 32 bits). What type() reports for a container member now depends on how it was stored, as on the device, and storing a value no longer changes the type() of the variable it came from. Numbers print nan/-nan/inf/-inf/-0 like the device, and Val() reads the longest numeric prefix like C's strtod/strtol. roByteArray for each no longer skips the first byte, and CreateObject("roRegex", ...) with a pattern JavaScript can't compile prints the device's error and returns invalid instead of crashing the app. In the SceneGraph extension, render→Task fan-out is now batched — fixing Rooibos code-coverage runs that hung or ran out of memory — and a Task's XML onChange runs only on the render thread, as on the device. Boxed values are also lighter, since components now create their method maps on first use. Read the full release notes below for more details.
Release Changes
Core Engine
- (brs) Fixed storing a value in an array or AA changing the original variable's
type()by @quan7794 in #1259 - (brs) Matched the device's
type()for container members by how they are stored, and fixedroXMLList.AddHeadappending at the tail by @lvcabral in #1265 - (brs) Components now create their method and interface maps on first use, so boxed values take about a third of the memory by @lvcabral in #1266
- (brs) Fixed
roByteArrayindexed reads copying the whole array by @jay23606 in #1267 - (brs) Collections can be indexed by any numeric type without copying, built-in methods read
Integerarguments like the device, andnan/inf/-0formatting andVal()parsing now match the device by @lvcabral in #1270 - (brs) Fixed
roByteArrayfor eachskipping the first byte, andNext()past the end now returnsinvalidby @rahul05ranjan in #1273 - (brs) Fixed
roRegexcreation crashing the app on PCRE-only patterns:(?-)/(?)are accepted, and an invalid pattern returnsinvalidas on the device by @rahul05ranjan in #1274 - (node) Fixed a Task worker's first print being dropped on a slow host, by starting the output drain only once the worker is running by @lvcabral in #1269
SceneGraph Extension (brs-scenegraph release v0.6.2)
- (rsg) Batched render→Task fan-out and stopped leaking port events for a running Task, fixing Rooibos code-coverage runs hanging or running out of memory by @markwpearce in #1264
- (rsg) A Task's XML
onChangenow runs only on the render thread, and its message ports are kept out of render'smby @lvcabral in #1268
Chores, Build and Dependencies
- Enabled ESLint
no-unused-varsto flag unused imports and locals before SonarCloud does by @lvcabral in #1268 - Fixed the
roAppManagergetUpTimetest flaking on slow runners by @lvcabral in #1278 - build(deps): bump
compressionfrom 1.8.1 to 1.8.2 by @dependabot in #1244 - build(deps): bump
shell-quotefrom 1.10.0 to 1.12.0 by @dependabot in #1245 - build(deps-dev): bump
brace-expansionfrom 5.0.9 to 5.0.12 by @dependabot in #1246 - build(deps): bump
proxy-addrfrom 2.0.7 to 2.0.8 by @dependabot in #1247 - build(deps-dev): bump
source-map-jsfrom 1.2.1 to 1.2.2 by @dependabot in #1248
New Contributors
- @quan7794 made their first contribution in #1259 - welcome to the project!
- @jay23606 made their first contribution in #1267 - welcome to the project!
- @rahul05ranjan made their first contribution in #1273 - welcome to the project!
Full Changelog: v2.6.1...v2.6.2