I believe I have figured out how to do subroutine prototypes without a source filter. It involves a small amount of not-too-deep XS magic liberally stolen from one of Simon Cozens' unfinished modules and Scalar::Util::set_prototype(). The pieces are there, I need someone with some XS sk1llz to help put them together.