-
• #2
Huge thanks for the work done in Espruino and the continuous Momentum you were able to keep until now.
Added I2C.readReg --> Yeah!
Added console.debug/info/warn/error --> More Yeahhhhh!!
A file called .bootPowerOn is now executed at power-on only --> Even more Yeahhhhhhh!!
Bangle.js 2 now supports two central connections at once --> Too many Yeah!And finally, even if I didn't really understand how it works and where it will show improvements, it is always cool to read about efficiency related, bold numbers as high as FORTY :-)
-
• #3
Thank you for doing so much as before
-
• #4
Thanks for the consistent improvements and additions! 😁
-
• #5
Always something cool going on with Espruino! :)
I haven't made announcements for the previous few releases, but there have been some great additions recently I thought I'd share!
As always, a full list of changes is at https://www.espruino.com/ChangeLog
First, the big one:
Pretokenised Strings
Espruino has supported pretokenisation for a while - replacing reserved words to convert
if (i) return true
to#(i)##
to save on storage space and increase speed. You can enable this when uploading in the IDE or in the Bangle.js app loader, or by tagging a function with"ram"
.As of 2v21, Espruino can pretokenise Strings, including base64 encoded strings. This means that program code in Flash that writes something like
atob("abcdef.....")
will be replaced with a 'string token', length, and then raw data (when before it had to be parsed and then decoded). When the String is parsed it won't even be loaded into RAM, but will stay as a reference to that area of flash memory, which is really efficient.It'll help everywhere, but it makes a massive difference on Bangle.js where fonts and images might have been stored as base64. On the default Anton clock, setting the font is now a whopping FORTY times faster than it was before and it's really noticeable with how snappy the new firmware is when loaded with pretokenised code (which is the default if factory resetting).
Other features
{filter:1}
to allow images to be zoomed out cleanlyE.pipe
from big strings (even if they're in flash memory){a:"\x10"}
vs{"a":"\u0010"}
) for speed/space efficiencyunrenderableChars/imageCount/maxImageHeight
as wellStepper
class (beta!).bootPowerOn
is now executed at power-on onlyBangle.js specific features
wakeOnDoubleTap
to Bangle.setOptions, and the "lock" event now has second argument giving a reason (if known)