That’s mostly still true, with the small caveat that the default prefix on arm64 macOS is /opt/homebrew rather than /usr/local, so you might have to add it explicitly to your PATH
That’s mostly still true, with the small caveat that the default prefix on arm64 macOS is /opt/homebrew rather than /usr/local, so you might have to add it explicitly to your PATH
Projects for Apple platforms usually also use .h, where it could mean anything from C/C++ to Objective-C/C++.
In practice, Clang handles mixed C/C++/Obj-C codebases pretty well and determining the language for a header never really felt like an issue since the API would usually already imply it (declaring a C++ class and/or Obj-C class would require the corresponding language to consume it).
If a C++ header is intended to be consumed from C, adding the usual should alleviate the name mangling issues.
or Swift, Rust has semicolons while Swift doesn’t
Why not just add a timestamp that rotates every, say 5 seconds, to the hashed data?
That would make it infeasible to precompute the table permanently (it would have to be precomputed for a very narrow attack window, which is still better than nothing)
A nice example of this is Ardour: A DAW that’s free in the sense that the source code is GPL, but the prebuilt official binaries have to be paid for.
How so? It’s a polished Unix desktop that runs most open-source and a bunch of proprietary apps, including Final Cut and Logic. It’s natively POSIX and has a proper shell.
deleted by creator
This is all fun and games until you try moving a backup to a file system that’s case-insensitive
In principle you can, the Mach-O format is openly documented and implemented in the major compilers. The issue is that you need a sysroot (aka SDK) of the frameworks and headers for your target OS, which in Apple’s case are proprietary and cannot be redistributed legally (you could probably rip them out of a macOS installation yourself though). For iOS apps you’d also need to sign the binaries and install the app to the device which is non-trivial to impossible to do on other platforms.
CMake can also emit its own errors during the configure step though, particularly if you have complicated build logic and/or lots of external packages.