Skip to content

Jule 0.0.11

Pre-release
Pre-release
Compare
Choose a tag to compare
@mertcandav mertcandav released this 23 Apr 11:31
· 1514 commits to master since this release

Language

  • add: buffered strings
  • add: type-enums (aka sum types)
  • update: enum syntax
  • update: exceptionals are not allowed in global scope
  • update: built-in copy method

Compiler

  • compiler: fix code generation for debug location information data
  • compiler: fix code generation for unused traits
  • compiler: code generation for common sub-ident
  • compiler: fix code generation for slice literals
  • compiler: fix code generation with —opt-access
  • compiler: fix and improve —opt-deadcode
  • compiler: fix optimization processing jumps some flags in some cases
  • parser: fix variadic operator parsing
  • sema: fix exceptional forwarding
  • sema: fix range iteration key variable analysis
  • sema: fix structure instantiation analysis
  • sema: fix goto statement analysis not catches exceptional scopes of function calls
  • sema: fix generic function instance modeling
  • sema: fix generic function analysis
  • sema: fix global type alias declarations can take ignore (_) ident

API

  • jule::Map: use FNV-1A algorithm for hashing
  • jule::Any: optimize type compatibility checking
  • jule::Any: use reference counting to manage internal allocation with optimizations
  • jule::Trait: optimize type compatibility checking

Standard Library

  • std::io: add the file, read_line_bytes and write_str methods to the FileStream
  • std::io: the read_line method returns str now of the FileStream
  • std::io:: add the write_str method to the ByteStream
  • std::io:: the stdin, stdout, and stderr methods returns FileStream now
  • std::fmt: print <nil> instead of nil for nil data
  • std::flag: fix dash processing
  • std::math::big: add the trailing_zeros method to the Int
  • std::math::rand: Rand’s methods are immutable now
  • std::math::rand: add the next, and nextn methods to the Rand
  • std::math::rand: Seed stands for u64 now
  • std::strings: add the append_byte methods
  • std::strings: optimized with buffered strings
  • std::jule::integrated: remove type_id function
  • std::jule::ast: use type-enum for node type aliases
  • use std::jule::sema: use type-enum for Stmt, and ExprModel type aliases

Legacy Support

Some standard library packages use type-enums and other new changes.
New source codes may will not compile with older compilers.