Here's what I mean:
- It passes 75 internal unit tests (ok, 74 , but that one is arguable).
- It passes 137 of 145 tests of the SPF official test suite.
- It agrees with PySPF in 181 of the 183 cases of the libspf2 live DNS suite.
- It segfaults in none of the 326 test cases.
So, while there are still some corner cases to debug, it's looking very good.
I even spent some time with valgrind to plug some leaks ( the internal test suite runs almost leakless, the real app is a sieve ;-)
All in all, if I can spend a little while with it during the week, I should be able to make a release that actually works.
Then, I can rewrite my SPF plugin for qmail, which was what sent me in this month-log tangent.
As a language wars comparison:
- The sloccount of raspf is 2557 (or 2272 if we use the ragel grammar source instead of the generated file)
- The sloccount of PySPF is 993.
So, a 2.6:1 or 2.28:1 code ratio.
However, I used 4 non-standard C libraries: bstrlib, udns, and helpers for hashes and exceptions, which add another 5794 LOCs.
So, it could be argued as a 8:1 ratio, too, but my C code is probably verbose in extreme, and many C lines are not really "logic" but declarations and such.
Also, I did not write PySPF, so his code may be more concise, but I tried my best to copy the flow as much as possible line-per-line.
In short, you need to write, according to this case, between 2 and 8 times more code than you do in Python.
That's a bit much!