From: Nikodemus S. <nik...@ra...> - 2009-05-21 15:35:44
|
2009/5/21 Nathan Froyd <fr...@gm...>: > On Fri, May 15, 2009 at 8:38 AM, Attila Lendvai > <att...@gm...> wrote: >> due to 1.0.28.34: convert once-used DEFMACROs to EVAL-WHEN'd SB!XC:DEFMACROs >> >> compiling this for example: >> >> (defun x () >> (sb-unix:unix-gettimeofday)) >> >> results in errors, because syscall* is not available in the target >> anymore, while the aforementioned function contains a call to it and >> is also inlined. > > 1.0.28.62 should fix all instances of syscall breakage outside of SBCL. ...and 1.0.28.66 adds SB-EXT:GET-TIME-OF-DAY (on Windows too, including the microseconds which gettimeofday() there left out.) Something like this should be future proof without breaking things on older SBCL releases, for use with usocket and local-time: #+sbcl (defun sbcl-get-time-of-day () "Seconds and microseconds since the Unix epoch (1st of January 1970.)" #+#.(cl:if (cl:find-symbol "GET-TIME-OF-DAY" :sb-ext) '(and) '(or)) (sb-ext:get-time-of-day) #+#.(cl:if (cl:find-symbol "GET-TIME-OF-DAY" :sb-ext) '(or) '(and)) (multiple-value-bind (res sec usec) (sb-unix:unix-gettimeofday) (declare (ignore res)) (values sec usec))) Seriously, if you are aware of other SB-UNIX symbols being used out there, I would like to know. It's not that we want to deliberately break things, but if people are dipping into internals I at least would prefer to provide supported alternatives so that we can refactor our internals with impunity. Cheers, -- Nikodemus |