4cdebe7191
* Proof-of-concept multi-type console support via stdio * Address crashes on linput's use of printf. On an empty line input, a C3 with UART console would panic while attempting to output the new Lua prompt. The backtrace shows a xQueueSemaphoreTake with uxItemSize==0 as the panic cause, deep inside the uart driver, invoked via vfs_uart and vfs_console layers, from printf. Similarly, the printf for outputting a backspace/erase sequence would also trigger a panic. This workaround (of not mixing fflush() with printf) is likely merely hiding a deeper issue, but it appears to be consistent. Plus, printf with no args and a user-supplied format string is a no-no and should be fixed anyway. * Work around IDF inconsistency with stdout buffering. * Increase console task stack size. Seems on Xtensa it ended up not being enough. * Switch to single-byte console reads. * Stop cheating and feed Lua from the right context. * Work around IDF buffering stdout even when told not to, on ACM consoles. * Initial build support for esp32c6. Plus fixup of module selection for a variety of targets. * Update github actions to node 20 versions. * Update github build to deal with Lua 5.3 being default. * Address fatal compiler warning. Newer IDF toolchain is stricter, and we'd apparently failed to build test the Lua-5.1 path for some time. * Initial build support for esp32h2. * Upgrade IDF to v5.1.3 * Fix left-over incorrect type in uzlib. * Avoid null pointer crashes when debugging startup. * Workaround for using wifi module on S2 with USB-CDC console. --------- Co-authored-by: Jade Mattsson <github@frozenlogic.org> |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
README.md | ||
crc32.c | ||
uzlib.h | ||
uzlib_deflate.c | ||
uzlib_inflate.c |
README.md
uzlib - Deflate/Zlib-compatible LZ77 compression library
This is a heavily modified and cut down version of Paul Sokolovsky's uzlib library. This library has exported routines which
-
Can compress data to a Deflate-compatible bitstream, albeit with lower compression ratio than the Zlib Deflate algorithm as a static Deflate Huffman tree encoding is used for bitstream). Note that since this compression is in RAM and requires ~4 bytes per byte of the input record, should only be called for compressing small records on the ESP8266.
-
Can decompress any valid Deflate, Zlib, and Gzip (further called just "Deflate") bitstream less than 16Kb, and any arbitrary length stream compressed by the uzlib compressor.
uzlib aims for minimal code size and runtime memory requirements, and thus is suitable for embedded systems and IoT devices such as the ESP8266.
uzlib is based on:
- tinf library by Joergen Ibsen (Deflate decompression)
- Deflate Static Huffman tree routines by Simon Tatham
- LZ77 compressor by Paul Sokolovsky provided my initial inspiration, but I ended up rewriting this following RFC 1951 to get improved compression performance.
The above 16Kb limitation arises from the RFC 1951 use of a 32Kb dictionary, which is impractical on a chipset with only ~40 Kb RAM avialable to applications.
The relevant copyright statements are provided in the source files which use this code.
uzlib library is licensed under Zlib license.