MTLLibrary can only be used if any .metal files are available. Else it throws runtime error “failed assertion `Metal default library not found’”. Define it only when you are using the source.
One cannot use newBufferWithBytesNoCopy with memory allocated using malloc. Only vm_allocate or mmap can be used.
The size of a buffer should not exceed 256MB. And there is no limit on number of buffers used. The cap is 261 buffers on my Mac Mini (8GB DDR3, 1536MB framebuffer). This sums up to 261*256MB. After running on 10MB chunks, around 67.6 GB of GPU memory has been allocated. When was the last time you heard of such a big GPU memory? (The biggest I heard was 12GB).
Seems like Apple is updating their Metal Programming Guide Docs. New features to MTLDevice has been added yesterday (5 July 2015).