Releases: julelang/jule
Jule 0.0.8
Language
- add: the
SMALLEST_NON_ZERO
static field to thef64
type - add: the
SMALLEST_NON_ZERO
static field to thef32
type - add: underscore support for numeric literals
- add: the
^
operator support to integer enums - update: the
int
,uint
anduintptr
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<
andStr::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 thei64
type for theFile
’sseek
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 theBinopExprModel
’sleft
andright
fields - std::jule::sema: update kind as
&OperandExprModel
of theAssign
’sl
andr
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
theinline
function - std::jule::integrated: add variadic argument to the
emit
for emit code from Jule source code - std::vec: add the
fit
, andclear
methods to theVec[T]
structure - std::sys: use the
int
type instead of thei64
type for theseek
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
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 thestr
type - remove: built-in methods of the
str
type - remove: the built-in
Dispose
trait and add the reserveddispose
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
, andcpp20
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 thef32
, andf64
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
- add: std::bytes
- add: std::encoding::csv
- add: std::math::cmplx
- add: std::strings
- std::mem: add the
free
function - std::io: add the
ByteStream
structure - std::jule::constant: add string support to the
gt
, andlt
methods of theConst
structure
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
Language
- reimplement: directives
- add: exceptionals
- update: file annotation and build directive for platform specific programming
- add: C support for interoperability
- add: special syntax to fill arrays
- update: type safety rules of enums
- add:
production
, andtest
variables for directive eval - reimplement: aliased use declarations
- add: integrated testing
- add: modules
- add: internal packages
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 fixsignal code 17
problem - compiler: improve handling of external compiler errors
- compiler: fix deadcode optimization
- compiler: add
deprecated
, andtest
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
asARCH_X64
andARCH_32BIT
asARCH_X32
Standard Library
- add: std::testing
- remove: std::errors
- remove:
std::runtime
and move content intostd::env
- reimplement: std::debug
- builtin: add
assert
function - builtin: add
swap
method to slice and array types - builtin: remove
Error
trait - std::flag: use exceptionals for error handling
- std::io: use exceptionals for error handling
- std::process: add
Cmd
struct - std::jule::integrated: add
inline
function - std::jule::integrated: remove
puts
function - std::jule::ast: remove
is_fn_call
method ofExpr
struct - std::jule::sema: remove
BUILTIN_TRAIT_DISPOSE
global - std::jule::sema: remove
BuiltinRealCallExprModel
,BuiltinDropCallExprModel
,BuiltinErrorTraitSubIdentExprModel
structs
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
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
Release notes are here.
Beta 0.0.3
Release notes are here.
Beta 0.0.2
Release notes are here.
Beta 0.0.1
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.