Jadpo is experimental and not ready for production. These docs follow the compiler's main branch as of 30 Oct 2026. What's built · Install 0.1.0
jadpo
Reference: Configuration and time

Configuration and time

Durations

A duration is a length of time, such as a timeout. In source it is always a number and a unit, 500ms, 30s, 5m, 2h or 30d. ISO 8601 text ("PT5M") is used only on the wire.

example
/// How long a request may take.type RequestTimeout = Duration {    max: 30s}/// How long a reminder comes before its due time.type ReminderNotice = Duration {    min: 1m    max: 30d}test "durations are written with a unit, and add up" {    var allowed: RequestTimeout = 5s    assert allowed + 500ms == 5500ms    var notice: ReminderNotice = 2h    assert notice - 30m == 90m}

30d means exactly 30 × 24 hours, which is what a retention period or a token lifetime means. Moving a date by calendar days is a separate operation on CalendarDate (Zones and local times).

On the wire

The runtime writes a duration as ISO 8601 in hours, minutes and seconds: "PT5M", "PT1.5S", "PT720H" for 30d, and "-PT5M" for a negative one. A request's JSON, query string, path and headers send it the same way, and days ("P1DT2H") are accepted as 24 hours each. 5m is the source's spelling, and a request that sends it is refused.

A setting is the exception. It is read as source writes it, 5m, and also as the canonical ISO 8601 text, PT5M, as text.parse reads it, so a value copied from a response or a log works as a setting too. Every boundary reads a standard type the same way (Every boundary through the contract).

Markdown for agents: /docs/durations.md.Built from Jadpo main at a707efb.