removes external dependency on tinf by replacing the compression algorithm with a simpler, faster, smaller and more auditable fixed-width LZ77 encoding purpose-tailored to x86 code mixed with data. before: decompressor.bin 2,492 bytes (tinf dependency) with .text 0x875 and .rodata 0x13c bytes each. after: decompressor.bin consists only of .text, 0xe6-byte decompressor; 90.8% reduction in decompressor volume. the dependency on gzip during compile-time is replaced by host/limlzpack.c, a Lempel-Ziv encoder in 275 SLoC that uses a suffix array matchfinder (prefix-doubling in mathcal O(n log^2 n) and Storer-Szymanski backwards parse. the fixed-width formats packets as [F][LLLL][MMM], favouring a literal-skewed distribution with F switching between one-byte and two-byte offsets (favouring recent statistics). integrity checking is done via crc32 with the polynomial 0xEDB88320, reflected. the effective loss in compression ratio by using a tremendously simpler and less packed with edge cases algorithm causes a compression ratio hit well below 1KB, factoring in the stub sizes. also adds new machinery for host cc detection per review.
2.9 KiB
3rd Party Software Acknowledgments
The Limine project depends on several other projects.
(For readers with access to source code, know that these are pulled in by the
./bootstrap script, or, in the case of release tarballs, are shipped
alongside the core Limine code in the tarballs themselves, similar to
./bootstrap having already been run.)
These additional projects are NOT covered by the License as contained inside
the COPYING file as present at the root of the source tree, or, for installed
copies, present at ${DOCDIR}/COPYING (assuming the file has not been
otherwise removed by the packager). These are instead licensed as described by
each individual project's documentation present in each project's dedicated
subdirectory or license header(s) in the source tree. For readers without access
to the source code, one can read the following for a quick overview of licenses
that Limine is distributed under:
A non-binding, informal summary of all projects Limine depends on, and the licenses used by said projects, in SPDX format, is as follows:
-
cc-runtime (Apache-2.0 WITH LLVM-exception) is used to provide runtime libgcc-like routines.
-
0BSD Freestanding C Headers (0BSD) provide GCC and Clang compatible freestanding C headers.
-
Limine Boot Protocol (0BSD) has the C/C++ header and the specification text of the Limine Boot Protocol.
-
PicoEFI (multiple licenses, see list below) provides headers and build-time support for UEFI.
- BSD-2-Clause
- BSD-2-Clause-Patent
- BSD-3-Clause
- LicenseRef-scancode-bsd-no-disclaimer-unmodified
- MIT
For more information about the LicenseRef-scancode-bsd-no-disclaimer-unmodified license used by parts of PicoEFI, see https://scancode-licensedb.aboutcode.org/bsd-no-disclaimer-unmodified.html and the LicenseRef file here, in case of viewing this file from inside the source tree, alternatively at
${DOCDIR}/LICENSES/LicenseRef-scancode-bsd-no-disclaimer-unmodified.txtin case of installed copies, assuming the file has not been otherwise removed by the packager. -
Flanterm (BSD-2-Clause) is used for text related screen drawing.
-
stb_image (MIT) is used for wallpaper image loading.
-
libfdt (BSD-2-Clause) is used for manipulating Flat Device Trees.
Note that some of these projects, or parts of them, are provided under dual-licensing, in which case, in the above list, the only license mentioned is the one chosen by the Limine developers. Refer to each individual project's documentation for details.