Skip to main content

Stability and Distribution

Version 1 contract​

The APIs listed in the API reference, their documented defaults, and documented behavior form Morrow's 1.x source compatibility contract. Additive functionality is released in minor versions; fixes are released in patch versions. Intentional incompatible changes to this contract require a major version and migration notes. Underscore-prefixed helpers and undocumented implementation state are not part of the contract.

Dates use the proleptic Gregorian calendar, years 1–9999, and microsecond resolution. UTC is the default; naive values are explicit. Invalid calendar fields and unsupported timezone/locale inputs raise errors. Leap seconds are not represented. See timezones for repeated/missing local time and elapsed versus calendar arithmetic, and parsing for timestamp unit rules.

Locale support covers English, Simplified Chinese and Traditional Chinese. General natural-language parsing, arbitrary regular expressions, and Windows distributions are outside the supported surface.

Timezone rules belong to the installed ICU data. A rule update can change a historical or future offset without a Morrow API change. Use the same ICU data version when identical rules across machines are required.

Compiler and platform support​

PlatformMojo versions
Linux x86-641.0.0, 1.1.0
Linux ARM641.0.0, 1.1.0
macOS ARM641.0.0, 1.1.0

Precompiled .mojoc files are tied to the compiler and target platform. Source compatibility does not imply binary compatibility between Mojo versions. Select the release archive matching both; a new compiler version is supported after validation and publication of matching artifacts.

Named and local timezones require ICU. macOS provides it; on Debian/Ubuntu install libicu-dev. Conda declares ICU as a runtime dependency. UTC and fixed-offset operations do not require ICU.

Release verification​

Each release contains six archives and SHA256SUMS. Every archive is extracted on its target platform and tested by a consumer outside the source checkout before upload. The consumer exercises construction, parsing, formatting, duration arithmetic, DST folds, localization, lazy iteration, and expected errors.

sha256sum --check SHA256SUMS
# macOS:
shasum -a 256 --check SHA256SUMS

The checksum commands above expect all listed archives in the same directory. For a single downloaded archive, compare its hash with that filename's entry in SHA256SUMS.

For local development:

make test-package
python3 tools/check_package.py path/to/archive.tar.gz --mojo /absolute/path/to/mojo
make benchmark

test-package builds the library and runs the same isolated consumer check. Override MOJO and MOJO_BIN together when using a compiler outside .venv. The benchmark emits five samples each for UTC shifts, ISO round trips, IANA conversions and lazy ranges. Compilation time is outside the measured sections; checksums keep results observable. Compare medians on the same machine/compiler. Timings are informational, with no cross-machine CI threshold.

For test coverage and tooling limits, see testing.