The GNU gperf program is a perfect hash function generator. For a given list of strings, it produces a hash table, in form of C or C++ code, for looking up a value depending on the input string.
It is now available in version 3.2. ==== New in 3.2 ==== * The generated code avoids several types of warnings: - "implicit fallthrough" warnings in 'switch' statements. - "unused parameter" warnings regarding 'str' or 'len'. - "missing initializer for field ..." warnings. - "zero as null pointer constant" warnings. * The input file may now use Windows line terminators (CR/LF) instead of Unix line terminators (LF). Note: This is an incompatible change. If you want to use a keyword that ends in a CR byte, such as xyz<CR>, write it as "xyz\r". ==== Download ==== Here are the compressed sources and a GPG detached signature: https://ftp.gnu.org/gnu/gperf/gperf-3.2.tar.gz https://ftp.gnu.org/gnu/gperf/gperf-3.2.tar.gz.sig Use a mirror for higher download bandwidth: https://www.gnu.org/order/ftp.html Here are the SHA1 and SHA256 checksums: File: gperf-3.2.tar.gz SHA1 sum: aa1ca0637b28a15ca3f03a1e76564ee5f3080dff SHA256 sum: e0ddadebb396906a3e3e4cac2f697c8d6ab92dffa5d365a5bc23c7d41d30ef62 Use a .sig file to verify that the corresponding file (without the .sig suffix) is intact. First, be sure to download both the .sig file and the corresponding tarball. Then, run a command like this: gpg --verify gperf-3.2.tar.gz.sig The signature should match the fingerprint of the following key: pub ed25519 2025-01-28 [SC] E0FF BD97 5397 F77A 32AB 76EC B630 1D9E 1BBE AC08 uid Bruno Haible (Free Software Development) <br...@clisp.org> If that command fails because you don't have the required public key, or that public key has expired, try the following commands to retrieve or refresh it, and then rerun the 'gpg --verify' command. gpg --recv-keys B6301D9E1BBEAC08 As a last resort to find the key, you can try the official GNU keyring: wget -q https://ftp.gnu.org/gnu/gnu-keyring.gpg gpg --keyring gnu-keyring.gpg --verify gperf-3.2.tar.gz.sig