Changes
Version 8.1
- [x64] Fix x64 backend with signed division
- [x64] Add .note.GNU-stack section needed by latest GNU ld
- Improve error reporting
- Function can no longer include global definitions
- The frontend can be reused independently for a scripting language
Version 8.0
- Handle static references (ref [T] id)
- Make function signature optional in references
- Remove default values
- Remove multiline strings
- Remove ++ and --
- Remove 'static', use shorter keywords (func, attr, def)
- Remove conditional 'then' operator
- Remove instance constants
- Remove 'begin' blocks
- Replace 'stype' and 'struct' by 'class'
- Multiple cases no longer need parenthesis
- Function can include global definitions (classes, functions, ...)
Version 7.0
- String literals can be multiline
- Accept '_' in integer literals
- Remove symbols
- Rename 'continue' to 'pass'
- Rename 'namespace' to 'module'
- Rename 'T.super' to 'T.Super'
- Rename 'T.cell' to 'T.Cell'
- Rename 'repeat' to 'loop'
- Replace 'T.size' with sizeof(T) (because of new enums)
- Multiple cases must use parenthesis
- Function can no longer include global definitions (structs, functions, ...)
- Defer accepts a block as well as a single statement
- Use 'static' instead of .static, .meta, .instance directives
- Add implicit context (.id)
Version 6.0
- Use '.' syntax
- Remove T.nil
- Remove 'enum' (use 'stype' only)
- +=, ... are strictly equivalent to assign + operation
- T [n] is now a pointer
- ^ is an alias for 'continue'
- Add extern variables
Version 5.0
- Default parameters
- Add namespaces and generic namespaces
- Replace 'cond' with 'if'
- Replace [n]T by T[n]
- Replace *[]T by T[]
- Replace *T by Pointer(T)
- Replace {...} by [...] for initializers
- Return type no longer infered
- Add 'Self' automatic alias
- Add 'enum': like stype, but with a check on switch statements
- Allow end-of-lines before ']' and ')'
- Change syntax of variadics: the parameter is named
- T! instead of 'T target'
- 'T cell' instead of 'T cellType'
- Parameters of imported functions can have a default value
- Replace T@id and e@id by 'ref (T) id' and 'ref (e) id'
- No more @(e)
- The main function is automatically exported with a C naming convention
- Implicit conversion between integers
- Implicit conversion between integers and Size
- Pointers are implicit on structures and arrays (by default everything is a reference).
- Genericity: '*' as parameter type
- Genericity: alias the real type with '* as id'
- Genericity: types and namespaces can have variadics
- Genericity: the variadic parameter can have a type
- Genericity: 'function +' become 'function *'
- Directives .instance .meta .static replace the 'meta' and 'static' keywords
- Directives .when[expr]
- Include a frontend for all backends
- Include the standard library
Version 4.6
- Allow struct, stype, function and const in a function or a macro
- Add namespace
- vtable accepts generics
- private for contextual definitions means only accessible from same module
- Bug fix: distance of pointer did not accept *[n]T ~ *[]T
Version 4.5
- Initialize / release in local declarations
- Get rid of typestream
- Add continue
- Bug fix: generic class structures not considered as structures
Version 4.4
- Add private context definitions
- Restrict trailing conditionals to return and break
Version 4.3
- Removed namespace (136 loc)
- Added 'meta const'
- Added 'meta struct'
- Added 'meta stype'
- Added 'meta var'
- Added 'instance const'
- Added 'instance struct'
- Added 'instance stype'
- Replaced 'static' by 'meta function'
- Replaced 'attr' by 'var'
- Static definitions are now prefixed with 'static'
- Removed 'method'
- Removed 'enum'
- Enumeration can be defined in any integer sub-type
- Replaced cast operator ':' by cast, upcast and downcast
- Renamed UnsignedXX to UintXX
- Extends and imports can be done inside types
- Return type declaration can use parameters
- Added vtable
Version 4.0
- defer
- begin
- Trailing conditionals (removed in 3.1)
- const in methods
Version 3.0
- Import of methods
- Genericity on self argument of method (method + name)
- No more {...}, Added var x : T
- eachextra, extrasize => vargseach, vargssize
- End everywhere
- Syntax of structures and array literals: { }
- Type-of syntax: @T
- Distinction between methods and functions calls
- Lookup algorithm (typespace)
- Functions, const, struct, enum and stypes can be nested
- Changed priorities of & | and ^ operators
- Trailing conditionals
Version 2.0
- No more 'static'
- Added 'Char32' type
- No more private definition in structures
- Enumeration are opaques (no match with integers, impossible to pass an enum value with wrong type)
- Returned type of recursive function is not inferred anymore, it must be explicitely declared
- Sub-types
- Faster compilation
- .ifdef, .ifndef, .ifeq, .ifne directives for conditional compilation
- 'Size' opaque type
Version 1.6
Version 1.5
Version 1.3
- The public name of function is always generated. Backend always use it as base name