<div dir="ltr"><div><div><div><div><div><div><div><div><div>The project: <a href="https://github.com/band115/ecirca">https://github.com/band115/ecirca</a><br></div>ecirca is a library for working with fast mutable circular arrays of integer values. It's NIF-based, heavily tested (Proper is an outstanding tool for testing you NIF-related stuff!) and it's in production for more than two years now.<br>
<br></div>Features include:<br></div>-store integers of different sizes (int16, int32, int64 minus 4 bits for special values described below);<br></div>-quickly set them;<br></div>-"push" values, removing ones at the end (the size of array is provided at it's creation and can't be changed later);<br>
</div>-update values using aggregate functions, such as "min", "max", "sum" and "avg";<br></div>-store special values, represented as atoms of 2 different types: "weak" ones that can be rewritten by integer if the value is updated ("empty" is such atom) and "strong" ones that can't;<br>
</div>-export an entire structure as an Erlang binary and load it back.<br></div></div>