Hello, with the optimizations for array (Zsh 5.3.1-dev-0): typeset -a array array[100]="" array[20,29]=( 1 2 3 4 5 6 7 8 9 10 ) we can now have somewhat "native" buffers in zsh. Above will not do anything with elements outside <20,30> range. One use case are 2-dimensional arrays, with e.g. the library I sent to zsh-users (ID: 21926). Created are e.g. 10 fixed rows of 100 elements. Then it's possible to fill rows by storing to computed indexes. Or to fill entire row by storing to . The same has been done with strings (Zsh 5.3), and string can be a native buffer too. That said, when I test with my screen-saver zsh-morpho (https://github.com/psprint/zsh-morpho), which uses hash tables for its pixel native buffer, arrays are still slower. It is 55.9 s vs. 27.3 s. Callgrind reveals the cause: 59,930,247,427 arrlen_le [/usr/local/bin/zsh-5.3.1-dev-0_O2] 15,675,075,695 szone_free_definite_size [/usr/lib/system/libsystem_malloc.dylib] 11,983,363,082 tiny_malloc_from_free_list [/usr/lib/system/libsystem_malloc.dylib] 8,037,180,402 tiny_free_list_add_ptr [/usr/lib/system/libsystem_malloc.dylib] 7,181,545,835 _platform_memmove$VARIANT$Nehalem [/usr/lib/system/libsystem_platform.dylib] (full data in attachement) The buffer has size 34x158=5372 elements. Without the optimizations that are the topic, time is 367 s. -- Sebastian Gniazdowski psprint3@fastmail.com