Version 0.6.2
github-actions
released this
03 Sep 09:41
·
0 commits
to 2600c3116ce27a84b7915a5175ce8d25904f20dc
since this release
Changes / improvements
- Updated LLVM passes
- Added
is_substruct
type property. - Scalar -> vector not implicit in call or assign.
- Added
--vector-conv
to enable the old scalar->vector conversion behaviour. - Added "weak" type aliases
def Foo = my_foo::Foo @weak;
*-add
keys in targets inmanifest.json
andproject.json
are deprecated.- Made "add" the default for things like
sources
,dependencies
and other keys in project and library files. - Give some symbol name suggestions when the path is matched.
- Don't generate .o files on
compile
andcompile-run
if there is nomain
. - c3c init-lib does not create the directory with the .c3l suffix #1253
- Permit foreach values to be optional.
- Add
--show-backtrace
option to disable backtrace for even smaller binary. - Untested Xtensa support.
- && doesn't work correctly with lambdas #1279.
- Fix incorrect override of optimization levels when using projects.
- Add experimental
@noalias
attribute. - Add a
--run-once
option to delete the output file after running it. - Add
@const
attribute for macros, for better error messages with constant macros. - Add
wincrt
setting to libraries. - Add
+++
&&&
|||
as replacement for$concat
,$and
and$or
. - Add
methodsof
to type info for struct, union and bitstruct. - Added
@tag
tagof
andhas_tagof
to user defined types and members. - Added
c-include-dirs
project/manifest setting. - The compiler now skips UTF8 BOM.
- Printable values passed to the Formatter as pointers, will print as if passed by value.
- Pointers are rendered with "0x" prefix when passed to '%s'.
- Add temp allocator scribble.
- Use PIC by default on Linux.
$exec
may now provide a stdin parameter.- Introduce
$vaarg[...]
syntax and deprecate the old$vaarg(...)
. - Similar change to
$vasplat
:$vasplat
and$vasplat[1..]
. - Add
$member.get(value)
to replacevalue.$eval($member.nameof)
- Improve the error message when the compilation does not produce any files #1390.
- Add
fmod
implementation for nolibc.
Fixes
- Broken WASM library code.
- Regression: Invalid is_random implementation due to changes in 0.6.
dbghelp.lib
was linked even on nolibc on Windows.- Fix incorrect linker selection on some platforms.
- Struct members declared in a single line declaration were not sharing attributes. #1266
opt
project setting now properly documented.- Incorrect justify formatting of integers.
- Assertion with duplicate function pointer signatures #1286
- Distinct func type would not accept direct function address assign. #1287
- Distinct inline would not implement protocol if the inlined implemented it. #1292
- Distinct inline can now be called if it is aliasing a function pointer.
- Bug in List add_array when reserving memory.
- Fix issue where a compile time parameter is followed by "...".
- Fix issue with some conversions to untyped list.
- Issue where a
if (catch e = ...)
in a defer would be incorrectly copied. Causing codegen error. - Variable in if-try / if-catch cannot be a reused variable name.
- Vararg interfaces were broken.
- LLVM codegen for constants in enums could fail.
- Fixes to the socket functions.
- Improved output when pointer is out of range.
- Better error when casting to a distinct fails.
- With single module, name the .o file after what
-o
provides. #1306 - Bitstruct members can now have attributes.
%
analysis was incorrect for int vectors.- When resolving inherited interfaces, the interface type wasn't always resolved.
- Fix issues when checking methods and interfaces hasn't been resolved yet.
- Fix Vec2.angle
- Update to libc::setjmp on Win32, to do no stack unwinding.
- Recursively follow interfaces when looking up method.
- Int128 alignment change in LLVM fixed on x64.
- Fix interface lazy resolution errors.
- Interface resolution when part of generics #1348.
- Assert not properly traced #1354.
- Ordering issues with
$include
/$exec
fixed #1302. - Issues with wincrt linking.
- Debug info with recursive canonical type usage could cause segfault.
- Missing check on optional left hand side for
s.x
. - Incorrect zero analysis on
foo["test"] = {}
#1360. - Bug converting untyped list #1360.
- Benchmark / test no longer suppresses debug info. #1364.
- Bug when compile time subtracting a distinct type.
insert_at
incorrectly prevented inserts at the end of a list.- Fix aligned alloc for Win32 targets.
- Compiler didn't detect when a module name was used both as a generic and regular module.
- Assigning a const zero to an aliased distinct caused an error.
--path
is now properly respected.--test
will now provide the full filename and the column.- Fix of bug in
defer (catch err)
with a direct return error. - Too restrictive compile time checks for @const.
- Fixes to wasm nolibc in the standard library.
- Fixed int128 div/mod.
- Fix WASM memory init priority.
- Fix bug with
defer (catch err)
when used together with regular defer. - Methods can now properly be aliased using
def
#1393. - Memory leak in Object when not using temp allocators.
- Tracking allocator would double the allocations in the report.
printf
will now show errors in the output when there are errors.- Bug where
if try
would work incorrectly in a macro. - Prevent loading / storing large structs with LLVM.
Stdlib changes
send
andrecv
added tolibc
for Posix / Win32.- Add support to destroy temp allocators.
- Deprecated
path.append
,path.tappend
,getcwd
,tgetcwd
,path.absolute
,ls
. - Deprecated
env::get_config_dir
, replaced byenv::new_get_config_dir
. - Added
path.has_extension
,path.new_append
,path.temp_append
,new_cwd
,temp_cwd
,path.new_absolute
,new_ls
,temp_ls
. - Added
dstring.replace
- New hashmap type,
Map
- Added
ElasticArray
. - Added
types::is_signed
,types::is_unsigned
andtypes::inner_type
.