There are a couple of compiler directives like #line or _pragma_ that affect the way the compilation is done. A full list is here.
Mix is a typed language, but with a various degree of strictness. By default it is non-strict:
if (flag) 1 else [1] is permitted)data when no other type would be possibledata unless overriddenIn strict mode (since PR#892):
data still exists but must be explicitly hinted by the programmerYou can select strict mode with
_pragma_ {strictTyping:true}
at the beginning of a module.
Modules, functions and cells can be annotated with meta data. The key word _meta_ is followed by a constant JSON expression - which is by convention always an object:
module M _meta_ { ... } // module with meta data
def f : t _meta_ { ... } // function signature with meta data
cell c : t _meta_ { ... } // cell signature with meta data
The form is:
_meta_ { deprecated:true, expires: "yyyy-mm-dd", alternatives: [ "alt1", "alt2", ... ] }
The form is:
_meta_ { renamed:true, expires: "yyyy-mm-dd", replacement: "newname" }