Hello J.P.,
I usually use host-based authentication with ident to connect to PostgreSQL from trusted machines, so I've been specifying a password of NIL for a long time. However, when passwordless authentication fails and NIL is given as a password, POSTMODERN:CONNECT will behave erratically.
Hm, yes, I really shouldn't be passing un-type-checked parameters to functions compiled at (safety 0).
I've applied a patch that adds your check-type forms, and made a change to allow NIL as password (the authentication code will raise an error when the server demands a password and none was given).
I did not apply the full doc changes you submitted. I can see the value of thoroughness, but I think telling people that a usename should be a string etc. seems a superfluous (especially when it has to be done four times -- two docstrings and two html documents)
I also humbly suggest not optimizing for safety 0.
I see your point, yet when I profiled postmodern (back in 2007, on SBCL, not sure if this still holds) the speed difference between (safety 1) and (safety 0) was very significant (25% range, if I remember correctly). Memory safety in a chaotically-typed language like CL means a *lot* of checks. Feel free to run some benchmarks again, and see what you get (my benchmark consisted of inserting a lot of data, and making queries that returned huge result sets).
Best, Marijn