forked from espruino/Espruino
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
1432 lines (1346 loc) · 92.7 KB
/
ChangeLog
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
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)
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
Fix do..while without trailing semi-colon
Ensure that &,|,^,etc all have different precedences (without extra recursion)
Used new semi-recursive parse for expressions
Fix filled column when fillpoly is off the end of the screen
Fixed reporting of Serial RX pullup in `dump()`
Add input thread on Linux, and fix idle and Ctrl+C behaviour (fix #451)
Stop huge amounts of input events blocking Espruino's timers (fix #452)
Add ability to use serial ports on Linux with Serial1.setup({path:"/dev/ttyUSB0"})
Started ability to use SPI from Linux
Added 'net' library with support for sockets
Fix JSON parse of negative numbers (fix #456)
Only keep RTC settings if the relevant oscillator is running (fix #444)
Finally fixed sporadic compilation problems with '-Os'
Fixed issues with intervals in onInit (#462)
Remove libraries from root scope (fix #463)
Fix pin namings on Nucleo boards
Fix addition of stdlib's exit on Nucleo debug
Allow setWatch to execute native functions inside the IRQ
When dumping typed arrays, use the size if all elements are 0 (fix #448)
eval() can now access local variables and function arguments (fix #460)
Added 'flat strings' for typed arrays.
- these use a continuous chunk of memory so are much faster
Ensure that we only create as many Serial/I2C/etc items in Symbol table as we need (fix #453)
Allow modules to return whatever was assigned to exports - not just the original object
Allowed E.nativeCall (assembler/compiled functions) to execute directly from a flat string
Working F401 USB VCP bootloader
Make Press-poweron-release-press boot back into Espruino (this may confuse your OS)
Assert failures (in non-release builds) now reboot the system on ARM
Fix issues with freeing of variables not clearing the lock flags (fix #474)
Make Uint32Array actually return uints (even if they're so big they have to be represented as doubles)
Allow peek/poke to read and write arrays of values
Add Boolean constructor (fix #311)
Fix difference between String() and String(undefined) (fix #312)
Fix I2C/SPI on F401/F411-based boards (fix #470, fix #473)
Improved ArrayBuffer write performance
Massively improved ArrayBuffer Graphics fill performance for bpp<8
Fix issues with floating point on devices with <1024 vars (using 12 byte JsVar)
Add ability to change I2C bit rate from I2C.setup
Added VGA TV output
Added E.toString (for converting anything into a string)
Pulled Typed Array creation into its own function
Added E.toString and E.toUint8Array
Made I2C.readFrom return a Uint8Array (fix #479)
Allow multiple byte OneWire reads and writes
Fix setWatch on F3Discovery (fix #183)
Ensure that E.getSizeOf() works for ArrayBuffers (fix #484)
Don't allocate Flat Strings if we can get away with 2 normal string blocks
- it's actually faster to allocate and uses less memory
1v71 : Allowed WIZnet + CC3000 to be instantiated on any pins
Fix break inside loop inside case inside function (fix 428)
Added fs.stat and File.seek (fix #429, fix #430)
Allow use of DLE (char 16) on an empty line to turn echo off for *just that line*
Add XON/XOFF flow control on Serial + USB. This is enabled by default for Serial (fix #20)
Fix irregular timing on Espruino boards with clock crystal (inc rev 1v4)
Sort out 'Number()' constructor not being picky enough - parseFloat now parses 'Infinity' (Fix #325, mostly fix #322)
Stop iterator in FOR loop being called once more after a break
Fix bug allObjects found with iterating over undefined
Fix ArrayBuffer.sort issue with element size >1
Fix network de-initialisation on Linux
Fix reference count issue caused by removing a timer that had already been removed
Power up SYSCFG on F2/3/4 parts, allowing watch to work on ports other than A
Wait after setting the RTC time, to allow registers to update (fix #438, fix #441)
Now using gcc-arm-none-eabi-4_8-2014q3 for compilation - CodeSourcery stopped being supported
1v70 : Make pipe remove its drain/close listeners. Stops out of memory for repeated piping.
Fix parseInt for values too large to go in an int (#406)
Fix integer maths when result is too large for an integer
Fix mod operator with NaN/Infinity (fix #315)
Fix signed array values in PACKED_BIT devices
Drop JsVar size from 20 bytes to 16, increase Espruino variable count accordingly
Fix Array.fill on sparse arrays (fix #410)
Allow I2C repeated start (fixes some odd I2C devices, fix #390)
Refactoring to use iterators wherever possible
Merge fs_kill and file_kill to ensure that files always die before the filesystem
Add `E.unmountSD()` to allow SD cards to be removed once they have been used
Stop String.split("") adding an empty elementy to the array
Tidy up linker script, allow F401 to use 3x16kB pages for storing program data
Fix regression in long timeouts (fix #416)
Use 'interval' var to specify if we're an interval or not (don't use 'recur' var)
Stop while/for/etc resetting exception state (fix #419)
Add E.getSizeOf (fix #421)
Fix jsvCountJsVarsUsed for names with values
Make hidden names smaller to save a few JsVars
If there's only one function scope, don't define an array and save 2 JsVars
Fix setInterval on non-F1 boards (fix #415)
Fix issue where large doubles (> +/- 2^31) were converted to -1 rather than truncated ints
Fix E.getSizeOf (fix #424)
Fixed JSON indentation issue
Made 'pretty' JSON output look a bit better
1v69 : Fix 1v67's regression of digitalPulse when doing lots of pulses
Add configurable OneWire search command (for finding DS18B20s with alarm set)
1v68 : Fix memory leak in String.split
Fix references to `this` - you can now write `this["LED1"]`
Fix memory leak when calling toString on a normal object
Fix memory leak in Graphics.createArrayBuffer
Fix memory leak when joining arrays containing null
Fix memory leak when syntax error while getting function arguments
Fix memory leak test when running on Linux
Fix memory leak in filesystem file open (when failure)
Fix memory leak on Syntax error
Stop multiple exceptions from being reported (eg. Syntax Errors)
Fix parsing of '!!' when not executing
Improve Error.toString, and fix bug when an exception was thrown from a function
Improve jsvObjectGetChild when out of memory
Switch native function decls from 32 bits to 16
Swap HY2.4 board to software LCD driver as well, work out pin mappings from PY file
Fix inaccuracy in setInterval, which had started since 32 bit switch in 1v65
Store JSWAT_EXECUTE_IMMEDIATELY in a way that will fit in 16 bit function decls
Allow bit-packing of refs for low memory boards (fix #145)
Now dump 'debounce' for setWatch
Make sure that dump() outputs correct JS for undefined variables
Allow pin counts per port of >31 on Linux-based systems
Fix issue with lost high-speed events when using setWatch with small debounce
Fix HTTP client regression
Fix Date constructor issue (uninitialised variable) (fix #408)
Fix invalid conversion of large ints to floats on ARM
Fix reset behaviour for non-standard default Serial ports
1v67 : Lower size of timer task array of devices with little RAM (fix #401)
Move hidden lists out of the root scope (fix #357)
Fixed exception catching
Fix Serial1 initialisation after 'reset()'
Fix parsing of try..catch when a serious error (not an exception) occurred
Stop the utility timer queue filling with WAKEUP tasks if Espruino gets woken up early
Add ability to specify default Serial TX and RX pins in BOARD.py
Reduce how many digits of floating point values are normally displayed
Fixed PWM output on B4 + B5
Fix regression when using pins as array indices
Remove negation for CHxN outputs - it seems they don't negate after all. Fixes PWM polarity on A7,B1,B13,B14,B15
Add pullup to USART RX. Reduces wakeups and random characters on Serial1.
Add error flags and E.getErrorFlags to report possible issues like buffer overflows and low memory (fix #136)
I2C timeouts now throw exceptions (fix #403)
Fix String.prototype.split with non-string args
Add fake digital pins D0..D7 under linux (helps with testing)
Rewrite ff_wtoupper and save 650 bytes \o/ (fix #368)
Update Makefile to make it easier to cross-compile RPi->Espruino board
Fix HYSTM32_32 LCD at the expense of a bit of speed (fix #137, fix #327)
1v66 : Ensure that analogWrite(pin,1) works on negated outputs
Allow multiple Waveform playback on one pin (+ wave fixes)
Improve dump() for objects and Serial.on('data') (part of #397)
Fix Date.getSeconds,Milliseconds, and documentation on getMonth (#399)
Fix memory leak on Serial receive
Fix all Serial receive characters being 0 if no bytesize is specified
1v65 : SPI.send/I2C.write/Serial.write can now take variable number of arguments (fix #370)
Don't check for token matches where we already know what it should be (fix #280)
Improve file read speed for large reads
Waveform stability improvements
Fix Float32Array.set (and improve speed for non-float arrays)
OneWire library now uses hex strings for addresses rather than 64 bit ints
Fix issue with uninitialised function arguments (fix #391)
Fix parseURL for numeric keys in query string (fix #388)
When running JS files under Linux, do two parses to ensure that Functions are 'hoisted'
Add Object.create()
Add Function constructor
Add Object.getOwnPropertyDescriptor (although it won't return spec-compliant values)
Add some Stubs for inbuilt Date and Error classes
Added throw and try..catch..finally (see #40)
Fixed overriding of builtins with other Builtins
Added Date.valueOf
Stop warning about break at the end of 'default' in switch statement
Switch to 32 bit ints (fix #324)
Added Array.prototype.reverse, and also for ArrayBuffers (fix #389)
Swap JsVar fields around so everything is aligned on the correct boundaries
Merge jsvNewWithFlags and jsvNew - making variable allocation a bit faster
Fix changeInterval regression after int32 changes
Remove JSV_NAME flag - paving the way for more efficient variable storage
Store only 32 bit time for events (work out full 64 bits in event loop)
Increase event buffer size to 128 (from 64)
Enabled Graphics + CC3k support in the F3Discovery
Make `Serial.onData` call back with >1 char (#383)
Move `Serial.onData(...)` to `Serial.on('data',...)`
Add Serial.read/available/pipe (fix #383)
Add HTTP client/server read/available/pipe
Add documentation for events (and tidy it up for constructors)
Stop HTTP server closing before all data has been read
Fixed parsing of multiple shifts
setWatch now reports the pin back (fix #275)
Fixed memory leak in g.getPixel with arraybuffers
Fixed memory leak in "".indexOf(".")
Fixed ArrayBuffer Graphics where width*height*bpp&7!=0
Converted parse errors to throw exceptions
Added Date.parse and Date.toString
Fix parsing of integers that are too big to fit in an int32 (they're stored as doubles)
Fix Linux Espruino when no tty is present
Shave a few bytes off size of jsiDumpState using printf
url.parse now unescapes the query string (fix #227)
1v64 : Fix 'a=[2,3,4];delete a[1];'
Make sure parseInt("0x01",16)==1 and parseInt("0x01")==1 but parseInt("0b01",16)==0
Fix equality check used in switch, so false !== 0
Improve Math.pow accuracy for small integer powers (fix #374)
Make Ctrl-C only interrupt code if it has been running for too long (fix Ctrl-C -> CC3000 restart issues)
Removed duplication in symbol lookup (fix #372, fix #323, fix #343)
Fix JSON.stringify with circular references (fix #378)
Fix String.indexOf when search string is bigger than the string being searched (fix #377)
Add String.prototype.slice() (fix #376)
Changed to more compact binary search symbol table (fix #278)
hasOwnProperty now doesn't check prototypes #24
Added Object.getOwnPropertyNames (fix #79, fix #158)
Move 'constructor' into the correct place, be more aware of builtins in prototypes (helps #380)
Handle __proto__ on builtin object types (eg. [].__proto__) (fix #381)
Remove indirection of __proto__ (fix #102)
Properly fix Object.getOwnPropertyNames (fix #380)
Remove jsvFindChild*Ref (fix #375)
Added LoopbackA/LoopbackB serial ports (fix #61)
Fix slowdown when lexing long strings
Remove Lock/UnLock in jslGetNextCh - should speed it up
fs.appendFile() now works even if the file doesn't exist (fix #385)
Support unicode escape sequence (\uXXXX) but crop to 8 bits (fix #386)
Stop setInterval/etc increasing index numbers (fix #382)
Clear existing digitalWrites on reset() (fix #231)
Stop setWatch getting invalid data on load/save/reset (fix #254)
1v63 : Memory leak when defining functions (fix #359)
Fix Instance properties overwrite prototype (fix #360)
Fix `edit(functionName)` without quotes (fix #356)
Fix 'Uint32Array is not unsigned' (fix #330)
Ensure Object.keys([9,,undefined,9])==[0,2,3] (partial #349)
Store array length in the array root node rather than the last element (fix #351 #361)
Object.keys on array now returns strings (fix #348)
Remove jsvArrayGetLast (fix #363)
Fix issue parsing `function() { return }`
Stop jspNewObject creating a new object name if one already exists
startup_stm32f10x_hd.s now explicitly sets the stack pointer. Allows Espruino images to use more RAM
Add BusFault hander, to allow peek and poke to unmapped addresses without HardFaulting the ARM
Fix edit(...) so that functions themselves (not just the variable) are updated (fix #366)
Crop lines in errors when > 60 chars (fix #364)
Improve when stack traces happen for error reporting
Better error messages, and more efficient handler
Improving Util Timer rescheduling to try and avoid 64 bit divisions
Fix a lot of WIZnet W5500 issues (thanks @mgg1010!)
Add E.reverseByte
Add HIGH and LOW (fix #371)
Improve docs for SPI/I2C/Serial.setup
Force reconnect on CC3000 disconnect (fix #373)
Added cephdon's streaming file API (fix #12)
More WIZnet W5500 stability fixes - try and ensure that HTTP server never goes down
Fix HTTP client Host header when accessing ports!=80
1v62 : Added ArrayBufferView functions as per ES6 spec (fix #310)
Added Graphics.setRotation (fix #321)
Added Graphics.drawImage (fix #198)
Added E.toArrayBuffer for fast string->array conversion
Accessing an undefined array/object element now doesn't create it (fix #63)
Fix fs.unlink returns true if the file does not exist (fix #331)
Try and improve timer overlays by reordering the alternate function list
Ensure that PWM output doesn't enable negated/non-negated outputs when it doesn't have to
Improve console performance when sending long strings
Initialise Graphics flags Graphics.createCallback - could have caused all kinds of issues
Now make setInterval > 5s less accurate when setDeepSleep is on (saves ~0.5 sec of non-sleep time)
Fixed problem when accessing an array with a string in a variable
Fix issues with `"0" in {0:1}` (and hasOwnProperty)
Improved interpolate function, and moved it out of ArrayBufferView into E
Fix Problem with Object.keys on a string (fix #347)
Fix assert fail when deleting a property that doesn't exist (fix #344)
Ensure that dump remembers function names if they were in the root scope (fix #338)
Fix memory leak in fs.readdir
Ensure that abbreviations in console's '=...' output appear on newline if needed
Add String.replace (fix #334)
Make Graphics.drawImage draw bottom line of pixels (fix #329)
Add Array.shift/unshift (fix #342)
Fix Defining function after return causes error (fix #326)
Fix deleting the last element in array (fix #346)
More helpful I2C error messages (fix #10)
Fix overriding built-in functions (fix #202)
Add ES6 Array.prototype.fill (fix #317)
Modified jsiQueueObjectCallbacks (and Object.emit) to support >2 args
Added support for SPI LSB-first
WIZnet improvements (specifically on HTTP server)
Added WLAN.setIP for CC3000
Fix String.split issue with last element (fix #352)
Remove order warning for SPI if no order given (fix #353)
process.env will now contain the git commit
Move setInterval/Timeout implementations into jswrap_interactive (makes more sense)
Add setWatch warning if it's not possible (fix #337)
1v61 : Fix toString crash for large numbers
Support floating-point literals without a leading 0 - eg '.5' (fix #296)
Fix array access with booleans (fix #290)
Fix "==" issues where only one argument is an array (fix #283)
Make Array.join ignore null values (fix #289)
Callback graphics now works even without a fillRect implementation (fix #295)
ArrayBuffer Graphics now supports 2 and 4 bits as well as 1,8,16,24,32 (fix #301)
Allowed array.splice to as many arguments as needed
Make Array.sort() use string compare by default (fix #291, fix #292)
Allow [,] and [1,2,,4] - (fix #287)
Stop JSON.stringify using 'undefined' (fix #286)
function.call can now have more than 4 arguments
Rewrite native function caller (fix #277)
Fix conversion of floats to booleans (fix #307)
Fix parseInt of NaN/Infinity (fix #309)
Add extra escape codes in strings (fix #304)
Ensure String.charAt returns empty string for out of range (fix #305)
Make REPL faster when receiving large amounts of data (fix #303)
Improved jspeFunctionCall speed, added Named functions (fix #77)
Allow Array.map.forEach to be applied to Strings and ArrayBuffers (for #310)
Tweaks to make more Array functions work on non-arrays
Added Array.reduce
Allow commas in expressions at end of for loop - `for (;;i++,j++)`
Fix SPI send with a single number
1v60 : Fix unary plug on variable not working (fix #268)
Added DNS with eth.setIP() for W5500
Fix lock 'leak' when creating Graphics with callbacks
Small fixes for trigger/timer
Make dump() + console aware of built-in SPI/I2C/etc
Add Pin constructor for converting numbers into a pin object
Added getPinMode
Fixed I2C saving state (fix #270)
Add JTAG to ignore list for some boards
Fix LCD FSMC formatting and report if LCD is unknown
You can now reference built-in functions. eg. [1,2,3].map(Math.sqrt)
Add Object.valueOf - help with #187
Add Object.hasOwnProperty (although it does have some false positives) - #24
Add software SPI - fix #41
Fix issue when constructing an ArrayBuffer with a floating point length
Fix Math.round regression and add checks to ensure it can't happen again
Fix DEVICE_IS_XXX defines (fix SW SPI regression)
Fix hardware SPI regression (getting out of sync after ArrayBuffer write)
Removed non-standard Integer.valueOf - use "A".charCodeAt(0)
Fix non-standard ArrayBuffer behaviour when constructing an ArrayBuffer from an ArrayBufferView
Fix `1 in [2,3,4]` behaviour - it searches keys, not values
Make parseInt(..., >36) return NaN
Make Number.toString() use lowercase chars for hex
Fix issues with NaN, negative zero, and Math.round
Fix equality checks with null
Fix comparison of integers with empty string/whitespace+number
Added nativeCall, which allows C/Assembler to be called from JavaScript
Fix custom font memory leak
1v59 : (function(){})?1:0 should == 1 (fix #261)
Fix Math.pow (Fix #260)
Fix String.split() (Fix #259)
Added Array.concat (Fix #262)
Increase RTC/getTime reliability by ensuring overflow can't happen
Added Math.min/max
Allow jswrapper to wrap objects with a name >8 characters long (fix #264)
dump() now doesn't print 'var X = undefined;' - just 'var X;'
1v58 : Fix Serial.parity
Fix glitches in jshGetSystemTime
Added Graphics.setFontCustom for custom fonts
Added String.lastIndexOf, and made String.indexOf with fromIndex work
Used non-bold vector font, improve alignment, and make curves lower quality
I2C can now write any size (as long as it fits on the stack!)
Try and enlarge fillRects caused by polygons
Fix === issues, fix #257
Add Graphics.getColor/getBgColor for Juergen
Added E.convolve for doing fast calculations with Waveforms
Allow String.fromCharCode with multiple arguments
Add builtin_modules to board's JSON
Added E.FFT for Fast Fourier Transforms
Added 16 bit read/write to Waveform (and speed up utility timer)
Fix utility timer - now interrupts just in time
1v57 : Tweak IRQ priorities to try and make SPI RX more reliable
Make http default to port 80 if no port is specified in options
Try and stop issue with System Time suddenly jumping forwards
Fix assert fail when clearing and adding timeouts from within a timeout
Fix modulo (actually remainder) operator for floating point values :/
1v56 : Added atob and btoa (for base64 encode/decode) - fix #244
Added Array.sort() - fix #220
fs.writeFile/appendFile now return false if they fail for some reason
Move Graphics init and idle functions out of jsinterface.c
Add HttpServer.close
Ensure that Linux command-line tests keep running if there's something to do
Epic networking refactor - it should now be possible to support multiple network devices in a single binary
Now only remove the interval/timeout/watch that's causing the error - not every one
Change names of functions in callback-based Graphics so they don't conflict with the real ones
More CC300 reliability - now range check the return value from send+recv, because if there's a timeout it can be wrong
Fix memory leak in setWatch with debounce
Fix 'repeat:false' in debounced setWatch
Make sure 'repeat:false' disables the hardware watch
Initialise RTC roughly 1 sec after reset, and use external 32kHz oscillator if it exists
Added E.enableWatchdog (fix #252)
Fix negative start value for String.substr()
Fix problem where the RTC's full 32 bits weren't combined properly
1v55 : Add String.toUpperCase/LowerCase
Fix E.getAnalogVRef() regression
Add Math.tan()
Ensure Double/Integer have Number as a prototype (fixes: Number.prototype.n=function();(5.0).n() )
||/&& now doesn't use booleans (fix #251)
More resilient parseInt behaviour
Allow data listener for HTTP POST (fix #226)
Stop JSON.parse using eval (fix #249, fix #208)
`.toString` is now called when a String is needed from an Object (fix #57)
Fixed reference count error when looking for functions in an Object's prototype
Fix issues with Numbers as Strings in maths (eg. '-5'|0)
Make sure NaN|0 == 0 (and not some huge number)
Ensure that [1.23]*1.0 == 1.23 (fix #91)
Don't pull in cos (use sin(x+PI/2))
Try and save flash memory on Olimexino board
1v54 : Add 4x6 font (instead of 8x8)
Fix occasional instability with Waveform read/write
Refactor JSON to improve speed and code size (using cbprintf)
Now print special 'short' JSON for console.log (and the REPL) (fix #47)
JSON.stringify now doesn't print functions (fix #207)
Refectoring jsparse.c to name functions after their JS Grammar names
IF statement now accepts commas
Ensure that undefined+0 == NaN (only worked for floats previously)
Fix assert fail (issue unlocking when executing built-in functions)
Fix setInterval regression in dump (and tidy up code)
FS lib now resets when issuing the reset() command (fix #200)
1v53 : Attempt to deal with the case where CC3000 crashes on initialization
Fix regression with setInterval/timeout and saving
Fix issue with saving Serial baud rates
Added ArrayBuffer.set
Use jswrapper.c for executing idle/init/kill events for libraries (cleans up jsinteractive.c)
Added beta 'Waveform' API to allow simple audio output
Improved non-deep-sleep power draw by allowing Espruino to wake itself on the Utility timer (rather than SysTick)
Allowed Waveform API to output on both DAC and PWM
Improve auto-generated documentation
Speed up ArrayBuffer.set and allow Strings to be used properly
Fix jsvArrayJoin if memory runs out
Added E.sum and E.variance array operations
Added Waveform Analog Input
1v52 : Fix memory leak in Array.slice
Fix broken Serial initialisation (partial fix for #241)
Add fs.unlink (for deleting files)
Fix url parsing when there are two slashes
Fix recent changeInterval regression
Making CC3000 recover properly in the case of repeated HTTP GET
Add alternate function remapping for Serial and improve Serial.setup error reporting, fix #241
Added preliminary WIZnet W5500 support (see http://www.espruino.com/WIZnet)
Alt Enter (27 + 10) now always inserts a newline: (eg. for `if (X) \n Y`)
Fix digitalPulse with not a number
Make digitalPulse(... 0) wait until the last pulse is complete
Stop Espruino sending out so many carriage return characters (fix #243)
Added 'delete' keyword (fix #39)
1v51 : Added debounce to setWatch (fix #14)
Tidy up timeout/watch code and now store an integer for interval
Fix crash in url.parse (string free)
Fix Modules.addCached bug which means that Modules.removeAllModules created a memory leak
Fix regression introducted by fix for #199
Added 'Esc,[,2,K' escape sequence for clearing lines. Much safer than Ctrl+C which tends to break out of execution.
Fix bootloader (broken by LTO in 1v49)
Added Number.toFixed
Make number.toString(base) work for floating point (fix #232)
Fix Linux jshSleep so that timeouts are handled at <10ms if required (fixes test056)
Now use jshardware's SPI for SD filesystems - more multiplatform
Now ref thisVar, which stops it being repurposed into a Name for array accesses (fix #233)
Fix Linux halting when there is one long timeout but no other activity
fs.readFile returns 'undefined' if file is not found. Also make readdir return undefined on failure (fix #229)
Remove disk_timerproc in SD card implementation
Upgrade fatfs to R0.10a
Tweak jsinteractive.c to help reduce code size
Finally added Long filename support for FatFS (fix #78)
Epic refactor to remove JsParse (fix #17)
Implement faster Graphics ArrayBuffer fill (affects vector fonts + clear)
Stop repeated analogWrite with messing up PWM waveform (fix #56)
Swap open and close brackets in bitmap font (fix #191)
Graphics arraybuffer/callback now accepts 16bpp
Added ability to specify a JS function for Graphics fillRect
Graphics setPixel(x,y,undefined) to use foreground colour (fix #215)
Make sure that interruptions are handled better while drawing to graphics
Make sure that stack overflow errors are handled more tidily (and increase limit for warning)
Increase available stack on Espruino Board
Stop FatFS using insane amounts of RAM
High res timer (now to 1/2^23) using SysTick with RTC as a base (fix #168)
Added 'Infinity' constant
Fixed type equality check between int and float (should treat them as the same)
Fix parsing of '018' - it's not Octal after all (but 017 is)
More accurate values for PI and E
Fix charCodeAt being signed (should be unsigned)
When casting Strings to booleans, so s.length!=0
Guess initial values for average SysTick time - means that getTime is more accurate for the first 1-2 seconds after startup
setWatch now reports lastTime - time of last state change #238
analogWrite now respects pinMode (fix #234)
Add Open Drain support to pinMode (fix #225)
Fix calling Number([value]) always returns undefined (fix #186)
When disconnected from the net, make sure we free all HTTP clients/servers
Completely remove IRQs from CC3k code
Speed up CC3k code, try and make it automatically power cycle it on timeouts
Fix SPI MISO on F4 board
Move CC3000 to SPI3 (same pins) so SPI1 can be used for other things
Compile CC3000 support in for the F4 (untested)
Process.env now reports board serial # and current console device (se we can throttle for Bluetooth) (fix #219)
General bugfixing for low memory situations
Make string free non-recursive
Fix issue where fs.readFile of a big file would cause Espruino to crash
Fix memory test harness
1v50 : Fix broken Web IDE caused by change to printing JSON for console.log (part of #206)
Fix bug when trying to stringify {5:5}
Allow {1:2} to be parsed (fix #199)
Added SPI RX IRQ. Caved in and used a few bytes for buffers, made SPI significantly more reliable
1v49 : Change compiler flags to allow link-time optimisation
Increase buffer sizes on Linux
Increase buffer sizes on boards with >= 20kB RAM
Made Startup banner smaller
Less printing when loading from flash
Don't display startup banner if loading from flash (an easy way to fix #213)
Fix HTTP response code of 0 (fix #212)
Add timeouts to TI's CC3000 driver
Add timeouts for SPI, and other timeouts now interrupt execution
Lower USB interrupt priority, remove pesky PriorityGroupConfig that was breaking other IRQ priorities
Until we sort out SPI RX and IRQs, lower default SPI baud rate to stop timeouts
console.log and print output JSON now (part of #206)
Added handling of query in url.parse - still not fully compatible though (fix #205)
1v48 : Fix issue where the size of command history is being reported wrong and so process.memory().free is reported wrong too
We now loop without a seek to position inside the string (much faster if loop is not near the start of a fn) (fix #53)
Faster string iteration which doesn't involve incrementing it->index
Swapped to jumptable to lexer (should be a bit faster)
Added the 'E' class, with getAnalogVRef and getTemperature (fix #60)
Deprecated Math.clip (not in spec) and introduced E.clip
Fixed bug in common.py that meant that ifndefs in JSON were sometimes not obeyed (better mem usage on small chips)
Fix deep sleep breaking ADCs
1v47 : Fix issue with dump() and input_pullup not being quoted
Fix regression that broke OneWire in Espruino Board (#197)
Fix clock speed issue on SPI1 (https://github.com/espruino/EspruinoDocs/issues/18)
Don't interrupt on USB ESOF or ERR - allows 'normal' sleep without interrupting every 1ms (fix #195)
Remove pointless KickStarter line printed on startup
Added bootloader hack to Python bootloader
1v46 : Fix parseFloat("") not returning NaN, and parseFloat(" \t 5 £$%^&(*$") returning NaN
Added isNaN() function (fix #184)
Fix parse order for 'typeof' (fix #172)
Added Number object (fix #165)
Bounded ftoa (stops crash when printing Number.MAX_VALUE) - helps with #185
Added Array.isArray() (fix #160)
Add do...while (fix #151)
Stop Espruino board from crashing if you try to create a web server without a connected CC3k (fix #182)
Remove Array.contains as it's not in the spec (use indexOf instead if you need it) (fix #161)
Fix nasty bug where adding/removing intervals/timeouts while in one could cause issues
Fix bug when printing 1.999999999 and similar (fix #190)
Remove need for pow for exponentiation. Not great but it fixes some tests that failed on FP inaccuracies
Change polarity of setSleepIndicator (fix #194)
Allow array.push with multiple arguments (fix #189)
Speed up array access by searching from the end backwards if we think the number is in the last half (fix #46)
1v45 : Fix parseFloat("foo") not returning NaN (and assert) - fix #149
Remove Integer.parseInt
Fix parseInt("bar") - fix #150
Ensure that maths ops with null do treat it as 0 rather than a string - fix #156
Fix digitalPulse length (properly!) - fix #154
Making sure that undefined gets cast to NaN
Fix Array.indexOf() returns undefined instead of -1 - fix #155
Moved memory() to process.memory() - added more info too
Try and improve handling of PWM timer speeds
Fixed varying SPI baud rates depending on device
Makefile changes for OSX compile
1v44 : Modified build system to store binary names in the python definition
Fix nasty regression involving losing code at the end of Strings
Fix segfault when pinMode is called on an invalid pin
Now disable interrupts during 4 bit SPI send - it's just too much otherwise
Detect unfinished block comments in console (fix #138)
Fix flash write on most 10XxB boards
Fix PWM output on all STM32 boards
General hardware tidy in prep for more intelligent device management
Run initialisation code before setWatch, to make sure pullup/down is set beforehand
Change 'Pin' datatype to be an unsigned char - makes tests easier
Now use the hardware RTC for keeping system time. Allows proper deep sleep on Espruino board
FINALLY - fix the USB VCP lost characters issue (#94)
1v43 : Added 'Modules' object with support for adding/removing cached modules
Allow product ID to be changed via Makefile
Fix documentation (and old-fashined Parsing style) for JSON
build_jswrapper now outputs errors to stderr (more compatible with default (silent) build process)
Fix issue when parsing quotes in strings
Added void operator for closure minification compatibility
Ensure that return takes the comma operator
Fix issue where printing Infinity would crash Espruino (fix #129)
Finally some working (extremely beta) cc3000 code
Added jsvObjectGet/SetChild to simplify some wrappers
'http' now uses JsVars for storage (so is suitable for non-linux devices)
Turned 'http' into a library
Added process.version and process.env (fix #131)
Changed handling of 2nd arg of << so that precedence is correct
Fixed handling of 'for (;;)'
Fix lock leak in Module handling
Update ST's library for the STM32F1
Update ST's VCP implementation
Added prefix operator (fix #130)
Allow espruino for linux to be run with '#!' in scripts
Fix indexOf on final element of strings (fix #133)
Remove JSV_PARENTINFO, as it turns out JS doesn't keep track of function scopes anyway (fix #109)
Make 'this' a keyword (now faster, more memory efficient)
Make 'Hardware' (root) the default value of 'this'
Add jsvArrayPushAndUnLock and modified code to use it (fix #135)
Now remember I2C state (partial fix for #13)
Replace 'pow' function with a smaller version - save ~2kb
Shaved another 1200 bytes off jslTokenAsString
Now store Pin state (fix for #13 on F1 parts, F4 still looks broken)
Added Graphics.stringWidth
Added internal Printf function
Misc speed and code size improvements
This version has gone to Seeed for use on the KickStarter boards
1v42 : [ebirger] allowing 'new' with no brackets
Allow built-in functions with variable numbers of arguments (fix #83)
Implement 'String' constructor in the normal way (fix #110)
Fix regression with parsing constructors while not executing
Allow multiple arguments to print and console.log (fix #92)
Make 'arguments' array available in functions (fix #100)
Fix an assert fail, and handle some potential memory leaks
Don't show __proto__ and constructor with for..in, keys(), or JSON.stringify
Make 'trace()' output more readable debug data for complex structures
Fix memory leak whe parsing functions iwht variable numbers of arguments - fix #115
Defined NaN
Stop 'new undefined()' crashing Espruino - fix #120
Get A13/A14 working on Espruino board (these were JTAG)
Get bootloader size direct from Python (remove hard-coding)
Fix '~' operator when acting on variables
Made bootloader a bit more error tolerate (CRC on write)
Added %=, /=, and *= operators (fix #121)
Allowed Object.toString() to take a radix argument for integers (fix #125)
Fix error message issue - broken strncat (fix #124)
Add comma operator (fix #122)
Added some basic code for STM32F429IDISCOVERY - not currently working though