proc wait*(self: Semaphore): Error {.gcsafe, locks: 0.}
proc post*(self: Semaphore): Error {.gcsafe, locks: 0.}