Skip to content

Jule 0.1.0

Compare
Choose a tag to compare
@mertcandav mertcandav released this 26 Sep 12:06
· 557 commits to master since this release

Language

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 the std::encoding::binary
  • improve: handling of read/write operations
  • builtin: add the str support for []byte types for the built-in append 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, and Sqrt methods to Int
  • std::flag: caught nil variables for the AddVar method of FileSet
  • std::sync::atomic: use constraints for general atomic functions
  • std::jule::ast: rename Ast as AST
  • std::jule::integrated: the move ToStr function
  • std::jule::sema: rename the PerformsRC method as GC of TypeKind
  • std::jule::sema: remove the IterRelation struct
  • std::jule::sema: remove the IterRelation field of the Var struct
  • std::jule::sema: rename the L field as Left and R field as Right of MultiAssign
  • std::jule::sema: rename the L field as Left and R field as Right of Assign
  • std::jule::sema: remove the IntegratedToStrExprModel
  • std::jule::sema: add the Decls field to MultiAssign
  • std::jule::sema: add the Captured field to AnonFnExprModel
  • std::jule::sema: add the Owner field to FieldIns
  • std::jule::sema: fix the GetKindStr method of FnIns may crash if declaration is not exist
  • std::jule::sema: add the Scope field to Match
  • std::jule::sema: add the Scope and Index field to GotoSt and Label
  • std::jule::sema: add the ChildIndex and StmtIndex to Scope
  • std::jule::sema: fix the IsMethod method of Fn is not reports true for traits
  • std::jule::sema: fix the GC method of TypeKind is not reports true for type enums
  • std::strings:: add the EqualFold function
  • std::unicode: add the SimpleFold function
  • std::unicode::utf8: fix DecodeRune and DecodeRuneStr
  • 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.