move `out_of_memory` to `fail`
make the vec module available without libc