Exposing SHA-256 to GoLang was tricky. Clang worked fine. GCC failed. It turned out that GCC was too shy about inlining my code, resulting in excessive stack space usage... Now, JavaScript, Swift, and GoLang bindings all support incremental SHA-256 procedures 🥳. Thanks to @MarekKnapek for reducing the stack memory usage of the serial SHA variant!
Moreover, thanks to @laurenspriem for highlighting the SIGILL when probing ID registers on older Arm CPUs. I've now guarded first mrs probes with signal handlers. Ugly solution, but it may work 😅 I've also improved the capability detection code on Arm-based Windows machines, using the OS-specific <processthreadsapi.h> functionality, so now not only pure NEON, but also NEON+SHA+AES kernels, should be dispatched just fine!
Thanks to @ashbob999, StringZilla is also getting more stable Windows builds and stringzilla_bare coverage in our CI 🦺
Patch
- Make: Removed rand/free/malloc stubs when avoiding libc (0148282)
- Make: Deploy stringzilla_bare for windows (e4ddce8)
- Make: Added .lib file to uploaded windows archives (2dc6936)
- Make: Add MSVC bare builds back (5cc5f01)
- Make: Added stringzilla_bare checks (bbc5cca)
- Fix: Avoid unused POSIX extensions on macOS (aeb06a5)
- Make: Deprecate old cross-compilation scripts (2f34c2d)
- Improve: Drop
-pedanticfor POSIX extensions (e99d557) - Make: Pre-define CMake properties, like
-lpthreadand pointer size (7722bb1) - Improve:
serialize_capabilityfor Ice Lake on Clang (58f8cf9) - Make: Skip compiler checks for cross-compilation (60988f3)
- Fix: Unused
capabilitiesin Arm macOS builds (511a09e) - Docs: Listing
./scriptsand StringWars (5af84dd) - Make: Pass
-D CMAKE_SYSROOTin cross-compiling CI (a26fc73) - Fix: Suppress unused
allocwarnings (4868d7f) - Make: Reduce CMake nesting (dda024d)
- Make: Propagate cross-compilation settings (5070321)
- Improve: Detect NEON+SHA+AES via WinAPI (3b175f8)
- Fix: Probe
mrsfor avoidSIGILLon older Arm (d2f8e97) - Fix: Isolate & skip SHA-256 tests in Go with GCC (0874b13)
- Fix: Deprecates
sz_checksum(97f9ecf) - Make: More aggressive inlining (e8f33c1)
- Make: Uniform hardware specs logging (f826dfc)
- Improve: Expose
Capabilitiesto GoLang (5f2cc97) - Improve: Branchless serial SHA-256 block processor (fe7efe2)
- Fix: Missing modulo in SHA #254 (5a513b7)
- Improve: Smaller stack usage in SHA-256 (#253) (a298be0)
- Fix: No
noescape/nocallbackfor stateful hashes (f8d321f) - Fix: Violating u32/u64 aliasing (7e55e5c)
- Fix: Missing SSE flags for SHA (403b28b)
- Improve:
io.Writer&hash.Hash64interface for Go (05f89ca) - Improve: Expose
sz_dispatch_table_initfor Go (5ff7ba1) - Fix: Missing Goldmont & Ice SHA dispatch (e29bded)
- Fix: Supporting unaligned SHA-256 states (c770e48)
- Fix: Missing
C.sz_checksum(652735d) - Fix: Hex formatting in Swift on Linux (fc65328)
- Improve: SHA for Go, JS, Swift (a165322)