@filpizlo@redneckleeusmc But good for Fil-C that the first one is UB, right? Improves the odds that things will work without patches.
The rest are obnoxious. I especially loathe the TBAA stuff, Rust got that one right.
@redneckleeusmc@filpizlo Sure. But it’s usually shortsighted to depend on behaviors that differ between mainstream vendors. realloc(p,0) is a bad idea if you ever want your code to run on both Linux and BSD, for example.
@redneckleeusmc@filpizlo If these behaviors are fine to depend on, then why not fix the C standard to guarantee them? Why won’t the committee agree to that?
@filpizlo@lcc_27 I think for Windows you’d need to create a much wider “syscall” layer wrapping all the Win32 APIs you want to support, since you can’t rebuild the system DLLs with the Fil-C ABI. This seems impractical.
@filpizlo Because IIUC, everything in your binary has to be built with Fil-C—it’s a new ABI, incompatible with existing libraries. So if your C code uses a Rust lib, you can’t use Fil-C today.
@filpizlo@learntToCode Are syscalls really that different with Fil-C? I.e., Fil-C needs some encoding of the semantics of the syscall in order to validate inputs, right? No different from writing a safe wrapper around an (unsafe) syscall. Just a question of where the escape hatch is.
I created a hypervisor-based emulator for Windows x64 binaries. This project uses Windows Hypervisor Platform to build a virtualized user-mode environment, allowing syscalls and memory accesses to be logged or intercepted. https://t.co/KbsWfdLT3D
Project:
https://t.co/xJvm24qqXv
I hate generic ‘utils’, ‘helpers’ and ‘miscellaneous’ directories and modules in software projects.
But it’s been surprisingly hard to get rid of them.
I feel like there’s a lesson here. Every house has a storage box where you just store random stuff.
@stanzillaz@charliermarsh Looked promising, but I hit some known bug where it hard codes some CFLAGS or something from their build machine, and those flags reference paths that don’t exist on my machine, so random dependencies fail to build.