This PR translates the use of NonEmptyList for a more specialised NonEmptyVector that wraps the Chunk from zio.
The result is a large performance increase with lower memory usage because Chunks do not box primitives and are array-based. The zio.NonEmptyChunk is not used because it exposes some unsafe operations for the context of cilib and we therefore replicate the type internally without allowing the implicit conversion to Chunk from NonEmptyChunk.
This PR translates the use of
NonEmptyList
for a more specialisedNonEmptyVector
that wraps theChunk
fromzio
.The result is a large performance increase with lower memory usage because
Chunk
s do not box primitives and are array-based. Thezio.NonEmptyChunk
is not used because it exposes some unsafe operations for the context of cilib and we therefore replicate the type internally without allowing the implicit conversion toChunk
fromNonEmptyChunk
.