Skip to content

Jule 0.1.7

Choose a tag to compare

@mertcandav mertcandav released this 28 Oct 14:28
· 232 commits to master since this release

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

Legacy Support

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