In this update
Welcome to the December 2022 edition of “What’s New in RokuCommunity.” Please consider subscribing to stay up to date with what’s happening in RokuCommunity.
Here are some of the key highlights:
continue
repeat bug for debug protocolcontinue
indentation formattingreturn
aa-comma-style
option all-except-single-line
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.
continue
repeat bug for debug protocolWe’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.brs
-> 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, pkg:/
, and libpkg:/
paths.
continue
indentationThe brighterscript-formatter has been enhanced to properly handle the new continue while
and continue for
keywords that were added in 11.5
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).
continue
statements (#752)DottedSetStatement
(#748)return
Bslint 0.7.6 includes a fix to account for throw
statements when detecting missing return
statements
Before:
After:
aa-comma-style
option all-except-single-line
bslint’s 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:
Legal notice
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.
Designed with @arturocuya, powered by Astro
by