My implementation also reports line numbers. I don't think there's a difference there.
As advantages for my implementation I'd list:
- Based on R7RS: dropping support for non-R7RS environments simplifies the code, since workarounds like using a vector for a mock record type, or using cond-expand to support implementation-specific exception handling mechanisms, can be removed.
- Modular design: the source is split into four components: Execution (forms to actually execute tests), test-runner (the data type), test-runner-simple (the "simple" test runner defined by the standard), and source-info (shims to support source info gathering). Note that these aren't actually exposed as sub-libraries, since that might encourage writing code that only works with this implementation; the separation is only for ease of understanding and navigation of the code.
- Improved code clarity: using shims to hide implementation-specific code for source info gathering further eliminates the use of cond-expand in the main body of the code, improving readability.