Jadpo is experimental and not ready for production. These docs follow the compiler's main branch as of 1 Nov 2026. What's built · Install 0.2.0
jadpo
Reference: Standard library

Standard types

SemanticVersion

On this page

A version (SemVer 2.0.0), written 1.2.3-alpha.1+build.5: ordered by its precedence, which ignores the build metadata.

Software; ordered; since Jadpo 0.1.0.

Make one

Build one from its fields, SemanticVersion { major: ... minor: ... patch: ... }.

text.parse(raw, as: SemanticVersion) reads one from its text; text that isn't one at all fails malformed, such as v1.0.0, 1.0 or 1.0.0.0.

Fields

Field Type
major Int
minor Int
patch Int
pre_release Text?
build Text?

Text, JSON and storage

text.from writes its canonical text, the one form text.parse reads back. JSON sends its canonical text as a string.

Text JSON
1.0.0-alpha "1.0.0-alpha"
1.0.0-alpha.1 "1.0.0-alpha.1"
1.0.0-alpha.beta "1.0.0-alpha.beta"
1.0.0-beta "1.0.0-beta"
1.0.0-beta.2 "1.0.0-beta.2"
1.0.0-beta.11 "1.0.0-beta.11"
1.0.0-rc.1 "1.0.0-rc.1"
1.0.0 "1.0.0"
1.9.0 "1.9.0"
1.10.0+build.5 "1.10.0+build.5"
2.0.0 "2.0.0"

It is stored in 5 columns, each named for the field, _ and its suffix. This is 1.0.0-beta.11:

Column Type Holds
<field>_major bigint 1
<field>_minor bigint 0
<field>_patch bigint 0
<field>_pre_release text 'beta.11'
<field>_build text NULL::text

Shown to people

text.format(value, locale:) shows it to people in their locale.

With locale: Locale.en_gb:

Value Shown
1.0.0-alpha 1.0.0-alpha
1.0.0-alpha.1 1.0.0-alpha.1
1.0.0-alpha.beta 1.0.0-alpha.beta
1.0.0-beta 1.0.0-beta
1.0.0-beta.2 1.0.0-beta.2
1.0.0-beta.11 1.0.0-beta.11
1.0.0-rc.1 1.0.0-rc.1
1.0.0 1.0.0
1.9.0 1.9.0
1.10.0+build.5 1.10.0+build.5
2.0.0 2.0.0

Operations

  • semver.satisfies(version: SemanticVersion, range: VersionRange) -> Bool: Whether version is inside range, as node-semver reads the range: in one of its sets joined by ||, meeting each comparison of it. A pre-release is inside only where a comparison of that set names a pre-release of the same major, minor and patch, so ^1.2.3 never takes 2.0.0-beta.1.

Like every standard type, it also has the contract's own operations: text.parse, text.from, text.format, json.read, json.write and ==. It is ordered, so < and sorting take it. Every standard type meets one contract says how they work.

Markdown for agents: /docs/types/type-semantic-version.md.Built from Jadpo main at e00e61f.