Jule 0.0.12
Pre-release
Pre-release
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-indelete
function instead - remove: the built-in
keys
, andvalues
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
, andcap
functions - builtin: remove the
len
andcap
fields from types and use thelen
andcap
functions instead - std::bytes: add the
Equal
function - std::slice: add the
Equal
function - std::io::
FileStream
’sReadLine
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 tostd::time
asSleep
function - std::jule::ast: add the
Constraint
field to theGenericDecl
- std::jule::ast: add the
IsCo
field to theFnCallExpr
- std::jule::ast: remove the
Generics
field of theFnCallExpr
- std::jule::ast: remove the
CoExpr
- std::jule::build: add the
ConstraintFailed
field to theLogMsg
- std::jule::constant: add the
Kind
field to theConst
- std::jule::sema: add the
InsGeneric
,BuiltinLenCallExprModel
,BuiltinCapCallExprModel
, andBuiltinDeleteCallExprModel
structs - std::jule::sema: use
InsGeneric
forGenerics
field ofFnIns
andStructIns
- std::jule::sema: add the
Statics
fields to theStructureIns
- std::jule::sema: add the
FindStatic
method to theStructureIns
- std::jule::sema: add the
IsConstraint
method to thePrim
- std::jule::sema: add the
Owner
field to theStructSubIdentExprModel
- std::jule::sema: remove the
ExprKind
field of theStructSubIdentExprModel
- std::jule::sema: fix implementation of the
PerformsRC
method of theTypeKind
- std::jule:sema: rename the
Equals
method asEqual
of theKind
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
, andWsaData
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
andcap
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