Changelog
User-visible changes: language behavior, the command line, tooling, and documentation. Each release entry says what changed for a reader first and links to the page that covers it.
0.2.0
In development. Published as weekly 0.2.0.devYYYYMMDD snapshots.
The binding forms are realigned. Source written for 0.1.0 needs
migrating. Most old spellings raise errors; two change meaning, because
both shapes are valid under the new forms: (define [x] value) is now a
function x of no formals returning the value, where 0.1.0 bound x to
the value, and (class NAME SUPERS body ...) as an expression now binds
NAME and evaluates to None, where 0.1.0 built the class as a value.
varbinds a value anddefa function, in the scope the form appears in;varover a bracket pattern unpacks. See var and def.classdefines and binds a class;build-classbuilds one without binding it.define-classanddefine-dataclassare removed: write@dataclassaboveclass. See class.globalis a prefix overvar,def,classandsyntaxthat binds the form at the module;global var xis the idiomatic spelling ofdefine-global x, which remains as the primitive. In block form the word afterglobaldecides how the block reads, soglobal class NAME:may omit the superclass list.localis removed. See global.definetakes Scheme’s shape,(define [f x] body...)for a function and(define x value)for a value; the old(define f [x] body...)no longer matches. A return type bundles with the name as a typed formal does,(define [(f :: int) x] body...); the inline[f :: int x]of 0.1.0 is rejected. See define and Bindings and refs.syntaxdefines a transformer, scoped to the rest of a body when written inside one.extend-syntaxextends the module’s transformer from inside a body too, with the new arms present once the form has run. See extend-syntax.A decorator line over a declaration,
var xwith no value, is a compile error; a typed value,var x :: int 0, is decorated with its annotation kept. See decorate.define-demandinganddefine-coroutineare removed: write@demandor@coroutine-fnabovedef.The
import-fromblock layout is removed. A long member list wraps in the parenthesised form, with the continuation lines indented inside the parens; animport-from M:block now reads through the default block layout and does not import. See import-from.(vars)with no operand is the current namespace and replaces(locals);koskari-varsis its runtime counterpart, and namespaces print their members. See vars and koskari-vars.
0.1.0
Published as weekly 0.1.0.devYYYYMMDD snapshots; no final 0.1.0 was
released.
S-expressions and an indentation layout that reads to the same forms: a line with more than one element is a call, and a line ending in a colon opens a block.
A stackless bytecode evaluator with tail calls, generators, delimited and full continuations, dynamic wind, and ambient await.
Special forms, bootstrap macros,
define-syntaxwith template and procedural transformers, and hygiene.Python interoperability in both directions:
.kimodules import through the standard import system, and every value is a Python object.Runtime
matchpatterns, by-reference parameters, decorators with graft and call-time forms, fenced foreign literals, and module pragmas.The
koskaricommand,.kiocompilation, a language server, and editor support for Emacs, Helix, and TextMate.Documentation: a quickstart, the Little Koskari and From Python tutorials, the guide, and the reference.