This splits out each algorithm into its own extension package, so that only
the necessary algorithms can be installed.
This allows for a significant reduction in RAM and flash. i.e. previously
installing hashlib meant that all algorithms were imported.
Additionally ensures that any built-in hash algorithms (from uhashlib) are
still exposed (e.g. `md5`), and retains the existing behavior to use the
built-in preferentially.
Also includes a refactoring of the algorithms to reduce code size and
reduce the number of allocations they do as well as using bytearrays in
place of list-of-int where possible.
Add more comprehensive tests (using unittest).
This work was funded through GitHub Sponsors.
Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
The packages in this directory aim to provide compatible implementations of
modules from the Python Standard Library, with the goal of allowing existing
Python code to run un-modified on MicroPython.
Implementation
Many packages are implemented in pure Python, often based on the original
CPython implementation. (e.g. collections.defaultdict)
Some packages are based on or extend from the built-in "micro" modules in the
MicroPython firmware, providing additional functionality that didn't need to
be written in C (e.g. collections, socket, struct).
Future plans (ideas for contributors):
Add README.md to each library explaining compatibility and limitations.