This release brings major stability and compatibility improvements to Fil-C.
- The Fil-C compiler is now based on clang 20.1.8 (previously was clang 17).
- Fixes to multiple GC stability issues found after months of stress testing.
- Compatibility with code that passes around pointer-integer unions by value in local variables is much improved.
- Compatibility with code that uses memcpy as a polymorphic assignment primitive is much improved.
Additional fixes:
- The compiler binary depends on fewer shared libraries, making it more portable.
- Closing fd 2 no longer causes infinite panic recursion.
- Version scripts now support
#comments. - Building static binaries is now supported.
- Additional syscall support: sendmmsg, recvmmsg, statx, splice, tee, mknod, mknodat, reboot, umount2, epoll_pwait, epoll_pwait2, timer_create, timer_delete, timer_getoverrun, timer_settime, timer_gettime, all of the xattr syscalls
- Increase number of syscalls that can be called via syscall(2).
- Fixes to existing syscall support: futimes now supports NULL time, accept and accept4 now support NULL address, execve now supports NULL envp.
- Add internal support for dlvsym.
- Fix a case of errno being set when it shouldn't be.
- Support calling setjmp in a loop and then longjmping to any of the jmp_buf's created by that loop.
- Fix compiler crash compiling code that has redundant checks and unstructured control flow.
- Support dumping panic logs to /var/filc/panics (if the directory exists and the process has permission to create files there).
- Revert changes to libcxx that were only necessary for MonoCaps (Fil-C's previous, and less compatible, capability model).