This release brings lots of bug fixes and refinements.
- Introduce
zlock_runtime_threads()API, which ensures that the Fil-C runtime has created all of the threads that it will need and tells the runtime not to automatically stop and restart threads. Useful for setting up sandboxes that prevent thread creation. The sshd in /opt/fil now uses this API. This resolves a rare bug where sshd sessions hang. - No longer use dummy thread creation on process startup in the glibc build.
- Add optimization that removes redundant pollchecks.
- Add m4 to the /opt/fil distribution and make sure that bison knows to use it.
- Build the /opt/fil distribution with PATH set to /opt/fil/bin, to ensure that dependencies are resolved to /opt/fil.
- Fix inline assembly in
uv__cpu_relaxin libuv. - Disable optimizations that have no effect on PizBench performance but that break constant-time crypto programming idioms.
- Support
posix_madvise. - Support more commands in
prctl. - Support
memfd_create(both when called directly and viasyscall). - Fix ICE when working with offset pointers to globals.
- Support more masked load/store SIMD intrinsics.
- Put in more defenses to ensure that Fil-C binaries never have execstack.
- Treat whitespace-only inline assembly like blank inline assembly.
- Support
fetestexceptin glibc builds. - Fix libffi closure support.
- Support
__builtin_cpu_initand__builtin_cpu_supports.
Thank you @mbrock, @pcc, and djb for contributing fixes to this release!
Guide to the available files:
filc-0.676-linux-x86_64.tar.xzis the traditional, self-contained "pizfix" distribution. It only includes the compiler, doesn't require root, and is based on the musl libc. This is recommended for quickly trying out Fil-C.optfil-0.676-linux-x86_64.tar.xzis the /opt/fil distribution. It includes many useful programs like OpenSSH, sudo, tmux, and git. It's based on glibc 2.40, and requires root permissions. This is recommended for giving Fil-C deeper scrutiny.