A couple questions about that design. Is it worth paying the cost of an extra word in every slice, if strided slicing is rare in most programs? And when you wrap OS APIs that don't understand striding, do you have to use a different pointer type?
I don't think you could use OS APIs without boxing and unboxing data, but I think that's the case with every language except C.