> What about Java?

java.util.Date (1.0) does it.

"In all cases, arguments given to methods for these purposes need not fall
within the indicated ranges; for example, a date may be specified as
January 32 and is interpreted as meaning February 1."

java.util.Calendar and java.util.GregorianCalendar (1.1) distinguish
between "lenient" and "non-lenient" calendars. However, when I tried to do
something with it, both modes seemed to allow April 31, not even
converting to May 1. I don't really understand what I may have done wrong.

> It's intended use for enterprise applications

You mean Ruby/Perl aren't intended for enterprise applications?

> Back a couple of decades ago when machine cycles and bytes were some 100x+ 
> times more expensive, I think it was pretty rare for system calls to check 
> the validity of arguments,

I am all for Exceptions, except in this case.

matju