Skip to content

Beta 0.0.6

Pre-release
Pre-release
Compare
Choose a tag to compare
@mertcandav mertcandav released this 04 Nov 10:56
· 2070 commits to master since this 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.