Strings: "0.4.6". Here we could follow what cargo does and have something like "^0.4.6" meaning something that we don't mind patches or minor versions and that both are compatible.
Structures {major: 0, minor: 4, patch: 6}.
Intengers: 1, 2 ... Only allowing one number to represent versions, or at least API breaking versions.
How are versions represented?
Depends on #19