Skip to content

Jule 0.1.2

Latest
Compare
Choose a tag to compare
@mertcandav mertcandav released this 08 Jan 13:17
· 136 commits to master since this release

Language

Compiler

  • fix: global variable initialization ordering
  • fix: exceptional optimizations of --opt-exceptional flag
  • fix: output of the help command, thanks @lareii for the fix (#118)
  • fix: code generation for anonymous function calls
  • fix: code generation for anonymous functions and other implicit analysis productions
  • fix: code generation for empty slice literal
  • fix: boundary size variable analysis of the --opt-access optimizations
  • fix: boundary exhibit variable analysis of the --opt-access optimizations
  • parser: fix statement separations and insertions
  • parser: fix variable parsing invalid syntax error logging
  • parser: fix empty case expression detection
  • parser: fix co keyword allowed without any expression
  • parser: fix semicolon terminated empty statements may cause crash
  • sema: fix map type analysis for cycles
  • sema: fix import path analysis may crash when analysis standard library paths
  • sema: fix function type string representation conversion
  • sema: fix parsing of unicode code points in string literals
  • sema: fix collection of variable dependencies for global variables
  • sema: fix use declaration to root module may cause crash
  • sema: fix cycle analysis of type aliases
  • sema: caught initialization cycles for global variables
  • sema: generate errors for invalid escape sequences
  • sema: improve map type key constraint analysis
  • sema: add responsiveness for the key and value pairs of the map literals
  • sema: add built-in panic call support for exception handler scopes with no required use statement

Standard Library

  • std/bufio: add the FinalToken
  • std/bufio: remove the ScannerCfg struct
  • std/bufio: remove the NewCfg static method of the Scanner
  • std/bufio: add the Split, and Buffer methods to the Scanner
  • std/bufio: rename the SplitLines function as ScanLines
  • std/bufio: update SplitFunc and Scanner behavior (add final token support)
  • std/bytes: reimplemented
  • std/comptime: add the Chan field to Kind
  • std/comptime: add the channel support to the Elem method of comptimeTypeInfo
  • std/encoding: add the JSONEncoder, JSONDecoder, TextEncoder, and TextDecoder traits
  • std/encoding/json: fix string literal validation
  • std/encoding/json: add the EncodeJSON field to EncodeError
  • std/encoding/json: add the custom encoder and decoder method support
  • std/fmt: use io::Writer instead of os::File for the Fprint, Fprintln, and Fprintf functions
  • std/jule: rename the InitFn as InitFunc
  • std/jule/ast: add the CanSend, ChanRecv, ChanType, and Select structs
  • std/jule/ast: rename the MatchCase as Match
  • std/jule/ast: rename the VarDecl as Var
  • std/jule/ast: rename the TypeDecl as Type
  • std/jule/ast: rename the TypeDeclKind as TypeKind
  • std/jule/ast: rename the IdentTypeDecl as IdentType
  • std/jule/ast: rename the SubIdentTypeDecl as SubIdentType
  • std/jule/ast: rename the NamespaceTypeDecl as NamespaceType
  • std/jule/ast: rename the SptrTypeDecl as SptrType
  • std/jule/ast: rename the SlcTypeDecl as SliceType
  • std/jule/ast: rename the TupleTypeDecl as TupleType
  • std/jule/ast: rename the PtrTypeDecl as PtrType
  • std/jule/ast: rename the ArrTypeDecl as ArrayType
  • std/jule/ast: rename the MapTypeDecl as MapType
  • std/jule/ast: rename the RetTypeDecl as RetType
  • std/jule/ast: rename the EnumDecl as Enum
  • std/jule/ast: rename the TypeEnumDecl as TypeEnum
  • std/jule/ast: rename the EnumItemDecl as EnumItem
  • std/jule/ast: rename the TypeEnumItemDecl as TypeEnumItem
  • std/jule/ast: rename the TypeAliasDecl as TypeAlias
  • std/jule/ast: rename the TraitDecl as Trait
  • std/jule/ast: rename the StructDecl as Struct
  • std/jule/ast: rename the FnDecl as Func
  • std/jule/ast: rename the FnCallExpr as FuncCallExpr
  • std/jule/ast: rename the GenericDecl as Generic
  • std/jule/ast: rename the UseDecl as Use
  • std/jule/ast: rename the ParamDecl as Param
  • std/jule/ast: rename the FieldDecl as Field
  • std/jule/ast: rename the FallSt as Fall
  • std/jule/ast: rename the GotoSt as Goto
  • std/jule/ast: rename the LabelSt as Label
  • std/jule/ast: rename the ContSt as Continue
  • std/jule/ast: rename the AssignSt as Assign
  • std/jule/constant/lit: add the Error struct
  • std/jule/parser: rename the Ast field as AST of FileInfo
  • std/jule/sema: add the Select, ChanSend, ChanRecv, and BuiltinCloseCallExpr structs
  • std/jule/sema: add the CaseOwner enum
  • std/jule/sema: add the ExprToken field to RangeIter
  • std/jule/sema: update the type of the Owner field of Case as CaseOwner
  • std/jule/sema: update type of the Elems field of ArrayExpr and SliceExpr
  • std/jule/sema: rename the FnCallExpr as FuncCallExpr
  • std/jule/sema: rename the FallSt as Fall
  • std/jule/sema: rename the GotoSt as Goto
  • std/jule/sema: rename the ContSt as Continue
  • std/jule/sema: rename the Slc as Slice
  • std/jule/sema: rename the Array as Array
  • std/jule/sema: rename the Fn as Func
  • std/jule/sema: rename the FnIns as FuncIns
  • std/jule/sema: rename the AnonFnExpr as AnonFuncExpr
  • std/jule/sema: rename the Slc method of Type as Slice
  • std/jule/sema: rename the Arr method of Type as Array
  • std/jule/sema: rename the Fn method of Type as Func
  • std/jule/sema: rename the Tup method of Type as Tuple
  • std/jule/sema: rename the FindFn method of Lookup as FindFunc
  • std/jule/sema: rename the Mtch field of Break as Match
  • std/math/big: fix Int.Parse returns zero integer with not exception even if all value have not been consumed
  • std/math/big: add the InvalidFormat field to ConvError
  • std/os: add the LookupEnv, Getenv, and Setenv functions
  • std/runtime: add the NumCPU function
  • std/strings: reimplemented
  • std/sync: add the Locker trait
  • std/sync: add the Cond struct
  • std/sync/atomic: reimplemented
  • std/time: add the ParseError enum
  • std/time: add the Month, and Weekday type aliases
  • std/time: add the January, February, March, April, May, June, July, August, September, October, November, December, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday,Saturday, Layout, ANSIC, UnixDate, RubyDate, RFC822, RFC822Z, RFC850, RFC1123, RFC1123Z, RFC3339, RFC3339Nano, Kitchen, Stamp, StampMilli, StampMicro, StampNano, DateTime, DateOnly, and TimeOnly constants
  • std/time: add the UTC, and Local globals
  • std/time: add the Now, Unix, UnixAbs, Since, Until, LoadLocationFromTZData, FixedZone, Parse, ParseInLocation, and ParseDuration functions
  • std/time: reimplement the Time and AbsTime
  • std/time: add the Location struct

Legacy Support

Due to renaming in the standard library, some reimplementations and language update, code from older versions may not compile with the new version. Consequently, you may need to update your code to according to the new version.