Skip to content

Releases: julelang/jule

Jule 0.0.8

11 Feb 12:44
Compare
Choose a tag to compare
Jule 0.0.8 Pre-release
Pre-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.

Beta 0.0.7

11 Jan 14:09
Compare
Choose a tag to compare
Beta 0.0.7 Pre-release
Pre-release

Language

  • update rule: accept anonymous function fields as C++ functions of cpp-linked structures
  • add: default expression support for structure fields
  • add: the reserved to_str method for structures
  • add: support for the <, >, <=, >= operators to the str type
  • remove: built-in methods of the str type
  • remove: the built-in Dispose trait and add the reserved dispose method instead

Compiler

  • compiler: fix constant variable code generation
  • compiler: add information message for blank execution
  • compiler: improve c++14 compatibility
  • compiler: improve runtime panics
  • compiler: add the clang, gcc, cpp14, cpp17, and cpp20 variables to directive expressions
  • compiler: add the -—disable-rc option to disable reference counting
  • compiler: add the -—disable-safety option to disable safety measures
  • compiler: add the —-opt-cond optimization flag
  • compiler: fix code generation for testing
  • lex: fix column data processing
  • sema: add name selection support for impl types such as namespace selections
  • sema: fix checking for the built-in clone function
  • sema: fix constant bitwise eval
  • sema: add constant eval support for len field of constant strings
  • sema: the built-in copy function no more mutability error for immutable typed source argument

API

  • add: the clone function support for the f32, and f64 types
  • add: the <, >, <=, and >= operator overloading for the string type
  • improve: index out of range error messages
  • improve: panic messages of builtin swap functions
  • slices: slicing algorithm no more panics for nil slice and zero length slicing
  • traits: fix polymorphism processing

Standard Library

Release Period Update

Releases no more include build for the darwin-amd64 architecture.
Past builds has possible incompatibilities and etc. Sorry for that.
It can be still available via compile from source method, this is not darwin-amd64's end of life.

Beta 0.0.6

04 Nov 10:56
Compare
Choose a tag to compare
Beta 0.0.6 Pre-release
Pre-release

Language

Compiler

  • compiler: add production compilation
  • compiler: better compatibility with gnu compiler collection (gcc)
  • compiler: improve code generation
  • compiler: fix code generation for binary expressions
  • compiler: use std::process instead of C’s system call and fix signal code 17 problem
  • compiler: improve handling of external compiler errors
  • compiler: fix deadcode optimization
  • compiler: add deprecated, and test directives
  • lex: fix ! operator accepted as binary operator
  • parser: fix if-else chain parsing
  • parser: fix structure literal parsing
  • sema: fix declarations allowed for casting
  • sema: fix binary eval
  • sema: fix safety of builtin string conversions
  • sema: improve and fix error messages
  • sema: fix type safety of assignments
  • sema: fix safety of deferred scopes
  • sema: fix numeric type compatibility checking of binary expressions
  • sema: fix signed integer and unsigned integer compatibility
  • sema: fix invalid binary operator message of string type
  • sema: add prefix type support for numeric types
  • sema: fix built-in define processing of eval
  • sema: fix built-in define processing of type checker

API

  • improve: c++20 or higher compatibility with GCC
  • api: minor optimizations for atomicity functionalities
  • use: noexcept as possible
  • reimplement: panic calls and stop using exceptions
  • slice: fix allocations
  • str: optimize has_suffix method
  • remove: termination header
  • remove: signal header
  • rename ARCH_64BIT as ARCH_X64 and ARCH_32BIT as ARCH_X32

Standard Library

Compatibility and Legacy

Due to the innovations added with this update, older versions will not support some parts of the standard library and the compiler will be outdated to compile from source. Changes such as exceptions, integrated testing and assertions have also been implemented in the standard library. For this reason, older versions are in legacy status because they do not have new error handling approaches.

Beta 0.0.5

11 Oct 14:35
Compare
Choose a tag to compare
Beta 0.0.5 Pre-release
Pre-release

Warning
This is a later update. Beta 0.0.5 may have major bugs. It has been observed that it generates code in a way that may cause problems with binary eval. Use IR distributions for the latest and most stable version.

Release notes are here.

Beta 0.0.4

17 Sep 13:44
Compare
Choose a tag to compare
Beta 0.0.4 Pre-release
Pre-release

Release notes are here.

Beta 0.0.3

12 Aug 14:54
Compare
Choose a tag to compare
Beta 0.0.3 Pre-release
Pre-release

Release notes are here.

Beta 0.0.2

18 Jul 19:37
Compare
Choose a tag to compare
Beta 0.0.2 Pre-release
Pre-release

Release notes are here.

Beta 0.0.1

17 Jul 12:28
Compare
Choose a tag to compare
Beta 0.0.1 Pre-release
Pre-release

This is the first beta release of JuleC.
Includes bootstrapped compiler, standard library and API.

Note
There may be some critical bugs in this release.
Please report on Jule Issue Tracker if you have any issue.

Known Issues and Special Cases

  • The command version shows version as @master
  • You can't use directories named as version, tool or other compiler commands
  • Windows build not have statically linked STL.