micropython/tools
Jim Mussared 64c79a5423 py/qstr: Add support for sorted qstr pools.
This provides a significant performance boost for qstr_find_strn, which is
called a lot during parsing and loading of .mpy files, as well as interning
of string objects (which happens in most string methods that return new
strings).

Also adds comments to explain the "static" qstrs.  These are part of the
.mpy ABI and avoid needing to duplicate string data for QSTRs known to
already be in the firmware.  The static pool isn't currently sorted, but in
the future we could either split the static pool into the sorted regions,
or in the next .mpy version just sort them.

Based on initial work done by @amirgon in #6896.

This work was funded through GitHub Sponsors.

Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-10-30 11:10:02 +11:00
..
autobuild all: Switch to new preview build versioning scheme. 2023-10-06 12:10:14 +11:00
mpremote all: Switch to new preview build versioning scheme. 2023-10-06 12:10:14 +11:00
.gitattributes micropython-upip: Mark as binary file and re-commit. 2015-06-06 23:09:23 +03:00
.gitignore tools: check-in errordeveloper/tinytest@eb2dbc858f 2014-05-08 01:41:21 +03:00
cc1 tools: Add C middle-processor to make builtin tables proper hash tables. 2015-12-31 00:24:33 +00:00
ci.sh py/mkrules.mk: Add MICROPY_PREVIEW_VERSION_2. 2023-10-27 15:28:46 +11:00
codeformat.py tools/codeformat.py: Use pyproject.toml for black config. 2023-08-10 11:54:36 +10:00
codestats.sh tests,tools: Update path to unix micropython executable. 2022-08-18 11:47:58 +10:00
dfu.py tools/dfu.py: Make tool work with python3 when parsing DFU files. 2021-11-01 15:46:59 +11:00
file2h.py all: Reformat C and Python source code with tools/codeformat.py. 2020-02-28 10:33:03 +11:00
gen-changelog.sh Rename "Micro Python" to "MicroPython" in REPL, help, readme's and misc. 2015-10-12 00:06:25 +01:00
gen-cpydiff.py all: Keep msvc build output in build/ directories. 2022-12-13 17:18:53 +11:00
hci_trace_to_pcap.py extmod/modbluetooth: Make all HCI transports trace in the same format. 2023-04-26 11:37:20 +10:00
insert-usb-ids.py all: Fix strings with backslash by using raw string literals. 2023-05-02 11:55:02 +10:00
makemanifest.py tools/makemanifest.py: Fix printing of mpy_cross.CrossCompileError. 2022-11-02 14:06:18 +11:00
manifestfile.py docs,tools: Change remaining "urequests" references to "requests". 2023-10-05 14:04:45 +11:00
metrics.py tools/metrics.py: Fix esp32 and esp8266 board names after renaming. 2023-10-04 15:44:25 +11:00
mpy-tool.py py/qstr: Add support for sorted qstr pools. 2023-10-30 11:10:02 +11:00
mpy_bin2res.py tools/mpy_bin2res: Tools to convert binary resources to Python module. 2017-07-27 14:41:27 +03:00
mpy_cross_all.py all: Remove MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE. 2021-09-16 16:04:03 +10:00
mpy_ld.py py/persistentcode: Bump .mpy sub-version. 2023-10-16 11:25:31 +11:00
pyboard.py all: Replace all uses of umodule in Python code. 2023-06-08 17:54:24 +10:00
pydfu.py all: Fix various spelling mistakes found by codespell 2.2.6. 2023-10-03 11:24:50 +11:00
tinytest-codegen.py extmod/modtimeq: Remove timeq module. 2023-06-08 17:54:28 +10:00
uf2conv.py all: Fix strings with backslash by using raw string literals. 2023-05-02 11:55:02 +10:00
uf2families.json tools/uf2conv.py: Update to latest version. 2022-02-02 23:43:58 +11:00
uncrustify.cfg all: Fix spelling mistakes based on codespell check. 2023-04-27 18:03:06 +10:00
verifygitlog.py CODECONVENTIONS: Require that commits be signed-off by the author. 2023-05-08 12:20:56 +10:00