Fixes parent-child communication. New release.
+ Spec for activity checks
+ A forked server implementation
+ Starting out with conversion to YARD
! Fixes sporadic hang
+ Replaces IPC with cod based implementation
! Fixes hanging results
This was because of a data race in the line @result ||= Result.new. Results are now
generated early, and not lazy as before.
! Fixes early child death exception bug.
Children would write an answer that would then not be consumed.
More defensive code and less offensive language.
(Child death is a horrible concept to drag around in code, even as
+ Making the code more sensible to programmer error
and detecting a few in the process..
+ an example where the result becomes never available. Reason?
+ more shutdown of schedulers (cleaner specs)
+ Comment on the constraints OneTimeFlag tries to fulfill
+ Schedules blocks as well as method calls
This was requested by Florian Hanke.
! Lion processor detection
...they should've left that alone
! fixes a timing issue in ruby 1.8.7
! working 1.8 lock implementation
I know this is a bad bad busy loop. But I also know that the threading primitives Ruby includes fail me once again at this point.
+ Updated README and refactored some code
+ Default strategy now detects cpu cores
This eliminates the need for tuning towards the system you run on. You should normally just use procrastinate/implicit and not worry about anything.
+ renames 'create_proxy' to just 'proxy'
+ implicit (global) usage of the scheduler
+ tags threads
+ reorders spawn->died notifications
+ Ruby 1.9 and 1.8 compatibility (for now)
+ Aiming for working 1.9 and 1.8 support
+ ruby 1.8.7 works with this
I will try to track down the 1.9 bug.
. Cannot deadlock there...
+ Use pipe to block thread
It seems that ConditionVariables and traps have a bad interaction where
the trap will wait for a mutex before executing, thereby blocking all
+ documents a deadlock
+ produces ChildDeath if child dies early
When the child process dies this exception will notify everyone waiting
on a result.
+ This is good enough (for today)
+ Fixing the race condition
This still hangs when all debug statements are gone...
+ Without the debug output
+ This seems to work
+ A basic comm setup