Repository navigation
v0.2.0
synod check now understands whole programs: it loads modules, finds the
phrase every sentence calls, and checks types and contexts, reporting every
compile-time error of specification v0.2.1. Running programs
(synod run) comes in the next release.
Added
- Language types and their acceptance rules (
list of T,map of K to V,
node typesNodeandp.Node). - The standard library, embedded in the binary: every phrase of the std
catalog, with native declarations and the phrases written in Synod. - Module loader:
synod.mod, package graph, main files next to their
library,std/imports, remote modules from the
module'svendor/folder, import cycles. - Fixes that need the package loaded, for
synod fmt: record settings
order, name case, and a dropped own-package qualifier. synod checknow checks whole programs, not just their form. It finds
the phrase every sentence calls, checks the types of values (arguments,
operands, list and map items, node types such asraft.Node, and
results), infers the type of{}from how it is used, and reports
every error code of the specification:type-mismatch,ambiguous-empty,
missing-result,value-as-statement,action-as-value,context
(what may run in node, main, check and look code) andforeign-state
(node code that touches another node's state). Every example and every
std package checks clean.
Changed
synod fmtapplies the fixes above when the package loads; a file in a
package that does not load is formatted as before.- Diagnostic paths are shown relative to the working directory when inside it.
- CI and release workflows use the Node 24 versions of GitHub Actions.