After a few months of being distracted, I've finally gotten off my ass and hammered the Y2038 fix for perl into production-worthy code. It came together rather quickly for someone that barely knows C. There's now a bleadperl branch with the fix. Hopefully it'll be merged into trunk soon.
$
./perl -wle 'print scalar localtime(2**34)'
Tue May 29 18:53:04 2514
I even fixed Time::Local.
$
./perl -Ilib -MTime::Local -wle 'print scalar localtime(timelocal(1, 2, 3, 4, 5, 2258))'
Fri Jun 4 03:02:01 2258
And at no loss of performance (ok, gmtime runs 10% slower). There is a limit, because it still uses the system's tm struct to return the date it will only go out to the year 2147483647 (tm.tm_year being a signed 32 bit integer). I could fix that in Perl... but for some reason I just don't feel like it's a priority.
I really need that branch knocked around to check its portability. I've taken care of everything I'm aware of. If you can't handle git, here's a patch. Please try it out and let me know.
Oh, and I desperately need experience C programmers to join the project. For example, the project has no installer because autoconf terrifies me. Visit the y2038 project home, sign up for the discussion list and say hi.
The y2038 project has expanded into creating a complete replacement for time.h. I'm next targeting Python and Ruby where I've identified 2038 bugs.
Oh, at some point I'll write up how the fix works.
Y2038 Grant Update: bleadperl branch fixes 2038 bug 0 Comments More | Login | Reply /