|
Packit |
b040ce |
### CI status
|
|
Packit |
b040ce |
|
|
Packit |
b040ce |
|
|
Packit |
b040ce |
|
|
Packit |
b040ce |
|
|
Packit |
b040ce |
### Introduction
|
|
Packit |
b040ce |
|
|
Packit |
b040ce |
The goal of this project is to provide a tiny library that would facilitate the
|
|
Packit |
b040ce |
common operations with sizes in bytes. Many projects need to work with sizes in
|
|
Packit |
b040ce |
bytes (be it sizes of storage space, memory,...) and all of them need to deal
|
|
Packit |
b040ce |
with the same issues like:
|
|
Packit |
b040ce |
|
|
Packit |
b040ce |
* How to get a human-readable string for the given size?
|
|
Packit |
b040ce |
* How to store the given size so that no significant information is lost?
|
|
Packit |
b040ce |
* If we store the size in bytes, what if the given size gets over the ``MAXUINT64``
|
|
Packit |
b040ce |
value?
|
|
Packit |
b040ce |
* How to interpret sizes entered by users according to their locale and typing
|
|
Packit |
b040ce |
conventions?
|
|
Packit |
b040ce |
* How to deal with the decimal/binary units (*MB* vs. *MiB*) ambiguity?
|
|
Packit |
b040ce |
|
|
Packit |
b040ce |
Some projects have all the above questions/concerns addressed well, some have
|
|
Packit |
b040ce |
them addressed partially some simply don't care. However, having (partial)
|
|
Packit |
b040ce |
solutions implemented in multiple places every time with a different set of
|
|
Packit |
b040ce |
bugs, differences in behaviour and this or that missing is a waste of time and
|
|
Packit |
b040ce |
effort. We need a generally usable solution that could be used by every project
|
|
Packit |
b040ce |
that needs to deal with sizes in bytes.
|
|
Packit |
b040ce |
|
|
Packit |
b040ce |
Since the goal is to provide a solution as much generally usable as possible the
|
|
Packit |
b040ce |
implementation has to be small, fast and written in a language that can be
|
|
Packit |
b040ce |
easily interfaced from other languages. The current obvious choice is the *C*
|
|
Packit |
b040ce |
language with thin bindings for other languages.
|