Skip to content

Nocter v0.10.0

Latest

Choose a tag to compare

@rvo-jp rvo-jp released this 09 Aug 12:42
· 1 commit to main since this release

Nocter v0.10.0 Release Notes

Download nocter-v0.10.0-arm64-darwin.tar.gz

Nocter v0.10.0 makes source organization, package visibility, and the installed standard library
use one semantic module model. It also completes native execution support for every built-in integer
type.

Native Integer Execution

All ten built-in integer types now work as ordinary native values:

let narrow: i8 = -8
let count: u64 = 4_000_000_000
let offset: isize = -1

Bindings, calls, returns, aggregates, fixed arrays, slices, generic Vec<T> values, iteration,
arithmetic, comparison, shifts, conversion, and interpolation preserve each integer's width and
signedness. Checked overflow, division failure, shift bounds, ABI extension, and memory access use
one compiler-owned integer description instead of type-name exceptions.

Directory Modules and Focused Sources

A directory containing index.nct defines a module. Its index.nct owns the public surface, while
explicitly imported .nct files contribute private implementation to that same module:

string/
    index.nct
    search.nct
// string/index.nct
use ./search.nct

pub func contains(text: &str, query: &str): bool {
    return contains_impl(text, query)
}

nocter.nct now contains package documentation and directives only. Package targets select a
directory module with module; the former entry directive and one-file-per-module model are not
retained as compatibility paths.

Public callable declarations may remain in index.nct while their bodies live in focused source
files. Compiler checking, native lowering, diagnostics, hover, definition, references, and rename
preserve one callable identity across the declaration and body.

Hierarchical Visibility

Visibility is expressed relative to the declaring directory module:

func local(): void
pub(./) func descendants(): void
pub(../) func parent_tree(): void
pub(../../) func grandparent_tree(): void
pub(/) func package_wide(): void
pub func universal(): void

Private declarations remain inside their module. Relative scopes expose a declaration to one
ancestor subtree, pub(/) exposes it throughout its package, and bare pub exposes it to other
packages. Re-exports cannot widen the original visibility. The removed pub(nocter) spelling has
no compatibility parser.

One Implicit Standard Package

Every package and single-file program receives exactly one std dependency from the active Nocter
installation. The compiler validates the installed std/nocter.nct name and version against the
toolchain VERSION; user dependencies and generated locks cannot replace or shadow it.

Standard-library source uses the same package, directory-module, source-composition, and visibility
rules as user code. Permission to declare compiler primitives remains a separate capability of the
exact installed standard-package identity, not a side effect of pub(/) or a directory name.

Compatibility and Limits

Code using file-defined modules, public declarations in implementation sources, #executable
entry, or pub(nocter) must migrate to the directory-module and hierarchical-visibility forms.
The supported host and target remain arm64-darwin.

This release does not add floating-point types, arbitrary-width integers, friend modules, named
visibility namespaces, wildcard source discovery, separate compilation, third-party trusted
packages, unsafe source constructs, dynamic linking, or a stable cross-version ABI.

Qualification

The v0.10.0 candidate passed clean and incremental complete repository verification, with 3,437
tests per run plus formatting, documentation generation, and warnings-denied Clippy. Two
independently created archives had equivalent extracted content.

The published arm64-darwin archive is 3,465,760 bytes with SHA-256
fe47f69b274a23c8d83bd28d9bb28b3e3ee3a43f02bb16ed0151a42345ce61c9. A fresh extraction without
environment configuration passed package creation, locked/offline check and native test,
deterministic graph generation, run, explicit build, direct Mach-O execution, and the complete LSP
initialize, initialized, shutdown, and exit lifecycle.

The public download and version history are available from the release index.