-
• #2
Other boards
- RuuviTag: invert LED1, LED2 & BTN in software so LED.set() does what you'd expect
- Added RAK8212 (and include SMS/GPRS code in RAK8211/2 builds)
- Increase size of saved code area from 3*4k to 10*4k on RAK821x boards
- ESP8266: add CFLAGs to shrink binary files (fix #1499)
- ESP8266: fully integration of analog pin A0 (fix #1495)
- ESP32: update sdk to esp-idf 3.0.1, set Espruino build tools back to master branch
- ESP8266: release heap used by logDebug(true) (fix #1508)
- ESP8266: remove SHA256 SHA512 (fix #1517)
- ESP8266: switch to SDK 2.2.1 (fix #1207)
Fixes
- changeInterval now works with large (>32 bit) intervals (fix #1438)
- changeInterval now changes the interval immediately when it's called inside the interval it is changing (fix #1440)
- Fix parsing of try..catch when not executing (fix #1439)
- Allow Ctrl-C out of while...continue loop (fix #1441)
- Fix bug if using an undefined member of an object for for..in (fix #1437)
- Fix stack overflow if interpreting a file full of '{' (fix #1448)
- Fix exception when performing record access on object from getter (fix #1454)
- Fix issue that caused 'dump()' not to report variables/functions on Pixl.js
- Fix HTTP Chunked transfers when the server uses lowercase headers (fix #1458)
- Fix TypedArray.indexOf (fix #1468)
- Allow require('Storage').write('a','',0,15) (zero length data) (fix #1465)
- Fixed bug when RegExp.match/test called on non-strings
- Fix unreliable ArrayBufferView.indexOf (#1468)
- parseFloat(".s") now returns NaN
- Fixed /\S+/.test(" ")
- Allow '.then' on already-resolved promise (fix #1476)
- Stop atob adding trailing 0s when strings are not a multiple of 3 long
- Fix Array.shift (returned a NAME, rather than the value)
- Stop characters getting dropped when pasting large amounts of data into Linux build
- Fix Math.round for numbers > 32 bit (fix #1485)
- Fix JS state restoration issue (eg. Pixl.menu inside switch would cause errors)
- Fix
setDeviceClockCmd: Unknown Device
when usingLoopbackB.setConsole()
on WiFi board - Fix buffer overrun if we have to reallocate a pointer to argument lists when calling a function (fix #1491)
- Fix stack overflow if executing regex full of hundreds of open brackets (fix #1487)
- Fix issue where STM32F4 USB could lock up if TX during heavy RX
- Fix 'Can't extend undefined' when using Object.setPrototypeOf on a function
- Fixed hang if trying to allocate Storage greater than total storage size in a fully erased Storage area.
- Fix assert fail when calling Function.apply with an Object with non-numeric keys
- Fix issue when AT lib has to process multiple custom line handers in one packet
- Espruino WiFi: Fix unreliable send when receiving lots of data on another socket
- Espruino WiFi: Only rename
EspruinoWiFi
toWiFi
if not found (allows easier debug) - Ensure that setBusyIndicator updates output state after the very first initialisation.
- Ensure
Date.getTimezoneOffset()
returns the correct timezone offset (fix #1515)
Features lost
Unfortunately with all this work I've had to spend a lot of time stripping things back to keep Espruino building on the more constrained platforms. These changes have been made carefully to try and remove features that people weren't using anyway.
- Lower saved code area to 2k on micro:bit (from 3)
- Remove RGB colour handling in setColor on devices with low flash
- Reduce available variable count on STM32VL - we were too low on RAM
- Remove Graphics.scroll/drawCircle/fillCircle on devices with low flash to allow builds to fit again
- On devices with low flash, ensure atan2 uses the slower/smaller atan implementation
- Move FFT back to 64 bit if low flash (it uses less memory!) and optimise for flash space
- Remove Olimexino from build (too difficult to slim down build and very low usage)
- Remove HASH/hashlib from all builds as it was confusingly in some and not others. Now use 'crypto'
- require('crypto').SHA1 is now JS in Espruino Original to cut down on the flash required
- Pixl.js: reduce saved code area to 9 x 4kb to allow for extra features
- microbit: remove line-by-line debug capability to free up some space
- RuuviTag: invert LED1, LED2 & BTN in software so LED.set() does what you'd expect
-
• #3
WoW
Exciting -
• #4
Wow wow wow! :-P
-
• #5
A LOT to take in... and I like very much the 2 as begin of version number.
I'm a little curious about the behavior of these two items
- Add extra ReferenceError checks, even if variable is not used
- Now check for ReferenceErrors in global scope
If the check stops execution before a check in the application for
typeof == "undefined"
code happens, some applications will have to change.As with all things software/firmware, I can see that more constraint platforms can get stuck on a maintenance version/branch rather the evolutionary one. Yes, it is to regret... but picking a too 'small' device shout be regretted more than put just too much work into retrofitting the 'past'.
A statistics about module requests from http://www.espruino.com/modules by devices can help with the selection which devices have to switch such a maintenance version/branch. Getting to know how custom firmware builds are done by individual users and developers and how features can be removed/added beyond the already available options is still an option to bring such devices on per-application basis into the 'present'.
- Add extra ReferenceError checks, even if variable is not used
-
• #6
I'm not sure I understand what you mean?
About ReferenceErrors: In 1v99 you could write
foo,12
where foo was undefined - and nothing would happen. Now you get a ReferenceError. It won't be stopping anything from working, it just helps to find bugs earlier.typeof
still works as you'd expect. -
• #7
Ic.
foo.xy
has - as expected - to fail when foo is undefined - and it obviously did not pre 2v00; but I expectfoo.xy
andfoo["xy"]
to returnundefined
with foo defined and xy in foo undefined or having the value undefined and being interpreted asfalsy
in an conditional expression(foo.xy)
or(foo["xy"])
. I assume all is just fine - have to fix my 'paranoia'... ;-) - Will do that with some validation and bringing my understanding up to date. -
• #8
Fantastic news. Flashing it now on to a Pixl!
-
• #9
Great work as always, Gordon!
-
• #10
Long way well travelled. Congrats.
-
• #11
Found it much more stable than 1.97 regarding noisy button debouncing.
And a small bug in the debugger; statement. First 'n' I press echoes twice.
-
• #12
Great!
And a small bug in the debugger; statement. First 'n' I press echoes twice.
Can you start a new thread for that? Just tried it here on a Pixl and it seems fine.
-
• #13
nice !
especially the graphics & storage stuff ;)
keep it up :)
Finally there's a new Espruino release - and it's a big one!
https://www.youtube.com/watch?v=YQtLmu8-aHw
Highlights
for(var i of array)
to iterate over elements.dump
to output a copy of the current Graphics object as an image in the Web IDE console..boot0/1/2/3
inStorage
heatshrink
library allows access to Espruino's built-in LZSS compression engine from JSE.mapInPlace
is now extremely powerful for quickly packing/unpacking bits in arraysFull Changes
ES5/ES6 features
Check current state at http://www.espruino.com/Features
Performance/Features
E.toJS
to allow very compact JS data stringification (similar toJSON.stringify
for JSON2)dump()
=undefined
to console if line is emptyE.mapInPlace
docs, and allow it to work with no map (eg pass straight through)Graphics
Flash Memory
require
Bluetooth Boards