In this update
Welcome to the December 22 RokuCommunity update. Here are some of the key highlights:
continuerepeat bug for debug protocol
The VSCode extension has a built-in node viewer (similar to RALE) called SceneGraph Inspector. In past releases, SceneGraph Inspector was able to show the children of ArrayGrid nodes (MarkupList, RowList, etc…), but these child nodes were loaded in seemingly random order. As of v2.38.4, these children are now ordered properly.
Historically the “Show Focused Node” logic in the Scenegraph Inspector would focus the ArrayGrid itself. As part of v2.38.4, that action will now dig deeper into the ArrayGrid child and focus the actual focused node.
We’ve added “refresh” and “clear” buttons to the Roku Registry panel. The import/export functionalty has also been fixed.
continuerepeat bug for debug protocol
We’ve fixed a debug session bug where a breakpoint would be replayed several times. This was only present when
enableDebugProtocol was set to
true and the developer issued a
continue command. This was mostly caused by an underlying bug in the Roku OS when using the ADD_CONDITIONAL_BREAKPOINTS command, so to mitigate the problem we now only use that command when a user has actually defined a conditional breakpoint.
A popular feature of the BrightScript Language extension for VSCode is the ability to host/sideload component libraries directly through the editor instead of needing to manually run an http server. (you can read more about component library support here). The telnet debugger truncates file paths after a certain length (i.e.
...ource/main.brs), which means there are situations where we can’t tell if the path references a file in the main app or a component library. To work around this, all .brs files in the comonent library are renamed with a suffix. (i.e.
pkg:/source/networking__lib1.brs). Then, when we receive a path from the server, we unravel that path and do an
.endsWith() check to find the referenced path.
However, this rewrite logic was a little too aggressive, and would rewrite every script import regardless of whether it actually existed in the project, including things like:
common:/LibCore/v30/bslCore.brs. #112 fixes this issue by restricting that rewrite logic to only relative,
We’ve fixed an issue that would crash brighterscript when running in watch mode. This was happening because we weren’t guarding the
transpile flow, so if a 5 second transpile kicked off, and then a file changed, it would try to run another transpile. Since brighterscript modifies the AST during transpile, this could cause very strange behaviour. We fixed the issue by queueing transpile requests and running them one at a time instead of in parallel.
We’ve added a new performace-focused flag to BrighterScript that will remove all types from function parameters when transpiling the project. This should give your app a small performance boost since there is a runtime cost to running those checks.
We’ve added a new diagnostic that flags top-level statements (like namespaces, classes, etc…) whenever they are incorrectly defined inside of nested blocks (like function bodies, if statements, etc).
Bslint 0.7.6 includes a fix to account for
throw statements when detecting missing
aa-comma-style rule has been given a new option,
all-except-single-line, which will enforce that every line in an associative array, except for single-line statements.
Last but certainly not least, a big Thank You to the following people who contributed this month:
Contributions to vscode-brightscript-language:
Contributions to brighterscript:
Contributions to roku-debug:
Contributions to brighterscript-formatter:
Contributions to bslint:
The views and opinions expressed in this website and all of its pages are those from within our open source community and do not represent the views or positions of Roku, Inc. or any entities they represent.