forked from espruino/Espruino
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathChangeLog
More file actions
2056 lines (1955 loc) · 141 KB
/
ChangeLog
File metadata and controls
2056 lines (1955 loc) · 141 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Add Array.includes
Fix (Number.toFixed) rounding, eg (1234.505).toFixed(2)
nRF52: If a central is connected to Espruino but isn't reading from UART, don't block waiting to send data
ESP8266: reverse fix #1679
Added Graphics.getFont/setFont/getFonts
Added Graphics.getFontHeight
Added option to compile in 6x8 fixed-width fonts
Fix issue where Util Timer timers could break after a call to setTime
nRF52: Enable DMA for SPI send
Added option to build in TensorFlow Lite for AI
Documentation for modules now includes require('...') in the call type to be less confusing
ESP8266: warning: Empty loadable segment detected (fix #1690)
nRF52: Add NRF.nfcPair(...) and OOB pairing to allow tap to pair over BLE
nRF52: Add NRF.nfcAndroidApp(...) to launch an Android app on touch
Pixl.js remove SHA512 to make room for new NFC functionality
Graphics.setFont("4x6",2) will now double the size of a bitmap font
Graphics.drawImage can now take a String of data for an image (eg. direct from Storage)
nRF5x: Support connection to devices with RANDOM_PRIVATE_RESOLVABLE and RANDOM_PRIVATE_NON_RESOLVABLE addresses
Pixl.js: Move SCK pin used during Neopixel writes to ensure it doesn't interfere with BTN3
nRF52: Fix alignment issue with Nordic's SDK12 code that stopped passkey pairing from working sometimes
Storage lib now doesn't bother reading to end of flash to ensure pages are clear
Allow heatshrink compress/decompress to work even if flat buffers can't be allocated
require("Flash").write operations no longer need to be aligned
require("Storage").open added - for appendable files
Pixl.js: Removed AES functionality - unfortunately we're running low on space for it
Original Espruino Board: Removed Vector font and don't add rotated drawImage to save flash
nRF5x: Add NRF.filterDevices to allow scanned devices to be easily filtered after scanning
nRF52: Fix 'BLE task completed that wasn't scheduled' warning regression (peripheral disconnect)
Can now get a data pointer even from a single JsVar string (it doesn't have to be flat)
Add option to specify a palette when drawing images with drawImage
Add XON/XOFF flow control to Bluetooth LE UART (on by default)
Lower thresholds for XON/XOFF to give more headroom with devices that are slow to respond
Add a fast path for non-rotated non-scaled Graphics.drawImage
Add argument check for heatshrink compress/decompress
nRF5x: Ensure gatt.connect silently succeeds if we're already connected to the device
Add E.showMenu, deprecate Pixl.menu - use a common function to ease porting between devices
Added E.showPrompt, E.showAlert for Bangle.js
Pixl.js - check '.splash' file at startup and use it for splash screen if it's there
Improve free list ordering when Flat Strings are freed
Added E.defrag to perform defragmentation - still beta!
nRF52: fix issue where restarting the softdevice would reset the RTC
- fixes Bangle.js watchdog reset
2v04 : Allow \1..\9 escape codes in RegExp
ESP8266: reading storage is not working for boot from user2 (fix #1507)
Fix Array.fill crash if used to fill up all available memory (fix #1668)
Fix NRF.requestDevice regression (clearInterval error) (fix #1669)
Smartibot devices now advertise on BLE as 'Smartibot abcd'
nRF5x: Leave digital input disconnected for analog read (saves power)
nRF5x: Return 'analog' as pin mode for any pin where input is disconnected
If watchdog is on and automatic, ensure that `reset()` keeps the automatic kicking going
Ensure that a console stays locked even after
Ensure interpreter flags (eg echo) are cleared after a `reset()`
nRF5x: When watchdog is on and automatic, automatically wake up often enough to service it
Fix Graphics.setFontBitmap on builds with no vector font (fix #1671)
Graphics.asBMP now takes account of bitmap rotation (fix #1672)
Raspberry pi pin numbering the same if using wiringPi or filesystem GPIO (fix #1673)
nRF52: Peer manager init errors from Nordic libs now not fatal
SDK15: Writing to flash now works
nRF52840: USB Serial works even for big sends, and device swaps to USB automatically
nRF52840: Allow Serial2 to be used
ESP8266: optimize rename-section for ESP8266_4MB board, freeHeap +2064 byte (fix #1679)
Fix corruption if Function.replaceWith called manually on something not a function (fix #1684)
Fix bug where '.clone' on a native function didn't copy arguments (fix #1685)
nRF52840: Fix input/pullup/pulldown pin modes on IO bank 2
Added `E.memoryMap` to allow on-chip registers to be mapped direct to variables (fix #1500)
2v03 : nRF5x: Fix issue when calling NRF.setAdvertising while connected via BLE (fix #1659)
nRF5x: 'dump()' not outputs `NRF.setSecurity` line if it has been called.
Ensure that converting a valid pin to a boolean always returns true
clearInterval/clearTimeout/clearWatch(undefined) now throw an error asking for just clearX()
- this stops code accidentally clearing all timers/etc if it uses a variable that is undefined
Allow NRF.setAddress to work even with services defined and a connection in progress
2v02 : Fix string index calculation when using some regexes (fix #1602)
Ensure Function.replaceWith puts scope after parameters (fix #1601)
Ensure Graphics.* return the Graphics instance, to allow call chaining (fix #1580)
Ensure DataView.byteOffset/byteLength is always set even if not specified (fix #1567)
Added HttpServerResponse.setHeader
HttpServerResponse now automatically sends `Connection:close` unless overridden (fix #1596)
Fix sign of RSSI reporting with setRSSIHandler
nRF52: Add docs for properties that weren't documented before
nRF52: Add ability to connect to device with passkey authentication
nRF52: Allow startNotifications to use Indicate if Notify doesn't exist (as per spec)
nRF52: Add option for static passkey pairing with NRF.setSecurity
ESP32: update EspruinoBuildTools to esp-idf V3.1.2 - fix Wifi connect issues (multiple ssid)
Revert PR #1459 as it broke neopixel functionality that worked previously
nRF52: Disconnect RX pin after UART test at boot (saves power when in deep sleep)
Serial.unsetup now sets pin state to STATE_UNDEFINED, which disconnects the pins internally
Removed modulo on `new Date` h/m/s/ms arguments as it seems desktop JS is fine with out of range values
Added `active` option to NRF.setScan/findDevices/requestDevices to allow scan response packets to be requested
Add I2C/SPI baud rate checks (#1619)
STM32: Add `E.setRTCPrescaler` to allow the RTC to be calibrated on Espruino Pico (fix #1607)
nRF52: Fix slow Bluetooth connection if previously disconnected while using low power connection interval (fix #1605)
Allow `Graphics.clear(true)` to reset state (font, color, etc) to default as well as clearing the screen (fix #1615)
nRF52: Fix setScanResponse regression from 2v00
nRF5x: Execute SWI1_IRQHandler when radio turns off instead of on+off. More efficient, fixed multiple advertising.
Smartibot build added
ESP8266: add CFLAGs to shrink build size (fix #1622)
ESP32: update EspruinoBuildTools to esp-idf V3.1.3
nRF52: Add FAT Filesystem support to MDBT42Q module
Now save file modification time with FAT
Fix segfault if `.clone` is called with `this==undefined` (fix #1628)
Fix issue outputting char codes <8 after outputting hex char codes
nRF52: Don't allow NRF.updateServices while a BLE restart for setServices is queued
nRF5x: Don't sleep if we received any events since last sleep (fix #1572)
Remove limit on the number of scopes that can be searched (fix #948)
String.split - improve docs, split with RegExp now inserts the text after the final match
RegExp: Add '|' operator (fix #1503)
Switch ARM toolchain to gcc-arm-none-eabi-8-2018-q4-major
Improve handling of timeouts for RAK8212 GPS
nRF52: Now create exception if advertising calls fail (but ignore when in IRQ)
nRF52: Add setAdvertising({},{scannable:false}) for disabling scan response
nRF52: Add note about connectable:false requiring >=100ms intervals
STM32: Fix issue where occasionally STM32 would be ~0.2s late waking from light sleep
ESP8266: add Wifi.connect options channel and bssid for faster AP connects (fix #1595, #1640)
Fix index in E.mapInPlace and improve docs
nRF52: Add NRF.getSecurityStatus to allow devices to detect the current state of the connection
STM32F4: Add Filesystem module
STM32F3: Fix broken build
nRF52: Fix nRF52840 advertising and remove duplicated advertising code
Fix Software Serial receive when the frame has to be decoded inside the IRQ (fix #1654)
Raise software serial receive buffer to 64 bytes (from 7)
nRF5x: Add security options to NRF.setSecurity (courtesy of @vkolotov)
nRF5x: Allow Serial1.setup(...) with only TX or RX pins
Vector font removed from Espruino Original WIZnet build due to lack of spare flash
2v01 : ESP32: update to esp-idf V3.1
Fix issues with Class Extends
Improve Tab Completions for extended classes
Fix Storage.readJSON/readArrayBuffer memory leak (fix #1532)
Fix potential out of bounds Graphics.scroll
Serial.setConsole now warns if not used on hardware Serial
ESP8266: implement hw_timer (fix #1511) to make soft serial and pwm work
Fix Storage write error when skipping pages (fix #1539)
nRF5x: When scanning, only use as much of IO queue as is needed
nRF5x: If BLE/NFC/etc data won't fit in IO queue, drop whole packet
Allow `a in b` to search 'fake' objects (#1534)
Improve fast path when iterating over Uint8Array/ArrayBuffer
Allow deletion of function properties (fix #1549)
Add `{callback:...}` option for `.write` style functions - improve docs.
ESP8266: deepSleep invalid microseconds (fix #1547)
ESP8266: ESP_FLASH_MAX for ESP8266_4MB is wrong (fix #1551, #1553)
Fix buffer overflow if bytesize/stopbits used in `Serial.setup` (fix #1510)
Ensure jsvNewFlatStringOfLength tries twice (even if GC doesn't release memory, it reorders the free list) (#1559)
ESP8266: Missing variable Flash Mode (--flash_mode, -fm) in ESP8266.make files (fix #1563)
ESP8266: Remove hack added to get around SDK 1.4 bug (fix #1568)
Reduce available hardware SPI/I2C instances to 1 on nRF52 (since this is all we implement atm)
Add E.dumpFragmentation to show memory fragmentation (only for debug builds)
Fix parsing of dates from before 1970
nRF52: Fix some regressions in requestDevice (flagged up by asserts in debug build)
Allow built-in objects to be created with `new X()`
nRF52: Ensure Bluetooth stack doesn't do a reboot for non-fatal errors (just report them to console)
BluetoothRemoteGATTServer.disconnect now returns a Promise
nRF52: Jump out of low power mode after less BLE activity (2 reads/writes in 10 radio packets) (#1546)
nRF5x: Fix NRF.setConnectionInterval when there's no connection (fix #1546)
Explicitly mention Espruino not supporting CASE after DEFAULT in error (fix #1570)
Ensure scope is saved for Class constructors (fix #1576)
Add setNBCellOn for RAK8211-NB (fix #1581)
Now escape chars <8 as octal, and add escape of vertical tab
Add Graphics.createArrayBuffer(... {interleavex:true}) to allow faster support for P3 LED panels
Add Graphics.fill/drawEllipse and move fill/drawCircle to use the same code
CC3000-specific build removed on Original Espruino board (lack of space)
2v00 : Allow changeInterval 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)
Add extra ReferenceError checks, even if variable is not used
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)
Allow for..in to iterate over prototype chains down from Array and Object
Add for(var i of array) to iterate over elements
Added getter and setter support
Stop parsing blocks if not executing (fix #572)
Fix stack overflow if interpreting a file full of '{' (fix #1448)
Fix exception when performing record access on object from getter (fix #1454)
Switch to non-recursive StringExt copy (fix #1451)
Fix rounding errors in fillPoly -> improve vector font rendering
Fix issue that caused 'dump()' not to report variables/functions on Pixl.js
Add E.lookupNoCase to allow searching case-insensitively for Object keys
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)
edit() now chooses the shortest way to describe the function
Fixed bug when RegExp.match/test called on non-strings
Added Global isFinite
Add missing ArrayBufferView.filter
Added Array.find and findIndex (also for ArrayBufferViews)
Fix unreliable ArrayBufferView.indexOf (#1468)
Added String.startsWith/endsWith/includes (#1302)
parseFloat(".s") now returns NaN
Fixed /\S+/.test(" ")
Added Storage.getFree() to return available space
Enable E.setTimeZone on boards with very little flash memory
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
Added Graphics.asBMP/asURL/dump - allowing easy debugging of Graphics via IDE
Allow '.then' on already-resolved promise (fix #1476)
Stop atob adding trailing 0s when strings are not a multiple of 3 long
Reconstruct start and end newlines when dumping multi-line functions
Fix regression parsing methods in classes on embedded (fix #1479)
nRF5x: Add options argument to NRF.connect and BluetoothDevice.gatt.connect, allowing a connection interval to be specified
nRF5x: Start renegotiating speed after 0.1ms, not 5s. Massively improves connect speed.
nRF5x: Now queue up to 5 UART TX packets per transmit interval (was 1 previously)
nRF52: Add Dynamic Interval Adjustment - default to 2x connection speed, but idle at 10x slower if not used for 2 minutes
nRF5x: Add NRF.setConnectionInterval() to allow connection speed to be set manually
RuuviTag: invert LED1, LED2 & BTN in software so LED.set() does what you'd expect
Console now doesn't print quotes around object keys if it's not needed
Added `E.toJS` to allow very compact JS data stringification (similar to `JSON.stringify`)
Output the current timer number as a comment in `dump()`
Don't print `=undefined` to console if line is empty
Added RAK8212 (and include SMS/GPRS code in RAK8211/2 builds)
Graphics.stringWidth now takes account of newlines
nRF52: NRF.requestDevice now resolves as soon as a device is found. Faster and better in congested areas
Replace use of obsolete 'usleep' function in Linux builds (fix #1455)
Add Ethernet.getIP/setIP callbacks for Wiznet to bring them in line with WiFi (fix #1482)
Fix Math.round for numbers > 32 bit (fix #1485)
Pixl.js menu now resets font alignment, and down arrow icon is fixed
Now check for ReferenceErrors in global scope
Fix Array.shift (returned a NAME, rather than the value)
Add sanity check for names returned from Functions and fix Array.pop
Stop characters getting dropped when pasting large amounts of data into Linux build
nRF5x increase JsSysTime accuracy to 2^-20 from 2^-16 - drastically improves Util Timer accuracy
Added support for Software Serial ports (for low baud rates, eg. 9600)
Fix JS state restoration issue (eg. Pixl.menu inside switch would cause errors)
Added Graphics.drawPoly
Add Graphics.asImage to turn a Graphics instance into an Image that can be used with drawImage
Add Graphics.createImage to allow creation of a 1 bit image direct from a string
Use 32 bit floats for E.FFT, not 64 (fix #1443)
Automatically shut down UART if both pin states are changed
Fix `setDeviceClockCmd: Unknown Device` when using `LoopbackB.setConsole()` on WiFi board
Fix non-UART serial regressions (after software serial additions)
Pixl.js: Add Pixl.setLCDPower to allow the LCD to be powered off, more than halving power consumption
nRF5x: Allow NRF.setScan and NRF.findDevices to take the same search filters NRF.requestDevice does (fix #1496)
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
Improve `E.mapInPlace` docs, and allow it to work with no map (eg pass straight through)
Added non-standard Uint24Array, because it's very useful for RGB
ESP8266: add CFLAGs to shrink binaray 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
Allow btoa to work for arrays as well as Strings (fix #1509)
Allow E.mapInPlace to merge bits from multiple source elements, also add option for msb/lsb first
Remove Graphics.scroll/drawCircle/fillCircle on devices with low flash to allow builds to fit again
Remove BluetoothRemoteGATTCharacteristic.writeValue on NRF51 (accidental inclusion - it's not required)
Double IO buffer size to 256 (1k bytes) on boards with 96k of RAM or more (or NRF52)
nRF5x: allow arbirtary baud rates to be specified for UART
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 new Graphics.createImage/asBML/asURL/dump on Original Espruino Board (not enough space)
Remove Olimexino from build (too difficult to slim down build and very low usage)
Remove Software Serial from boards where we're low on flash
Increase size of saved code area from 3*4k to 10*4k on RAK821x boards
Fix 'Can't extend undefined' when using Object.setPrototypeOf on a function
nRF52: Added NRF.HID event for two-way BLE HID communications
nRF5x: Remove multiple writes per connection interval (more trouble than the speed improvement is worth)
Fixed hang if trying to allocate Storage greater than total storage size in a fully erased Storage area.
Pixl.js: Fix 30s pause when closing sockets on WIZnet W5100 (fix #1306)
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
Added 'heatshrink' library to expose built-in heatshrink compression to users
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` to `WiFi` if not found (allows easier debug)
Check Flash Storage for modules when using `require`
Add 'bits' option for Software SPI
STM32 reset pin IRQs before storing the state - makes lost setWatches far less likely
Ensure that setBusyIndicator updates output state after the very first initialisation.
MDBT42Q: Add LED2 var in the Espruino interpreter, but don't use it for the bootloader
ESP8266: release heap used by logDebug(true) (fix #1508)
ESP8266: remove SHA256 SHA512 (fix #1517)
Ensure `Date.getTimezoneOffset()` returns the correct timezone offset (fix #1515)
Search for and execute files '.boot0'/1/2/3 in Storage at boot time if they exist
Pixl.js: reduce saved code area to 9 x 4kb to allow for extra features
ESP8266: switch to SDK 2.2.1 (fix #1207)
Fix Serial port path regression on Linux, and add docs
microbit: remove line-by-line debug capability to free up some space
Added ES6 String.prototype.repeat
1v99 : Increase jslMatch error buffer size to handle "UNFINISHED TEMPLATE LITERAL" string (#1426)
nRF5x: Make FlashWrite cope with flash writes > 4k
Increase max size of native strings on platforms that support it - 16 bit to 32 bit (#1432)
Fix stack size detection on Linux (fix #1427)
Fix strncat/cpy bounding issues (fix #1425)
Promises now ignore a second resolve/reject (fix #1433)
Fix stack overflow if void void void... is repeated many times (fix #1434)
Fix font rendering issue caused by signed bit field handling by GCC on non-x86 platforms (fix #1436)
Added E.reboot() to allow hard reboots from software (fix #1429)
Added 'Graphics.getInstance()' for more platform independent graphics
Added VT100 'erase in Display' to Terminal
In REPL, use x.toString() for objects if we know their name and it is available
Pixl.js add BLE aerial test to self-test, now also start immediately on BTN4 at boot
1v98 : Allow Crypto SHA1 without SHA256/512 (for ESP8266 where flash is scarce)
Add better docs for the form of Wifi callback functions
Modify ESP8266/ESP32 callbacks to match the node.js style used elsewhere
nRF52: fix pin.toggle() on software-negated pins
Pixl.js: Reorder pins so 0..13 are also D0..13 for better Arduino compatibility
Fix dump() when used with code written using E.setBootCode(..), (fix #1398)
Allow parseInt/parseFloat to be used on very large strings if the number doesn't extend right to the end (fix #1397)
nRF5x: Fix memory leak on NRF.connect
Fix memory leak if an exception is thrown within a rejected promise
ESP8266: rewrite wifi.save and restore to use the storage lib (imp #1380)
ESP8266: Add missing option ssid_hidden for Wifi.startAP() (imp #1358)
Fixed double-connect issue for TCP sockets
Pixl.js: Ensure Pixl.menu changes to bitmap fonts
Pixl.js: tweaked bias/contrast to improve display quality
ESP32: update esp-idf to v3.0. BLE support - thanks to @jumjum. Erase flash before flashing. vars now 2500
ESP8266: rearange rf_cal_sector (fix #1294)
ESP8266: Wifi.scan() now return authmode as text
ESP32: Fix accidental initialisation of UART3 when switching to Telnet (fix #1362)
nRF52: Added `NRF.setAddress` to allow the MAC address to be changed
Added Graphics.setFontAlign for font alignment and rotation
Make software I2C bitrate and waveform more accurate
Move default I2C bitrate to 100kbit/sec
Linux: don't create a espruino.flash file if we're not writing to flash
Add height check for Graphics.createArrayBuffer(...vertical_byte:true) (fix #1421)
Add sanity check for debug trace print statement (fix #1420)
Fix handling of exceptions in switch statements (fix #1352)
Fix 'return when not in function' regression when returning inside a catch block (fix #1422)
Don't load saved firmware images from different firmware versions - saved JS code still loaded (fix #1174)
Remove Graphics.setFontAlign and Graphics.getModified on devices with low flash memory
1v97 : nRF52: fix NRF.on('connect',...) issue
STM32: Fix setDeviceClockCmd error for USB.setConsole()
nRF5x: Fix getPinMode, which fixes SW I2C after save()
Thingy52: Don't report contents of 'Thingy' in 'dump()'
Thingy52: Allow multiple sounds to play at once
nRF5x: Ensure Waveform triggers a finished event
Thingy52: Enable simple bootloader, add travis build for DFU
Add Serial.inject to allow data to be added as if it was received from that device
Fix UDP handling so that it copes with packets not all being received in one go
STM32L496: increase variables - use full 320kB of RAM as it is contiguous
Add a maximum time for setTimeout/setInterval (100 years)
Fix Storage.write when writing partial file of the same length and initial contents
Fix corrupted timer channels returned by Pin.getInfo
Add command history to debugger
Remove process.env.EXPORTS (EXPTR does the same but takes less space)
Thingy52: Add 9 axis MPU support
Errors now store message in 'message', not 'msg' (fix #1366)
Ensure 'in' operator checks the prototype chain (fix #1365)
Promise.resolve now handles promises/thenables as arguments (fix #1363)
try..catch now creates exception in its own scope (fix #1367)
Thingy52,Pixl.js: add default NFC URL of the Espruino IDE
Add ArrayBuffer.byteLength property (fix #1374)
setWatch(..., {edge:"rising",debounce:25}) is now default for built-in buttons
Pixl.js: add Pixl.menu function for easy menus, build in graphical_menu.js
Fix regression in MDBT42Q advertised name
nRF52: Add E.getBattery as a more global battery percentage function, deprecate `Puck.getBatteryPercentage`
Fix '.buffer' regression in 'JSON.stringify(new Uint8Array([1,2,3,4]).buffer)'
Allow `typeof 123 .testing` without an exception (fix #1351)
Add crypto.AES to Puck.js and other nRF52 Espruino devices
1v96 : ESP8266: no callback if SSID is not available (fix #1297)
ESP8266: esp8266 wifi getStatus doesn't show savedMode (fix #752)
ESP8266: cleanup defines WIFI_DBG and NET_DBG for RELEASE
ESP8266: switch to single ld file eagle.app.v6.new.2048.ld for ESP8266_4MB board
Allow JS modules to be built-in by adding files to JSMODULESOURCES
Fix slow/hacky handling of 7 bit serial data for STM32
Add more stack checks so invalid code `typeof typeof typeof x100` can't break stack (fix #1310)
nRF5x: Fix PWM output via Waveform class
Fix free stack checking on ARM
nRF52: Make slightly more space available for stack
nRF5x: Move to SDK 12.3
Stop stack traces from being gathered in functions for Ctrl-C (fix #1313)
nRF5x: Fix crash if I2C is used before being initialised (fix #1301)
Internal printf can now pad with spaces
Add `E.dumpFreeList` in non-release builds to help with debugging
Fix mild memory leak in jsvMakeIntoVariableName that caused GC to run more often than normal
E.toString now tries harder to allocate a Flat String, and works with no-alloc for Uint8Array/FlatStrings
WIO_LTE fix SD card initialisation
Improve SD card reliability on all boards by trying to initialise multiple times before failing
Remove forced inlining in variable inspection functions (reduces flash usage by ~10k)
Remove un-needed DNS lookup for localhost
Add WIZnet UDP support
Tidying up build to avoid making un-needed bin, hex or lst files
Simplify flash save (and help debugging) by using the 'fake flash' implementation on Linux builds
Added Graphics.scroll command to scroll graphics contents
Added 'Terminal' class with built-in VT100 terminal
Tweak Espruino logo to be exactly 32 chars wide
Improved code for returning console device to the most useful place
Fix pinToString for devices with port A but no port B
Speed improvements for ArrayBuffer Graphics
Tidied up bootloader - devices with one LED now flash LED when button pressed
Simplify data returned by process.env
Add process.env.MODULES - to contain a list of the libraries provided in the firmware by require
Include WiFi and AT libraries inside Espruino WiFi builds
Add 'E.asm' placeholder to detect E.asm calls that haven't been replaced by the IDE
Add process.env.EXPTR to link to table of functions - will work better for compiled code over BLE
Added SAVE_ON_FLASH_EXTREME for HYSTM32_28, where we're now cutting out some Math.X functionality to keep builds going
Added `jshFlashGetMemMapAddress` to allow remapping of addresses for ESP8266/ESP32 without loads of code duplication
Remap peek8/16/32 addresses on ESP32/ESP8266 so it can be used on flash memory
Swapped save/load/E.setBootCode to use the flash library
Allow STM32LL port to write 32 bits to flash at a time to bring it in line with other ports
Allow flash writes *from* unaligned addresses on nRF52 and ESP8266 (previously this crashed the ESP8266)
Update process.ENV.EXPORTS to bring it in line with what the compiler uses
Now set 'this' correctly for Arrow Functions
Add ES6 classes and 'super'
nRF5x: Move all bluetooth events to event queue (removing MEMORY_BUSY issues)
Fix potential issue where EV_TYPE_MASK enum could be set incorrectly
setWatch's edge argument can also be an integer now
Add 'data' option to setWatch to allow clocked data to be decoded easily
nRF52: Increase flash available for stored code from 12kB for 40kB
Now store/display appreviated commit in process.env, remove build date
1v95 : nRF5x: Swap to UART fifo to avoid overrun errors at high baud rates
Ensure Exceptions/errors are reported on a blank line
Internal: Added initialiser argument to jsvNewStringOfLength
Internal: Added jsvObjectSetChildVar/jsvObjectSetChildVar/jsvObjectSetChildVar
Internal: Fix jsvCopy if given a NAME_INT/etc
Added ES6's Object.assign
nRF5x: NRF.setScan now reads service data automatically
nRF5x: NRF.findDevices aggregates data from multiple advertising packets
nRF5x: Remove app_uart and use nrf_drv_uart with double buffering - fix uart overflow errors (fix #1238)
nRF5x: Fix issue with findDevices/setScan servicedata when all digits of service are numbers (eg "1809")
Fix memory leak in tab completion code
Add `E.errorFlag` event to allow JS to respond to internal errors
Use Esc[J VT100 code when cycling through command history (much faster REPL on low bandwidth connections)
ESP8266: Remove debugger again as it will never work on 8266
ESP8266: Enable unaligned reads for ESP8266_4MB (fix #1240,#837)
ESP8266: move code save section to fist partition for memory mapping for ESP8266_4MB (fix #1240)
ESP8266: Add GPIO16 as D16 without watch (#1206) but soft PWM/I2C/SPI/etc
ESP8266: Remove osprintf for RELEASE=1
Internal: Networkjs now forwards `socketType` - laying groundwork for UDP over AT command (#1232)
Added simple RegExp implemention (partial fix #256)
Speed up JSON.stringify for Arrays, and output non-numeric array elements in REPL (fix #64)
nRF5x: Bump nRF52-based boards variable count from 2000 to 2500 (fix #1215)
Ensure Ctrl-C doesn't redraw the input line if it's already empty
Added String.replace(regex, function) (fix #1256)
With E.setFlags({pretokenise:1}), ensure stack traces are not tokenised (fix #1258)
Allow digitalWrite/Read to take an object as an argument (calling .write and .read on it)
Add `E.getAddressOf` to allow embedded targets to get memory addresses for DMA/etc
nRF5x: Fix issue where doing a soft reset in the middle of some BLE ops could cause an assert in debug builds
nRF5x: Manufacturer Data is now decoded in advertising packets
Fix memory leak when allocating DataViews
nRF5x: Fix memory leak on BLE notifications
Ensure net/http .listen return the server instance (fix #1276)
nRF5x: Allow Manufacturer Data to be specified with setAdvertising
Internal: Fix memory leak in jsvArrayPushAll
nRF5x: jsvArrayPushAll memory leak fixes NRF.findDevices memory leak when services present
Internal: jsvNewIterator now has an option to iterate over sparse arrays as if they weren't sparse
Fixed some built-in functions that misbehaved when given sparse arrays
Puck.js: Allow flash memory protection to be overwridden with E.setFlags
Fix lexing of '/*/' as a complete block comment
nRF5x: Add support for negating pins in software (eg. buttons/LEDs)
Add `E.setFlags({unsyncFiles:1}` which doesn't sync the file to the SD card after each write - it's *much* faster
Filesystem API now uses flat strings (avoiding the 512 byte copy for each call)
Increase default internal SD card bitrate to 4MHz (from 100k)
nRF5x: Handle promise completions and advertising using IO queue, to avoid MEMORY_BUSY messages (#1277)
Allow E.HSBtoRGB to wrap 'hue' value, and allow it to return an array of [r,g,b] (fix #1283)
Remove spikes when changing pin state (fix #1274)
Changes to reduce code duplication in jswrapper.c
Fix `E.setBootCode` when no argument is supplied
Add WIZnet W5500 support to Espruino WiFi build
1v94 : Allow Espruino boards to reset straight out of the DFU Bootloader
Improvements in handling errors in code running in IRQs
- if writing to disconnected Bluetooth device, throw data away immediately
- Drop chars if output buffer is full while waiting in an IRQ
- Handle out of memory errors in jsvCreateNewChild
- Do not garbage collect inside an IRQ
On nRF52 devices, allow button press at boot to clear out peer manager data
Work out length of typed array with offset correctly (fix #1204)
nRF5x: Add Watchdog timer handling
nRF52: start new connections on idle to ease memory allocation conflicts between code execution & IRQs
nRF52: Ignore INVALID_STATE from CONN_PARAM_UPDATE_REQUEST (it can happen if we disconnect and then SD requests an update)
Fix Date.toString for dates before 1970
STM32: Fix handling of months when setting the internal RTC
Move to a faster jsvNewFlatStringOfLength which avoids blocking memory allocation
nRF5x: If a task is in progress, report the task ID (BleTask enum)
nRF52: Report central mode promise errors correctly if returned by softdevice
Remove 'out of memory' warning messages (it's stored as a flag anyway)
nRF5x: Don't disable IRQs completely for some things - only disable Espruino ones
Fix tab complete for Pins (fix #1213)
ESP8266: Fix load() causes endless loops (fix #1037)
ESP8266: Wifi library doesn't handle {password: null} (fix #753)
ESP8266: make topstrings and topreadonly work on Mac OS X (fix #1210)
Change order of execution for init - E.on('init',...) now executed before onInit
Added Error flag to show if a UART overflow has occurred
Change more instances of jsWarn to jsException
Avoid printing error messages during execution, and report to console on idle when if errors were flagged (fix #766)
Increase HTTP server and client version from 1.0 to 1.1 (needed for Websockets on Safari)
Stop 'require' creating an undefined Module entry in the modules list (fix #1218)
Stop require dumping filesystem errors as well as 'module not found'
Now throw an exception when writing to a closed socket (fix #1220)
Set the internal 'conn' variable to false when a connection closes to avoid confusion
nRF5x: Fix typo so we wake every 4 min for RTC, not 0.25 sec!
process.memory() now reports time taken for GC and vars GC'd
Slightly more aggressive idle GC on most platforms (at 5% free)
Don't warn the user when we had to run a GC pass during execution
Fix issue drawing on right-hand side of rotated graphics where H>W (regression in 1v93)
If >1 button, set pin state correctly at boot/reset
Add an argument to `reset`. `reset(true)` will now cause all Flash memory to be cleared as well.
Puck.js: Holding down the button while booting (past the the 5 LED flashes) will now cause data saved in Flash to be cleared
STM32: Remove the 'utility timer' from the list of available PWM pins, fixing A0/1/2 PWM on F4 (fix #1229)
Disable Graphics.createCallback on devices with small amounts of flash memory - rarely used on those devices and fixes HYSTM32_28 build
1v93 : Ensure that specifying too many advertising UUIDs causes an exception, not a reboot
nRF5x: Fix for time jump caused by reentrancy in jshGetSystemTime
Fix regression causing multiple end/close callbacks when using standard TCP/IP socket client/server
Ensure NetworkJS reports receive errors back correctly
nRF5x: Fix issue where connect and immediate disconnect could in some cases trigger an error from nordic's libraries that'd cause a reboot
Fix regression that caused Original Espruino to have lost Filesystem/hashlib/neopixel support in 1v92
Re-add TV output to Original Espruino
Fix some stack overflow bugs on Linux found by fuzzing (#1147)
Remove un-needed code for parsing '.' in var statement (#1147)
Add autocomplete for pin names (fix #1124)
Add Array.indexOf fromIndex support (fix #162)
Puck.js: Add BluetoothRemoteGATTServer.startBonding to allow bonding to be initiated when Puck.js is a central
Fat FS: closedir after readdir, FS errors should be catchable (#1164), fs.statSync (#1163)
Allow hardware (CTS) flow control (fix #1165)
nRF52: Add AntiCat's patch to Nordic's NFC library to cope with malformed NFC requests
Puck.js: Fix increased battery drain after NFC usage (fix #1171)
Puck.js: Fix WS2811 output library that would output bad data after neopixel waveform (fix #1154)
nRF52: Seed random number generator at boot (fix #1166)
Stop trailing decimal point if there are no digits after it - which could cause issues in JSON
Don't enter debugger if we're in the middle of uploading (echo_off_for_line) (fix #644)
Added Date setters (fix #504)
Allow Timezone to be set for Date with E.setTimeZone(...) (fix #530)
Added RegEx lexing (part of #256)
Puck.js: fix error 8 from NRF.sleep during an active connection
nRF5x: Fix `NRF.updateServices` when a 128 bit service shares the same 16 bit UUID
Add 'errors' option when using `Serial.setup` to enable error handling (and turn it off by default as it can fill the input queue)
nRF52: Re-initialise services and HID after a `save()` (fix #1185)
nRF5x: Add NRF.getAdvertisingData
nRF5x: Allow array of objects in NRF.setAdvertising (fix #1188)
Fix internal vcbprintf JSON dumping
nRF5x: NRF.findDevices will now throw an exception if no callback is supplied
nRF52: Added BluetoothRemoteGATTServer.getSecurityStatus to check the status of the link
nRF52: Disable auto-whitelisting by default, add with `NRF.setWhitelist` (fix #1187)
nRF52: Allow secure Bluetooth LE connections
Don't draw font characters that are off the edge of the screen
Make atob and btoa use flat string for larger amounts of data (faster & more memory efficient) (fix #1192)
nRF52: Pull in Nordic SDK13 code to crash caused by writing large characteristic (fix #1181)
Puck.js: Added Puck.magTemp() function to get the magnetometer's temperature as well
nRF5x: Fix issue where 'NRF.sleep()' called while a connection was active could cause Espruino to go into a high power draw mode
Fix Object.setPrototypeOf when called on undefined (fix #1194)
Fix dumping of an ArrayBuffer containing data (new ArrayBuffer([1,2,3]) isn't valid)
Fix setAdvertising regression where name would be lost after save() (fix #1193)
Add `E.set/getFlags` to allow interpreter state to be controlled from one place
Add `E.setFlags({pretokenise:1})` to dynamically turn on pretokenisation (fix #1178)
1v92 : nRF5x: Fix issue where Espruino could crash during save() if the flash got into a strange state
Added Pin.toggle() function
Fix implicit casting to bool/number on ArrayBuffers (fix #1030)
Fix jstExecuteTaskChecker bug, and allow jstExecuteFn to take a userdata argument
Puck.js: Reduce IR LED to 10% duty cycle
Puck.js: Allow Puck.IR to take pins for external IR LED (fix #927)
nRF52: Allow arbitrary NFC data to be specified (fix #1021)
nRF5x: Allow multiple advertising packets to be set at once with NRF.setAdvertising
nRF52: Add 'properties' object to BluetoothRemoteGATTCharacteristic
nRF52: Perform write without response if that is what is required
Pico/WiFi: Allow USB HID to work on Windows (from @nailxx)
Allow Puck.js/nRF52 devices to drive Neopixel/WS281x/APA10x LEDs with require("neopixel").write (fix #1023)
Fix crash in JSON.stringify for zero-length typed arrays
Fix precedence of 'void' keyword (fix #1079)
nRF52: Add BluetoothRemoteGATTCharacteristic.startNotifications (fix #959)
nRF52: Added BluetoothDevice.gattserverdisconnected event
nRF5x: Report back reason codes for BLE disconnect
Added DataView class
nRF52: char.readValue now returns DataView to be more Web Bluetooth compliant (fix #1091)
nRF5x: Fix explicit disconnect being able to reboot Puck (fix #1088)
nRF5x: Respond to conn_params update request, fix puck-puck disconnection after ~65 sec (fix #1089)
nRF52: Change connection params for central mode so NRF.setLowPowerConnection affects connection speed
Un-inlining jsvGet*AndUnLock functions to give us a little more free flash
ESP8266: RELEASE=1 sets WIFI_DBG and NET_DBG to 0 to shrink firmware size
ESP8266: Add Wifi.setAPIP() and Wifi.setIP
ESP8266: Add i2c clock stretch (#1097)
Fix E.FFT output (enable magnitude when one array specified)
Puck.js: Correct reading if using analogWrite to red LED and *then* using Puck.light()
Improved build process for all boards
Pin.toggle now returns a boolean (fix #1111)
nRF52: Now use 'high drive' mode for GPIOs
Puck.js: tweak IR duty cycle, with high drive GPIO range is ~3x more
nRF52: switch compilation to size optimisation, not speed
nRF5x: Allow services to be advertised (fix #996)
JSON.parse now throws an exception if an incorrect value type is found (fix #1117)
Pipe close event handlers now use 'this' arg - solves auto-closing pipe when piping from HTTP
nRF5x: stop app_timer NRF_ERROR_INVALID_PARAM errors (trying to sleep for too little time)
Added flash emulation to Linux port
Increase max graphics size from 1023 to 32767
Add Fat File System to boards with large Flash (ESP32)
nRF52: Don't get stuck in 'HID Busy' state if a HID send failed
Change name of socket close internal variable so it doesn't conflict with Pipe's close call
Stop pipe from causing errors if fields of the requested names exist but aren't functions
nRF52: Fix upgrade from older firmwares if saved code is in flash, reduce virtual pages to 2
Fix segfault detected by fuzzing (#1133)
Fix File.read so that end of file triggers pipe.end event
ESP8266: Add BOARD ESP8266_4M with 1600 vars, 64K save area and GRAPHICS (#1110)
ESP8266: Add ESP8266.deepSleep(micros, option) (#1102)
1v91 : Fix recent regression if no Boot Code defined at startup
Fix handling of return of rejected promise within a promise
Fix regression where HTTPS without cert/ca or key failed
nRF52: Making NRF.getPrimaryService/etc more robust
nRF5x: Add NRF.getAddress() - fix #1001
Fix bug that caused load() not to clear memory if only E.setBootCode was used
microbit: Update Espruino with pin polarity, so saved code gets loaded without BTN1 pressed
Fix bug that caused Bluetooth/TV/USB objects to be added in devices that didn't support them (fix #832)
nRF52: Increase custom UUID count from 3 to 10
Adding Global built-in objects like SPI1/Serial1 and Bluetooth to the docs
Puck.js: Tweak battery percentage calculation to try and make it more linear
Puck.js: Adjust Puck.light() levels based on battery percentage (and add comments)
nRF5x: Fix E.hwRand() (fix #1010)
Ensure tab complete/others include the Object proto even on functions/strings
nRF5x: Add NRF.restart() to force the restart of the Bluetooth Softdevice if required
nRF5x: Add E.setLowPowerConnection(bool) to allow continuous connections to Puck.js (fix #995)
Allow implicit conversion of hexadecimal strings to numbers (fix #1016)
Allow arrow functions inside nonexecuting functions (fix #1011)
1v90 : Fixes for Promise.all (passing in non-promises, pre-resolved, and ordering) (fix #976)
Fix arrow function bug when parsing multiple arguments
Added more helpful error messages for TLS
Allow `Modules.addCached` to take a function (makes module loading more memory efficient)
Re-add Espruino's old `rand` function (so no malloc, and ~1kB RAM, ~3kB ROM saved)
nRF5x: Ensure 'NRF.sleep' works even when connected
Fix bug when using >32 bit integers as array indices (fix #984)
Fix bug when parsing '.catch' while not executing (fix #989)
Stop PWM 'glitching' when moving from a nonzero value down to 0 (partial #991)
nRF5x: Add multi-channel hardware PWM (fix #991, fix #972)
'dump()' now outputs code written with E.setBootCode as well (fix #999)
nRF5x: Remember advertising information even after softdevice reboot (fix #997)
nRF51: Remove heap placeholder on nRF51 as not needed since no malloc. Increase nRF51 var count (fix #985)
nRF5x: 'connect' event now contains address of device that has connected, and fix docs
nRF5x: Add a 'NRF.disconnect' function to disconnect a client that has connected to Puck.js
nRF5x: Fix timing accuracy problems with setWatch
1v89 : Allow entering of multi-line Templated Literals on the command-line (fix #970)
Make lexer fail when parsing non-templated strings with newlines in
Add 'let' and 'const' keywords - treat them like 'var' for now
Increased findDevices timeout to 2 seconds
Allowed 16 bit UUIDs to be specified as simply "ABCD" (no "0x")
Improved BLE error messages (especially from Promises)
Fix STM32F1 regression caused by F4 LSE fixes
Fix comma operator regression caused by recent arrow functions addition
Remove RTC changes for STM32F1
nRF5x: Make sure that updateServices(notify) on a non-notifyable service will just error, rather than reset (fix #973)
nRF5x: Ensure setWatch doesn't reset pin state
nRF5x: Reset pin states to default on 'reset()'
nRF5x: Move advertising back to 375ms (more reliable connections)
Puck: allow Puck.mag to work while magnetometer is on
1v88 : jshSetEventCallback callbacks now get an argument with the channel number
Tab complete now offers a much better set of completions (fix #926)
Fix emitting of events with long names (fix #906)
Ensure 'af_opendrain' pin mode gets remembered when saving (fix #890)
Add second Promise.then argument (fix #869)
Fix 'chained' promises (fix #894)
Fixed memory leak when automatically converting a simple object to a String
Added ES6 Template Literals
Initial commit of ES6 arrow functions
Add 'opendrain_pullup' pinMode (including emulation on STM32F1)
Make OneWire use opendrain_pullup (no resistor needed for short runs now)
Add Software I2C (with opendrain_pullup) (ref #549, fix #29)
Cope with new escape codes for home and end on Ubuntu 16.04 (27,91,70/72)
Tweak VGA output back porch to 2ms (so leftmost pixels always on screen)
Fix regression with 2 concurrent waveforms on different pins (fix #930)
nRF5x: add updateServices, and allow setServices to be called multiple times (partial #936)
Added Puck.getBatteryPercentage() utility function
nRF5x: setServices can now uninitialise SD in order to remove added services
Added E.lockConsole() for use with E.setPassword()
Calling jsvRemoveChild at end of array now updates the length (fix #946)
Allow padding to be specified as 3rd argument of JSON.stringify
JSON.stringify now dumps typed arrays as arrays (fix #489)
nRF52: BLE HID support and switchable Nordic UART
Fix STM32 regression where pinMode was set when it shouldn't have been
Add Third option to pinMode to allow the pin mode to be set while keeping it 'unforced'
Save and dump now keep track of whether pin mode had been forced or not
readFile (and File.read) now uses Flat Strings to allow more memory efficient reads (fix #932)
nRF5x: Add ability to get RSSI of current connection (fix #928)
More STM32 changes to LSI->LSE clock switchover to fix RTC misconfiguration on Espruino WiFi
Move LED + BTN definitions to Symbol Table (allows autocomplete)
When moving console before printing has started, move all buffer contents as well
Fix regression where replacing a function starting with 'return' with another would cause errors
Fix potential issues with Telnet server and return values from netCreateSocket/netAccept on some platforms (fix #931)
nRF5x: Add Puck.js self-test code, fix issue where analogRead reset pin state
nRF5x: Change central mode API to mirror Web Bluetooth
Fix switch fall-through to default (fix #964)
Started using jsvObjectRemoveChild to remove some internal object properties that are undefined (frees some variables)
Added E.dumpLockedVars() in non-release builds to help debug memory leaks in libraries
nRF5x: Added NRF.findDevices as a helper function to easily list BT devices in range
Console now prints the type of Objects if their constructor is in the root scope
nRF5x: setScan/findDevices now parses advertising data
nRF5x: Added Web Bluetooth style requestDevice function
Add spaces between large tab completes
Correct the handling of exceptions in promises
Ensure that exceptions have a 'stack' attribute if they can have children
nRF5x: Added list of free flash areas
Make sure Puck.js users can't overwrite bootloader/softdevice (doing so would brick the board)
Fix micro:bit/nRF51 ctrl-c behaviour (fix #905)
Simplified process.env on devices with little memory
nRF5x: fixed serial number reporting
Move button state setup to jshResetDevices
Had to remove 'dump()' and SW I2C on devices with very little flash memory (Olimexino/Micro:bit)
1v87 : Add support for compiling with float-abi=hard (even if it doesn't give us real-world benefits)
Add shortcut for quick execution of common call types
Fix BBC micro:bit save() regression from 1v86
Fix 'lock overflow' when calling methods with 'this' bound (fix #870, fix #885)
Fix jsvStringIteratorGetCharOrMinusOne for zero-length strings
Allow tab-completion straight after '.'
Make sure execution stops for native functions if there's an error when parsing arguments
NRF5x: remove setName and add functionality to setAdvertising, along with advertising interval
NRF5x: allow raw advertising data in setAdvertising
Add E.setPassword - allows Espruino console to be locked
Fix pin header numbering for BBC micro:bit (it changed for the production version) (fix #896)
Allow Magnetometer speed to be specified for Puck.js
Fix out of memory when appending a string to itself
Allow members of the same name as function arguments to be added to a function (fix #913)
Fix STM32F4 RTC stopping if reset during first 1 sec of boot, also fix Espruino WiFi board clock startup
Fix issue where native functions couldn't be replaced by non-native fns (fix #879)
If statements now return values (fix #909)
Fix >8 bit SPI when sending single elements with SPI.send (fix #897)
Sockets now fire 'end' events (fix #886)
Added Graphics.draw/fillCircle (fix #920)
1v86 : Compile Telnet server into linux by default, Add '--telnet' command-line option to enable it
Fix lock 'leak' in Telnet when Telnet is turned off
Add Telnet serial device to allow redirection
Create errors for unterminated expressions (fix #814)
Remove Espruino's built-in strcpy/etc
Remove Espruino's built-in maths
Add basic Taylor series sin and atan for when we're trying to save memory
Refactoring to use global var for lexer - save some memory and increase parse speed
Add .removeListener (fix #30)
Added better micro:bit `show()` that works well with Graphics
Add `require("Flash").getFree()` as multiplatform way to find free flash pages (fix #815)
Add the ability to set clock frequencies on STM32F4 chips (like Pico) with E.setClock (fix #52)
`jsvEvaluate` now uses memory area for execution of JS strings (fix #817)
Add `E.setBootCode` to allow JS scripts to be run without being in RAM (fix #740)
'Expecting a number or something iterable, got X' changed to exception rather than warning (gives stack trace)
Drop '.init' and '.fini' symbols, allowing GCC 5.x compilation on STM32
Ensure that pinMode/digitalWrite is re-constituted properly by dump() and save() (fix #833)
ESP8266: add stack dump on fatal exception, ./targets/esp8266/printstack can extract a backtrace
ESP8266: move JswSymPtr and JswSymList to flash to free up gobs of RAM, bump jsvars to 1600
Fix write to flash when BLE connected on nRF51/2
Fix potential variable corruption issue when copying objects/arrays containing packed ints
Fix ESP8266 printLog memory leak (fix #852)
When parsing from a Native String (E.memoryArea), use Native String for function code too.
Added built-in Promise implementation
Fix broken Object.keys/getOwnPropertyNames caused by ESP8266 RAM saving tweaks
Add Object.g/setPrototypeOf (fix #856)
Fix memory leak when executing bound function with 'this'
Fix missing PBKDF2 & AES libs on Pico + Linux caused by an untested ESP8266 commit
Fix negative Date to string code (fix #854)
Convert type warnings to exceptions (to provide stack traces for problems)
Add uncaughtException event (fix #846)
Stop eval in a switch statement from confusing parsing (Fix #845)
Fix regression in 'mode' argument of SPI.setup (allows custom CC3000 pins to work)
Fix '.on' with long event names
Enable F4Discovery button pull-down. Newer boards don't seem to have one fitted
Add 'force' to 'Serial.setConsole' - you can force the console to stay in one place
Fix micro:bit compass problems (fix #864)
Ensure that Pico can properly enter deep sleep even if USB is never used
Only inline the very basic variable iterator functions (save enough space to allow Espruino board build again)
Don't include Promises on devices where flash memory of Scarce (fix Olimexino compile)
Fix glitches in PWM output when updating Software PWM quickly (fix #865)
Added `E.kickWatchdog()` to allow you to keep your JavaScript running - not just the interpreter (fix #859)
Ensure all pins set to AIN on startup
Fix regression where setWatch would remove pulldown from button if called after reset()
Reduce amount of flash available for saved code on Original Espruino (until we can get code size down)
1v85 : Ensure HttpServerResponse.writeHead actually sends the header right away
- enables WebSocket Server support from JS
Fix issue where GC'd objects referencing non-GC'd data wouldn't unreference it
Add E.memoryArea to allow memory addresses to be treated as variables
Fix STM32F4 LSI clock frequency - should make the Pico's RTC a lot more accurate (fix #776)
Added HeatShrink compression to saved code (instead of RLE)
If saving fails, delete command history and try again.
Make sure `reset()` resets the sleep and busy indicator pins
Now escape characters >=127 as well (fix #780)
Add decodeURIComponent (fix #779)
Allow reset();save() on one line
Fix potential issue parsing HTTP headers when more data is sent after the header (fix #783)
Fix broken storage of floating point values when <255 variables
Fix regression where DACs didn't work on Original Espruino Board
Improve tab complete's memopry usage
Added Tab complete and Debug to low-end Nordic uCs
Limit the number of events processed each time around the idle loop to the number that were in it at the start
- helps to fix issues with out of memory when receiving big files over ESP8266 serial connection
Allow different types of network to have different buffer sizes - enlarge JS, Linux and WIZnet buffers
Fix bug where clearInterval() and setWatch with debounce could cause setWatch to momentarily stop working
Make HTTP server only close connection after Content-Length bytes received
Speed up jsvNewFlatStringOfLength by combining it with updating the free var list
Update the free var list when garbage collecting (makes allocation at the start of memory more likely)
Don't zero the contents of memory when freeing - speeds up deallocation
Removal of un-needed zero initialisations for variables
Only garbage collect on idle if we're low on memory (fix #767)
Improve malloc behaviour for crypto lib (try and free all command history is first alloc fails)
Improve HTTPS error messages
Add READ_FLASH_UINT8, allowing ESP8266 to read&exec strings stored in Flash with E.memoryArea
Start the RTC up running off LSI, and switch after a few seconds if the LSE has started correctly
Allow JSV_GET_AS_CHAR_ARRAY to get a pointer to memory in ArrayBuffers or memoryAreas
Reset PinStateIsManual in reset (fix #765)
1v84 : Fix device initialisation flags not working when the device number is above 32 (fix #751, #748)
- this fixes broken SPI when not on standard pins
1v83 : Moved to size optimisation for Pico (needed to get HTTPS into 384kB)
Ensure Modules.addCached doesn't reset parse state (fix #723)
dump() in Espruino Pico now ignored the pull-down for the button (fix #731)
Warn when "compiled" functions gets into Espruiono (fix #707)
Fix lost character on Espruino Startup (fix #704)
Fix duplicated characters when USB+USART IRQs fire at the same time (fix #635)
Fixed Serial.find(...)
Detect UART framing and parity errors and emit them as events on the Serial object
Fix [] instanceof Object (fix #737)
Fix regression in jsvCopyNameOnly (Object.getOwnPropertyNames when names are >8 characters long)
HTTP requests (and sockets) can now emit 'error' event (fix #706)
Add optional `ca`,`key`, and `cert` for server public key when using HTTPS or TLS (fix #736)
1v82 : Fix debugger regression (where quit/reset/etc don't exit properly)
Fix wakeup when setDeepSleep used at startup (fix #645)
Add `shiftOut` function (fix #631)
Store line numbers for functions (via `Esc [ 1234 d` escape code before decl) and use in debug + stack traces
Allow Ctrl-C to break out of tight loops with function calls in
Add tab -> autocomplete in Console (fix #677)
Fix I2C repeated start (#390)
Fix regression in Math.random() - now back between 0 and 1 (fix #656)
Fix `var a=0;typeof a -> "undefined"` (fix #683)
Don't store brackets in functions (fix #204)
Store functions as 'flat strings' if long enough (fix #467)
Move most functions out of jsvar.h header file - improves code size on devices where they're not inlined
Fix parse error for switch statements which meant that `switch (a,b)` caused an error
Fix error message when `LoopbackA.setConsole()` called
Move SPI/I2C/Serial initialisers to jsvReadConfigObject, will now error on invalid args (fix #413)
Fix issue where double-buffered waveforms would use the wrong buffer in the callback
Fix memory leak in tab autocomplete on objects
Added AES crypto library (Pico only)
Fix `typeof (new Uint8Array([1, 2, 3, 4]))`
Store `function(){return ...}` without the return (fix #700)
Increased simple string usage from 4 chars up to 8
Swap order of JsVar internals, string usage up to 10 chars
Add handling for uint32_t,uint64_t,uint32_t case for Raspberry Pi
Add startup sanity checks for jsnative.c (in non-release builds)
Added fix for returning floats on Raspberry Pi
When <1024 JsVars, `lastChild`'s top bits are stored in `flags`, and pack
is moved such that we get 1 extra character in StringExts
Allow events of >12 characters length
Fix regression in flash memory write (introduced via AES merge)
Fixed instability when resetting after using SD card on non-standard pins
HTTPS support on Pico (when compiled in)
Rename USE_HTTPS to USE_TLS, and enable by default for Pico + Linux
Add 'tls' module with 'connect' - for TLS Socket connections
1v81 : Fix regression on UART4/5 (bug #559)
Fix Serial3 on C10/C11 for F103 boards (fix #409)
Remove Graphics.setColorHSV, add E.HSBtoRGB (fix #554)
Make jsiDumpState/jsiAppendHardwareInitialisation use callbacks (fix #398)
Add `E.dumpStr()` to dump current state of interpreter as a string
Add ReferenceError, and ensure that TypeError gets converted to a string properly
Actually create ReferenceError for undefined variables
Fix Object constructor behaviour (fix #561)
Now remove intervals/watches if they occur within 0.1s of a Ctrl-C on a blank line
Fix parsing of trailing commas [,,1,,,]
Treat vertical tab as whitespace
Make sure we ReferenceError on '+='/etc
Allow reserved words in record access and structure definitions
Add Object.defineProperty/defineProperties (even if they ignore most args)
Fix value returned when redefining an existing function
Ensure Pico powers down USB in deep sleep - now down to 20uA!
Fix Exception throw within catch block (fix #566)
Fix issue where new Array(3.0) wouldn't produce a 3 element array
Keep track of modified area in Graphics (so modules with `.flip()` can be speeded up)
Fix `new Date('December 17, 1995 03:24:00')` - check only first 3 chars of month
Allow Software PWM via `analogWrite(..., {soft:true})`
Add `encodeURIComponent`
Make sure `typeof unknown` doesn't ReferenceError
Fix isNaN behaviour for 2 element array
Fix jshPopIOEventOfType when element is at the top of queue anyway
Produce more reasonable behaviour when converting very long strings to ints/floats
Added built-in JavaScript debugger! See espruino.com/Debugger for details (fix #37)
Fix crash when using E.getSizeOf() in some cases
Make sure a TCPIP connection closes even if no data sent
Make `flash.erasePage` safe if called without arguments (fix #586)
Add `Pin.getInfo` to see what a Pin can do (for #93)
Move Pin function code out of jshardware
Add `E.on('init', ...)` - like `onInit` but allows multiple handlers
Make sure `dump()` and `E.dumpStr()` dump the contents of Serial as well as events for other objects
`E.getSizeOf(.., 1)` can now recurse into objects showing the sizes of all their children (fix #579)
Fix bug when appending to a flat string (fix #614)
Add `Serial/SPI/I2C.find(pin)` - so we can figure out what device to use based on the pin
Ensure that when uploading, each command gets checked for errors (rather than right at the end)
Fix writes on HTTP requests after a timeout, and add chunked encoding if the header is set.
Added pin info for bit-banded pin addresses (and jshGetPinAddress).
1v80 : Fix SD card IO that can corrupt SD card on file append since 1v73 (fix #536)
Fix some potential pointer issues in hashlib
Make debounced setWatch output state+time information (regression fix #537)
Shorten some internal property names (faster/less mem is 4 chars or under)
Change 'internal property' prefix from '>' (fix #540)
Duplicate properties in an object defn. now cause second to be used (fix #495)
Make sure `E.unmountSD` doesn't forget custom SD card configs from `E.connectSDCard`
Added support for USB CK pin (fix #544)
ES5 parseInt behaviour - don't treat numbers beginning with 0 as octals (fix #538)
SPI.send now returns Uint8Array when passed an array. Also takes `{data:X, count:Y}` as argument (fix #485)
Fix `parseFloat(Infinity)` (fix #314)
Speed up jsvIterateCallback for arraybuffers
SPI speed improvements, esp for SPI.write (fix #547)
TV out tidyup, and VGA output can now do line doubling
Merge in USB HID support for STM32F4 (keeping old USB for the F1)
Add built-in 'Flash' module to allow Flash memory to be accessed from user code
Pulled load/save code out of jshardware into jswrap_flash.c
Remove jsiOneSecondAfterStartup from Linux builds (fix #551)
Add RLE compression when saving to flash, increase Pico RAM from 3000 to 5000 vars (fix #543)
Fix `JSON.parse` when not given strings (fix #546)
Tweak Olimexino board - 700->1k vars, but lowered code flash to 6k
Disable flash prefetch on Pico (~1% slower, but less power and way more accurate ADC readings) (fix #545)
Now throw errors when 'in' is used on an invalid datatype (fix #550)
Updated (inaccurate) docs for Serial.write/print and removed duplicated code
Changed Pico's device class to 0x02 - now works on older Mac OS 10.6.8
Change reported USB HID type to 0, from 2 (mouse)
Improve digitalWrite/etc documentation
Add `pin.mode` and `pin.getMode` functions (mirroring `pinMode`)
`Serial.setup` now remembers options if none specified (fix #557)
1v79 : Fix Mac address parsing for top nibbles
Make bind reference function internals not copy them. Fix scoped vars in bind (fix #533)
Use jsvUnlockMany to tidy up code and save some space
jsiExecuteEventCallback can now take an arbitrary number of arguments
Allow setTimeout/setInterval to take extra arguments (fix #532)
Ensure HTTP is closed even when no data handler (fix #535)
Seed random number from analog input, add W.hwRand and E.srand (fix #534)
Fix timing bug when setting timeouts from intervals in Deep Sleep
Reduce timeout for IO (eg. I2C write) on F401 and F4
Tweaks to keep code size low enough for Olimexino
1v78 : Fix regression where SPI2/3 weren't working on most pins (fix #525)
Allow MAC address to be set for WIZnet (fix #527)
Ensure res.on('close') is called for empty HTTP requests (fix #528)
Ensure that A9 is never the default pin for USART1 output (fix #526)
1v77 : Add E.mapInPlace
Allowed ArrayBuffer Graphics to store pixels MSB-first
Added faster software SPI path for simple writes
Make sure filesystem support gets compiled into Espruino Pico
Fix jsvGetFlatStringPointer to return the correct address
Fix I2C2/I2C3 on Pico
Fix issue where garbage collect of a Flat String corrupted the free variable list
Fix issue where Array.sort on big array with identical elements failed (#515)
Add 'modules' variable, and set 'this' to 'exports' when parsing a module (fix #520)
Fix instanceof implementation (and fix mem leak) (fix #523)
1v76 : Merged in NetworkJS library (for JS networking implementations)
Ensure that 'wrapped' libraries are killed before timers/watches
Made 'Field or method doesn't exist' report back the field that doesn't exist
Added quick and dirty scripts/test262.js runner script
Fix propogation of Errors and Exceptions through function calls
Allow parsing of integers > base 16
Now allow functions with >16 arguments (fix #490)
Fix assert fail for syntax error in do or while loop
Maths operations now call Object.valueOf if it's needed
Fix assert fail when jswrap_object_getOwnPropertyDescriptor called with non-string
Fix Array.indexOf when array contains non-basic values
valueOf returns a type error when called on undefined
Make sure analogRead doesn't overwrite pin state if it was set previously with pinMode
Make sure pinMode works with ADC input mode
Tweak event handling - events such as `Serial.on('data'` now set `this` to `Serial`
Add Function.bind (fix #318)
Fix SPI.setup memory leak (fix #496)
Fix assert fail on debug builds on Waveform output (fix #511)
Added more allowed types of whitespace
Added String.prototype.trim() (fix #507)
Allow argument lists in Function() (fix #505)
Propagate `this` into eval (fix #513)
1v75 : Fixed issue with Pins/Bools as Array indices
Fix crash when out of memory while creating built-in object
Fix continue statement in nested loops (fix #501)
On Linux, Exit nonzero when an error occurs (fix #499)
Ensure that pipes 'complete' if the source closes (was previously only the destination)
Make HTTP/Sockets throttle reads so internal buffers don't get full when piping
Added http statusCode, statusMessage, and httpVersion
1v74 : On Espruino Board, allow setTime to use full 64 bits so setTime(Date.parse("...")/1000) works
Fixed issues with Waveform after 1v72 update to flat strings
Added 'global' built-in value
Fix inaccuracy of 'Date.now()' on STM32
Improve jsvIteratorGetIntegerValue speed for arrays (fix #493)
Change process.env.EXPORTS to something more useful for compiler
Fix issue with graphics fill on PCD8544 LCD
Add TypedArray.slice (from ES6) to help modules that use I2C
1v73 : Add Uint8ClampedArray, remove code duplication in ArrayBuffer (fix #486)
Fix regression where accessing certain member names of an undefined variable would cause a crash (fix #488)
Fix behaviour of char code 16 at beginning of the line (it now doesn't re-add the prompt after processing the line)
Added jspGetNamedVariable for use in compiled JS
Fix glitchy time values on the Espruino Board (fix #394)
Fix getTime()==0 in onInit, which could break timeouts in onInit after a reset (fix #462)
Refactor Software SPI code into jsspi.c
Allow filesystem to work on user-defined pins (fix #427)
1v72 : Stop RTC being reset by hard reset (getTime will now be time since power first applied) (fix #412)
Allow Function.apply to take typed arrays (fix #442)
Allow arrays to be passed to digitalPulse so square waves can be created easily
Force inlining of jsvLock/UnLock on most systems - improves performance a lot
Fix issues with SPI.write, CS, and out of sync receive bytes