Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Releases: julelang/jule

Jule 0.2.2

05 Jun 06:43
@mertcandav mertcandav

Choose a tag to compare

jule

  • add: add reserved extern use identifiers
  • rename: the built-in str type as string
  • rename: the ret keyword as return
  • rename: the reserved Str method as String
  • update: all rune literals will always default to the type rune, even if they fit within byte
  • update: replace : operator with the = operator of enums

julec

  • rename: the --opt-str compiler option as --opt-string
  • imrpove: use deterministic identifier generation for IRs to make it easier to implement incremental compilation and debugging whenever possible
  • improve: the --opt-string optimization flag optimizes string([]byte) and string([]rune) casting expressions to string literal when all slice values are constant
  • improve: the --opt-string optimization flag optimizes []byte(string) and []rune(string) casting expressions to []byte or []rune slice literal when string value is constant
  • fix: generates IR for fallible error message with an invalid memory access
  • fix: semicolon is missing in IR code of some assignment expressions
  • parser: improve missing expression errors when handling separated token parts
  • sema: improve error messages for declaration associated top directives
  • sema: fix strict type aliases structure type will not collect the references of the types, such as built-in implementation of the map type when declared like type MyMap: map[int]int
  • sema: fix #export directive allowed for generic structs
  • sema: eval will not collect references to the traits when evaluating a trait type (thanks for pointing to the issue, @LukyGuyLucky, #158)

Standard Library

  • (windows) runtime: fix handling of stdin, stdout and stderr streams may lead crash because it expects only console or pipe but it may be a file kind (thanks for pointing to the issue, @EchoPouet)
  • std/bufio: rename Reader.ReadStr as Reader.ReadString
  • std/bufio: rename Writer.WriteStr as Writer.WriteString
  • std/encoding/base32: rename Encoding.EncodeToStr as Encoding.EncodeToString
  • std/encoding/base32: rename Encoding.DecodeStr as Encoding.DecodeString
  • std/encoding/base64: rename Encoding.EncodeToStr as Encoding.EncodeToString
  • std/encoding/base64: rename Encoding.DecodeStr as Encoding.DecodeString
  • std/encoding/json: add Encoder, Decoder
  • std/encoding/json: add maximum depth limit to encoder
  • std/encoding/json: fix literal decoding
  • std/encoding/json: fix empty array value decoding
  • std/flag: reimplement
  • std/html: rename EscapeStr as EscapeString
  • std/html: rename UnescapeStr as UnescapeString
  • std/integ: rename UTF16FromStr as UTF16FromString
  • std/integ: rename UTF16ToStr as UTF16ToString
  • std/integ: rename UTF16PtrToStr as UTF16PtrToString
  • std/integ: rename BytePtrToStr as BytePtrToString
  • std/integ: rename BytesFromStr as BytesFromString
  • std/io: rename StrWriter.WriteStr as StrWriter.WriteString
  • std/io: rename StrWriter as StringWriter
  • std/io: rename WriteStr as WriteString
  • std/jule/constant: rename NewStr as NewString
  • std/jule/constant: rename Const.ReadStr as Const.ReadString
  • std/jule/constant: rename Const.SetStr as Const.SetString
  • std/jule/constant: rename Const.IsStr as Const.IsString
  • std/jule/constant/lit: rename ToStr as ToString
  • std/jule/constant/lit: rename ToRawStr as ToRawString
  • std/jule/sema: rename FuncIns.GetKindStr as FuncIns.GetKindString
  • std/jule/mod: add Parse
  • std/jule/sema: add Importer.Mods
  • std/jule/sema: rename Prim.IsStr as Prim.IsString
  • std/jule/sema: rename Importer.ModById as Importer.ModByID
  • std/jule/token: rename STR as STRING
  • std/jule/types: rename Str as String
  • std/math/big: rename Ing.SetStr as Int.SetString
  • std/os: rename File.WriteStr as File.WriteString
  • std/os/filepath: add Split, SplitList
  • std/strings: rename Builder.WriteStr as Builder.WriteString
  • std/strings: rename Replacer.WriteStr as Replacer.WriteString
  • std/sync: rename Once as BlockingOnce
  • std/sync: rename AsyncOnce as Once
  • std/unicode/utf8: rename FullRuneStr as FullRuneString
  • std/unicode/utf8: rename DecodeRuneStr as DecodeRuneString
  • std/unicode/utf8: rename DecodeLastRuneStr as DecodeLastRuneString
  • std/unicode/utf8: rename RuneCountStr as RuneCountString
  • std/unicode/utf8: rename ValidStr as ValidString
  • std/unsafe: rename StrBytes as StringBytes
  • std/unsafe: rename BytesStr as BytesString
  • std/unsafe: rename StrFromBytes as StringFromBytes
  • std/unsafe: rename BytesFromStr as BytesFromString

API

  • rename: api/str.h as api/string.h
  • rename: __jule_AsyncRet as __jule_AsyncReturn
  • rename: __jule_Str as __jule_String
  • runtime: rename __jule_ptrToStr as __jule_ptrToString
  • runtime: rename __jule_boolToStr as __jule_boolToString
  • runtime: rename __jule_i64ToStr as __jule_i64ToString
  • runtime: rename __jule_u64ToStr as __jule_u64ToString
  • runtime: rename __jule_f64ToStr as __jule_f64ToString
  • runtime: rename __jule_compareStr as __jule_compareString
  • runtime: rename __jule_panicStr as __jule_panicString
  • runtime: rename __jule_bytesToStr as __jule_bytesToString
  • runtime: rename __jule_runesToStr as __jule_runesToString
  • runtime: rename __jule_strToRunes as __jule_stringToRunes
  • runtime: rename __jule_strToBytes as __jule_stringToBytes
  • runtime: rename __jule_strFromByte as __jule_stringFromByte
  • runtime: rename __jule_strFromRune as __jule_stringFromRune
  • runtime: rename __jule_strBytePtr as __jule_stringBytePtr
  • runtime: rename __jule_strAsSlice as __jule_stringAsSlice
  • runtime: rename __jule_sliceAsStr as __jule_sliceAsString

Backwards Compatibility

This version changes some commonly used keywords and the standard library API.
Extra effort is required to upgrade old Jule code to the new version.

Contributors

EchoPouet and LukyGuyLucky
Assets 8
Loading
elifacr reacted with hooray emoji elifacr reacted with heart emoji
1 person reacted

Jule 0.2.1

30 Apr 12:35
@mertcandav mertcandav

Choose a tag to compare

jule

julec

  • julec: add the --tags compile option
  • julec: #disable nilptr disables nil-check for anonymous functions
  • julec: #disable boundary disables boundary-check for slice expressions
  • julec: rename the --opt-exceptional command-line option as --opt-fallible
  • julec: fix error pluralization in error count message (#154, thanks to @pgmtx)
  • julec: fix break statements in select statements can lead to compilation problems due to the lack of a jump-label
  • julec: fix code-line pointer computation of logger to prevent incorrect positioning or negative repeat count panics in strings::Repeat
  • julec: fix nil-check performed when calling a method that has a reference pointer receiver on a smart pointer and in #disable nilptr scope
  • julec: fix --opt-exceptional may apply forwarding optimization in the wrong place
  • julec: fix binary have undefined behavior with no output when compiled for test with no test functions
  • julec: improve and optimize float arithmetic
  • parser: fix empty generic type list may cause crash
  • parser: fix an edge case where expression of a variable declaration assignment placed on the next statement may cause segfault (thanks for pointing to the issue, @PHandradee)
  • parser: fix an edge case where expression of a short variable declaration assignment placed on the next statement may cause segfault
  • parser: disallow tuple expressions in while and while-next iterations
  • parser: fix the error keyword is considered syntax error in assignment statements
  • parser: fix missing type error is silently ignored in function return type declarations
  • sema: fix import path analysis may log an invalid import path error for import path without a submodule
  • sema: fix Scope.ChildIndex is not set for error-forwarding expressions
  • sema: fix blank identifier may trigger duplicated identifier error when used in global scope multiple times
  • sema: fix goto statements can lead to false positive results in missing return statement analysis
  • sema: fix when the builtin append function is used with incompatible types, such as (dest=[]str,src=[][]str...), the runtime implementation is instantiated, and relevant internal implementation error will show up along with the type error

Standard Library

  • add: std/jule/resource
  • builtin: update documentation and behavior constraints of ponic
  • std/bufio: remove ErrBufferFull
  • std/comptime: add IncludeStr and IncludeBytes (#128)
  • std/comptime: rename comptimeDecl.Exceptional as comptimeDecl.Fallible
  • std/conv: fix ParseCmplx error may be invalid
  • std/encoding/base64: reimplement
  • std/encoding/csv: reimplement
  • std/encoding/json: fix Valid may report true for some invalid JSON encoding
  • std/encoding/json: fix struct decoding may ignore some fields due to escape sequences in key literals
  • std/encoding/json: fix the decoder may scan invalid data as if it were valid, or make scanning errors on valid data
  • std/errors: reimplement
  • std/integ/c: add SSize, ConstChar
  • std/io: reimplement EOF handling
  • std/jule/importer: add CompileInfo.Tags
  • std/jule/sema: add ST_ERROR_HANDLER
  • std/jule/sema: add GetFile, IncludeFile, and IncludedFile methods to Importer
  • std/math/big: add Int.Rem, Int.SetBytes, Int.FillBytes, Int.Bytes, Int.AppendBytes
  • std/net: TCPConn.Read will not close the connection automatically when reached to EOF
  • std/os: add File.RawFD, File.SetReadDeadline, File.SetWriteDeadline
  • std/os: add Cmd.Kill
  • std/os: fix Cmd ignores given stderr file and uses stdout as stderr
  • (linux) std/sys: add Fstat
  • std/unicode: reimplement with Unicode 17.0.0

API

  • rename: exceptional.hpp as fallible.hpp
  • rename: __jule_VoidExceptional as __jule_VoidFallible
  • rename: __jule_Exceptional as __jule_Fallible

Backwards Compatibility

This release includes mostly significant changes. Some of Jule's standard library packages have been reimplemented. The handling of EOF (end of file) status for I/O operations is based on errors, not read counts. Some of the C++ API declarations have been renamed.

Also, deferred scopes have been redesigned and behave differently. Therefore, if you have a program with deferred scopes, its behavior may be very different than before.

Contributors

pgmtx and PHandradee
Loading

Jule 0.2.0

02 Feb 21:59
@mertcandav mertcandav

Choose a tag to compare

jule

julec

  • add: the --COMAXPROCS command-line argument
  • add: Assembly file support for extern use declarations
  • remove: support for C++ versions cpp14 and cpp17
  • update: default C++ version to cpp20
  • fix: code generation for single-case select statements
  • fix: code generation for channel receive and send may be invalid when optimizations applied
  • fix: deferred calls may not be executed before exceptional forwarding
  • fix: use expression in exception handler scopes may ignore dynamic type casting
  • fix: type-enums might be casted to a dynamic-type like non-dynamic types and cause dynamic type issues
  • fix: the --opt-str optimization flag may cause segfault or unexpected results
  • parser: fix void function type handling in expressions
  • sema: fix tuples allowed in type inference of generic constraints

Standard Library

  • remove: std/jule/integrated
  • add: std/integ
  • add: std/integ/c
  • add: std/testing/iotest
  • reimplement: std/encoding/base32
  • reimplement: std/math/big
  • runtime: reimplement channels and select statements
  • runtime: add Yield, COMAXPROCS, Blocking
  • (windows) runtime: fix nanotime works inconsistent
  • std/bufio: update as async-first
  • std/bufio: add Reader, Writer
  • std/io: update as async-first
  • std/io: add ReadSeeker, WriteSeeker, ByteScanner, RuneScanner, ReadWriteSeeker, ReaderFrom, MultiReader, LimitedReader, NopCloser
  • std/io: rename Stream as ReadWriteCloser
  • std/io: remove LimitReader
  • std/jule/build: add AssemblyExts, IsValidAssemblyExt
  • std/jule/mod: fix unsafe string handling causes dangling memory
  • std/net: update as async-first
  • std/net: add RawFD to Conn, TCPConn, UDPConn
  • std/net: use the system's maximum backlog by default for TCPListener
  • std/os: update as async-first
  • std/slices: add Grow

API

  • fix: —disable-safety may cause compile errors
  • __jule_Ptr: fix the memory leak caused by rvalue handling

Backwards Compatibility

This release is almost entirely breaking. Jule's concurrency model has been completely redesigned, and a new runtime model has been introduced. Common operations such as I/O are no longer sync-first and thread-friendly; instead, they are designed to be async-first by default. This means that using std/io and all related packages largely requires running under the async runtime.

In addition, with the new coroutine model, the OS thread has become merely a tool used by the runtime, not for developers. The co keyword creates a coroutine now, not a thread. For this reason, if you have a concurrent program, its behavior may be very different from before.

Loading
lareii, pgmtx, and elifacr reacted with hooray emoji elifacr reacted with heart emoji shimbaco and elifacr reacted with rocket emoji
4 people reacted

Jule 0.1.7

28 Oct 14:28
@mertcandav mertcandav

Choose a tag to compare

Language

  • add: module names
  • add: the tilde ~ operator
  • add the nilptr argument to the disable directive
  • add: uintptr casting support for functions (low-level programming purposes)
  • runtime: channels are optimized for high-frequency messaging
  • remove: &, |, ^, <, <=, >= and > operators for enums
  • update: the new build command compiles a program instead of implicit compile commands

Compiler

  • fix: define ordering may iterate infinitely when bind dependency exist
  • fix: context data pointer is missing for entry point call when entry point used as anonymous function
  • fix: the --opt-math optimizations does not play well with complex numbers
  • fix: the mod init command overwrites existing module file
  • rename: the julenv command as env
  • improve: the help command
  • update: compiler generates output with name main by default
  • parser: fix constant bind variables allowed
  • sema: fix variable shadowing analysis
  • sema: improve missing return statement analysis for select statements
  • sema: improve and fix missing return statement analysis for goto statements

Standard Library

  • runtime: add channel type support to the built-in cap function
  • runtime: add map type support to the built-in make function
  • runtime: fix bind type may cause compile errors when used in built-in string conversion
  • runtime: fix reserved Str function will not be handled if value is nil when using built-in string conversion
  • std/io: add ReadAtLeast, and ReadFull
  • std/jule/constant: reimplement API
  • std/jule/constant: fix Const.Div does not reports false for divide-by-zero on complex numbers
  • std/net: add IPAddr, ParseIP, Resolver, DefaultResolver, and DNSError
  • std/net: add DNS and port resolve to TCPAddr.Resolve and UDPAddr.Resolve
  • (windows) std/net: fix timeout support of TCPConn and UDPConn
  • std/net: timeout precision is milliseconds and limited with 40 days for TCPConn and UDPConn
  • std/os: add Hostname
  • std/slices: add SortStableFunc
  • std/sync/atomic: CompareAndSwap takes separate memory ordering for success and fail
  • syd/sync/atomic: add CompareAndSwapWeak
  • (macOS) std/sys: fix Getsockopt and Setsockopt syscalls
  • (linux) std/sys: fix Setsockopt syscall
  • std/time: add Time.UnixMilli, Time.UnixMicro, Time.UnixNano

API

  • reimplement
  • jule::Str: fix string equality comparison for strings with zero-bytes
  • jule::Ptr: fix reference-counting

Backwards Compatibility

This version is incompatible with source code written for previous versions. Older compiler versions cannot compile this version’s standard library and existing source code may need to be adapted for the new version.

The most common potential issues:

  • Renaming and reimplementations on the standard library
  • New API
Loading
koibtw, EchoPouet, lareii, and elifacr reacted with hooray emoji elifacr reacted with heart emoji
4 people reacted

Jule 0.1.6

28 Jul 14:40
@mertcandav mertcandav

Choose a tag to compare

Language

Compiler

  • various optimizations, improvements and bug fixes
  • remove: the --opt-std-math-cmplx optimization flag
  • add: the --opt-variadic optimization flag
  • fix: exception forwarding optimization may optimize non-forwarding expressions as forwarding
  • fix: code generation for string literals may represent bytes wrong such as zero-byte
  • fix: function call data handling of concurrent calls
  • fix: handling of error variable captured for closure
  • fix: optimizations on next-statement of the while-next iteration may remove the iteration completely
  • improve: error handling for type aliases, use type alias name as type-name even for soft type aliases
  • parser: fix binary operator handling may handle map type declarations as expressions
  • parser: fix variable declaration without type declaration and expression allowed
  • parser: fix pointless else block allowed
  • parser: switch to scan-based parsing for expressions
  • sema: fix dynamic type annotation of generic function calls may leave some types unresolved
  • sema: fix some comptime methods returns typed constant expression instead of untyped
  • sema: push nil value for implicit empty variadic expression instead of zero-size slice allocation
  • sema: fix anonymous functions will not collect references for the owner scope
  • sema: fix missing return statement of non-void function scopes might be ignored
  • sema: fix missing return statement may cause crash if source code have semantic errors
  • sema: fix analysis of bind functions
  • sema: fix and improve dynamic type annotation for generic function calls
  • sema: fix generic structure instances may remain unchecked after analysis
  • sema: fix type compatibility analysis of the built-int append function
  • sema: fix function calls with problematic typed parameters may cause crash
  • sema: fix multiple-assign statement analysis may crash
  • sema: fix import analysis may throw false internal-package access error

Standard Library

  • various optimizations, improvements, bug fixes, and refactoring with API breaking changes
  • std/jule/ast, std/jule/parser, std/jule/sema: reimplemented for new AST handling, AST and CAST output might be different
  • std/fmt: reimplemented
  • std/math/rand: reimplemented
  • std/conv: add ParseCmplx, FormatCmplx
  • std/jule/token: reimplemented
  • runtime: fix runtime hashing algorithm does not supports uintptr type
  • runtime: fix runtime hashing algorithm handling memory addresses dangerously
  • std/comptime: add Hash, Source, ActualSource methods to comptimeTypeInfo
  • std/encoding: remove JSONEncoder, JSONDecoder
  • std/encoding/json: fix string literal validation
  • std/encoding/json: omit empty value instead of null for nil slice and maps
  • std/encoding/json: remove EncodeJSON and DecodeJSON special methods
  • std/io: add EOF, WriteByte
  • std/io: update EOF handling
  • std/jule/parser: AST construction may be different
  • std/math/cmplx: use native cmplx128 type instead custom Cmplx struct
  • std/os: reimplemented Env as Environ, Getenv, LookupEnv, Setenv
  • std/os: add PathSeparator, PathListSeparator, IsPathSeparator
  • std/os/filepath: rename IsPathSep as IsPathSeparator
  • std/sys: add Addrcall
  • (windows) std/sys: add LoadDLL, MustLoadDLL, Proc, DLL

API

  • jule::Slice<Item>: fix deallocation of slice will not set the slice pointer to nullptr
  • jule::Str: fix deallocation of string will not set the slice pointer to nullptr

Backwards Compatibility

This version is incompatible with source code written for previous versions. Older compiler versions cannot compile this version’s standard library and existing source code may need to be adapted for the new version.

The most common potential issues:

  • Renaming and reimplementations on the standard library
  • Using reference variables with old semantics
  • Using receiver parameters with old syntax
  • Using static variables and methods with old semantics and syntax
  • Using modules with old behavior and import paths
Loading
koibtw and elifacr reacted with hooray emoji elifacr reacted with heart emoji
2 people reacted

Jule 0.1.5

20 May 09:13
@mertcandav mertcandav

Choose a tag to compare

Warning

Builds are not statically linked for this version.

Language

Compiler

  • update: use ThinLTO instead of FatLTO
  • fix: strict aliasing optimizations of back-end compiler may cause unexpected behavior
  • fix: the --opt-copy may apply wrong optimizations for mutable values
  • fix: code generation for multi-return statements with dynamic types
  • fix: code generation for captured anonymous function variables from multi-return variables
  • fix: inherited type-enums considered valid type for type matching
  • parser: fix binary expression operator handling
  • parser: fix trailing invalid tokens ignored of use declarations
  • sema: fix comptime (obtained by std/comptime) constant value handling for binary expressions
  • sema: fix handling of untyped boolean values
  • sema: fix evaluation may allow using of blank identifiers
  • sema: fix using of non-existent enum field may cause crash during analysis
  • sema: fix catching of duplicate package aliases
  • sema: fix collection of references to runtime implementations such as slices and maps might be ignored if type source is a type alias

Standard Library

  • add: std/jule/directive
  • add: std/jule/dist
  • add: std/jule/log
  • std/comptime: add comptimeDecl.Tags, comptimeDecl.Tag, comptimeDecl.IsTag
  • std/encoding/json: add structure field tag support
  • std/encoding/json: fix HTML escape handling
  • std/encoding/json: nesting depth set to 256
  • std/encoding/json: fix the Decode function do not set destination array to zero for empty JSON arrays
  • std/jule: add Blank, Anon, IsBlank, IsAnon
  • std/jule/ast: add Var.Group, Var.GroupIndex
  • std/jule/build: add SetEnv, PathAPI
  • std/jule/build: remove PathApi
  • std/jule/build: reimplement PathStdlib, PathExec, PathWd
  • std/jule/build: remove directive relevant content because of new std/jule/directive package
  • std/jule/build: remove dist relevant content because of new std/jule/dist package
  • std/jule/build: remove log relevant content because of new std/jule/log package
  • std/jule/constant/lit: add GetRune
  • std/jule/integrated: fix Windows UTF16 encoding/decoding
  • std/jule/integrted: rename U16PtrToStr as UTF16PtrToStr
  • std/jule/token: refactoring with reimplemented API
  • std/jule/sema: remove Flag
  • std/jule/sema: add Default, Shadowing, RetState, Var.RetState
  • std/jule/sema: update the standard values of Var.RetOrder
  • std/jule/sema: remove EnumItem
  • std/jule/sema: add Var.IsEnumField, Var.GroupIndex, Var.Group, Var.Iota
  • std/os: reimplement standard input/output (see #140)
  • std/strings: add Clone

API

  • jule::Str: fix operator+= memory deallocation bug
  • jule::Fn fix ctx-memory handling

Backwards Compatibility

This version is incompatible with source code written for previous versions. Older compiler versions cannot compile this version’s standard library and existing source code may need to be adapted for the new version.

The most common potential issues:

  • Incompatibilities with the new exceptional handling standard
  • Incompatibilities with the new goto semantics
  • Structure fields with default expressions
  • Missing/unhandled cases for the enum/type-enum types in match statements
  • Renaming and reimplementations on the standard library
Loading
hellolio, StunxFS, and elifacr reacted with thumbs up emoji elifacr reacted with hooray emoji StunxFS, koibtw, sparky4pro, wdvn, and elifacr reacted with heart emoji
6 people reacted

Jule 0.1.4

19 Mar 12:29
@mertcandav mertcandav

Choose a tag to compare

Language

Compiler

  • numerous optimizations, fixes, and improvements
  • fix: code generation for casting expressions from dynamic type to implicitly smart pointer types such as maps and channels
  • fix: code generation of trait virtual table for implicitly smart pointer types such as maps and channels
  • fix: code generation of dynamic type data for implicitly smart pointer types such as maps and channels
  • fix: code generation will not generate iteration break-point for for in []rune(s) iterations when --opt-iter optimizations enabled
  • fix: code generation may be failed for declarative multi-assign expressions if --opt-assign optimizations enabled
  • fix: the --opt-zcopy and --opt-zappend optimizations may cause compile issues
  • fix: integer wrap around behavior might not be implemented in IR and might compile with undefined behavior
  • fix: code generation for array comparisons
  • fix: the --opt-math optimizations may apply wrong optimizations
  • fix: code generation for exceptional handler scopes with no use declaration
  • fix: location information handling for error messages
  • (windows) fix: compiler does not adds .exe extension if it is missing
  • (windows) fix: LTO support for Clang (it may cause compile errors with not-MinGW Clang)
  • add: tool targets command
  • update: catch invalid target pairs and complain with error
  • token: fix carriage-return characters may cause infinite loop when tokenizing string literals
  • token: fix Fileset.GetRow ignores final lines with no new-line
  • parser: fix function with errors may cause crash
  • parser: reused directive causes errors instead of ignoring silently
  • parser: fix unary operator handling of binary expressions
  • parser: fix missing expressions in brace literal may cause crash instead of compiler error
  • sema: untyped constant literals allowed in Safe Jule for binded types
  • sema: fix value type determination may ignore the strict type alias sources when evaluation of array and structure literals
  • sema: fix evaluation of binary expressions for comptimeTypeInfo
  • sema: fix owner define will not reference to the struct if it used via type alias when evaluating expression
  • sema: fix type-enums are not considered as mutable types
  • sema: fix global variable referencing a function may cause crash due to analysis issue
  • sema: fix and improve package analysis
  • sema: fix implicit casting handling of the error calls
  • sema: fix type compatibility checking for constant floating-point expressions
  • sema: fix type compatibility checking may ignore whether type is strict type alias for functions
  • sema: fix responsive type handling of the built-in append function
  • sema: fix reference collection for types referenced from eval
  • sema: fix handling of comparable array types
  • sema: fix checking of the reserved main and initializer function signatures

Standard Library

  • add: std/errors
  • (windows) all: all MinGW dependencies are removed, standard library uses Windows API
  • all: error handling model updated to latest recommended style
  • (windows) runtime: fix #107
  • runtime: fix deadcode analysis for mutexes
  • runtime: fix the built-in make function does not initialize all capacity (#133)
  • runtime: fix the built-in append function does not initialize all capacity if a new slice allocated (#134)
  • runtime: fix the runtime string conversion function cannot handle reserved Str functions of can-nil types
  • runtime: smart pointer types supports using of element’s reserved Str function
  • std/conv: reimplement
  • std/jule/types: reimplement
  • std/math/cmplx: reimplement
  • std/os: reimplement
  • std/bufio: add Scanner.EOF
  • std/bytes: the split functions limits capacity of parts to its length
  • std/comptime: remove Kind (fields remain as constant variables)
  • std/encoding/csv: rename Writer.UseCrlf as Writer.UseCRLF
  • std/encoding/json: fix Valid function reports false for some JSON inputs with spaces
  • std/encoding/json: fix DecodeJSON reserved decoder function does not supports JSON objects or arrays
  • std/encoding/json: numerous minor fixes and improvements
  • std/encoding/json: fix Decode function throws UnexpectedToken error if JSON input have trailing spaces
  • std/encoding/json: fix invalid token may cause panic while decoding array or object (with map type)
  • std/encoding/json: fix invalid token case may be reported with DecodeError.InvalidValue instead of DecodeError.InvalidToken while decoding object (with struct type)
  • std/encoding/json: fix invalid key may cause panic while decoding map
  • std/encoding/json: add Value, Object, Array, Bool, Number, and String
  • std/encoding/json: add dynamic decoding support
  • std/math: minor fixes
  • std/math: rename NextAfter32 as Nextafter32
  • std/math: rename NextAfter as Nextafter
  • std/math: rename F64Bits as F64bits
  • std/math: rename F32Bits as F32bits
  • std/math: rename F64frombits as F64frombits
  • std/math: rename F32frombits as F32frombits
  • std/math/big: rename Int.BitNot as Int.Not
  • std/math/big: update Int.Parse definition and behavior
  • std/math/big: add Accuracy, Int.F64
  • std/math/big: fix Int.Parse does not catch invalid separators
  • std/io: add ReaderAt, WriterTo, Seeker, WriteStr, ReadAll, LimitReader, SeekStart, SeekCurrent, SeekEnd, Copy, CopyBuffer, and Discard, ErrShortWrite, ErrShortBuffer, ErrUnexpectedEOF, ErrNoProgress
  • std/jule/ast: remove SubIdentType
  • std/jule/ast: add TypeAssertionExpr
  • std/jule/sema: remove TypeEnumItem.Ident
  • std/jule/sema: add Type.SoftStruct, TypeAssertionExpr
  • std/jule/sema: remove TypeEnumItem.Ident, TypeEnumItem.FindItem
  • (windows) std/os: fix long path support after Windows 10.0.15063
  • std/os/filepath: update sign of Abs
  • std/os/filepath: add SplitList
  • std/slices: rename Find as Index, FindLast as IndexLast
  • std/strings: add Reader
  • std/sys: reimplement Errno and relevant functions
  • std/testing: add T.Logf
  • std/unicode: add In, IsPrint

API

  • remove: jule::nil, jule::MAX_32, jule::MIN_F32, jule::MAX_F64, jule::MIN_F64, jule::MAX_I64, jule::MIN_I64, jule::MAX_U64 variables
  • remove: the jule::print, jule::println, jule::append, jule::__append, jule::copy, jule::__copy functions
  • add: the __jule_print, and __jule_println functions
  • fix: slicing error gives length instead of capacity for capacity information

Backwards Compatibility

This version is incompatible with source code written for previous versions, including Jule 0.1.3. Older compiler versions cannot compile this version’s standard library and existing source code may need to be adapted for the new version.

The most common potential issues:

  • Incompatibilities with the new error handling standard
  • Using dynamic types
  • Renaming and reimplementations on the standard library
  • Unexpected behavior in range iterations with strings
Loading
elifacr, koibtw, PrimaIVoid, and apainintheneck reacted with hooray emoji elifacr reacted with heart emoji
4 people reacted

Jule 0.1.3

07 Feb 15:30
@mertcandav mertcandav

Choose a tag to compare

Language

  • add: map and array literals with explicit type
  • add: assertion casting for dynamic types
  • update: the built-in copy function now uses mutable slicing for destination arrays
  • update: deferred scopes
  • update: trait memory model
  • remove: static constant fields support of impl statements and structures
  • remove: manual memory management options
  • remove: the deprecated directive (see doc comments for deprecation)

Compiler

  • numerous minor fixes, optimizations and improvements
  • fix: thread runtime initialization
  • fix: the != operator equals to the == operator for struct types in the object code
  • fix: code generation for implicit == operator of struct types
  • fix: code generation for trait data of strict type aliases
  • fix: code generation for postfix statements which uses map lookup as lvalue
  • fix: the --opt-deadcode optimizations removes trait methods of structures
  • fix: the --opt-dynamic optimization removes type safety for type casting when optimizing type-match statement case which have a previous case with fall statement
  • fix: code generation for concurrent function calls when parameter count collisions exist
  • fix: initialization of runtime environment data
  • fix: code generation for result data with channel type
  • fix: code generation for raw pointer type metadata of dynamic types
  • fix: code generation for trait virtual table of strict type aliases with smart pointer source type
    • it may cause compilation problems with GCC before the patch (see CI of 261b80d)
  • add: the --opt-zcopy and --opt-zappend optimization flags
  • improve: the --opt-deadcode optimization removes the following statements after empty select statements
  • improve: The --opt-access optimization removes the boundary analysis of expressions like array[i&(len(array)-1)] for arrays whose length is power of two
  • improve: code generation for select statements
  • improve: error messages, with contributions by @adamperkowski (#123)
  • parser: fix nested smart pointer types (like &&int) have nil Token field
  • parser: fix (#119, thanks @puni073 for pointing to the issue) and improve handling of function declarations
  • parser: catch repetitive ignoring of an exceptional like foo()!!!
  • parser: fix scope analysis will generate error for expression which is already logged
  • parser: fix unsafe namespace support of type analysis
  • sema: fix interior mutability analysis for structure copy assignments
  • sema: fix impl statement handling for structures
  • sema: fix strict type alias source type analysis
  • sema: fix mutability and comparable state analysis of types
  • sema: fix type cycle analysis
  • sema: fix map types are not considered as mutable even with mutable key/value type
  • sema: fix map indexing expressions considered lvalue
  • sema: fix analysis and handling indexing support of comptime types
  • sema: fix type inference analysis of untyped slice literals
  • sema: fix analysis of strict type alias structures, and type-enums for casting
  • sema: fix cycle and type analysis of type-enums
  • sema: fix reference handling of scope variables
  • sema: fix type safety analysis of unsafe pointer (*unsafe) type
  • sema: fix mistyped values may cause crash when evaluating sub-ident expressions
  • sema: fix instantiation cycle analysis
  • sema: fix generic type and method evaluation
  • sema: fix expression evaluation allows non-instantiated generic types for sub-ident expressions
  • sema: fix generic type analysis does not supports nested generic type instantiation
  • sema: fix generic type analysis of generic define coming from different package
  • sema: add responsive expression support for map indexing
  • sema: add casting support for traits
  • sema: catch unsafe pointer (*unsafe) type for invalid dynamic generic type annotations

Standard Library

  • add: std/html
  • add: std/net/url
  • add: std/path
  • all: refactoring and rehandling with breaking changes
  • runtime: fix the string conversion algorithm tries to call Str(self)!: str methods like reserved Str(self): str methods
  • runtime: fix sema queue implementation (affects sync::Mutex, sync::WaitGroup, and new sync::RWMutex)
  • runtime: fix map lookup does not set to default value if record is not exist (#129)
  • runtime: fix blocking-select statement may cause deadlock panic even for no-deadlock cases
  • runtime: update hashing algorithm and optimize map implementation
  • std/conv: rename the ConvError as Conv
  • std/conv: remove the Ok field of Conv
  • std/encoding/json: fix custom encoding and decoding method detection
  • std/jule/sema: rename Value as ValueSym
  • std/jule/sema: rename Data as Value
  • std/jule/sema: rename the Value field as ValueSym of Var and EnumItem
  • std/jule/sema: rename the Data field as Value of ValueSym
  • std/jule/sema: rename the Datas field as Values of TupleExpr
  • std/mem: remove Free and Heap
  • std/strings: add theReplacer struct
  • std/sync: add RWMutex
  • std/unicode/utf16: remove MaxRune
  • std/unicode/utf16: add RuneLen

API

  • remove: deferred scope API
  • remove: jule::Trait
  • jule::Str: remove std::basic_string support (#121, thanks @puni073 for pointing to the issue)

Backwards Compatibility

Jule 0.1.3 includes critical bug fixes, and updating is highly recommended. However, this update may require additional effort. It introduces some breaking changes and modifications that could alter behavior, potentially making debugging more difficult. There are significant additions and removals in the API and standard library. Compiled programs may not behave as expected.

Contributors

puni073 and adamperkowski
Loading
koibtw and elifacr reacted with hooray emoji elifacr reacted with heart emoji
2 people reacted

Jule 0.1.2

08 Jan 13:17
@mertcandav mertcandav

Choose a tag to compare

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

Backwards Compatibility

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.

Contributors

lareii
Loading
koibtw, lareii, and elifacr reacted with hooray emoji elifacr reacted with heart emoji
3 people reacted

Jule 0.1.1

15 Nov 12:37
@mertcandav mertcandav

Choose a tag to compare

Caution

Due to technical reasons, the release notes for this version have been lost.
The notes here are derived from commit messages.
They may be incomplete or inaccurate.

Language

  • reimplement: use declarations
  • add file annotation support for test files
  • add: casting support to the any type for the enum types
  • remove: operator overloading
  • remove: the reserved Dispose method
  • update: smart pointers can point to binded structs now
  • update: references can point to functions now
  • update: casting binded types require using Unsafe Jule

Compiler

  • fix: code generation for multi-return types
  • fix: code generation for reference variables
  • fix: code generation for wrap-needed function calls
  • fix: binded struct handling
  • fix: binded type handling
  • fix: binary expression optimizations
  • fix: conditional structure optimizations
  • fix: scope optimizations
  • fix: the multi-assign optimizations
  • fix: nil type detection of --opt-dynamic optimizations
  • fix: boundary and nil optimization analysis
  • fix: code generation for entry point functions
  • fix: code generation for uncomparable any types
  • fix: code generation for inheritance-used traits
  • fix: code generation for testing compilations
  • fix: code generation for reference variable declared in multi-assign statements
  • add: strict type alias structure support for the deadcode optimization
  • add: strict type alias support to optimizer
  • add: the --opt-len optimization flag
  • add: the --opt-array optimization flag
  • add: the --opt-std-math-cmplx optimization flag
  • add: the --opt-std-strings optimization flag
  • improve: --opt-str optimization flag for the binary expression operands
  • ast: add the End field to Stmt
  • parser: caught comma separated multi-line expressions
  • sema: add blank identifier support for structures
  • sema: add untyped function value support for strict type aliases
  • sema: fix structure analysis
  • sema: fix strict type alias analysis
  • sema: fix type equality checkin for enums, type enums, and traits
  • sema: fix casting evaluation for constant data and enum types
  • sema: fix static field evaluation for strict type aliases
  • sema: fix function call argument count checking
  • sema: fix assign type analysis for constants
  • sema: fix mutability analysis of variadic arguments
  • sema: fix type handling of the built-in mem::SizeOf and mem::AlignOf functions
  • sema: fix auto typedef directive addition
  • sema: fix reference collection of eval for structures
  • sema: fix type safety analysis for binded types
  • sema: fix built-in define handling for packages
  • sema: fix alias checking for the unsafe package
  • sema: fix comptime package lookup
  • sema: fix package accessibility analysis
  • sema: remove CastingExpr.ExprType
  • sema: add eval support for identifier eval
  • sema: update the built-in byte and rune type aliases
  • sema: improve and fix type analysis of binary expressions
  • sema: minor fixes for type compatibility analysis and error messages
  • sema: rename SymbolTable as SymTab
  • sema: rename the ExprKind field as ExprType of `CastingExprModel
  • sema: rename the Kind field as Type of CastingExprModel
  • sema: rename the Kind field as Type of SliceExprModel
  • sema: rename the Kind field as Type of BuiltinNewCallExprModel
  • sema: rename the Kind field as Type of BuiltinMakeCallExprModel
  • sema: rename the Kind field as Type of OperandExprModel
  • sema: rename the Kind field as Type of FieldIns
  • sema: rename the Kind field as Type of InsGeneric
  • sema: rename the Kind field as Type of ParamIns
  • sema: rename the Kind field as Type of Data
  • sema: rename the Kind field as TypeSym of Var
  • sema: rename the Kind field as TypeSym of Field
  • sema: rename the Kind field as TypeSym of Param
  • sema: rename the Kind field as TypeSym of RetType
  • sema: rename the Kind field as TypeSym of TypeEnumItem
  • sema: rename the Kind field as TypeSym of Enum
  • sema: rename the Kind field as Type of TypeSym
  • sema: rename TypeKind as Type
  • sema: rename TypeSymbol as TypeSym
  • token: update data handling method of the Fileset

Standard Library

  • add: std/bufio
  • add: std/os/filepath
  • remove: std/env
  • remove: std/debug
  • remove: std/fs
  • remove: std/fs/filepath
  • remove: std/process
  • reimplement: std/math/big
  • reimplement: std/math/rand
  • reimplement: std/io
  • reimplement: std/jule/lex as std/jule/token
  • reimplement: std/os
  • runtime: minor fix for structure string conversion
  • runtime: fix toStr function for unsigned integer types
  • runtime: fix runtime string conversion support for the strict type aliases
  • runtime: fix the executable function may returns symlink path on darwin
  • runtime: fix handling of NaN and ±Inf cases for float conversions
  • runtime: add the BigEndian and LittleEndian constants
  • built-in: make the copy function is overlap-safe
  • built-in: rename the out and outln functions as print and println
  • std/bytes: add the ReplaceAll and SplitAll functions
  • std/comptime: add the FieldByIndex method to comptimeValue
  • std/comptime: add the Strict method to comptimeTypeInfo
  • std/encoding/json: fix compilation issues of numeric type decoding
  • std/jule/build: move the Ext, EntryPoint, InitFn, ModuleFile and ImportPathSep constants to the std/jule package
  • std/math/cmplx: remove the AddAssign, SubAssign, MulAssign, DivAssign, and Pos methods of Cmplx
  • std/mem: fix the Heap implementation still uses old integrated jule
  • std/net: adopt new time::Duration
  • std/slices: add the Insert function
  • std/strings: add the ReplaceAll and SplitAll functions
  • std/sys (Windows): fix the WriteConsole function will not writes result to written parameter
  • std/sys (Unix): fix the Recvfrom and Sendto functions returns uint instead of int
  • std/time: reimplement the Duration
  • std/time: reimplement the Sleep function

API

add: the __jule_runeCount runtime function
add: byte buffer conversion runtime functions __jule_strBytePtr and __jule_sliceBytePtr
add: nullptr assignment operator overloading for jule::Ptr<T>
use: built-in str type instead of C++ std::string
fix: reference counting for self-assigned expressions

Backwards Compatibility

This version includes some important semantic changes. For example, a different syntax is now used for the old type alias system, and the old syntax has completely different semantics. In addition there are some renamings and some significant changes to the standard library. All of this may break your existing code, but as always upgrading is recommended.

Loading
elifacr reacted with hooray emoji elifacr reacted with heart emoji
1 person reacted
Previous 1 3
Previous

AltStyle によって変換されたページ (->オリジナル) /