summaryrefslogtreecommitdiff
path: root/docs
AgeCommit message (Collapse)Author
2021-09-16all: Remove MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE.Jim Mussared
This commit removes all parts of code associated with the existing MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE optimisation option, including the -mcache-lookup-bc option to mpy-cross. This feature originally provided a significant performance boost for Unix, but wasn't able to be enabled for MCU targets (due to frozen bytecode), and added significant extra complexity to generating and distributing .mpy files. The equivalent performance gain is now provided by the combination of MICROPY_OPT_LOAD_ATTR_FAST_PATH and MICROPY_OPT_MAP_LOOKUP_CACHE (which has been enabled on the unix port in the previous commit). It's hard to provide precise performance numbers, but tests have been run on a wide variety of architectures (x86-64, ARM Cortex, Aarch64, RISC-V, xtensa) and they all generally agree on the qualitative improvements seen by the combination of MICROPY_OPT_LOAD_ATTR_FAST_PATH and MICROPY_OPT_MAP_LOOKUP_CACHE. For example, on a "quiet" Linux x64 environment (i3-5010U @ 2.10GHz) the change from CACHE_MAP_LOOKUP_IN_BYTECODE, to LOAD_ATTR_FAST_PATH combined with MAP_LOOKUP_CACHE is: diff of scores (higher is better) N=2000 M=2000 bccache -> attrmapcache diff diff% (error%) bm_chaos.py 13742.56 -> 13905.67 : +163.11 = +1.187% (+/-3.75%) bm_fannkuch.py 60.13 -> 61.34 : +1.21 = +2.012% (+/-2.11%) bm_fft.py 113083.20 -> 114793.68 : +1710.48 = +1.513% (+/-1.57%) bm_float.py 256552.80 -> 243908.29 : -12644.51 = -4.929% (+/-1.90%) bm_hexiom.py 521.93 -> 625.41 : +103.48 = +19.826% (+/-0.40%) bm_nqueens.py 197544.25 -> 217713.12 : +20168.87 = +10.210% (+/-3.01%) bm_pidigits.py 8072.98 -> 8198.75 : +125.77 = +1.558% (+/-3.22%) misc_aes.py 17283.45 -> 16480.52 : -802.93 = -4.646% (+/-0.82%) misc_mandel.py 99083.99 -> 128939.84 : +29855.85 = +30.132% (+/-5.88%) misc_pystone.py 83860.10 -> 82592.56 : -1267.54 = -1.511% (+/-2.27%) misc_raytrace.py 21490.40 -> 22227.23 : +736.83 = +3.429% (+/-1.88%) This shows that the new optimisations are at least as good as the existing inline-bytecode-caching, and are sometimes much better (because the new ones apply caching to a wider variety of map lookups). The new optimisations can also benefit code generated by the native emitter, because they apply to the runtime rather than the generated code. The improvement for the native emitter when LOAD_ATTR_FAST_PATH and MAP_LOOKUP_CACHE are enabled is (same Linux environment as above): diff of scores (higher is better) N=2000 M=2000 native -> nat-attrmapcache diff diff% (error%) bm_chaos.py 14130.62 -> 15464.68 : +1334.06 = +9.441% (+/-7.11%) bm_fannkuch.py 74.96 -> 76.16 : +1.20 = +1.601% (+/-1.80%) bm_fft.py 166682.99 -> 168221.86 : +1538.87 = +0.923% (+/-4.20%) bm_float.py 233415.23 -> 265524.90 : +32109.67 = +13.756% (+/-2.57%) bm_hexiom.py 628.59 -> 734.17 : +105.58 = +16.796% (+/-1.39%) bm_nqueens.py 225418.44 -> 232926.45 : +7508.01 = +3.331% (+/-3.10%) bm_pidigits.py 6322.00 -> 6379.52 : +57.52 = +0.910% (+/-5.62%) misc_aes.py 20670.10 -> 27223.18 : +6553.08 = +31.703% (+/-1.56%) misc_mandel.py 138221.11 -> 152014.01 : +13792.90 = +9.979% (+/-2.46%) misc_pystone.py 85032.14 -> 105681.44 : +20649.30 = +24.284% (+/-2.25%) misc_raytrace.py 19800.01 -> 23350.73 : +3550.72 = +17.933% (+/-2.79%) In summary, compared to MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE, the new MICROPY_OPT_LOAD_ATTR_FAST_PATH and MICROPY_OPT_MAP_LOOKUP_CACHE options: - are simpler; - take less code size; - are faster (generally); - work with code generated by the native emitter; - can be used on embedded targets with a small and constant RAM overhead; - allow the same .mpy bytecode to run on all targets. See #7680 for further discussion. And see also #7653 for a discussion about simplifying mpy-cross options. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2021-09-16stm32: Suggest putting code in main.py not boot.py.Jim Mussared
Don't want users to accidentally use boot.py (because recovering requires knowing how to activate safe mode). Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2021-09-13docs/library/machine.I2S.rst: Specify that I2S.shift args are kw-only.Peter Hinch
2021-09-13docs/make.bat: Change Windows output dir from '_build' to 'build'.Ihor Nehrutsa
To match the output file used by Makefile.
2021-09-10docs/library/bluetooth.rst: Update incorrect link to gatts_write.Matt Trentini
2021-09-10docs/library/os.rst: Clarify littlefs requirements for block erase.Peter Hinch
2021-09-02all: Bump version to 1.17.v1.17Damien George
Signed-off-by: Damien George <damien@micropython.org>
2021-08-30docs/reference: Mention that slicing a memoryview causes allocation.Peter Hinch
2021-08-30docs/esp8266: Use monospace for software tools.Fernando
Signed-off-by: Fernando <fepegar@gmail.com>
2021-08-30docs/library: Fix usage of :term: for frozen module reference.Fernando
Signed-off-by: Fernando <fepegar@gmail.com>
2021-08-25extmod/modframebuf: Enable blit between different formats via a palette.Peter Hinch
This achieves a substantial performance improvement when rendering glyphs to color displays, the benefit increasing proportional to the number of pixels in the glyph.
2021-08-19docs: Add docs for machine.bitstream and neopixel module.Jim Mussared
Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2021-08-17docs/library/network.rst: Simplify socket import.Jim Mussared
Replace `import socket as socket` with `import socket`. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2021-08-17docs/library/builtins.rst: Add module title.Jim Mussared
This fixes the rendering on library/index.rst. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2021-08-14extmod/modbluetooth: Add send_update arg to gatts_write.Jim Mussared
This allows the write to trigger a notification or indication, but only to subscribed clients. This is different to gatts_notify/gatts_indicate, which will unconditionally notify/indicate. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2021-08-13docs/library/index.rst: Clarify module naming and purpose.Jim Mussared
Adds section about extending built-in modules from Python. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2021-08-13docs: Replace ufoo with foo in all docs.Jim Mussared
Anywhere a module is mentioned, use its "non-u" name for consistency. The "import module" vs "import umodule" is something of a FAQ, and this commit intends to help clear that up. As a first approximation MicroPython is Python, and so imports should work the same as Python and use the same name, to a first approximation. The u-version of a module is a detail that can be learned later on, when the user wants to understand more and have finer control over importing. Existing Python code should just work, as much as it is possible to do that within the constraints of embedded systems, and the MicroPython documentation should match the idiomatic way to write Python code. With universal weak links for modules (via MICROPY_MODULE_WEAK_LINKS) users can consistently use "import foo" across all ports (with the exception of the minimal ports). And the ability to override/extend via "foo.py" continues to work well. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2021-08-13docs: Rename ufoo.rst to foo.rst.Jim Mussared
This is a simple rename of the files, no content changes (other than updating index.rst to use the new paths) Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2021-08-13docs/templates: Add unix and zephyr quickref links to top-index.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2021-08-13docs/library/zephyr: Add libraries specific to the Zephyr port.Julia Hathaway
Includes documentation for Zephyr specific modules (zephyr and zsensor), classes (DiskAccess and FlashArea), and functions. Signed-off-by: Julia Hathaway <julia.hathaway@nxp.com>
2021-08-13docs/zephyr: Add quick reference for the Zephyr port.Julia Hathaway
Includes an introduction to using the Zephyr port on MicroPython. The quickref details examples of how to use each module the port currently supports. The tutorial provides additional details for Zephyr specific modules. Signed-off-by: Julia Hathaway <julia.hathaway@nxp.com>
2021-08-07docs/library/machine.I2S.rst: Fix use of sd pin in examples.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2021-08-07extmod/modujson: Add support for dump/dumps separators keyword-argument.Peter Züger
Optionally enabled via MICROPY_PY_UJSON_SEPARATORS. Enabled by default. For dump, make sure mp_get_stream_raise is called after mod_ujson_separators since CPython does it in this order (if both separators and stream are invalid, separators will raise an exception first). Add separators argument in the docs as well. Signed-off-by: Peter Züger <zueger.peter@icloud.com> Signed-off-by: Damien George <damien@micropython.org>
2021-08-07esp8266,esp32: Include hidden networks in WLAN.scan results.Damien George
Addresses issues #2697 and #5329. Signed-off-by: Damien George <damien@micropython.org>
2021-08-04esp32/machine_uart: Add flow kw-arg to enable hardware flow control.Will Sowerbutts
This enables optional support for the hardware UART to use the RTS and/or CTS pins for flow control. The new "flow" constructor keyword specifies a bitmask of RTS and/or CTS. This matches the interface used by machine.UART on stm32 and rp2. Previously on ESP32 it was possible to specify which pins to use for the RTS and CTS signals, but hardware flow control was never functional: CTS was not checked before transmitting bytes, and RTS was always driven high (signalling no buffer space available). With this patch, CTS and RTS both operate as expected. This also includes an update to the machine.UART documentation. Signed-off-by: Will Sowerbutts <will@sowerbutts.com>
2021-07-22docs/library/uasyncio.rst: Document stream readexactly() method.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2021-07-22docs/library/utime.rst: Clarify behaviour and precision of sleep ms/us.Damien George
This description is based on the existing bare-metal ports implementations. Signed-off-by: Damien George <damien@micropython.org>
2021-07-20docs/rp2: Update general section to give a brief technical overview.NitiKaur
2021-07-20docs/rp2: Enhance quickref and change image to Pico pinout.NitiKaur
2021-07-18docs: Replace master/slave with controller/peripheral in I2C and SPI.David P
See https://www.oshwa.org/a-resolution-to-redefine-spi-signal-names
2021-07-12all: Update to point to files in new shared/ directory.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2021-07-07docs/esp8266/tutorial: Change flash mode from dio to dout.finefoot
For some boards, even -fm dio is too fast and they require -fm dout. This commit links to the esptool wiki about available flash modes and changes dio to dout.
2021-07-06docs/library: Warn that ustruct doesn't handle spaces in format strings.Tom McDermott
And also add a test to capture the CPython difference.
2021-07-05esp32,stm32: Add new machine.I2S class for I2S protocol support.Mike Teachman
This commit adds I2S protocol support for the esp32 and stm32 ports, via a new machine.I2S class. It builds on the stm32 work of blmorris, #1361. Features include: - a consistent I2S API across the esp32 and stm32 ports - I2S configurations supported: - master transmit and master receive - 16-bit and 32-bit sample sizes - mono and stereo formats - sampling frequency - 3 modes of operation: - blocking - non-blocking with callback - uasyncio - internal ring buffer size can be tuned - documentation for Pyboards and esp32-based boards - tested on the following development boards: - Pyboard D SF2W - Pyboard V1.1 - ESP32 with SPIRAM - ESP32 Signed-off-by: Mike Teachman <mike.teachman@gmail.com>
2021-07-01docs/library: Document new esp32.RMT features and fix wait_done.Jonathan Hogg
Add new API for specifying the idle level and TX carrier output level, and new write_pulses modes of operation. Also fix wait_done documentation which was inverted and wrong about timing.
2021-06-25rp2: Use 0=Monday datetime convention in RTC.Krzysztof Adamski
The RTC in rp2 can store any, even wrong, number as a weekday in RTC. It was, however, discussed in #7394 that we would like to unify all ports and use 0 as Monday, not Sunday in the machine.RTC implementation. This patch makes sure that the default date set in RTC is adheres to this convention. It also fixes the example in quickref to use proper weekday to avoid confusion. Signed-off-by: Krzysztof Adamski <k@japko.eu>
2021-06-23stm32/usb: Make irq's default trigger enable all events.Damien George
Following how other .irq() methods work on other objects. Signed-off-by: Damien George <damien@micropython.org>
2021-06-22LICENSE: Reference third-party licenses.Jim Mussared
This is to provide a summary of the licenses used by MicroPython. - Add SPDX identifier for every directory that includes non-MIT-licensed content. - Add brief summary. - Update docs license to be more explicit. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2021-06-18all: Bump version to 1.16.v1.16Damien George
Signed-off-by: Damien George <damien@micropython.org>
2021-06-17docs/esp32: Document WLAN "reconnects" config option.Thomas Wenrich
2021-06-15extmod/uasyncio: Add readinto() method to Stream class.Mike Teachman
With docs and a multi-test using TCP server/client. This method is a MicroPython extension, although there is discussion of adding it to CPython: https://bugs.python.org/issue41305 Signed-off-by: Mike Teachman <mike.teachman@gmail.com>
2021-06-12docs/library/machine.RTC.rst: Document datetime method and fix ex code.Peter Hinch
This is the minimum change to fix the example code so it actually runs on the majority of ports.
2021-06-10stm32/usb: Add USB_VCP.irq method, to set a callback on USB data RX.Damien George
Usage: usb = pyb.USB_VCP() usb.irq(lambda u:print(u, u.read()), usb.IRQ_RX) Signed-off-by: Damien George <damien@micropython.org>
2021-05-30docs/rp2: Add skeleton docs for the rp2 port.Matt Trentini
2021-05-20all: Replace busses with buses.Mike Causer
"buses" is the widely accepted plural form of "bus".
2021-05-20docs/library/pyb.Pin.rst: Update the arguments for Pin.init().Andrew Leech
Add details for Pin.init() value and alt arguments.
2021-05-18docs/library: Add a blank line to fix formatting for ussl docs.Brett Cannon
2021-05-18docs/library: Clarify what type of algorithm is implemented in heapq.Brett Cannon
2021-05-14docs/esp8266: Add SSD1306 to quickref and tutorial.Mike Causer
2021-05-14docs/esp8266: Mention Signal in GPIO section of quickref.Mike Causer