Sunday, November 27, 2011
“Everybody lies” or “An update on the updated Greylist Daemon”
Since it's been eighteen months since the previous update of the greylist daemon, I best do a release of what I have so far, even if it's not what I wanted.
I know, I know … I said that 1.0.12 would be the last version in the 1x line, but … well … as House says: “Everybody lies.”
I never did get around to fixing the bulk transfer problem, and thus, the protocol hasn't changed, so there's no need for a major bump in the version number. And there have been a few changes in the past eighteen months. I converted the codebase to C99; there are more metrics being logged; there's better self-monitoring (it'll restart in case of a crash) but there are two large changes I need to mention.
The first one: no more recursive make. After reading “Recursive Make Considered
Harmful,” I decided to give the non-recursive make a try. The greylist daemon isn't all that
big, and listing the dependencies in one large Makefile
shouldn't be that tedious. And even if so, it's pretty much a one-time
thing.
The major benefit of doing a non-recursive make (and making sure all the dependencies are labeled correctly) is the parallel make. Making everything straight through on my development box takes around two seconds. A parallel make, on the other hand, only takes one second.
Okay, that may not sound like much (“Big whoop!”) but I converted one of the code bases I develop at work to a non-recursive make model, and on our slow Solaris development system, the parallel build time (which I couldn't even do before the change) takes 1/10th the time of a normal build. But the trick, like I said, is to list all the dependencies correctly, or else a parallel make will fail.
The other large change is probably more controversial: I removed a bunch
of command-line options from the program, mainly the configuration options.
I never used them, and given how little response I get about the project (I
know of only one other person
two other people using the software) I decided they should go.
If anyone complains, I can always add them back. But for now, they're
gone.