to implement a portable API with the same semantics. This reverts commit c6eb365. This reverts commit 21e86ec. This reverts commit 56212fa.