I am copying the wiring_serial library for testing. I want to create a new "test_serial" with my mods. Hopefully that avoids the risks of continuing to edit the core code.

My question is, HardwareSerial.cpp appears to simply call "wiring.serial.c" presumably to put a C++ face on it. Is there any reason I cannot make my new library a .CPP to start with? It looks like you can hook interrupts in .CPP. Or for that matter is there any problem with creating a .C library and distributing it?

Feel free to make libraries written in C++. I think the existing libraries don't go all out and make it all C++ so that the syntax is slightly less confusing for newcomers or C programmers, but C++ can really serve the needs of small programs just as well as C.

If you're going to make C library functions usable from a user's C++ sketch, you just need to ensure that your header file is explicit about its C nature.