Jule 0.1.0
Language
- add: return forwarding support for multi-ret functions
- add:
uint
support for pointer arithmetic - add: the
export
directive - add: global scope support for exceptionals
- update: closure implementation
- update: trait implementation
- update: memory initialization behavior
- update: integer overflow behavior
- update: jule memory model
Compiler
- minor improvements, optimizations and bug fixes
- add: the
--opt-iter
, and--opt-dynamic
optimization flags - major improvements for the
--opt-access
optimization flag (experimental) - fix: swap optimization analysis may cause crash
- fix: reference variable analysis
- fix: the
--opt-deadcode
optimization flags removes operator overloading methods - fix: deadcode analysis eliminates reserved methods
- fix: code generation for literals of binded structures
- fix: code generation skips safety checks for modulo and division assignment operators
- fix: tab indentation handling for logs
- fix: code generation for function and method declarations
- fix:
--opt-math
optimization flag - fix and improve: default value handling for declarations
- parser: fix missing expected tokens may cause crash
- parser: fix invalid syntax for short variable declarations may cause crash
- parser: fix anonymous function declaration and function type declaration handling
- parser: fix variable declaration in scope with invalid syntax may cause crash
- parser: fix parser may crash when parsing match-case statements with invalid syntax
- parser: fix unsafe function type parsing
- parser: fix single declarative assignment statement handling
- parser: fix unhandled left operand error of assign statement may cause crash
- sema: fix function call argument analysis
- sema: fix mutability analysis for slices, arrays, and maps
- sema: fix handling of
CastingExprModel
tokens - sema: fix type analysis for
*unsafe
types may cause crash - sema: fix mutability analysis for destionation slice parameter of the built-in append function
- sema: fix interior mutability analysis for closures
- sema: fix declarative multi-assign analysis
- sema: fix trait implementations with failed type analysis may cause crash
- sema: fix type comparability analysis reports true for arrays with not-comparable element type
- sema: fix dependency collection for structures with type aliases
- sema: fix non-generic function handling for evaluation
- sema: fix global variable analysis may be wrong, especially when using the use declaration namespace in initialize expression
- sema: fix comparable analysis of binary eval
- sema: fix dynamic type annotation analysis of generic function calls
- sema: fix and optimize goto statement analysis
- sema: fix trait method evaluation always returns immutable data even base data is mutable
- sema: fix mutability analysis of map-lookup assignments
- sema: fix map-lookup assignment type compatibility analysis
- sema: fix mutability analysis of the built-in
error
function - sema: fix operator syntax analysis for assignments
- sema: fix matched type duplication analysis of match-type statements
- sema: fix reference collection of variables
- sema: fix casting expression handling
- sema: fix mutability analysis of variadic expressions
- sema: add while-next iteration support to missing return analysis infinite iteration detection
- sema: caught not-instantiated structure type declarations for evaluation
- importer: fix duplicated package analysis
Standard Library
- minor bug fixes and improvements
- add:
std::encoding::json
- add:
std::runtime
- reimplement:
std::comptime
- remove:
std::vec
- remove:
std::queue
- remove:
std::stack
- remove:
std::thread
- rehandle: the
Append
method variants of thestd::encoding::binary
- improve: handling of read/write operations
- builtin: add the
str
support for[]byte
types for the built-inappend
function - builtin: remove: the
assert
function - std::sync: reimplement
Mutex
- std::slices: add the
SortFunc
function - std::strings: add the
Compare
function - std::io: the
Scanner
forwards any exceptional - std::math::big: fix and optimize multiplications
- std::math::big: fix subtractions
- std::math::big: bit shifting methods takes
int
now - std::math::big: add the
DivMod
, andSqrt
methods toInt
- std::flag: caught nil variables for the
AddVar
method ofFileSet
- std::sync::atomic: use constraints for general atomic functions
- std::jule::ast: rename
Ast
asAST
- std::jule::integrated: the move
ToStr
function - std::jule::sema: rename the
PerformsRC
method asGC
ofTypeKind
- std::jule::sema: remove the
IterRelation
struct - std::jule::sema: remove the
IterRelation
field of theVar
struct - std::jule::sema: rename the
L
field asLeft
andR
field asRight
ofMultiAssign
- std::jule::sema: rename the
L
field asLeft
andR
field asRight
ofAssign
- std::jule::sema: remove the
IntegratedToStrExprModel
- std::jule::sema: add the
Decls
field toMultiAssign
- std::jule::sema: add the
Captured
field toAnonFnExprModel
- std::jule::sema: add the
Owner
field toFieldIns
- std::jule::sema: fix the
GetKindStr
method ofFnIns
may crash if declaration is not exist - std::jule::sema: add the
Scope
field toMatch
- std::jule::sema: add the
Scope
andIndex
field toGotoSt
andLabel
- std::jule::sema: add the
ChildIndex
andStmtIndex
toScope
- std::jule::sema: fix the
IsMethod
method ofFn
is not reports true for traits - std::jule::sema: fix the
GC
method ofTypeKind
is not reports true for type enums - std::strings:: add the
EqualFold
function - std::unicode: add the
SimpleFold
function - std::unicode::utf8: fix
DecodeRune
andDecodeRuneStr
- std::unsafe: the
Slice
function takes an argument for capacity
API
The API is now largely implemented by the compiler, adhering to the Jule Runtime implementation. Many important functions and functions have been implemented with Jule. Please check the API documentation for changes.
Legacy Support
This can totally be described as a breaker. It includes radical changes in many places such as standard library, compiler and API. Therefore, updating the version may require additional effort, but it is definitely recommended.
About Releases
Jule was in the pre-release phase for more than 1 year and the pre-release qualification was removed with jule0.0.15
. With this version, there is a real beta version and it is called jule0.1.0
. This is not a stable release and does not guarantee any particular stability.