Right now, NArray#reshape will create a new NArray that points to the same buffer data. This means that multiple NArrays can share one memory buffer, which is problematic (especially because an NArray can be extended in place, at least in theory). We should default to the pattern of reshape! and reshape that are already seen in several operations (either you clone or perform the operation in place). If using the same buffer is really desirable, the user can do narr.dup.reshape!