Skip to content

Jule 0.0.8

Pre-release
Pre-release
Compare
Choose a tag to compare
@mertcandav mertcandav released this 11 Feb 12:44
· 1920 commits to master since this release

Language

  • add: the SMALLEST_NON_ZERO static field to the f64 type
  • add: the SMALLEST_NON_ZERO static field to the f32 type
  • add: underscore support for numeric literals
  • add: the ^ operator support to integer enums
  • update: the int, uint and uintptr types are not alias anymore, just compatible with itself
  • update: integer types are now compatible with itself only

About Versioning

Jule releases will no longer contain designations such as beta.
Release and compiler versions will be in this format.

Compiler

  • add: support for code emit from Jule source code into back-end
  • improve: the —opt-append applies optimization by skip capacity checking
  • improve: the —opt-math optimizes multiplications as bit-shifting if possible
  • improve: the —opt-math optimizes divisions as bit-shifting if possible
  • improve: normalize the pah information when production compilation enabled
  • fix: wrong define ordering because of cpp-linked dependencies
  • lex: fix octal literal lexing
  • parser: fix genericed structure declaration body missing error causes index overflow
  • sema: fix expression checking allows type declarations
  • sema: fix type safety checking for variadic arguments
  • sema: catch instantiation cycles
  • sema: fix type alias which is could not evaluated causes crash because of nil pointer dereferencing
  • sema: fix genericed type declaration checking that base type comes from another package
  • sema: fix evluation of genericed type declaration that base type comes from another package
  • sema: fix private methods of structures are allowed to access out of package
  • sema: fix use declaration checking

API

  • fix: debug compilation support of the unsafe_div function
  • fix: debug compilation support of the unsafe_mod function
  • fix: Str::operator< and Str::operator> returns wrong result
  • fix: Trait<Mask>::operator== always returns true because of comparing itself, thanks to @vil02
  • fix: Trait<Mask>::operator T(void) is not returns anything, thanks to @vil02

Standard Library

  • add: std::queue
  • add: std::stack
  • std::fs: use the int type instead of the i64 type for the File’s seek method
  • std::jule::sema: add the Kind trait and implement to known Jule types
  • std::jule::sema: add the OperandExprModel structure
  • std::jule::sema: update kind as &OperandExprModel of the BinopExprModel’s left and right fields
  • std::jule::sema: update kind as &OperandExprModel of the Assign’s l and r fields
  • std::jule::types: add the SMALLEST_NON_ZERO_F64 constant
  • std::jule::types: add the SMALLEST_NON_ZERO_F32 constant
  • std::jule::integrated: rename as emit the inline function
  • std::jule::integrated: add variadic argument to the emit for emit code from Jule source code
  • std::vec: add the fit, and clear methods to the Vec[T] structure
  • std::sys: use the int type instead of the i64 type for the seek function

Legacy Support

Upgrading from previous versions may encounter compilation issues as important aspects such as the type system have been updated.

Experimental

The Windows AMD64 build is not compiled on a local machine, unlike previous versions. In order to reduce the release process to a single device as much as possible, it was compiled on a Windows ARM64 machine. Therefore, relevant build is experimental. Please let me know if there are any problems.