April 23: Language definition updated to use the terms "declaration" and "definition" consistently. A declaration merely announces the existence of some value or type with a given name; a definition says exactly what that name refers to.
April 20: The static semantics rules were clarified for cast
expressions.
April 20: The static semantics and language definition were changed to prohibit comparison of a boolean and an object in a ==
or !=
expression. This feature is optional.
April 19: The static semantics rules were clarified with
respect to type agreement between modules and their interfaces. It is okay to
require strict type equality rather than the more flexible rule described in the
semantics (in English). For conformance of methods between types and their
supertypes you are still required to implement the full contravariant/covariant
rule. The language definition was also clarified regarding export from a module
interface of identifiers generated by a uses
declaration.
This feature is also optional.
April 18: Static semantics of ==
updated to agree
with language definition. It is okay (and harder) to implement the old static
semantics in any case.
April 16: Iota+ language definition updated to clarify semantics
of ++
and --
statements.
March 31: Iota+ language definition, static semantics made available.
March 7: "Hello, world" example changed to have correct signature for function main
March 1: The infamous array constructor rule has been added to the static semantics
February 18: The type of while (true)
was changed to
none and function bodies are allowed to have type none.
This makes more of the example programs type-check successfully.