Skip to content

Jule 0.0.12

Pre-release
Pre-release
Compare
Choose a tag to compare
@mertcandav mertcandav released this 20 May 11:38
· 1163 commits to master since this release

Language

  • add: constraints for generic types
  • add: explicit-typed slice literals with casting
  • add: generic function instances can use as anonymous function now
  • add: static methods can use as anonymous function now
  • add: the built-in delete function
  • update: maps, slices, anonymous functions and binded defines are not comparable now
  • update: syntax of map type declaration
  • update: naming conventions
  • update: use identifier based approach to define as public instead of using the pub keyword
  • update: the built-in make function for buffered strings
  • remove: the built-in has method of the map type, use lookup assignment instead
  • remove: the built-in del method of the map type, built-in delete function instead
  • remove: the built-in keys, and values methods of the map type

Compiler

  • various improvements and optimizations
  • various fixes and improvements for concurrent calls
  • fix: code generation for cpp-linked fields
  • fix: code generation for void-exceptional trait methods
  • fix: —opt-deadcode removes necessary return statements of exceptional handling scopes
  • fix: code generation for floating-point constants, thanks to @mingodad for getting this noticed
  • fix: code generation for initializing of structure field which is have cpp-linked structure type
  • fix: compiler generates uninitialized arrays and slices
  • fix: code generation for C/C++ linked headers
  • fix & optimize: define ordering
  • fix: code generation for binded include headers, thanks to @sparky4pro for pointing to the issue
  • parser: improve catching of type declarations which is placed in expression
  • sema: improve dynamic type annotation analysis
  • sema: fix generic type-alias analysis
  • sema: fix anonymous function analysis
  • sema: fix trait implementation analysis
  • sema: caught duplicated identifiers for full-import use declarations
  • sema: fix analysis of constant structure fields
  • sema: fix handling of constant values in casting evaluation
  • sema: fix scope variable and scope type alias evaluation
  • sema: fix evaluation of untyped constants
  • sema: fix evaluation of function calls at global scope
  • sema: fix compile-time panic call analysis
  • sema: fix implicit casting
  • sema: fix compiler might crash when analyzing parameters of genericed functions
  • sema: fix variable declarations with blank identifier are allowed

Standard Library

  • various improvements and optimizations
  • add: std::maps
  • add: std::net
  • add: std::slices
  • builtin: add the len, and cap functions
  • builtin: remove the len and cap fields from types and use the len and cap functions instead
  • std::bytes: add the Equal function
  • std::slice: add the Equal function
  • std::io:: FileStream’s ReadLine function returns string without is line delimiter now
  • std::io:: remove carriage return byte from the end if reading line-by-line
  • std::time: reimplement the Duration
  • std::thread: move the Thread.Sleep method to std::time as Sleep function
  • std::jule::ast: add the Constraint field to the GenericDecl
  • std::jule::ast: add the IsCo field to the FnCallExpr
  • std::jule::ast: remove the Generics field of the FnCallExpr
  • std::jule::ast: remove the CoExpr
  • std::jule::build: add the ConstraintFailed field to the LogMsg
  • std::jule::constant: add the Kind field to the Const
  • std::jule::sema: add the InsGeneric, BuiltinLenCallExprModel, BuiltinCapCallExprModel, and BuiltinDeleteCallExprModel structs
  • std::jule::sema: use InsGeneric for Generics field of FnIns and StructIns
  • std::jule::sema: add the Statics fields to the StructureIns
  • std::jule::sema: add the FindStatic method to the StructureIns
  • std::jule::sema: add the IsConstraint method to the Prim
  • std::jule::sema: add the Owner field to the StructSubIdentExprModel
  • std::jule::sema: remove the ExprKind field of the StructSubIdentExprModel
  • std::jule::sema: fix implementation of the PerformsRC method of the TypeKind
  • std::jule:sema: rename the Equals method as Equal of the Kind trait
  • std::sys: add the SOCK_STREAM, SOCK_DGRAM, SOCK_RDM, SOCK_SEQPACKET, AF_UNSPEC, AF_UNIX, AF_INET, AF_INET6, IPPROTO_IP, IPPROTO_TCP, IPPROTO_UDP, INADDR_ANY, INVALID_SOCKET, SOCKET_ERROR, and more constants
  • std::sys: add the Sockaddr, SockaddrIn, SockaddrIn6, and WsaData structures
  • std::sys: add the Socket, Bind, Connect, Listen, Accept, Recv, Send, CloseSocket, WSAStart, MakeWord, and more functions

API

  • various optimizations
  • mark as no-return the jule::panic function
  • jule::MapKeyHasher: fix copy assignment operator support
  • fix: use of uninitialized memory (missing zero terminator) on Linux, thanks to @mingodad for pointing to the issue (#104)
  • fix: the utf16_append_rune
  • remove: the __JULE_CO, and __JULE_CO_SPAWN macros
  • remove: equality functions of uncomparable types
  • reimplement: jule::Any
  • jule::Trait<Mask>: minor optimizations

Legacy Support

The old Jule source codes probably will not compile with this release. Because Jule 0.0.12 brings many breaking changes.

Some breaking changes:

  • Map syntax update
  • Naming convention update
  • Built-in len and cap field update
  • Buffered string update for the built-in make function
  • Some reimplementations such as std::time::Duration
  • Some types are not comparable now like slices, maps, or anonymous functions

Known Issues

Apple released a new linker with Xcode 15. But the new linker sometimes causes compilation errors.
See more information