Sometimes you don't have the time to wait.
Although most Lisps have a mechanism to write code that says "do this for 5 seconds and give up if you're not done", they didn't agree on exactly what that mechanism should look like. Trivial-timeout steps into the gap with a platform independent syntax for timeouts. You use it like this:
(with-timeout (duration) (run-some-long-running-code))
duration (a time in seconds) is exceeded, then a
timeout-error will be signaled. A more idiomatic example would probably be:
(handler-case (with-timeout (60) (make-microwave-popcorn)) (timeout-error (c) (declare (ignore c)) (print "I wanted to make popcorn, but who has the time these days")))
Here's the full skinny:
body for no more than
seconds is exceeded, then a timeout-error will be signaled.
seconds is nil, then the body will be run normally until it completes or is interrupted.
the current trivial-timeout repository is on github and you can clone it using:
git clone git://github.com/gwkkwg/trivial-timeout
5 Jan 2013 - Just cleanup, nothing exciting happening here.