Nocter v0.26.0
Nocter v0.26.0 Release Notes
Download nocter-v0.26.0-arm64-darwin.tar.gz
Nocter v0.26.0 adds normalized durations, monotonic elapsed-time measurement, and blocking sleep.
The only implemented host and native target remains arm64-darwin.
Normalized Durations
std/time.Duration represents a non-negative span as normalized whole seconds and subsecond
nanoseconds:
use std/time.Duration
let delay = Duration.from_milliseconds(250)
let seconds = delay.whole_seconds()
let nanoseconds = delay.subsecond_nanoseconds()
Constructors accept the complete u64 input domain without intermediate overflow. checked_add
returns absence when the normalized result is unrepresentable, and checked_sub returns absence
when its argument is greater than the receiver. Equality and strict ordering compare the
mathematical duration rather than its private representation.
Monotonic Elapsed Time
Instant observes one process monotonic-clock domain without exposing hardware ticks or target
frequency:
use std/time.Instant
let start = Instant.now()
let elapsed = start.elapsed()
Successive observations do not move backward. Elapsed measurement handles one complete wrapping
counter cycle, and every implemented target must make that cycle longer than one hundred years.
Conversion rounds down to the greatest representable nanosecond value not later than the measured
counter delta.
Blocking Sleep
The time namespace provides one blocking wait:
use std/time
use std/time.Duration
let delay = Duration.from_milliseconds(10)
time.sleep(&delay)?
A positive wait is rounded upward to the target wait resolution so it cannot become a zero wait.
Large waits are split into target-representable chunks. Interruptions are retried from a freshly
measured monotonic remainder; other target failures return std.time.sleep_failed.
All public duration, instant, and sleep operations publish noalloc. For sleep, this guarantees
only the absence of Nocter allocator requests: the call blocks the current thread and may perform
target operations.
Tooling and Runtime Reliability
Formatting, hover, completion, navigation, installed-standard checking, native tests, and the
public elapsed-time example consume the same source-backed std/time contracts. The ARM64 backend
orders each monotonic-counter observation instead of emitting a speculative bare register read.
The compiler-bundled standard declaration layout now has one physical profile authority shared by
production compilation and physical-standard qualification. Session and backend semantic layers
do not rediscover roles from standard-library paths or names.
Compatibility and Non-goals
v0.26.0 adds standard-library APIs and target primitives without adding language syntax or changing
existing source forms. It retains the v0.25.0 module, ownership, noalloc, native ABI,
package-integrity, and distribution boundaries.
This release does not add wall-clock time, Unix timestamps, calendar dates, time zones, time
parsing or formatting, async timers, scheduler integration, noblock, realtime, floating point,
a second target, or persistent compiler caches.
Candidate Qualification
The qualified release-content commit is
9ff855385a992def6d38a4d4f6b639f976c7bd24. Two independent locked workspace runs each passed
1,507 tests with zero failures and one explicitly ignored network test; the network test passed when
run explicitly. Warnings-denied all-target Clippy also passed in both independent targets.
Two clean optimized package builds produced the same 8,266,313-byte archive. Its SHA-256 is
a8898d54ca578a7bb9980d330fa48067df798a832a882ab1e047e17356833700. A fresh extraction passed
version, doctor, initialization, locked/offline package operations, every public example,
deterministic graph generation, native run and build, framed LSP analysis, installed-home
immutability, and compiler and standard-library tamper rejection.