use alloca in calling ffi functions (if available)
detect endian-ness
use Math::Int64 for arguments
more types
support any integer or floating point return type