What about pointer arithmetic without decorating everything with "unsafe"? As the whole point is making the code safer.
The point is to reduce the amount of work by doing the boring work automatically. Manually copying struct definitions, functions, etc etc would be very boring but error prone work which is kind of the worst combination.
If that's done you can start improving the codebase module by module.
yeah, preprocessor is going to blow everything, I forgot how good it is. Maybe there's a way by preprocessing and then leaving it as the code, but that wouldn't be as useful and configurable