Fil-C Linux/x86_64 version 0.675 · pizlonator fil-c · Discussion #145

2 min read Original article ↗

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 mlock syscalls support invalid pointers when length is zero.
  • Support feclearexcept and feenableexcept in glibc.
  • Support adjtimex.
  • Support more variants of futex syscalls via syscall(2).
  • Support the rdtsc builtin.
  • Fix a wrong assertion about thread creation during global constructor invocation.
  • Make it possible to say .symver instead of .filc_symver.
  • Fix ICE with -fstrict-vtable-pointers.
  • Fix support for sched_setscheduler and sched_getscheduler.
  • Use secure_getenv for 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 bzero and bcopy with -D_FORTIFY_SOURCE=2.
  • Fix ICE using atomic add/sub on pointers.
  • Add prctl PR_SET_NAME/PR_GET_NAME support. Fixes pthread_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 filcc doesn'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.