ChangeLog 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515
  1. 1v46 : ...
  2. 1v45 : Fix parseFloat("foo") not returning NaN (and assert) - fix #149
  3. Remove Integer.parseInt
  4. Fix parseInt("bar") - fix #150
  5. Ensure that maths ops with null do treat it as 0 rather than a string - fix #156
  6. Fix digitalPulse length (properly!) - fix #154
  7. Making sure that undefined gets cast to NaN
  8. Fix Array.indexOf() returns undefined instead of -1 - fix #155
  9. Moved memory() to process.memory() - added more info too
  10. Try and improve handling of PWM timer speeds
  11. Fixed varying SPI baud rates depending on device
  12. Makefile changes for OSX compile
  13. 1v44 : Modified build system to store binary names in the python definition
  14. Fix nasty regression involving losing code at the end of Strings
  15. Fix segfault when pinMode is called on an invalid pin
  16. Now disable interrupts during 4 bit SPI send - it's just too much otherwise
  17. Detect unfinished block comments in console (fix #138)
  18. Fix flash write on most 10XxB boards
  19. Fix PWM output on all STM32 boards
  20. General hardware tidy in prep for more intelligent device management
  21. Run initialisation code before setWatch, to make sure pullup/down is set beforehand
  22. Change 'Pin' datatype to be an unsigned char - makes tests easier
  23. Now use the hardware RTC for keeping system time. Allows proper deep sleep on Espruino board
  24. FINALLY - fix the USB VCP lost characters issue (#94)
  25. 1v43 : Added 'Modules' object with support for adding/removing cached modules
  26. Allow product ID to be changed via Makefile
  27. Fix documentation (and old-fashined Parsing style) for JSON
  28. build_jswrapper now outputs errors to stderr (more compatible with default (silent) build process)
  29. Fix issue when parsing quotes in strings
  30. Added void operator for closure minification compatibility
  31. Ensure that return takes the comma operator
  32. Fix issue where printing Infinity would crash Espruino (fix #129)
  33. Finally some working (extremely beta) cc3000 code
  34. Added jsvObjectGet/SetChild to simplify some wrappers
  35. 'http' now uses JsVars for storage (so is suitable for non-linux devices)
  36. Turned 'http' into a library
  37. Added process.version and process.env (fix #131)
  38. Changed handling of 2nd arg of << so that precedence is correct
  39. Fixed handling of 'for (;;)'
  40. Fix lock leak in Module handling
  41. Update ST's library for the STM32F1
  42. Update ST's VCP implementation
  43. Added prefix operator (fix #130)
  44. Allow espruino for linux to be run with '#!' in scripts
  45. Fix indexOf on final element of strings (fix #133)
  46. Remove JSV_PARENTINFO, as it turns out JS doesn't keep track of function scopes anyway (fix #109)
  47. Make 'this' a keyword (now faster, more memory efficient)
  48. Make 'Hardware' (root) the default value of 'this'
  49. Add jsvArrayPushAndUnLock and modified code to use it (fix #135)
  50. Now remember I2C state (partial fix for #13)
  51. Replace 'pow' function with a smaller version - save ~2kb
  52. Shaved another 1200 bytes off jslTokenAsString
  53. Now store Pin state (fix for #13 on F1 parts, F4 still looks broken)
  54. Added Graphics.stringWidth
  55. Added internal Printf function
  56. Misc speed and code size improvements
  57. This version has gone to Seeed for use on the KickStarter boards
  58. 1v42 : [ebirger] allowing 'new' with no brackets
  59. Allow built-in functions with variable numbers of arguments (fix #83)
  60. Implement 'String' constructor in the normal way (fix #110)
  61. Fix regression with parsing constructors while not executing
  62. Allow multiple arguments to print and console.log (fix #92)
  63. Make 'arguments' array available in functions (fix #100)
  64. Fix an assert fail, and handle some potential memory leaks
  65. Don't show __proto__ and constructor with for..in, keys(), or JSON.stringify
  66. Make 'trace()' output more readable debug data for complex structures
  67. Fix memory leak whe parsing functions iwht variable numbers of arguments - fix #115
  68. Defined NaN
  69. Stop 'new undefined()' crashing Espruino - fix #120
  70. Get A13/A14 working on Espruino board (these were JTAG)
  71. Get bootloader size direct from Python (remove hard-coding)
  72. Fix '~' operator when acting on variables
  73. Made bootloader a bit more error tolerate (CRC on write)
  74. Added %=, /=, and *= operators (fix #121)
  75. Allowed Object.toString() to take a radix argument for integers (fix #125)
  76. Fix error message issue - broken strncat (fix #124)
  77. Add comma operator (fix #122)
  78. Added some basic code for STM32F429IDISCOVERY - not currently working though
  79. This version is the one sent off on the Test Harness (so will probably appear on boards)
  80. 1v41 : Fix Olimexino compile (https://github.com/espruino/Espruino/issues/6)
  81. [ebirger] Member constructors (eg. new a.b() )
  82. [ebirger] Ensuring integers with radix specifiers can still be parsed if a radix is specified
  83. Fix for tests/test_json_arraybuffer_001.js - iteration of arraybuffers of length==1
  84. Add Object.keys(...)
  85. More arraybuffer iteration fixes
  86. On linux, use built-in stringToFloat to aid debugging. Handle exponentials, fix #31
  87. 'make serialflash' is now works correctly for Espruino Boards with bootloader
  88. setWatch(..A0);setWatch(..A0);clearWatch(1) does not now kill the other watch, fix #25
  89. One-based setTimeout/setWatch, fix #3
  90. Added Function.call and Function.apply, fix #54
  91. 'http' and 'fs' are now libraries that need to be 'require'd, fix #8
  92. Updated pin info for STM32F103xC/D/E chips, fix #84
  93. Fixed linker script for STM32F4 (discovery board now works)
  94. Object prototypes are now Objects, fix #101
  95. Board docs now specify '3.3v' only pins fix #104
  96. Add Array.forEach
  97. Fix searching down >1 prototype to find functions (one more issue posted in #99)
  98. Fix "12345"/5 type issues (fix #90)
  99. 'Consting' some string functions
  100. Fixing arrays with string indices that are actually numbers \o/ (fix #19)
  101. Released onto website
  102. 1v40 : Ensure that LCD.prototype.setPixel = function actually works
  103. Refactor LCD driver code to allow lcdInit (and start of making it non-platform-specific)
  104. Built 'LCD' support into linux/raspi/carambola
  105. Add initial SPI.send(ArrayBuffer) support - even if NO VALUES RETURNED
  106. Start of built-in Nokia 5110 LCD support
  107. Remove GPIO clock removal on sleep for now (it kills setWatch)
  108. Fix (sub)ArrayBuffer problems (test100.js)
  109. Added setDeepSleep - still beta put power consumption drops to 1mA
  110. Fix broken name for httpCRq.write
  111. Changed LCD to Graphics - added ability to render to ArrayBuffer
  112. Fix 8 char built-in class names
  113. Adding preliminary Sony SmartWatch support
  114. Adding preliminary support for completely bare 36 pin chip
  115. Fixing pin defs for Espruino board rev 1v1
  116. Added proper SDL/ArrayBuffer and JS Callback graphics support
  117. Added "ifdef" ability in build_jswrapper
  118. Take JSVAR_CACHE_SIZE out of jsutils and put it in the board config file
  119. Added JSV_PARENTINFO which will allow us to do things like setTimeout(foo.bar,10)
  120. Fixed arrays in non-executes streams - 'if (0) print([1,2,3]);'
  121. Added 'require' function loading modules from node_modules on SD card
  122. Added module cache to stop modules being re-loaded
  123. Renamed internal vars to start with '>' - much easier to distinguish for 'dump'/etc
  124. Only use parentInfo on functions
  125. Load all tests in test dir - don't do them by number
  126. Added 'zigzag' ordering for ArrayBuffer Graphics
  127. Added 'vertical_byte' ordering for ArrayBuffer Graphics
  128. toJSON now ignores 'hidden' object elements
  129. Special-case jsvArrayBufferIteratorSetIntegerValue
  130. Make SPI output an ArrayBuffer
  131. Use best out of 3 for DelayMicroseconds calibration - something seems flaky right after bootup
  132. Lines now drawn from p1 to p2 inclusive
  133. Events now use jshPushIOWatchEvent (should cut down on code) also fixed bug with watching pin #11
  134. Now remember if pinMode was set or not
  135. Transform ```code``` in JSON into a code tag in the documentation
  136. Graphics now supports FSMC for HY boards again
  137. Drawing vector fonts is now roughly the right size and position (still not 100%)
  138. Remove registration code
  139. Adding MPL licence
  140. Remove Arduino bit manipulation functions - nobody seems to use them anyway
  141. # of flash pages/etc now comes from board info
  142. [ebirger] Supply the correct arguments to Array.map
  143. [ebirger] Method calls and membership evaluation should be done on all factors (ee. [1,2,3].foo())
  144. [ebirger] When running multiple tests, only set up terminal once or it breaks the terminal window on exit
  145. Added STM32-style USB CDC bootloader for Espruino Boards
  146. Added scripts/create_espruino_image.sh to package up bootloader and espruino into one binary
  147. SHIPPED on Impatient developer boards
  148. 1v39 : Added Bitwise NOT operator
  149. Added Raspberry Pi version to ZIP (with HTTP support)
  150. Fixed load/save on Linux Devices
  151. Added pinMode function (to allow pull-ups/pull-downs to be turned on)
  152. SPI.send4bit/send8bit will now not mess up the final element
  153. changeInterval now clears up stored up callbacks (eg, setInterval(.., 0.01)...wait...changeInterval(...,20)
  154. Ctrl-C no longer prints anything, which avoids lockups
  155. No longer print "Execution Interrupted" if nothing was interrupted!
  156. Added >>>= >>= and <<=
  157. When entering text interactively, ensure that there are no trailing spaces
  158. 1v38 : Tweaks for Arduino IDE compile
  159. Removed '(char #)' from stack trace, as a bit pointless now
  160. Added better reporting of execution location when Ctrl-C pressed
  161. Urgent fix for non-working Olimexino since 1v33
  162. Fix string comparison when strings contain "\0"
  163. Added LED1/2/OSC/SD/etc to Olimexino Board docs
  164. 1v37 : Urgent fix - power saving code made it difficult to re-flash Espruino (now only apply this to Espruino Board)
  165. 1v36 : Fix documentation for Array.pop()
  166. Added some much better board documentation
  167. Fixed DAC output on F3
  168. Fixed DAC output on devices where PWM is also available and the alternate function is less than the DAC's
  169. 1v35 : Attempt to reduce power consumption when sleeping by turning off GPIO, and setting GPIOs to AIN on reset
  170. Fix F3 issue where ADC/DAC weren't picked up properly
  171. Tidy up register text and add KickStarter mention
  172. var a = {}; a[LED1]=0; - not converted to String
  173. JSON (and hence dump()) now dumps ArrayBuffer correctly
  174. 1v34 : Faster jshFromDeviceString
  175. Preliminary support for flow control on Serial receive
  176. Speed improvements by removing jsvGetRef from jsvUnLock
  177. fast 4 byte pre-check in jsvFindChildFromString
  178. Skip lock/unlock in FindChildFromString to help increase speed
  179. When we unplug USB, only go to the default console device IF that is the device we're currently on
  180. Support for custom Espruino board
  181. Added ArrayBufferView.interpolate
  182. 16 bit SPI send for send4bit/sevrnd8bit (better reliability on low-end chips)
  183. Fix JSON dump of typed array
  184. Added Math.clip(x, min, max)
  185. When saving on flash, don't do jslTokenAsString properly
  186. B3/B4 move from alternate fn
  187. Fix incorrect reporting of analog pins
  188. Fix I2C.readFrom on STM32F1/4
  189. Make 1/2 == 0.5 (was being sensible before, but now follow JS spec)
  190. Ctrl-C while in timer fn clears timers (but not outside it)
  191. Fixed broken clearInterval from within setInterval
  192. Hopefully fixed issue on SSD1289 LCD controller
  193. Trigger wheel handler to use interrupts
  194. 2D arraybuffer interpolation
  195. Added Math.wrap, fixed a lot of trigger issues
  196. Fixed SysTick priority/preempt problems
  197. Slowed the SysTick timer back down for everything
  198. Fix Int8Array signedness on F4 boards
  199. Refactored source code tree
  200. 1v33 : fix character encoding issue of "\16"+"1" != "\161"
  201. Refactoring of ArrayBuffer into iterator, and addition of a general purpose iterator
  202. Fancier assert for debugging
  203. jsvArrayJoin to use new iterator
  204. for (i in ...) to use new iterator
  205. I2C and SPI use new iterator
  206. Serial.write() - to allow single ints to easily be written
  207. changeInterval assert fail when given a function by accident
  208. added peek8/poke8/peek16/poke16
  209. memory() now takes account of command history size
  210. memory() on ARM reports the end address of the stack - so it can be used as a scratchpad with peek and poke
  211. Try and reduce code size by not inlining several functions
  212. No refs for StringExts - so we get one more byte per JsVar (~5%) more storage efficiency
  213. Move from jsvIsBuiltInFunction to computer-generated jswIsBuiltInFunction
  214. When creating Objects, check for built-in function BEFORE creating an Object class for it
  215. Built process now checks that flash usage is under the allowed value
  216. Added short compare to jswHandleFunctionCall to reduce code size
  217. Added 3 byte compare (4 byte read and AND off top byte) - faster, less code
  218. Auto-generate jsvGetBasicObjectName from docs
  219. No longer using refs for storing whether free or not - use flags with JSV_UNUSED and get one extra var with 8 bit refs
  220. Switch to using STRING_0...STRING_MAX in flags, rather than specific bits in JsVarFlags - allows more that 15 chars to be used per JsVar
  221. Make ArrayBuffers actually be ArrayBufferViews - saves on extra string-handling code at expense of one var
  222. Make sure Uint8Array,etc inherits from ArrayBufferView
  223. Fix issue where a '\0' coming in from serial was not put in e.data properly
  224. Don't inline some functions when we're trying to save on flash
  225. Re-use sin for cos, pow for sqrt to reduce code size
  226. 1v32 : Fixed embarassing issue with 0.999=="0.A"
  227. Added and checked Pin.writeAtTime on STM32
  228. Now don't allocate events array - just allocate directly, which saves memory and is faster (although slighty out of order)
  229. Docs: now Alphabetically sorted, and class instances not listed by accident
  230. Fix issue where Ctrl-C on ANY Serial port caused execution to be interrupted
  231. Updated busy indicator to cope with recent change to not allocate events in an array
  232. Fixed I2C on HY 2.4 board - I2C needed hard reset
  233. Added basic ArrayBuffers/TypedArray support
  234. Fix memory leak when error created with [] on a non-array/object
  235. Improved hyperlinking in documentation
  236. Fix I2C receive bug on F4
  237. Increased VL board's input buffer size
  238. 1v31 : Fix PWM output on TIMER1/8 pins of the STM32F4
  239. Fix PWM output for negated timers
  240. memory() now runs a GC pass
  241. Fixed multiple occurrence of functions in reference
  242. 1v30 : STM32F1: fixed AF issue meant peripherals would never return from AF mode
  243. STM32F1: When given an invalid pin, now reports if pins are 'af' or not
  244. Updated SPI.setup docs to mention that you can't mix AF and non-AF
  245. If one SPI pin is specified but others aren't, only that pin will be set up
  246. Added Olimexino hack so SPI1.setup works as expected
  247. Allow using [] on a function
  248. Fix precedence issue, so var a = function() { return 1; }(); works
  249. Update SPI documentation
  250. for (i in f) can now iterate over functions
  251. Optional argument to trace() for object to start tracing from
  252. Small steps towards ArrayBuffers
  253. Added smart edit that checks for internal functions, and uses Function.replaceWith
  254. Added Function.replaceWith to replace the internals of a function while keeping the scope
  255. 1v29 : Some hacky sysfs-based IO for running on Linux
  256. HTTP Callbacks are now stored as names so they can be changed on the fly (Linux only)
  257. Successful compile for Carambola
  258. Filesystem support on Linux
  259. Switch to variable size ref counter (marginally more efficient on very small devices, safe on Linux)
  260. Linux now has unlimited memory available
  261. Added linux/sysfs 'setWatch' (non-irq driven, so very noddy)
  262. Checked jswrapper check from using multi-char constants to a #define
  263. Improve pin suggestions for SPI/I2C/USART
  264. Auto-initialise USART with default values when setConsole is used
  265. Support for new Graphics LCD types
  266. 3.2" VCT6 board support
  267. 1v28 : Faster LCD fillrect for HY 2.8
  268. Fix for multi-byte SPI writes on HY board at 1Mhz (touchscreen control bug)
  269. Fix issue with delayMicrosecond calibration on HY (and hence OneWire)
  270. Fixed digitalPulse on STM32VLDISCOVERY
  271. 1v27 : Fixed problem with OneWire constructor execution
  272. Added |=, &= and ^=
  273. Added Array.splice()
  274. Faster, more ROM-efficient built-in symbol table
  275. Fix for potential issue when using field accessor on an undefined var
  276. 1v26 : I2C Support on STM32F1 and STM32F4 boards too
  277. Emergency cut in variables for Olimexino with bootloader (as flash usage has got too high for save to flash!)
  278. 1v25 : http.writeHead to accept an empty header
  279. Fixed issue finding methods on built in classes (0 termination)
  280. make sure http server with no data still sends headers...
  281. Start of MINI-HY-2.8" support (all ok, but no SD card yet)
  282. Reduce RAM usage by consting some arrays that are not modified
  283. Vector fonts now use polys - 8kb less ROM, and faster rendering
  284. Start of LCD 'driver' code
  285. Standard way of handling events, Object.on/emit/removeAllListeners - like Node.js's EventEmitter
  286. Self-calibrating Microsecond delay (for intermal OneWire/etc)
  287. OneWire class
  288. Correct handling of built-in class constructors
  289. Fix error when parsing a zero-argument function that has been given arguments
  290. I2C support - currently ONLY tested on STM32F3 board
  291. 1v24 : SDIO-based fat driver on the HY STM32 board
  292. Added DAC to the HY boards (103xE-based)
  293. Re-named the fileSystem functions to make them more compatible with node.js (readFile/writeFile/etc)
  294. Added fs.appendFile
  295. Removed HTTP from the reference until it is included in some boards
  296. 1v23 : Fix 'ERROR: INTERNAL: stmADCChannel' on STM32VLDISCOVERY/F1 boards when accessing PA0
  297. Reference now mentions which Espruino version it is for
  298. 1v22 : Important fix - Events got executed in the wrong order if they got queued up
  299. 1v21 : Ensure SPI clock does not stop between bytes
  300. Added SPI.send4bit and SPI.send8bit
  301. Made sure the VL board's code fits into available flash
  302. Smart += that can append to a string rather than cloning it
  303. dump() prints functions properly, rather than 'var f = function() {}'
  304. Pageup/down move the cursor to the beginning/end of input
  305. LCD draw/fill with negative x and y
  306. 1v20 : Add console.log
  307. Fix automatic usleep for Linux
  308. Added node.js-style HTTP server for Linux version
  309. Fixed null-pointer issue when accessing something that doesn't exist on an object
  310. Added node.js-style HTTP client for Linux version
  311. Start of bit bashing functionality
  312. for (i in "ABCD") console.log(i) -> 0,1,2,3
  313. String array access (but not for writing - doesn't work in JS anyway)
  314. String String.fromCharCode / charCodeAt
  315. Added SPI baud rate setting
  316. Vector font chars 'a' and '4' now work ok
  317. Fix numeric exception when rendering a poly that has some identical points
  318. Better digitalPulse (uses timer + interrupts)
  319. analogWrite can now take an object with a 'frequency' argument for PWM
  320. 1v19 : Fixed issue where var M=Math;M.random() failed
  321. Fixed issue with var U=USB;U.print("Hello");
  322. Remove loop iteration limit
  323. Fix memory leak when a syntax error is in for '(i in arr)'
  324. Save state of pin on setWatch interrupt (e.state)
  325. Change setWatch to allow only on rise or fall as an option
  326. clearWatch() clears all watches
  327. 1v18 : DAC support on F3/F4
  328. Serial.setup() can also take a second parameter of an object {tx,rx}
  329. Better support for dump() with echo/setBusyIndicator/etc
  330. Better dumping of prototypes on built-in vars
  331. Don't add chars<32 (Except tab) to the input line
  332. SPI1/2/3/4.setup() to take an object {baud,sck,miso,mosi}
  333. Better hardware initialisation code (not UARTS auto-init if they are used)
  334. Fix issues with prototypes
  335. Peek/poke instructions
  336. Start of I2C support (not usable yet)
  337. Added Math. ceil/floor/exp/log
  338. 1v17 : Support for running alongside the Maple bootloader
  339. Fix parsing of numbers beginning with 0 when forceRadix!=8
  340. Fixed USART1 on Maple/Olimexino devices
  341. 1v16 : Inlining of jsvLock/UnLock in jsvar.h to improve speed
  342. Move non-hardware-dependent stuff into jsdevices
  343. Move jshardware.c into targets/stm32/jshardware.c, create 'targets/linux' and use a single makefile
  344. For + While loops work without reallocating lex
  345. Fix AddNativeFunction when function already exists (and tests + saved state)
  346. Change jsvFindChildFromX to use JsVar* from JsVarRef - saves a lot of lock/unlock
  347. Handle new Foo() as per spec (return value + init of this+prototype) - still does not cope with non-object prototype
  348. Beginning of SD card support (works on Olimexino, but not very flexible)
  349. Fix for parse/eval when given non-strings
  350. Strings can now contain '\0'
  351. Jumptable-friendly reserved word check
  352. Jumptable-friendly builtin functions (massive refactor)
  353. SPI support
  354. HY board support, and graphics LCD
  355. Added fillPoly, and Vector fonts
  356. Added Registration code
  357. Fixed some undefined function/array warnings
  358. Much better HTML function documentation
  359. Fixed edit() function
  360. STM32F3 support, and now peripheral stuff is done with a script
  361. explain what pins are available if a pin is not capable of requested fn
  362. power on ADCs only when needed
  363. LCD fillPoly speed improvements, + drawLine
  364. Add datatype for Pin, so pins written to console by pin name rather than integer value.
  365. Added Pin.set/Pin.reset
  366. Change warning about 'undefined.' into an error (foo.reset() had unexpected consequences!)
  367. Fix parsing of '1.0/-3'!
  368. Add typeof and instanceof operators
  369. Ensure that Serial1/SPI1/etc are objects of type 'Serial'/'SPI' - so prototypes can be added
  370. 1v15 : Escaping JSON strings
  371. Fix parsing of octal numbers in strings (so don't have to be 3 chars long)
  372. Drastically improved stack usage using small stub functions (at expense of a bit of speed)
  373. dump() also dumps out prototypes for functions
  374. 1v14 : Fix complaint about pins during setBusyIndicator()
  375. Increase available memory on OLIMEXINO
  376. Added function memory() to return memory usage
  377. setWatch now links to function names (rather than just functions)
  378. dump() also handles Serial.onData(...)
  379. Fix issue with JSON printing functions with arguments to console
  380. prefix builtin variables with '_'
  381. fix ArrayIndexOf when array contains undefineds
  382. move all devices into one git repository
  383. USB on F4
  384. call onInit function/string if it exists when Espruino powers on
  385. Compile F4 with -O2 - as we have the program memory for it
  386. Serial3/4/5/6 on F4
  387. Serial3 on Olimexino
  388. Make Serial.onData() clear onData handler
  389. 1v13 : Operations like + on Object/Array convert them to strings rather than error
  390. var now doesn't error if there is no semi-colon
  391. Allow new line or line delete in multi-line editing
  392. add edit(functionName) - which copies function definition into inputline so it can be updated
  393. When printing lines, delete current inputline and then put it back in idle loop (only if echo=1)
  394. Support *,/ etc on numpad
  395. 1v12 : Issue when printing lots of data and then disconnect USB
  396. Hide USB/Serial in Dump()
  397. add Array.map(fn(x), thisArg)
  398. For newline, count [] and () (as well as {}) - also knows about comments/strings/etc
  399. Fix assert fail is setTimeout with non-function
  400. If space at end of input line, enter still executes
  401. Removed some hard-coded arrays in favour of JsVar strings
  402. Fix confusion with jsvIsName/jsvIsString
  403. Handle numpad end key
  404. Add code to check stack and stop stack overflow if too much recursion
  405. Ensure that setTimeout/setWatch store the link to a function, not the function
  406. Fix nasty ref loop in ref loop GC issue
  407. Add dotty output
  408. Fix memory leak when error in jspParseSingleFunction
  409. Now run Garbage collection if we're idle, and we know we have a few ms spare
  410. Added setSleepIndicator
  411. Fix line/col indicator in errors/warnings
  412. Fix JSON parsing and printing when 'undefined' encountered
  413. Rewritten object handling code to be way more standard JavaScript compliant
  414. Array initialisation with 'new Array()', also for Strings
  415. Added a few more built in functions
  416. Nice error reporting with line + pointer
  417. fixed Math.random
  418. Binary style ops on doubles now work - they are just converted to ints
  419. Added boolean datatype
  420. 1v11 : Add Math functions
  421. Add command history (and dynamic history free if low memory)
  422. Fix broken jsvArrayPop
  423. Add tests for and fix Array.indexOf
  424. In-line editing for commands
  425. Fix bug in basicVarEquals for big strings
  426. More fixes for low memory conditions
  427. Multi-line edit for commands (but no newline or line delete yet)
  428. Handle Home, End + reverse delete keys
  429. Fix nested for loops not handling interrupts correctly
  430. Fix AppendString issue when given start value greater than string
  431. Add 'changeInterval' to allow things created with setInterval to have the frequency changed (eg. stepper motor control)
  432. Now puts itself to sleep to save power, when it knows nothing is required and it'll be woken up by SysTick before
  433. Change Math library to avoid putting constants in RAM
  434. 1v10 : Increase FIFO size for VL
  435. Marginally decrease amount of F4 vars to ensure they all fit in one flash sector
  436. Allow strings to be longer than the max token size
  437. '"key" in obj' syntax
  438. Detect if in FOR or WHILE loop, and if not, disallow break and continue
  439. Change min setInterval time to 0.1ms - F4 can get close to this
  440. Better analog pin error message
  441. USB support on Olimexino/Maple
  442. Start of multiple COM port support (ioEvent queue)
  443. Ctrl-C now clears the input line
  444. Save state of 'echo' into flash with save()
  445. Add 'setBusyIndicator(pin)' to set pin high when Espruino is busy
  446. Inbuilt function handling speed improvements
  447. Allow Serial comms via other UARTS. Serial1/2.onData and print/println
  448. now inserts elements into arrays in the correct order (GetLength can be (is) now much faster)
  449. Faster code to work out pins from strings
  450. Automatically convert IDs in form A#,A##,B#,B## etc into numbers.
  451. Built-in constants for LED1/BTN/etc.
  452. 1v09 : Enabled 'abs' by default
  453. Added flash programming to STM32F4
  454. analogWrite now working!
  455. 1v08 : Add preliminary STM32F4 support
  456. Allowed test cases to test timers - eg. code in jsinteractive.c
  457. Fix memory leak for timer
  458. Fix memory leak for digitalWrite
  459. 1v07 : Fix string charAt
  460. Fix watch on different pin
  461. Pass arguments to event handlers - eg. time
  462. digitalWrite/Read to take arrays of pins, and int for value
  463. 1v06 : Add break + continue
  464. Add switch statement
  465. Handle /r, /r/n or just /n for newlines - phone compatible
  466. Handle different type of delete
  467. 1v05 : Allow setWatch/setTimeout/setInterval with a string
  468. Handle adding Open bracket then deleting it
  469. When calling a NAMED function, zero the scopes - this stops scope table overflow
  470. 1v04 : Renamed to Espruino
  471. Fixed issue with event add when out of memory
  472. If out of memory happens during a timer, kill all timers