I have started work on a derivative of NESHawk ported to C++.
Current repo is here:
https://github.com/alyosha-tas/NESHawkplusplus
The motivation here is that NESHawk is super painfully slow. It's way too slow to do serious bot work with. QuickNES is 20-30x faster.
But, NESHawk is very highly accurate, unlike QuickNES. Also, NESHawk can be run at the precision of one PPU tick. This provides easy access to subframe resets and inputs.
So I thought I would try to port the NESHawk core to C++, cut out the fluff, maybe do some optimizations, and see how fast it could run. So far porting the core is been relatively pain free. I'm about 30% done. I'm hoping to have the porting done in a week and see if I didn't break anything.
The goal here is to have a framework for a build-it-yourself emulator that won't limit the user in any particular way. Anything you can do with C++ you can wrap around NESHawk++. You will have full access to the core state, and can increment it with a single function call. And since it will be the exact same core as running on BizHawk, you can create BK2 files of your work that will still sync on actual BizHawk.
Also, this won't be an actual emulator in the usual sense. There won't be any controller support, mapper support (maybe some common mapper examples), gui, user settings, or similar extras. It will basically be a virtual NES (cpu, ppu, apu) that users will have to develop their own tools for.
That's basically it. If anyone is interested in helping with this or has a project in mind they think this would be helpful for, feel free to contribute or let me know.