In order to avoid problems with bogus values of *default-pathname-defaults* (See 18:43:43 @ http://ccl.clozure.com/irc-logs/lisp/2012-04/lisp-2012.04.12.txt), as well as problems with pathnames that carry name or type components, EXT:MKDIR no longer accepts pathnames as inputs: only namestrings. And unlike before, EXT:MKDIR will not expect the user to pass a directory namestring (this assumption led (si:mkdir "/tmp/foo") not to work, as ECL expected (si:mkdir "/tmp/foo/"))
If you need to create directories from pathnames, use ENSURE-DIRECTORIES-EXIST, which now accepts a non-standard argument :MODE, playing the same role as MKDIR's mode value.
This has also revealed that some code will have to be revised, for it was written under the assumption that *default-pathname-defaults* has :NAME and :TYPE --- in other words, when ECL creates a pathname that is a directory, it will remain so. However, as that IRC log revealed, some people use a very strange setting for *d-p-d* which broke this expectation.
Finally, ECL now still outputs error messages taken from the C library, but notifies the user who is to blame for the scarcity of the message:
> (si:mkdir "/" 0)
Condition of type: SIMPLE-ERROR
Could not create directory "/"
C library explanation: Is a directory.