Scarlet Devil Mansion

Version Numbers

I use Semantic Versioning 2.0 as a base for my version number schemes. My version numbers aren’t exactly Semver 2.0 compliant, but they’re similar, and they should be somewhat familiar to users of Semver 2.0. One big difference right off the bat is that I treat the version numbers of libraries and programs slightly differently.

To start off, all of my version numbers are based around the format <major>.<minor>.<revision>. This may have a few extra bits of metadata appended to it as well, but only in certain circumstances (see below). Each element always starts at 0 and is a non-negative integer with no upper limit.

When considering the version numbers for libraries:

Programs mostly follow the same pattern as libraries, except for the following:

Pre-1.0 Versions

I use versions in the format 0.x.y to indicate software that is alpha/beta quality, not widely field-tested, or generally still in heavy development. For example, CL-RemiMarshal’s API is mostly stable as of October of 2025, but because it only supports three formats right now, I don’t feel it’s quite ready for 1.x.y.

The rules for 0.x.y versions are slightly different:

Additional Metadata

Sometimes I may tack on extra metadata. This is done in one of three forms:

CPU Architectures

Sometimes I may include CPU architectures in my version numbers for binary releases of programs. These follow Slackware’s package naming format:

The <cpu> field here is one such as x86-64 or aarch64.