The new BrightScript compiler/runtime seems a lot stricter than the old one. In general, that's not a problem, and is actually a good thing moving forward, but I can see it causing a lot of problems for existing channels. For example, I've found two issues with some code of mine that worked fine on 2.9, but bails on 3.0.
One was a simple copy and paste error. I had copied a Function and changed it to a Sub without removing the return type from the declaration:
Sub MySubroutine(myParams As Object) As String
Definitely incorrect syntax, but the code runs fine in 2.9, but fails with a Type Mismatch in 3.0 when the subroutine exits.
The second issue actually caused the Roku to reboot immediately upon compilation. I launched the channel, and the box would crash and reboot every time. When sideloading, I got the stack trace, so I was able to find the issue. The published version of the channel, however, caused the catastrophic failure. The code that caused it looked something like this:
Sub ParseXml(node As Object)
subNodes = node.links
...
For Each node in subNodes
...
Next
End Sub
The issue is obvious in that condensed listing, but it was buried in a rather lengthy parsing routine I had. Re-declaring/reusing "node" (an actual parameter) in the body of the routine really freaked the compiler/runtime out, and caused a reboot. 2.9 didn't have any issues with it.
I actually like the new strictness, and think it will go a long way toward ensuring better/cleaner code, but I wanted to be sure to raise the awareness, as there's certainly potential for it rendering some existing channels useless, particularly those that are no longer actively being maintained.
My Channels: http://roku.permanence.com - Twitter: @TheEndlessDev
Instant Watch Browser (NetflixIWB), Aquarium Screensaver (AQUARIUM), Clever Clocks Screensaver (CLEVERCLOCKS), iTunes Podcasts (ITPC), My Channels (MYCHANNELS)