as a ringbuffer, the VecDeque should be bounded for some usecases e.g. the epilogue queue and key buffer. Here it's okay to lose unfetched objects. Also we need to have a max value for semaphore.
A bonus point would be using a lock free ring buffer.