This release fixes many bugs, implements performance improvements, and significantly expands the /opt/fil distribution.
Fixes and improvements:
- Support for command-line compiler arguments to control the location of headers and libraries. Needed for Filnix.
- Improve debugging support by preserving DWARF information.
- Make
mlocksyscalls support invalid pointers when length is zero. - Support
feclearexceptandfeenableexceptin glibc. - Support
adjtimex. - Support more variants of futex syscalls via
syscall(2). - Support the
rdtscbuiltin. - Fix a wrong assertion about thread creation during global constructor invocation.
- Make it possible to say
.symverinstead of.filc_symver. - Fix ICE with
-fstrict-vtable-pointers. - Fix support for
sched_setschedulerandsched_getscheduler. - Use
secure_getenvfor configuring the Fil-C runtime. - Add a simple sampling profiler (can be enabled with
FILC_SAMPLING_PROFILER_ENABLED=1). - Fix a bug that caused some allocations to be zeroed two or three times instead of just once, leading to a ~1% speedup on PizBench.
- Fix
bzeroandbcopywith-D_FORTIFY_SOURCE=2. - Fix ICE using atomic add/sub on pointers.
- Add
prctlPR_SET_NAME/PR_GET_NAMEsupport. Fixespthread_setname_np. - Change the InvisiCaps aux to have the pointer component in the high 48 bits and the flags in the low 16 bits, resulting in better codegen. ~1% speedup on PizBench.
- Make all Fil-C slices use their own compiler runtime and crt's, so that installing
filccdoesn't depend on the OS already having a gcc or clang installation. This uses the LLVM 20.1.8 compiler-rt plus a dummy stub for libunwind (since Fil-C doesn't rely on unwinding in yololand, and provides its own libunwind in userland).
New programs and libraries in /opt/fil:
- libuv
- sudo
- sed
- psmisc
- flex
- bison
- grep
- less
- diff
- gawk
- find
- gzip
- make
- patch
- tar
- icu
- procps-ng
- libevent
- tmux
- libunistring
- libidn2
- libpsl
- libtasn1
- p11-kit
- nghttp2
- curl
- wget
- git
Thank you @pcc and @mbrock for helping to contribute fixes for this release!
Guide to the available files:
- filc-0.675-linux-x86_64.tar.xz is 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.675-linux-x86_64.tar.xz is 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.
This discussion was created from the release Fil-C Linux/x86_64 version 0.675.