• Kirill Smelkov's avatar
    libgolang: Adjust and require runtimes to provide semaphores with timeout · ae9b6f7d
    Kirill Smelkov authored
    Previously libgolang was specifying its runtime, among other primitives,
    to provide semaphore implementation with acquire and release methods.
    The release should be non-blocking operation, and the acquire should be
    blocking until the semaphore is acquired.
    
    However for efficient implementation of timers, we will need to have
    semaphore acquire that can also be instructed to time out.
    
    -> Adjust thread and gevent runtimes to provide that and adjust runtime
    interface specification to require that.
    
    This is generally backward incompatible change, but given that there is
    just a few libgolang runtimes, it, hopefully, should not do any
    real breakage. So I think it is ok to do it this way.
    
    For the reference - contrary to runtimes - the public user API of
    libgolang and pygolang - that most of the pygolang users actually use -
    is not changed at all. In other words there is no backward-compatibility
    issue for regular pygolang/libgolang users because for them pygolang
    stays 100% backward compatible.
    
    /proposed-for-review-on !26
    ae9b6f7d