Christoffer Lerno
808ce6d605
Fix deprecation warnings not silenced.
2026-02-26 00:28:36 +01:00
Christoffer Lerno
09606a2998
Update hint for deprecation
2026-02-26 00:15:58 +01:00
Christoffer Lerno
0a21323652
Fixes
2026-02-26 00:11:55 +01:00
Christoffer Lerno
c990b5aaf1
Typekind enums are changed CONST_ENUM -> CONSTDEF, DISTINCT -> TYPEDEF.
2026-02-25 23:52:13 +01:00
Christoffer Lerno
98e0985a10
Fix error message on deprecated enum =
2026-02-25 23:27:22 +01:00
Christoffer Lerno
5974bf6cd0
Make first RC 0.7.10
2026-02-25 18:11:42 +01:00
Manu Linares
992890065a
vendor-fetch lists available libraries ( #2976 )
...
* vendor-fetch lists available libraries
from `github.com/c3lang/vendor` when no library is specified.
* add release notes
2026-02-24 22:55:18 +01:00
Christoffer Lerno
d4dbe27072
Add mention of LLVM libs
2026-02-24 20:00:50 +01:00
Christoffer Lerno
56a11ae3ca
Fix text in error message.
2026-02-24 19:07:38 +01:00
konimarti
f1d03c194f
distributions: fix tests ( #2975 )
...
Remove stochastic elements in the distributions tests and ensure they
are deterministic.
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-02-24 16:18:53 +01:00
Christoffer Lerno
0085fe73ad
Fix test
2026-02-24 15:18:57 +01:00
Christoffer Lerno
a238b62483
Typo
2026-02-24 14:58:28 +01:00
Book-reader
58022e7cca
only enable emulated TLS on android compiling natively in termux ( #2974 )
2026-02-24 00:10:22 +01:00
Christoffer Lerno
d2f046780d
- Compiler crash using ?? with a void? macro #2973
2026-02-23 23:28:32 +01:00
Christoffer Lerno
ec65c5761e
Fixed test
2026-02-23 19:21:56 +01:00
Christoffer Lerno
0ed917cdc2
Improve error when trying to use an extern const as a compile time constant. #2969
2026-02-23 19:15:30 +01:00
Christoffer Lerno
8373ab0509
Typo in releasenotes.
2026-02-23 19:15:30 +01:00
srkkov
8f7610345d
More x86 instructions ( #2964 )
...
* Added most x86 cryptographic instructions
* Fixed popcnt test
* Fixed asm_ops_x64_2.c3t test
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-02-23 15:27:36 +01:00
Zack Puhl
8bd963ecaf
Allow Async w/ Subprocess for POSIX Systems ( #2953 )
...
* add native_fflush libc passthru
* add `pipe2` which combines `pipe` and `fcntl` - see docs
* POSIX subprocess: incorporate async reader capability and and fflush for writer
* use the real-name O_NONBLOCK since it's available
* typo
* ok... remove `pipe2` and do this with an existing method......
* Update releasenotes.md
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-02-22 01:59:44 +01:00
Christoffer Lerno
dc52478c09
- Warn on use of visibility modifiers on methods. #2962
2026-02-21 21:10:08 +01:00
Gantsev Denis
e1ec4b1235
add more x86 instructions
2026-02-20 21:23:35 +01:00
Lucas Alves
7c68396c0d
Enable default NDK detection for Android x86_64 ( #2910 )
...
* android: detect NDK for x86_64 targets
* Treat Android as POSIX in is_posix
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-02-20 21:07:44 +01:00
Manu Linares
eae7d0c4a1
stdlib: std::compression::zip and std::compression::deflate ( #2930 )
...
* stdlib: implement `std::compression::zip` and `std::compression::deflate`
- C3 implementation of DEFLATE (RFC 1951) and ZIP archive handling.
- Support for reading and writing archives using STORE and DEFLATE
methods.
- Decompression supports both fixed and dynamic Huffman blocks.
- Compression using greedy LZ77 matching.
- Zero dependencies on libc.
- Stream-based entry reading and writing.
- Full unit test coverage.
NOTE: This is an initial implementation. Future improvements could be:
- Optimization of the LZ77 matching (lazy matching).
- Support for dynamic Huffman blocks in compression.
- ZIP64 support for large files/archives.
- Support for encryption and additional compression methods.
* optimizations+refactoring
deflate:
- replace linear search with hash-based match finding.
- implement support for dynamic Huffman blocks using the Package-Merge
algorithm.
- add streaming decompression.
- add buffered StreamBitReader.
zip:
- add ZIP64 support.
- add CP437 and UTF-8 filename encoding detection.
- add DOS date/time conversion and timestamp preservation.
- add ZipEntryReader for streaming entry reads.
- implement ZipArchive.extract and ZipArchive.recover helpers.
other:
- Add `set_modified_time` to std::io;
- Add benchmarks and a few more unit tests.
* zip: add archive comment support
add tests
* forgot to rename the benchmark :(
* detect utf8 names on weird zips
fix method not passed to open_writer
* another edge case where directory doesn't end with /
* testing utilities
- detect encrypted zip
- `ZipArchive.open_writer` default to DEFLATE
* fix zip64 creation, add tests
* fix ZIP header endianness for big-endian compatibility
Update ZipLFH, ZipCDH, ZipEOCD, Zip64EOCD, and Zip64Locator structs to
use little-endian bitstruct types from std::core::bitorder
* fix ZipEntryReader position tracking and seek logic ZIP_METHOD_STORE
added a test to track this
* add package-merge algorithm attribution
Thanks @konimarti
* standalone deflate_benchmark.c3 against `miniz`
* fix integer overflows, leaks and improve safety
* a few safety for 32-bit systems and tests
* deflate compress optimization
* improve match finding, hash updates, and buffer usage
* use ulong for zip offsets
* style changes (#18 )
* style changes
* update tests
* style changes in `deflate.c3`
* fix typo
* Allocator first. Some changes to deflate to use `copy_to`
* Fix missing conversion on 32 bits.
* Fix deflate stream. Formatting. Prefer switch over if-elseif
* - Stream functions now use long/ulong rather than isz/usz for seek/available.
- `instream.seek` is replaced by `set_cursor` and `cursor`.
- `instream.available`, `cursor` etc are long/ulong rather than isz/usz to be correct on 32-bit.
* Update to constdef
* Fix test
---------
Co-authored-by: Book-reader <thevoid@outlook.co.nz >
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-02-20 20:41:34 +01:00
mmoustafa8108
5055e86518
test: added comprehensive tests for in-string & complex nested comments ( #2956 )
...
* test: added comprehensive tests for in-string & complex nested comments
* Properly handle error
---------
Co-authored-by: Christoffer Lerno <christoffer.lerno@gmail.com >
2026-02-20 13:24:08 +01:00
Manu Linares
4b13ad692a
fixes for RISC-V ABI Implementation #1567 ( #2937 )
...
* fixes for RISC-V ABI Implementation #1567
Fixed RISC-V floating-point ABI by correcting the target triple to
`riscv64-unknown-linux-gnu`, adding the `target-abi` module flag, and
ensuring ABI-required CPU features are enabled.
I tested this with:
```bash
build/c3c compile-only --target linux-riscv64 rv_hello.c3
readelf -h obj/linux-riscv64/rv_hello.o | grep Flags
# Output: Flags: 0x5, RVC, double-float ABI
```
```bash
# and qemu because I don't have a riscv machine :/
qemu-riscv64-static -L /usr/riscv64-linux-gnu ./rv_hello
```
---
@lerno I purposedly left these two failing tests to clearly see the
difference.
`test/test_suite/abi/riscv64-lp64-lp64f-abi-1.c3t`
`test/test_suite/abi/riscv64-lp64-abi.c3t`
* improve Linux cross-compilation, specifically for RISC-V
- Implement automatic sysroot and CRT object discovery for RISC-V.
- Fix dynamic linker paths and emulation flags for LLD.
- Link against libgcc to resolve required arithmetic symbols.
* Update tests.
* fix linker CRT detection by centralizing host arch check
use target_host_arch() in linker.c
move target_host_arch() from hostinfo.c to target.c
* missing debug info
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-02-20 01:53:29 +01:00
Christoffer Lerno
7c81bb35ca
Refactored contracts ( #2960 )
...
* - Properly support `@deprecated` as contract.
- Support deprecating enum values.
- Refactor contracts
* Always copy enum constants.
* Bugfix.
2026-02-20 01:51:28 +01:00
Christoffer Lerno
5a82f672b5
Update to constdef
2026-02-20 01:13:20 +01:00
Christoffer Lerno
0387d7666d
- Trying to slice an indexable type leads to misleading error message #2958
2026-02-20 00:13:45 +01:00
Christoffer Lerno
392c78860d
Add bitorder functions store_le, load_le, store_be, store_le.
2026-02-19 23:59:55 +01:00
Christoffer Lerno
585c66100d
- Member access on a struct returned by the assignment expression, cause crash #2947
2026-02-19 20:43:45 +01:00
konimarti
8bb974829d
math: implement discrete and continuous distributions ( #2955 )
...
* math: implement discrete and continuous distributions
Implement a comprehensive set of continuous and discrete probability
distributions with support for PDF, CDF, inverse CDF, random sampling,
mean, and variance calculations.
The following distributions are implemented:
* Normal
* Uniform
* Exponential
* Chi-Squared
* F-Distribution
* Student t
* Binomial
* Poisson
* update releasenotes.md
* Formatting
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-02-19 20:09:11 +01:00
Christoffer Lerno
6b3139940c
Formatting to be consistent. Make unrolling use macro.
2026-02-19 18:22:21 +01:00
Damien Wilson
9efb9b90d1
Minor attribute combination checking ( #2918 )
...
* Minor attribute combination checking
* Added tests to the test suite.
2026-02-19 17:58:39 +01:00
soerlemans
152558f5bc
Optimized adler32 hashing algorithm. ( #2948 )
...
* Optimized adler32 implementations.
- Adapted adler32 implementation from Crypto++ public domain library.
- Added unit tests for adler32 hashing algorithm.
* tabified adler32 implementation to match stdlib.
* Formatting to be consistent. Make unrolling use macro.
---------
Co-authored-by: soerlemans <sebasoerlemans+git@gmail.com >
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-02-19 17:51:33 +01:00
Manuel Barrio Linares
7ae4c5a1ab
some refactoring of io formatter internals
...
extracted logic for hex-buffers (%h), string-padding (%s), hex-floats
(%a), and collection printing into helper functions.
2026-02-19 16:39:27 +01:00
Fernando López Guevara
9fbf6bc213
enforce buff channel size > 0 ( #2952 )
...
* fix(stdlib): enforce BufferedChannel size > 0 and add regression test
* chore(repo): ignore cmake/test artifacts
* Formatting
---------
Co-authored-by: Christoffer Lerno <christoffer.lerno@gmail.com >
2026-02-18 14:34:41 +01:00
Christoffer Lerno
143fa70f87
Remove init for Blake3
2026-02-17 17:43:54 +01:00
Christoffer Lerno
3ac701be0e
Improve error message when providing alias with a typeid expression where a type was expected. #2944
2026-02-17 13:02:34 +01:00
Manu Linares
8cb23cff29
split test_hash_vector_macro into per-type functions ( #2940 )
...
* split `test_hash_vector_macro` into per-type functions
it went from a single 18367 instructions function, to eleven separate
functions with (1000 to 1600) instructions each
thats 15649 instructions total, 2718 less instructions overall.
```
$ build/c3c compile-test --suppress-run -O1 --print-large-functions -D
SLOW_TESTS test/unit/ 2>&1 | sort -n | grep "test_hash_vector"
1041 instructions found in
std::core::builtins:test_hash_vector_int128
(/home/mb/scripts/c3c/test/unit/stdlib/core/builtintests.c3) - function
is very long.
1041 instructions found in
std::core::builtins:test_hash_vector_uint128
(/home/mb/scripts/c3c/test/unit/stdlib/core/builtintests.c3) - function
is very long.
1305 instructions found in std::core::builtins:test_hash_vector_long
(/home/mb/scripts/c3c/test/unit/stdlib/core/builtintests.c3) - function
is very long.
1305 instructions found in
std::core::builtins:test_hash_vector_ulong
(/home/mb/scripts/c3c/test/unit/stdlib/core/builtintests.c3) - function
is very long.
1453 instructions found in std::core::builtins:test_hash_vector_int
(/home/mb/scripts/c3c/test/unit/stdlib/core/builtintests.c3) - function
is very long.
1453 instructions found in std::core::builtins:test_hash_vector_uint
(/home/mb/scripts/c3c/test/unit/stdlib/core/builtintests.c3) - function
is very long.
1565 instructions found in
std::core::builtins:test_hash_vector_short
(/home/mb/scripts/c3c/test/unit/stdlib/core/builtintests.c3) - function
is very long.
1565 instructions found in
std::core::builtins:test_hash_vector_ushort
(/home/mb/scripts/c3c/test/unit/stdlib/core/builtintests.c3) - function
is very long.
1629 instructions found in std::core::builtins:test_hash_vector_char
(/home/mb/scripts/c3c/test/unit/stdlib/core/builtintests.c3) - function
is very long.
1629 instructions found in
std::core::builtins:test_hash_vector_ichar
(/home/mb/scripts/c3c/test/unit/stdlib/core/builtintests.c3) - function
is very long.
1663 instructions found in std::core::builtins:test_hash_vector_bool
(/home/mb/scripts/c3c/test/unit/stdlib/core/builtintests.c3) - function
is very long.
```
* made the `test_hash_vector_internal` generic
2026-02-17 02:30:30 +01:00
Manuel Barrio Linares
ec6ba8e7ca
refactor md5.body function to reduce instruction count
...
- replaced manual unrolling with loop structures and constant arrays
- instruction count reduced from 12445 to 4016
- maybe about 1 to 2% performance loss on some benchs but take this
number with a grain of salt.
2026-02-16 14:12:54 +01:00
Manuel Barrio Linares
df030ac51c
optimize blake3 using a runtime for loop
...
instruction count went from 60k to 9k
no difference in speed for -O2 or higher
2026-02-16 02:31:47 +01:00
Manu Linares
4b03a84b00
optimize test_ct_intlog2 test and whirlpool hash ( #2938 )
...
* optimize `test_ct_intlog2` while still covering all 128 bit positions
* refactor whirlpool to reduce code bloat
replaced the fully unrolled round loop with a runtime loop, reducing
instruction count by 80k in `process_block` and yielding aprox 30%
performance boost due to improved cache locality.
* use compile-time arrays for `test_ct_intlog2`
2026-02-16 01:54:46 +01:00
Christoffer Lerno
5d0c41da6b
Refactor dylib name.
2026-02-16 01:21:05 +01:00
Christoffer Lerno
990e9685d2
- Adding the incorrect sized vector to a pointer vector would cause a crash.
2026-02-16 00:39:14 +01:00
Christoffer Lerno
a7309b217e
Add --print-large-functions for checking which functions likely dominate the compile time.
2026-02-16 00:13:19 +01:00
Christoffer Lerno
d7cf8fa9ab
Reduce macro inlining size. Remove non-const atomic ordering.
2026-02-15 00:43:29 +01:00
Christoffer Lerno
a78a169a17
Slim down the string_to_int tests by 800 MB.
2026-02-15 00:05:35 +01:00
Christoffer Lerno
d80a8629a6
- On assert known false, the message was not show for no-args.
...
- Fixup in socket_private.c3
2026-02-14 23:49:27 +01:00
Christoffer Lerno
14779bd467
Set CP_UTF8 to underlying number.
2026-02-14 01:49:03 +01:00
Christoffer Lerno
eb80776988
More fixes for typedef @constinit change
2026-02-14 01:37:53 +01:00
Samuel
fac9054f1b
Fix array initializer analysis ( #2925 )
...
* Fix array initializer analysis: improved semantic checking for arrays with inferred or fixed length,
* Update phrasing
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-02-13 23:38:07 +01:00
Zack Puhl
768d24d580
[stdlib] Add array even, odd, and unlace macros
2026-02-13 23:19:31 +01:00
Christoffer Lerno
e299a4b630
- Change typedef and const enums to not convert from literals by default. ( #2934 )
...
- Add `@constinit` to allow old typedef behaviour.
2026-02-13 20:39:47 +01:00
Christoffer Lerno
bbf89815d6
- Individual warning settings added.
2026-02-13 18:25:19 +01:00
Christoffer Lerno
cc6d552e3d
- --safe=no disabled compile-time errors on compile-time known runtime @require checks #2936
2026-02-13 16:34:45 +01:00
Christoffer Lerno
27ceded331
Add a few const char*
2026-02-12 16:51:34 +01:00
Christoffer Lerno
3f279b2f1c
Refactoring: make CT_IDENT and unresolved expression.
2026-02-12 16:38:18 +01:00
Christoffer Lerno
acc4a900f5
- New const enum declaration syntax.
...
- New enum associated value syntax.
2026-02-12 14:43:56 +01:00
Fernando López Guevara
f079fa82b2
fix(std-io): make uint128 decimal formatting safe ( #2924 )
...
* fix(std-io): make uint128 decimal formatting safe and add all-base
numeric coverage
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-02-11 23:50:16 +01:00
Manuel Barrio Linares
7665720264
add cache for Embedded/QEMU Tests
...
I forgot to add this one
2026-02-11 23:48:18 +01:00
Christoffer Lerno
83705ab340
Fix chacha20.
2026-02-11 23:44:26 +01:00
Christoffer Lerno
adea3dd83f
Fix chacha20
2026-02-11 23:39:47 +01:00
Christoffer Lerno
9b52be9ba6
- unsigned % signed and unsigned / signed is no longer allowed without explicit casts, except for const denominators. #2928
2026-02-11 23:18:08 +01:00
Christoffer Lerno
202349d88f
- Improved underlining errors/warnings when unicode is used. #2887
2026-02-11 16:49:22 +01:00
Manuel Barrio Linares
18ab18958b
CI: add retries and package caching across all platforms
...
- Add retry loops to all package manager commands (apt, apk, pacman,
pkg).
- Implement daily package caching to minimize external server hits.
- Enable Docker layer caching in CI using buildx and GHA backend.
- Sync CI Docker build steps with the build-with-docker.sh logic.
- We don't, or more accurately, can't actually use
`build-with-docker.sh` anymore in CI. Maybe we should move it to
scripts/tools/ to keep the root directory clean.
- add ramdisk for BSD, shave 30/60 seconds.
- change BDSs to cross-platform-actions/action for a cleaner ci and skip
SLOW_TESTS for BSDs: this shaves a few seconds
- set global CACHE_INVALIDATION_SEED
2026-02-11 10:01:14 +01:00
Christoffer Lerno
2237d3b836
Missing check
2026-02-11 02:55:07 +01:00
Christoffer Lerno
e2f17a770b
Using [] or .foo on $$ functions would not raise error but instead crash #2919 .
2026-02-11 02:53:17 +01:00
konimarti
40e6a2c4a3
codepage: add single-byte code page support ( #2891 )
...
* codepage: add single-byte code page support
Add std::encoding::codepage with a shared engine for converting between
single-byte code pages and UTF-8 using table-driven mappings.
Introduce generated tables and wrappers for several code pages[1] each
exposing encode/decode helpers built on a common CodePageTable
structure.
The mapping data is generated by cpgen[2] from the Unicode Consortium’s
published code page mapping files and follows the Unicode standard’s
interpretation of control characters (abstract characters) rather than
historical VGA glyph shapes.
[1] Code page overview/groups:
DOS/OEM code pages (legacy PC):
cp437 cp737 cp775 cp850 cp852 cp855 cp857 cp860 cp861 cp862 cp863
cp864 cp865 cp866 cp869 cp874
Windows code pages (ANSI/Windows):
cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258
ISO/IEC 8859 series (Latin/Regional):
iso_8859_1 iso_8859_2 iso_8859_3 iso_8859_4 iso_8859_5 iso_8859_6
iso_8859_7 iso_8859_8 iso_8859_9 iso_8859_10 iso_8859_11 iso_8859_13
iso_8859_14 iso_8859_15 iso_8859_16
[2] github.com/konimarti/cpgen
Signed-off-by: Koni Marti <koni.marti@gmail.com >
* codepage: change encoding format, streamline api
* Use enum to collect the data.
---------
Signed-off-by: Koni Marti <koni.marti@gmail.com >
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-02-11 01:10:12 +01:00
g.denis
a80e40a798
fix fedora dyn lib ( #2917 )
...
* also look into /usr/lib64
2026-02-10 23:12:04 +01:00
Manuel Barrio Linares
de8a733c77
Implement lazy-loaded libcurl
...
- Uses `dlopen` to load libcurl at runtime for better portability.
- Replaces the FETCH_AVAILABLE macro with download_available() check.
- Provides descriptive error messages when libcurl is missing.
2026-02-10 13:05:43 +01:00
Christoffer Lerno
c5d7a03859
Remove unnecessary free.
2026-02-10 11:46:26 +01:00
Christoffer Lerno
0b82537700
Fix
2026-02-10 11:27:55 +01:00
Christoffer Lerno
7b8299c8dd
- Reallocating overaligned memory with the LibcAllocator was unsafe.
2026-02-10 11:23:51 +01:00
Christoffer Lerno
dcbd0f8f2d
Fix dwarf definitions
2026-02-10 10:23:53 +01:00
Boris Barbulovski
402c00e230
Add Android Aarch64 and x64 support status
2026-02-09 10:26:40 +01:00
Christoffer Lerno
0542c05b88
Update tests.
2026-02-09 10:23:03 +01:00
Christoffer Lerno
67e224c62f
Fix windows main
2026-02-09 10:15:49 +01:00
Christoffer Lerno
565b08846f
Remove use of tempnam.
2026-02-09 00:04:05 +01:00
Christoffer Lerno
80ad0e02ad
Fix tests and error in returning error on function name.
2026-02-08 22:54:24 +01:00
Lucas Alves
b8ee5a4150
fix: add non-API Android NDK lib search path ( #2884 )
...
* fix: add sysroot/usr/lib/<triple> to Android linker search paths
* Fix library search order: move libc++_shared logic after API libc paths
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-02-08 15:02:37 +01:00
Christoffer Lerno
445dd155b7
Another #2814
2026-02-08 15:01:27 +01:00
Rauny
abb3efca00
fix: prevent Homebrew dylib contamination in macOS builds ( #2908 )
...
When C3_FETCH_LLVM=ON, the fetched LLVM artifact is self-contained.
Two issues caused the macOS release binary to embed hardcoded
/opt/homebrew paths, making it fail on systems without Homebrew:
1. /opt/homebrew/lib was unconditionally appended to LLVM_LIBRARY_DIRS,
causing find_library to discover Homebrew's LLD dylibs (whose
LC_ID_DYLIB points to /opt/homebrew/opt/lld/lib/...). Guard this
behind NOT C3_FETCH_LLVM so it only applies when using a
system-installed LLVM.
2. In the static linking block (C3_LINK_DYNAMIC=OFF), find_library NAMES
listed .dylib before .a, so shared libraries were preferred even when
static linking was intended. Reorder to prefer .a, keeping .dylib as
a fallback for systems that only ship shared libraries.
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-02-08 13:57:07 +01:00
Christoffer Lerno
de0b317461
Fix default main template.
2026-02-08 13:38:43 +01:00
Christoffer Lerno
21758476d4
- For c3c init with library templates, provide example exported functions. #2898
2026-02-07 21:31:12 +01:00
Christoffer Lerno
b69f78be30
Flag --cpu-flags doesn't work if the first item is an exclusion. #2905
2026-02-07 21:21:57 +01:00
Christoffer Lerno
89b9f52f1e
Add libc mktemp and tempnam. Update test.
2026-02-07 20:25:28 +01:00
Christoffer Lerno
02a67254cc
Fix win forwarding functions.
2026-02-07 19:57:43 +01:00
Manuel Barrio Linares
120f56ac5f
disable --fetch-msvc when no curl
2026-02-07 01:22:54 +01:00
Laura Kirsch
5b93212f43
Added Xorshiro128++ random number generator. ( #2846 )
...
* Added Xorshiro128++ random number generator.
* Fixes to xorshiro implementation + tests.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-02-06 20:14:56 +01:00
Zack Puhl
c57415ea78
Optional byte limit for readline
...
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
Co-authored-by: Christoffer Lerno <christoffer.lerno@gmail.com >
2026-02-06 19:15:29 +01:00
Manuel Barrio Linares
36dfbdff45
implement progress bar for fetch-msvc
...
using deterministic milestones
2026-02-06 17:59:36 +01:00
Christoffer Lerno
d07e454dfe
Fix missing )
2026-02-06 17:56:40 +01:00
Christoffer Lerno
40aa4d4dcd
Add Murmur3 hash
2026-02-06 17:53:19 +01:00
Manu Linares
0be291e0d7
compiler: added c3c fetch-msvc command ( #2854 )
...
* compiler: added `c3c fetch-msvc` command
ported `msvc_build_libraries.py` to built-in compiler 'fetch-msvc'
subcommand.
* fix alpine build
* fix windows build
* fix WinHTTP download to correctly handle full URLs by splitting hostname and path.
* fix old `cp` and escape args for `file_copy_file`
also cleanup the temp directory when we are finished
it would be better to use a cache :|
* remove msiextract dependency
* Auto-fetch `msvc_sdk` if missing
- auto trigger `msvc_sdk` download when compiling for Windows if no SDK
is detected.
- make native Windows SDK detection non-fatal to allow fallback to the
portable SDK
- add debug logging for diagnostics
* removed the LZX decompression logic
- moved `msvc_sdk` to user cache locations to avoid permission issues.
- refined terminal messaging for better accuracy and clarity.
* use %LOCALAPPDATA% on Windows
* Add support for C3_MSVC_SDK
* Update release notes.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-02-06 14:01:49 +01:00
Manuel Barrio Linares
35d84390bd
Simplify CI, do more with less.
...
- Rename Docker job to **"LLVM ${{ matrix.llvm_version }}
Compatibility"** for better visibility.
- Limit `build_type` to **Debug** for MSYS2, OpenBSD, NetBSD, and Nix
jobs to reduce CI time.
- Refactor **Alpine Linux** job: updated to 3.23, simplified dependency
installation, and removed redundant LLVM matrix.
- Modernize **Docker** builds:
- Added automatic architecture detection (x86_64/ARM) for CMake
downloads.
- Generalized LLVM repository logic to support multiple Ubuntu
codenames (Focal/Jammy/Noble).
- Fixed git permissions issues in containerized builds using
`safe.directory`.
- Standardized Android build packaging and added conditional testing for
Debug builds.
2026-02-06 12:00:00 +01:00
Christoffer Lerno
124efb2684
Improve error message on const int*
2026-02-06 02:00:26 +01:00
Christoffer Lerno
5c158e481b
Always have wmain. Cleanup synthetic main generation. Some cleanup for generics.
2026-02-06 01:28:19 +01:00
Christoffer Lerno
42b79d19c1
Update all stub methods.
2026-02-06 00:55:57 +01:00
Zack Puhl
4521a25284
[stdlib] Add PEM Encoding/Decoding Module ( #2858 )
...
* [stdlib] Add PEM Encoding/Decoding Module
* release notes
* Removed some unnecessary macro usages. Fixed memory handling with headers.
* Make end of line a parameter. Internal encode method -> function. Use more tmem. Remove t-functions.
* Update API
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
Co-authored-by: Christoffer Lerno <christoffer.lerno@gmail.com >
2026-02-06 00:01:07 +01:00
Foxy-Boxes
1933d47ba1
add Intel user interrupt instructions ( #2767 )
...
* add Intel user interrupt instructions
* Example code did not actually work, so was removed.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-02-05 20:56:35 +01:00
Book-reader
bb9e9b54cf
Improve android support & add CI ( #2664 )
...
* Change context destruction order.
* enable emulated tls on termux
* Fix stdlib on android
* Add a CI workflow for android termux
* update release notes
* use the new unified CI tests on android
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-02-05 20:04:16 +01:00
Manu Linares
eddbfb8ba3
CMakeLists and CI: Use our custom llvm ( #2893 )
...
* c3-llvm: new CMakeLists and CI
uses custom llvm version 21.x from
"https://github.com//ManuLinares/llvm-custom-builds/ "
* use c3lang/llvm-for-c3 latest release
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-02-05 18:55:09 +01:00
Christoffer Lerno
2c55d6e220
Further fix shadowing of generics
2026-02-05 18:43:54 +01:00
Christoffer Lerno
472c49de25
Differentiate errors on generic mismatch.
2026-02-05 16:20:17 +01:00
Christoffer Lerno
016254d38c
Improve error message when using functions as values #2856
2026-02-05 16:03:56 +01:00
Christoffer Lerno
054fcd2deb
Update advice when an enum is found with "= 2" and no associated values.
2026-02-05 13:57:35 +01:00
Christoffer Lerno
d71aa10f62
- Const inline enums would not always implicitly get converted to the underlying type.
...
- Update to dstring.append_string to take any type converting to String.
2026-02-05 13:04:57 +01:00
Christoffer Lerno
1d0aef4522
Remove unnecessary macro.
2026-02-05 02:07:42 +01:00
Christoffer Lerno
71b673d241
- Shadowing not detected for generic declarations #2876
2026-02-05 01:33:47 +01:00
Christoffer Lerno
dcf695c726
Fix list[0].i = 5 when list[0] returns a pointer. #2888
2026-02-05 00:34:17 +01:00
Christoffer Lerno
5e656603a5
- Remove dependency on temp allocator in File.open.
2026-02-04 14:27:52 +01:00
Christoffer Lerno
b4426c095b
- Remove dependency on temp allocator in String.join.
2026-02-04 13:06:12 +01:00
Christoffer Lerno
5f32c97094
- Compiler crash when using arrays of vectors in lists. #2889
2026-02-04 12:40:16 +01:00
Christoffer Lerno
1c8cb7fa11
Method resolution and $define now works together well unless definitions are out of order for real.
2026-02-04 12:23:37 +01:00
Christoffer Lerno
6bc606a9b1
Removed analyse top pass. Remove sub module tracking. Fix errors where ? should be ~
2026-02-02 12:20:34 +01:00
Christoffer Lerno
d509b4caa1
Updated info about contributing bindings.
2026-01-31 22:07:14 +01:00
Zack Puhl
12975d07ac
[stdlib] Reduce inline code volume from sorting macros ( #2831 )
...
* reduce codegen in sorting macros
* remove testing file...
* Fix and some renaming, removing some sub-modules that should not be in use.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-01-31 20:19:57 +01:00
Laura Kirsch
3d512abaf7
Fix non-LLVM build.
2026-01-31 14:07:48 +01:00
Kiana
a9d93c93d5
Improve linker error message ( #2880 )
...
* Improve linker error message
* use file_util/file_is_dir instead
* cleanup unused function
* Some minor updates and merging latest master.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-01-31 04:55:47 +01:00
Manu Linares
1b7601fdbb
stdlib: optimize math::next_power_of_2 to O(1) using hardware CLZ ( #2839 )
...
* stdlib: optimize math::next_power_of_2 to O(1) using hardware CLZ
- updated DString.reserve to use this
* bit smearing
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-01-31 00:20:58 +01:00
Smite Rust
373013046d
Fix formatting of path assignment in msvc_build_libraries.py
2026-01-30 22:01:40 +01:00
Christoffer Lerno
10d369d766
Updated grammar, and 0.7.10 first commit
2026-01-30 21:59:20 +01:00
Christoffer Lerno
161280ce7d
Add deprecation silence notice.
2026-01-30 13:57:52 +01:00
Christoffer Lerno
4e129d4ae2
Fix test.
2026-01-30 13:18:56 +01:00
Christoffer Lerno
2b6f1c061d
Fix of evaluation order warning.
2026-01-30 13:10:54 +01:00
Christoffer Lerno
cb19c7d9e7
Test update
2026-01-29 20:08:58 +01:00
Christoffer Lerno
224b120745
Another fix error => warn
2026-01-29 20:07:42 +01:00
Christoffer Lerno
534dd42472
Update test.
2026-01-29 17:51:50 +01:00
Christoffer Lerno
163976f85f
Fix of second warning triggered on failing to detect a method.
2026-01-29 17:42:51 +01:00
Christoffer Lerno
d79a8808d7
Update readme example and last version
2026-01-29 14:36:13 +01:00
Christoffer Lerno
1cba5a0774
Release candidate
2026-01-29 11:44:45 +01:00
Christoffer Lerno
6c76a7ce4e
Make methods not fully determined a warning.
2026-01-29 11:42:58 +01:00
Christoffer Lerno
084d5cbc94
Set target in test.
2026-01-29 02:30:06 +01:00
Christoffer Lerno
32b1df0f86
Set target in test.
2026-01-29 00:43:53 +01:00
Christoffer Lerno
50718cb905
- Crash in slice expression when it contains a rethrow #2872
...
- Multiple issues when rethrowing inside of expressions #2873
2026-01-29 00:42:20 +01:00
Christoffer Lerno
414c0c9438
- Initializer did not correctly handle second rethrow #2870
...
- Crash encountering panic in if-else style switch #2871
2026-01-28 22:56:59 +01:00
Christoffer Lerno
362d5680e4
- Optional in initializer cause a crash #2864
...
- Negating a global address with offset was a counted as a global runtime constant #2865
- Converting static "make_slice" to array failed to be handled #2866
- Narrowing a not expression was incorrectly handled #2867
- Vector shift by optional scalar failed #2868
2026-01-28 21:59:40 +01:00
Christoffer Lerno
fed7a74a75
Fix assert in #2863
2026-01-28 19:02:27 +01:00
Christoffer Lerno
d276d3767f
Incorrect handling when reporting fn with optional compile time type #2862
2026-01-28 18:51:21 +01:00
Christoffer Lerno
a07660f957
Improve tracing of liveness error reporting.
2026-01-28 11:44:37 +01:00
Christoffer Lerno
4d02ce4414
Additional fix for #2853
2026-01-27 23:43:14 +01:00
Christoffer Lerno
c1e3cfaacc
- Crash when trying to create a const zero untyped list #2847
2026-01-27 23:36:00 +01:00
Christoffer Lerno
c11385cf49
Fix wasm int128 size on LLVM 17-19.
2026-01-27 16:26:35 +01:00
Christoffer Lerno
0b5064683f
Regression: Generic type could not be found in lambda inside macro #2853
2026-01-27 14:23:41 +01:00
Christoffer Lerno
f3ede27f60
Regression: "'out' parameters may not be read" when writing to array #2852
2026-01-27 13:48:50 +01:00
Christoffer Lerno
4fbb42833e
- Crash when creating $Type* where $Type is an optional type #2848
...
- Crashes when using `io::EOF~!` in various unhandled places. #2848
2026-01-27 13:32:08 +01:00
Christoffer Lerno
3e76b7ff1c
Fixes to optional rethrow in expressions.
2026-01-26 04:10:38 +01:00
Christoffer Lerno
e901a3de55
- Fix alignment for uint128 to 16 with WASM targets.
...
- Incorrect assert in struct alignment checking #2841
- Packed structs sometimes not lowered as such.
2026-01-25 23:06:16 +01:00
Christoffer Lerno
4899ee14e2
Resolving &X.b when X is a const incorrectly checked for runtime constness #2842
...
Creating a generic instance fails if it is created after interface checking #2840
2026-01-25 21:24:27 +01:00
Christoffer Lerno
3c04a326f4
Resolving &X.b when X is a const incorrectly checked for runtime constness #2842
2026-01-25 20:28:58 +01:00
Christoffer Lerno
a1ff3b05ed
- Lowering of optional in && was incorrect #2843
2026-01-25 19:50:28 +01:00
Christoffer Lerno
74e228688a
- Packed .c3l files without compressions weren't unpacked correctly.
2026-01-25 19:13:42 +01:00
Zack Puhl
75d454b6a6
Add mem_allocator realloc_array Macros ( #2760 )
...
* Add mem_allocator `realloc_array` Macros
* test, ensure `realloc_array` to 0 size returns `null`
* update release notes
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-01-25 16:12:44 +01:00
m0tholith
6cffb888ea
Add maximum memory usage tracking to tracking allocator ( #2772 )
...
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-01-25 16:11:46 +01:00
soerlemans
cf03215564
Added unit tests for Crc32 hashing. ( #2833 )
...
* Adding crc32 unit tests.
* Fix formatting in crc32 test cases
---------
Co-authored-by: soerlemans <sebasoerlemans+git@gmail.com >
Co-authored-by: Christoffer Lerno <christoffer.lerno@gmail.com >
2026-01-25 13:16:44 +01:00
Christoffer Lerno
5b90743120
Fix test compatibility
2026-01-25 13:15:26 +01:00
Christoffer Lerno
0fb91265b6
- Bug when initializing an inferred array with deep structure using designated init #2826
2026-01-25 13:13:59 +01:00
Christoffer Lerno
3cb7c489ee
Updated releasenotes
2026-01-25 12:50:02 +01:00
Christoffer Lerno
c65c378b7f
- Bitstruct as substruct fails to properly work with designated initializers. #2827
2026-01-25 12:48:36 +01:00
Christoffer Lerno
cf9784afee
- Bitstruct accidentally allowed other arrays than char arrays #2836
2026-01-25 12:14:34 +01:00
Christoffer Lerno
8bd942c1b8
- Store of zero in lowering did not properly handle optionals in some cases #2837
2026-01-25 04:57:35 +01:00
Christoffer Lerno
109e15b5a0
- Empty enums would return the values as zero sized arrays #2838
2026-01-25 04:41:06 +01:00
Christoffer Lerno
0fdd6bdc81
- Early exit in macro call crashes codegen #2820
2026-01-25 00:52:57 +01:00
Christoffer Lerno
378b35265b
- Raw vaargs with optional return not lowered correctly #2819
2026-01-24 23:54:20 +01:00
Christoffer Lerno
b5e25e3857
Constant deref of subscript had inserted checks #2818
2026-01-24 23:24:36 +01:00
Christoffer Lerno
9b2fc04959
ompile time dereference of a constant slice was too generous #2821
2026-01-24 22:42:04 +01:00
Christoffer Lerno
ce8167a102
- Incorrectly try compile time int check on vector #2815
...
- Generating typeid from function gives incorrect typeid #2816
- Recursive definitions not discovered when initializer is access on other const #2817
- Slice overrun detected late hit codegen assert #2822
2026-01-24 19:38:51 +01:00
Christoffer Lerno
397d065a74
- Constant shifting incorrectly doesn't flatten the underlying vector base #2825
...
- String not set as attributes resolved breaking has_tagof #2824
- Self referencing forward resolved const enum fails to be properly detected #2823
2026-01-24 18:32:26 +01:00
Christoffer Lerno
5e23817a3d
- Comparing a flexible array member to another type would hit an assert. #2830
...
- Underlying slice type not checked correctly in $defined #2829
- Checking for exhaustive cases is done even in if-chain switch if all is enum #2828
2026-01-24 17:57:56 +01:00
Christoffer Lerno
396263f5c3
De-macro readline.
2026-01-23 22:45:58 +01:00
Christoffer Lerno
26d0760c0d
Make counting sort normal.
2026-01-23 17:09:34 +01:00
Christoffer Lerno
11f090116f
Allow disabling asserts.
2026-01-23 13:09:43 +01:00
Zack Puhl
5e1c343be4
Deprecate builtin EMPTY_MACRO_SLOT for optional macro arguments ( #2805 )
...
* add deprecations to macro slot builtins
* refactor all stdlib uses of now-deprecated EMPTY_MACRO_SLOT; release notes
* update incorrect releasenotes ref to this pr
* remove leftover comments from refactoring
* remove unnecessary `EmptySlot`-like type in countingsort; use private macro directly
2026-01-23 12:34:50 +01:00
Christoffer Lerno
0e69432e3d
Improved error diagnostics for memory overflow.
2026-01-23 11:58:19 +01:00
Christoffer Lerno
94a26d9483
Add asserts, tracking Windows bug
2026-01-23 11:51:51 +01:00
Christoffer Lerno
efa5bdc6df
Add better error message on VirtualAlloc failure on windows.
2026-01-23 11:45:00 +01:00
Christoffer Lerno
459969ddb2
Make sure we don't switch over bad things.
2026-01-23 01:22:58 +01:00
Christoffer Lerno
ae5047b73f
Deprecating multi-level array length inference. int[*][*] is deprecated and will be removed 0.8.0.
2026-01-22 23:50:39 +01:00
Christoffer Lerno
17f3db835c
- Remove dependency on test tmp library for stdlib compiler tests. #2800
2026-01-22 22:15:34 +01:00
Christoffer Lerno
1845a515ca
- Empty ichar slice + byte concatenation hit an assert. #2789
2026-01-22 21:39:03 +01:00
Christoffer Lerno
bf50178eb3
$typeof(<type>) returns typeinfo, causing errors #2795
2026-01-22 20:04:09 +01:00
Christoffer Lerno
32675161c4
- Attrdef eval environment lacked rtype, causing error on invalid args #2797
2026-01-22 19:47:37 +01:00
Christoffer Lerno
e257500e03
Recursive definition of tag not detected with nested tag/tagof #2790
2026-01-22 19:16:54 +01:00
Christoffer Lerno
0add42b0a0
- Make foo.$abc implicitly mean foo.eval("$abc").
2026-01-22 16:46:07 +01:00
Christoffer Lerno
b14053df41
- Too deeply nested scopes was a fatal crash and not a regular semantic error. #2796
2026-01-22 15:13:01 +01:00
Christoffer Lerno
6a78864b6c
Instantiating an alias of a user-defined type was not properly caught #2798
2026-01-22 13:50:57 +01:00
Christoffer Lerno
b1fea45cd1
Using an optional type as generic parameter was not properly caught #2799
2026-01-22 13:34:16 +01:00
Christoffer Lerno
cef48482f1
Unable to access fields of a const inline enum with an aggregate underlying type. #2802
2026-01-21 13:22:46 +01:00
Christoffer Lerno
a126a25d66
Casting const bytes to vector with different element size was broken #2787
2026-01-21 12:56:25 +01:00
Christoffer Lerno
61c939059d
int? ? was not correctly handled. #2786
2026-01-21 00:52:18 +01:00
Christoffer Lerno
5fa820a462
When a global const has invalid attributes, handling is incorrect, leading to a crash #2785 .
2026-01-21 00:43:30 +01:00
Christoffer Lerno
472124dab3
Bug in sysv abi when passing union in with floats #2784
2026-01-21 00:34:37 +01:00
Christoffer Lerno
1e11b6c442
Inferring the size of a slice with an inner inferred array using {} isn't detected as error #2783
2026-01-20 23:58:45 +01:00
Christoffer Lerno
34a86852c6
Failed to reject void compile time variables, leading to crash. #2781
2026-01-20 23:07:11 +01:00
Christoffer Lerno
52afbdbde9
Recursive constant definition not properly detected, leading to assert #2780
2026-01-20 18:28:13 +01:00
Christoffer Lerno
888657cc97
- $typeof untyped list crashes when trying to create typeid from it. #2779
2026-01-20 17:54:05 +01:00
Christoffer Lerno
d7bfddf35e
Broken cast from fault to array pointer #2778 .
2026-01-20 17:43:16 +01:00
Christoffer Lerno
9c435352b9
- Second value in switch range not checked properly, causing an error on non-const values. #2777
2026-01-20 17:12:41 +01:00
Christoffer Lerno
3fe55b5e51
- Vectors not converted to arrays when passed as raw vaargs. #2776
2026-01-20 17:00:09 +01:00
Christoffer Lerno
cdabe8fd9e
- Create optional with ~ instead of ?. return io::EOF?; becomes return io::EOF~.
...
- Deprecated use of `?` to create optional.
2026-01-20 16:10:28 +01:00
Christoffer Lerno
5390ca6250
- Eager evaluation of macro arguments would break inferred arrays on some platforms. #2771 .
2026-01-20 13:02:14 +01:00
Christoffer Lerno
61e84e4d34
One last regression fix.
2026-01-20 11:47:17 +01:00
Christoffer Lerno
1b82b7d2f2
Fix regression with conditional methods.
2026-01-20 11:20:39 +01:00
Christoffer Lerno
49f59d82c9
Fix regression.
2026-01-20 01:26:29 +01:00
Christoffer Lerno
e84e23f7ec
Fix Using @if with methods with generic params only inferred from the parent type fails #2770
2026-01-20 01:04:12 +01:00
Christoffer Lerno
0b9b49673e
- Empty struct after @if processing was not detected, causing a crash instead of an error.
...
- Comparing an uint and int[<4>] was incorrectly assumed to be uint compared to int, causing a crash instead of an error.
- When an `int[*][6]` was given too few values, the compiler would assert instead of giving an error.
2026-01-20 00:04:18 +01:00
Christoffer Lerno
4512c6446d
- Empty struct after @if processing was not detected, causing a crash instead of an error.
...
- Comparing an uint and int[<4>] was incorrectly assumed to be uint compared to int, causing a crash instead of an error.
- When an `int[*][6]` was given too few values, the compiler would assert instead of giving an error.
2026-01-19 15:01:08 +01:00
Christoffer Lerno
0fea6c6056
- Bitstruct with unevaluated user-defined type would cause a crash.
...
- Using named parameters with builtins would cause a crash.
- In some cases, using missing identifiers with builtins would cause a crash.
- Using `$defined` with function call missing arguments would cause a crash.
- Adding @nostrip to a test function would crash.
- Mixing struct splat, non-named params and named params would crash rather than to print an error.
- Creating a char vector from bytes would crash.
- Using $$wstr16 with an illegal argument would crash instead of printing an error.
2026-01-19 02:49:54 +01:00
Christoffer Lerno
dd8449576f
- Passing a non-conststring to module attributes like @cname would trigger an assert rather than printing an error.
...
- Passing different types to arg 1 and 2 for $$matrix_transpose would trigger an assert.
- Zero init of optional compile time variable would crash the compiler.
- Using multiple declaration for generics in generic module would fail.
- Defining an extern const without a type would crash rather than print an error.
- Typedef followed by brace would trigger an assert.
- Union with too big member would trigger an assert.
2026-01-18 22:47:17 +01:00
Christoffer Lerno
c3b2694834
Generics with <>. Deprecation of {} generics.
2026-01-18 00:33:43 +01:00
Christoffer Lerno
d3ebd4a130
Migrate from @unaligned_load to mem::load
2026-01-17 19:12:32 +01:00
Christoffer Lerno
a326e31e57
Add missing fix.
2026-01-17 18:52:55 +01:00
Christoffer Lerno
945a3f3fc0
Add mem::store and mem::load which may combine both aligned and volatile operations.
2026-01-17 18:52:30 +01:00
Darvis
2a8fbb8fec
Fix function signature for free to return void
...
free expects a return type void* but it should return void instead of void*
2026-01-17 18:52:11 +01:00
Book-reader
c0f1b02d0b
native_file_size: use libc stat on more platforms
...
Co-authored-by: 김형근 (Nomota Hiongun KIM) <hiongun@gmail.com >
2026-01-17 16:09:21 +01:00
Christoffer Lerno
f2c557c3b7
Remove use of LLVMCreateBuilder #2666
2026-01-17 15:39:22 +01:00
Christoffer Lerno
d00a93f195
Update error on omitting end.
2026-01-17 15:37:30 +01:00
Christoffer Lerno
aa07969fc2
- HashSet.len() now returns usz instead of int. #2740
2026-01-17 15:12:31 +01:00
Christoffer Lerno
6dcd91c5ef
- Assert on defining a const fault enum with enumerator and fault of the same name. #2732
2026-01-17 15:01:40 +01:00
Christoffer Lerno
c2e603ddd8
Expand inference.
2026-01-17 14:03:58 +01:00
Christoffer Lerno
70c4b24519
- In some cases, a type would not get implicitly converted to a typeid #2764 .
2026-01-16 11:41:18 +01:00
Christoffer Lerno
51364a9d1b
Another fix in immediately rethrowing a value in an assignment #2689
2026-01-15 23:33:26 +01:00
Christoffer Lerno
d9f4eb46d9
- Too little memory reserved when printing backtrace on Darwin #2698 .
2026-01-15 22:50:12 +01:00
Book-reader
cd2d1a04d8
Use a Printable struct for ansi rgb formatting instead of explicit allocations ( #2696 )
...
* Use a `Printable` struct for ansi rgb formatting
* update release notes
* Some renaming.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-01-15 22:26:18 +01:00
Zack Puhl
3f7a547d8a
Merge AsciiCharset CT/non-CT Functions ( #2688 )
...
* Merge AsciiCharset CT/non-CT Functions
* release notes
* incorporate helpful review feedback
* re-separate 'create_set' and 'contains' but keep 'combine_sets'; update tests
* tabs (annoying IDE)
* Restored old code verbatim for smaller diff. Split combine_sets into easier to macro/function for runtime / macro version, this also allows for more easy type checks.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-01-15 21:39:48 +01:00
Manu Linares
f254c27966
std/io/os/temp_directory.c3: fix INVALID_PATH in Win32 native_temp_directory ( #2762 )
...
* std/io/os/temp_directory.c3: fix INVALID_PATH in Windows native_temp_directory
- Use the actual length from GetTempPathW for Windows temp path slice
- We can remove the workaround in the test_suite_runner for WIN32 and
create all directories in %temp% now
* Updated releasenotes.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-01-15 21:23:30 +01:00
Jasper Wilmes
8a1c02c840
Rework libc signal constants ( #2724 )
...
* Move libc::SIG* constants to posix.c3
* Add missing libc::SIG* constants for Win32 systems
* Add missing POSIX signals
* Add missing Linux signals
* Add missing BSD signals
* Moved common signals back to libc
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-01-15 21:17:50 +01:00
Christoffer Lerno
7f297a9d27
Fix type inference overrides parameterization #2761 . Remove support for ^io::EOF
2026-01-15 15:19:33 +01:00
VarunVF
64ef33f09b
Require parenthesized assignment expressions in condition of 'if' statements #2716 ( #2729 )
...
* Require parenthesized assignment expressions in condition of 'if' statements #2716
* Move analysis to semantic checker and also check while. And update tests and release notes.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-01-15 00:43:58 +01:00
mikelgarai
cd4c586c3f
Fixed macro hash_vec(vec): it was checking only the first bytes (4 or 8, not sure) ( #2718 )
...
* Fixed macro hash_vec(vec): it was checking only 8 bytes
* use $sizeof() directly as it is correct now
* Added unit test for vector types
Tests that hashes match for same values and that they don't match
when changing a single bit on any of the vector elements
* Changed hardcoded value for the compiler option
* Release note
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-01-14 23:22:10 +01:00
Kiana
0a9d4e398d
Add $$VERSION and $$PRERELEASE ( #2751 )
...
* Add 64507VERSION and 64507PRERELEASE
* Migrate to compiler define method
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-01-14 23:15:55 +01:00
Christoffer Lerno
d61beef7e0
Fix String.replace not dropping temp mem.
2026-01-14 22:13:23 +01:00
Sergey Fedorov
7136b05019
common.h: define static_assert to _Static_assert when undefined
2026-01-14 14:57:19 +01:00
Christoffer Lerno
87fa253059
Add debug versions.
2026-01-14 02:00:07 +01:00
Manu Linares
04eb6fc451
CI: Major refactor, expanded coverage, and ~80% speedup ( #2736 )
...
* netbsd fail on error
- Group each BSD test in its own subshell. Without this, if an error
occurs, it exits, but we don't know "where" it failed
- added *usesh: true* to BSD for faster copying into the virtualbox VM
- Some test_suite_runners wheren't correctly printing. added
--no-terminal
- For testing I've changed *build-msvc* from Debug to RelWithDebInfo
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* separate runs
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* fix typo
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* Split msvc-debug into separate workflow
Run msvc-debug only on maintainer pushes, keep CI fast and still catches
errors.
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* Fix build and test errors on NetBSD
* Set proper sizes for various types used for threads
* Add num_cpu function
* Add sysctl constants
* Allow testproject to build on NetBSD
* Tweaks to the linker code so that it adds correct flags and finds dynamic linker on NetBSD
* bsd: force system linker test
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* system linker on openbsd
remove lld from netbsd
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* use cc linker in openbsd, and re-add lld for netbsd
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* openbsd: fixes
- implement num_cpu() for OPENBSD
- testproject: add openbsd
- linker.c: fix for openbsd
- bsd refactor main.yml and more fixes
* openbsd: fix for unit tests and test_suite_runner
openbsd now passes all tests except the 'dynlib-test' which yields
'relocation error' when running `cc test.c -L. -ladd -Wl,-rpath=.`
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* openbsd: guard/disable unit test test_ct_intlog2()
* build-msys2-clang: add all tests that build-msvc has
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* Fix Windows import library generation by adding /IMPLIB support and properly declaring static_lib_name()
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* build-msys2-mingw: add all tests that build-msvc has and enable it
configure CMake to link LLVM and LLD statically
* Revert "Revert windows"
This reverts commit 197f82d829 .
* win-llvm 21.1.8
uses the RelWithDebInfo+Assertions
* refactor(CI): Centralize test logic and fix Docker execution
This commit refactors the GitHub Actions workflow to improve
maintainability and correct a flaw in the Docker build.
- Ensures Docker based tests run *inside* the generated container, not
on the host. This also fixes environment isolation and user permission
errors.
- Centralizes all common test steps (examples, libs, unit tests, etc)
into a single, auto-detecting Bash script: `scripts/tools/ci_tests.sh`.
- Centralize all release artifact packaging into a single
`scripts/tools/package_build.sh`
- fixes using correct paths for test_suite_runner when running on
windows under bash.
- This significantly reduces YAML duplication, making `main.yml` more
readable and easier to maintain.
This one supersedes pull/2677, and includes the fixes for:
- fix openbsd and netbsd
- added win-llvm 21.1.8 and fixed CMakeLists.txt
- added full unit-tests and suite for build-msys2-mingw and
build-msys2-clang
* macos: add/fix build for llvm (19,20,21)
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* ci: run tests in temp dir to avoid workspace pollution
Executes ci_tests.sh in a disposable temporary directory by copying
resources/ and test/ folders, preventing build artifacts from cluttering
the source tree.
This makes it easy to run `scripts/tools/ci_tests.sh` locally on any
platform.
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* add ilammy/msvc-dev-cmd@ and Ninja
we can simplify the windows runner and run everything in bash
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* windows: drain subprocess stderr before join to avoid test_suite_runner hang
* move last test to `ci_tests.sh`
thus completing the centralization of tests in `ci_tests.sh`
* Fix Windows CI cache
Updates the cache key to include hashes of CMakeLists.txt and the
workflow file.
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* `package_build.sh` runs in temp dir to avoid workspace pollution
- add cleanup
* nix: use `ci_tests.sh`
* remove annoying build-mac warnings
This now checks if package already installed trying to prevent
annoying warnings in the github ci:
Fixes:
```
build-mac (Release, 19)curl 8.17.0 is already installed and up-to-date.
To reinstall 8.17.0, run: brew reinstall curl
```
* refactor test_suite_runner
- less allocations, cleaner code, more maintainable.
- now can be killed and the temp dirs are correctly cleaned up, and the
output is correct.
* main.yml: bsd: change to using rsync, is twice as fast.
* default to `--wincrt=dynamic` when `--sanitize=address` on windows
Default to dynamic, as static ASan is removed in LLVM 21+ for Windows
https://github.com/llvm/llvm-project/pull/107899
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* Formatting (indent with tab, align with space). Fix K&R braces. Style: keep all cases multiline if one is.
---------
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
Co-authored-by: Alex Garrett <limit.ordinal17@gmail.com >
2026-01-14 01:16:06 +01:00
Koni Marti
15fc435d92
collections: fix LinkedList.to_format
...
For-loop in LinkedList.to_format goes brrrrrr and prints the value of
the first node an infinte number of times because it does not properly
iterate the linked list.
Fix the list iterations and add the missing string format specifier.
Bug can be reproduced with:
```
import std;
fn void main() => @pool()
{
io::printfn("%s", linkedlist::@tnew{usz}({1,2,3}));
}
```
2026-01-13 23:09:05 +01:00
Manuel Barrio Linares
9d54e9e3c4
a fix to generated C header global
...
test:
```c3
module my_module;
alias Something = fn void(int);
Something something @export("something") = &something_else;
fn void something_else(int a) => {};
```
would generate
```c
/* GLOBALS */
my_module__Somethingextern something;
```
now correctly generates
```c
/* GLOBALS */
extern my_module__Something something;
```
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
2026-01-13 23:07:49 +01:00
Book-reader
c73c7cb2a3
add Win32_CODEPAGES enum and enable utf8 console output on win32 ( #2670 )
...
* add Win32_CODEPAGES enum and enable utf8 console output on win32
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-01-13 23:00:01 +01:00
Gourmet
827ad18ef4
Ignore ctags and gtags files in .gitignore
...
This PR updates the .gitignore file to exclude automatically generated tags files from ctags and gtags.
Specifically, it ignores:
- ctags output file: tags
- GNU Global output files: GTAGS, GRTAGS, GPATH
2026-01-13 18:08:43 +01:00
Darvis
3fc562af6f
Fix minor typos in README.md
2026-01-13 18:06:33 +01:00
Arnaud Duforat
87c42f1cd3
Add unit tests for HMAC 256 based on RFC 4231 ( #2744 )
...
* Add unit tests for HMAC 256 based on RFC 4231
* Formatting, shorten initializers.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-01-12 11:26:49 +01:00
Christoffer Lerno
e93f22fbda
- bitorder::read and bitorder::write may fail because of unaligned access #2734 .
2026-01-12 01:11:31 +01:00
Christoffer Lerno
8fa59cbb43
Creating recursive debug info for functions could cause assertions.
2026-01-07 23:50:56 +01:00
Christoffer Lerno
527766310f
Update pointer type naming.
2026-01-07 23:12:09 +01:00
Christoffer Lerno
a02b0a1f4c
Update LLVMHasUseList.
2026-01-07 20:29:55 +01:00
Christoffer Lerno
4d93db51ee
Check properly has use list.
2026-01-07 19:59:40 +01:00
Christoffer Lerno
fa2e6e8189
Fix typo
2026-01-07 15:56:34 +01:00
Christoffer Lerno
0fc1871ddf
- Assert on optional-returning-function in a comma expression. #2722
2026-01-07 15:53:54 +01:00
Christoffer Lerno
197f82d829
Revert windows
2026-01-07 03:36:48 +01:00
Christoffer Lerno
4ad11724d1
Update Windows flags
2026-01-07 03:31:03 +01:00
Christoffer Lerno
6d53fd6f6e
Fix test.
2026-01-07 03:18:01 +01:00
Christoffer Lerno
db47b0555d
Update windows LLVM version
2026-01-07 03:15:59 +01:00
Christoffer Lerno
ebd7b7243a
Fix bug when evaluating a non-generic identifier.
2026-01-07 03:13:14 +01:00
Christoffer Lerno
e0771beabc
Remove pointer names in debug, following Clang.
2026-01-07 02:35:05 +01:00
Christoffer Lerno
824d064710
Fix tests.
2026-01-07 00:55:30 +01:00
Christoffer Lerno
336ddb67c8
Incorrect alignment on typedef and local variable debug info.
2026-01-07 00:16:49 +01:00
Christoffer Lerno
9ad98beda7
- Crash when doing a type property lookup for const inline enums in some cases #2717 .
2026-01-06 15:28:18 +01:00
Christoffer Lerno
702f836b40
io::read_fully now handles unbounded streams properly
2026-01-05 22:27:55 +01:00
Christoffer Lerno
d820a2356a
Fix: Compiler assert when attempting to define multiple faults in a generic module. #2706
2026-01-05 21:04:23 +01:00
Christoffer Lerno
fa1951642b
Add debug info
2026-01-05 00:11:48 +01:00
Christoffer Lerno
42dc2d541a
Add testcase.
2026-01-04 22:05:01 +01:00
Chad Adams
fdbbe5c1aa
improve c3c init error message ( #2697 )
...
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-01-03 17:17:12 +01:00
Christoffer Lerno
292bf1cbbc
Designated initialization with ranges would not error on overflow by 1.
2026-01-03 02:32:40 +01:00
Christoffer Lerno
82769669ec
Fix of generic with multiple parameters fail. #2702
2026-01-03 00:09:14 +01:00
Christoffer Lerno
29b211eefc
- Fix the case where \u<unicode char> could crash the compiler on some platforms.
2026-01-01 21:44:37 +01:00
Zack Puhl
e4965ab408
Add BLAKE3 Hashing/XOF to stdlib ( #2667 )
...
* blake3: initial unit test passing!
* typo
* add key derivation macros; vanilla unit tests; working to test 18 atm
* mark it here - all tests passing o_o
* finish first-round unit tests - will add more if necessary
* add crypto shootout bench entertainment
* tests: add XOF unit w/ seek; assert NO finalization
* add another to finalizations unit test
* add all BLAKE3 scaffolding for later SIMD optimizations
* irksome
* tabs
* tabs2
* extra documentation / contracts
* extra detail
* try to make things a bit more arch-neutral
* release notes
* Formatting
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2026-01-01 21:11:33 +01:00
Christoffer Lerno
067a4f7cb1
Fixed codegen for vec->array in the boolean case.
2026-01-01 00:25:32 +01:00
Christoffer Lerno
739e91efa4
- Reduced memory usage for backtraces on Linux.
...
- `String.tokenize_all` would yield one too many empty tokens at the end.
- `String.replace` no longer depends on `String.split`.
2025-12-31 10:08:00 +01:00
Christoffer Lerno
26d733ef59
No optimization in test runner for MSVC
2025-12-31 00:45:35 +01:00
Christoffer Lerno
32d6025e29
Add panics just in case.
2025-12-31 00:43:19 +01:00
Christoffer Lerno
04706f2dcd
Fix issue when removing test files on abort.
2025-12-31 00:13:38 +01:00
Christoffer Lerno
d8a7c57b56
- Miscompilation: global struct with vector could generate an incorrect initializer.
2025-12-30 23:54:00 +01:00
Christoffer Lerno
ad8769580a
Methods registered with generic type will implicitly get templated.
2025-12-30 22:39:42 +01:00
Christoffer Lerno
d51dd09a1f
Made contracts aggregate from types etc
2025-12-30 21:31:45 +01:00
Christoffer Lerno
5ed4f9519f
- x'1234' +++ (ichar[1]) { 'A' } would fail due to missing const folding.
2025-12-30 16:06:28 +01:00
Christoffer Lerno
493a084745
Added additional type size limits.
2025-12-30 13:42:14 +01:00
Christoffer Lerno
9bd04526e8
foo.x was not always handled correctly when foo was optional.
2025-12-30 12:38:04 +01:00
Christoffer Lerno
90f0486334
- Assert when encountering a test function with raw vaarg parameters.
2025-12-30 12:28:03 +01:00
Christoffer Lerno
e4f1b57bd0
Assert when encountering a malformed module alias.
2025-12-29 22:41:42 +01:00
Christoffer Lerno
c949bd3108
Assert when struct size would exceed 4 GB.
2025-12-29 22:24:41 +01:00
Christoffer Lerno
56f8008d85
- Parse error in $defined was not handled correctly, leading to an assertion.
2025-12-29 22:09:39 +01:00
Christoffer Lerno
c6a96ad7f3
- i<n> suffixes were not caught when n < 8, causing an assert.
2025-12-29 21:57:06 +01:00
Christoffer Lerno
328e6f518c
Fix bug when encountering Type{} where Type is a generic parameter.
2025-12-29 19:34:45 +01:00
Christoffer Lerno
8ec4a2cada
Fix test.
2025-12-29 17:25:49 +01:00
Zack Puhl
9b318ec233
[stdlib] Impove SHA-256 Performance ( #2671 )
...
* [stdlib] Impove SHA-256 Performance
Cleaned up the code a bit. Seems to have improved performance anywhere from ~10-25%.
* trade-offs, trade-offs... reduce codegen
* Fix formatting
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-12-29 17:07:03 +01:00
Christoffer Lerno
d96624c578
Decoupled generics ( #2695 )
2025-12-29 17:01:03 +01:00
Christoffer Lerno
bf1d401566
Converting between simd/non-simd bool vector would hit a compiler assert. #2691
2025-12-29 16:59:34 +01:00
Christoffer Lerno
a2c886a2d9
- Compiler assert when passing returning CT failure immediately rethrown #2689 .
2025-12-26 22:02:02 +01:00
Christoffer Lerno
e76278cfd7
Fix test
2025-12-25 22:50:06 +01:00
Christoffer Lerno
1028f85daa
- Better error messages when slicing a pointer to a slice or vector. #2681
2025-12-25 22:01:15 +01:00
Christoffer Lerno
e706c914a8
Fix test.
2025-12-25 21:39:19 +01:00
Christoffer Lerno
f3b71ed7eb
- $$MASK_TO_INT and $$INT_TO_MASK to create bool masks from integers and back.
...
- Fix bug when creating bool vectors in certain cases.
2025-12-25 20:55:11 +01:00
Christoffer Lerno
18b246c577
- Testing for the presence of methods at the top level is prohibited previous to method registration.
2025-12-24 15:32:21 +01:00
Christoffer Lerno
c205719563
Fix netbsd vm version
2025-12-23 11:43:53 +01:00
Josh Ring
02a5270c5a
Add docstring to swizzle and swizzle2 ( #2674 )
...
* Add docstring to swizzle and swizzle2
* Fixup
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-12-23 11:38:04 +01:00
Manuel Barrio Linares
2ba244dd9c
Split formatting options out of .clang-tidy into .clang-format
...
This splits out the .clang-format settings from the .clang-tidy file.
Right now, the .clang-tidy file has a bit of a mix: it contains both
clang-tidy checks and clang-format style options.
This actually works fine in some tools (like CLion which doesn't
completely fail), but newer versions of clangd-based tools (VSCode,
Neovim, etc.) are stricter and will outright reject the config because
they expect .clang-tidy to only contain tidy-related stuff.
So here's what I did:
- Moved all the formatting-related options into a brand new
.clang-format file
- Kept .clang-tidy focused only on checks, warnings-as-errors, and any
check-specific options
No changes to the actual style rules or tidy checks. Everything should
behave exactly the same as before.
This should now play nicely with clangd, VSCode/VSCodium, Neovim, and
other modern clang-based tools, while still working perfectly in CLion.
I did this because some/*my* PRs had some formatting errors that could
be prevented in the future, thus lessing the work while
reviewing/merging.
Test the old .clang-tidy with
```
clang-tidy --dump-config
./.clang-tidy:13:1: error: unknown key 'SpaceBeforeCaseColon'
... more errors
```
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
2025-12-23 11:34:53 +01:00
Manu Linares
d33d0a232b
threaded test_suite_runner.c3 ( #2642 )
...
* threaded test_suite_runner.c3
- Added a simple threadpool
- Fixed the status line updates
- Implemented the #skip for tests
- Added ansi color to the final status line
It works as one expects reducing the total runner time by the allocated
number of threads.
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* fix thread_number and a test
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* added choice of "--thread [N]" or defaults to os::num_cpu()
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* added unique explicit --build-dir to the compiler
and also print the c3c command line for debugging
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* disable "run compiler tests" for msvc-debug build
it takes like 1:30hs
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* buffer printouts and correct ordering of tests
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* added progress bar
- removed some \r carrier return stuff
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* Fix bug in fixed pool. Improve progress bar
* Add color to bar.
* Some renaming.
* fix some leaky leaks
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* each test output is printed immediately
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* Formatting, remove comment. Re-enable MSVC debug test.
---------
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-12-21 14:34:16 +01:00
Christoffer Lerno
5c4197debd
Refactoring of decl_register
2025-12-21 14:10:06 +01:00
Christoffer Lerno
41261d40b2
- Incorrectly using LLVMStructType when emitting dynamic functions on MachO #2666
2025-12-20 21:20:35 +01:00
Zack Puhl
48ecceab54
Add Streebog-256 and -512 Hashing (aka "GOST-12") ( #2659 )
...
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-12-20 19:40:22 +01:00
Zack Puhl
0d9547a388
Add RIPEMD Hashing to stdlb ( #2663 )
...
* Add RIPE-MD Hashing to stdlib
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-12-20 19:39:12 +01:00
Manu Linares
d2f59c5b3f
Linux: implement signal stacktrace using SA_SIGINFO + sigaltstack ( #2653 )
...
* Linux: implement signal stacktrace using SA_SIGINFO + sigaltstack
Adds proper signal handlers for SIGSEGV/SIGBUS/SIGILL on Linux,
enables backtraces from signal context, and exits with correct POSIX
signal codes (128+signal). Fixes missing "signal stacktrace" support
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* defer libc::dlclose(handle);
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* fix double backtrace on panic
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* add guards for Linux X86_64
- remove comments
- uncomment MContext_t for Linux AARCH64
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
* fix guards, missed in two places
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
---------
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-12-20 03:07:23 +01:00
limit-ordinal
85166bc706
Add NetBSD Support ( #2661 )
...
* Add NetBSD Support
Includes:
- Hints to find non-compatibility libc functions
- Struct and constant definitions for sockets, polling, etc.
- Changes to the linker code to work around some quirks in the NetBSD dynamic linker
- A target triple for netbsd aarch64 so llvm builds/links the compiler properly on this platform
* Updated releasenotes and some compacting
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-12-19 19:23:06 +01:00
Christoffer Lerno
bf26898645
Fixed test.
2025-12-19 19:01:19 +01:00
Zack Puhl
1f2bcd5462
Implement BLAKE2 Hashing in stdlib ( #2648 )
...
* Implement BLAKE2 Hashing in stdlib
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-12-19 17:22:54 +01:00
Christoffer Lerno
4e6cd4283c
- Remove use of LLVMGetGlobalContext for single module compilation.
...
- Fixed bug where constants would get modified when slicing them. #2660
2025-12-19 17:17:45 +01:00
Zack Puhl
9aec5de105
[stdlib] Add CT @in Macro/Builtin ( #2662 )
...
* [stdlib] Add CT `@in` Macro/Builtin
2025-12-19 15:55:20 +01:00
Manu Linares
dec49b05b8
Fix: Correct precision calculation for floating point formatting ( #2657 )
...
* Fix: Correct precision calculation for floating point formatting
---------
Signed-off-by: Manuel Barrio Linares <mbarriolinares@gmail.com >
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-12-19 15:51:42 +01:00
Christoffer Lerno
29bcd2c96e
Update libc test
2025-12-18 09:53:38 +01:00
Zack Puhl
97a9cab218
Fix ChaCha20 Alignment Issues
2025-12-18 09:07:51 +01:00
Christoffer Lerno
436af4dbca
Re-enable OpenBSD
2025-12-17 20:11:14 +01:00
Christoffer Lerno
b08a2a2c0f
Disable openbsd
2025-12-17 17:21:32 +01:00
Christoffer Lerno
b43dac24c4
Fix incorrect alignment in ChaCha20
2025-12-17 15:38:51 +01:00
Zack Puhl
bae0f0f579
Implement ChaCha20 Crypto in stdlib ( #2643 )
...
* ChaCha20 implementation, first pass
* fix bug with clone_slice when length is 0
* final ChaCha20 crypto tidying
* final adjustments; add benchmark
* add guards everywhere else or w/e
* stdlib 'i++' conformity
* release notes & security warning updates
* update tests; cleanup; default counter should be 0 not 1
* remove prints in test file
* add extra unit tests for unaligned buffers
Co-authored-by: Manu Linares <mbarriolinares@gmail.com >
* one final alignment test
* nice contraction of tests w/ some paranoia sprinkled in
* nearly double the efficiency of chacha20's transform
Co-authored-by: Manu Linares <mbarriolinares@gmail.com >
* fix memory leak in test case
* improve one of the unit tests to cover more cases
* greatly simplify chacha20 'transform'
Co-authored-by: Manu Linares <mbarriolinares@gmail.com >
---------
Co-authored-by: Manu Linares <mbarriolinares@gmail.com >
2025-12-17 15:10:45 +01:00
Zack Puhl
8055c340f6
Add Implicit @pool for Each Unit Test Invocation ( #2654 )
...
* Add Implicit `@pool` for Each Unit Test Invocation
2025-12-17 15:08:02 +01:00
Christoffer Lerno
00c1210625
Rename append_char_buffer
2025-12-16 22:11:58 +01:00
Christoffer Lerno
070b13c81c
More fixes to $$LINE
2025-12-16 21:48:35 +01:00
Christoffer Lerno
415c9639e7
- Deprecated DString.append_chars, use DString.append_string
...
- Deprecated `DString.append_string` for DStrings, use `DString.append_dstring` instead.
- Added `DString.append_char_buffer`.
2025-12-16 20:17:54 +01:00
Christoffer Lerno
996f8a6a4d
Shuffle names as <-> to
2025-12-16 16:15:01 +01:00
Christoffer Lerno
e49e3e32e7
- Fix error message when a method has the wrong type for the first argument.
...
- Add `any.to` and `any.as`.
2025-12-16 16:02:56 +01:00
Christoffer Lerno
86a05ba6c0
Fix issue with inlining span.
2025-12-16 14:22:25 +01:00
Christoffer Lerno
651735f9a0
- $$LINE would sometimes incorrectly be constant.
2025-12-16 13:30:51 +01:00
Michael Chernigin
759389066f
Add Elf32_Shdr and Elf64_Shdr to std::os::linux
2025-12-16 00:17:14 +01:00
Christoffer Lerno
3577a2d6b8
Updated tests and error message for failed generic lookups.
2025-12-13 18:51:45 +01:00
Christoffer Lerno
b63886b879
Fix test
2025-12-13 18:06:16 +01:00
Christoffer Lerno
466d3bc1b6
- Hard limit of 127 characters for identifiers.
2025-12-13 03:51:39 +01:00
Lexi
2a2c0f5d91
Add a leniency flag to String.unescape(), and fix a memory leak in String.(un)escape() ( #2640 )
...
* fix memory leak in string_escape.c3
* add unescape_lenient and tunescape_lenient
* Optimize for the use of the temp allocator.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-12-13 00:49:01 +01:00
Christoffer Lerno
0c0d0ace4d
Fix requirement to use prefix when using $defined
2025-12-13 00:38:19 +01:00
Zack Puhl
a0ab10c23e
Add Poly1305 Universal Hashing Algorithm (MAC) ( #2639 )
...
* Add Poly1305 Universal Hashing Algorithm (MAC)
2025-12-12 23:08:49 +01:00
DylanDoesProgramming
0685260454
add --linux-libc=host option and set default to host ( #2636 )
...
* added `--linux-libc=host` and set default to `default_linux` from `src/build/builder.c`
* updated `resources/project_schema.json` for `linux-libc` host build option
* Update how libc is set.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-12-12 22:53:01 +01:00
Christoffer Lerno
15662bd32f
Typedefs and structs with inline types supporting lengthof would not work with lengthof #2641 .
2025-12-12 20:57:32 +01:00
Christoffer Lerno
475816251b
- Strings assigned to longer arrays would crash codegen, e.g. char[10] x = "abcd.
2025-12-12 20:35:11 +01:00
Lexi
bf62d11a73
Improve the error message for miscasing types in the last argument of a method ( #2629 )
...
* Improve the error message for miscasing types in the last argument of a method
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-12-11 16:46:56 +01:00
Christoffer Lerno
37d42d555d
- Compiler crash when concatenating structs and arrays to an untyped list.
2025-12-11 03:46:15 +01:00
Christoffer Lerno
1fc522ec9c
- Subscripting of constant slices would sometimes be considered non-constant #2635 .
2025-12-10 14:11:51 +01:00
Christoffer Lerno
3a8a6aa429
- Ignore const null check on deref in $defined and $sizeof #2633 .
2025-12-10 00:02:24 +01:00
Technical Fowl
e15ee23925
Matrix math cleanup ( #2620 )
...
* Cleanup inconsistent matrix math functions
* Add more matrix unit tests
2025-12-07 00:08:51 +01:00
Savino Pio Liguori
85657c9200
Added "implement-libc" feature. ( #2564 )
...
This feature adds an option from project.json and build options to disable libc unreachable statements in order to be able to implement one for yourself. Useful feature for bare metal developing.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-12-07 00:07:54 +01:00
Sander van den Bosch
3f20e5af1d
add join for ThreadPool without destroying the threads ( #2579 )
...
* add join for ThreadPool without destroying the threads
* Make the main Thread block waiting for the worker threads to finish instead of buzy looping and do proper initialization and freeing of all variables.
* Updated test to use `atomic_store` and take into account the maximum queue size of the threadpool.
* - Add `ThreadPool` join function to wait for all threads to finish in the pool without destroying the threads.
- Return of Thread/Mutex/CondVar `destroy()` is now "@maydiscard" and should be ignored. It will return void in 0.8.0.
- Return of Mutex `unlock()` and `lock()` is now "@maydiscard" and should be ignored. They will return void in 0.8.0.
- Return of ConditionVariable `signal()` `broadcast()` and `wait()` are now "@maydiscard". They will return void in 0.8.0.
- Return of Thread `detatch()` is now "@maydiscard". It will return void in 0.8.0.
- Buffered/UnbufferedChannel, and both ThreadPools have `@maydiscard` on a set of functions. They will retunr void in 0.8.0.
- Pthread bindings correctly return Errno instead of CInt.
- Return of Thread `join()` is now "@maydiscard".
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-12-06 23:54:04 +01:00
Christoffer Lerno
18e2838772
- Hex escapes like "\x80" would be incorrectly lowered. #2623
2025-12-06 18:24:15 +01:00
Walther Chen
f023db8638
fix ByteBuffer.grow ( #2622 )
...
* fix ByteBuffer.grow
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-12-06 17:57:11 +01:00
Christoffer Lerno
cb0b94c064
- Optional does not play well with bit ops #2618 .
2025-12-06 00:46:42 +01:00
Christoffer Lerno
7087665ccc
Updated grammar
2025-12-05 23:00:58 +01:00
Christoffer Lerno
1793dd7f0b
Correctly detect incorrect use of ~ and ^
2025-12-05 20:42:37 +01:00
Christoffer Lerno
a61fd6d280
- Casting bitstruct to wider base type should be single step #2616 .
...
- Experimental accept of ~ and ^ for optionals.
2025-12-05 20:18:32 +01:00
Christoffer Lerno
034a048c8a
- Regression with npot vector in struct triggering an assert #2219 .
2025-12-05 17:26:22 +01:00
Christoffer Lerno
608fc4df9f
Update to version 0.7.9. Updated grammar.
2025-12-05 15:30:50 +01:00
Christoffer Lerno
5961bcaf86
Update current version.
2025-12-04 15:45:14 +01:00
Christoffer Lerno
fd5489458a
Additional fix and updated error message.
2025-12-03 22:25:38 +01:00
Christoffer Lerno
cf5dd5496a
@param name parsing too lenient #2614 .
2025-12-03 21:54:06 +01:00
DylanDoesProgramming
ccffa03de2
musl-based linux distro support ( #2577 )
...
* added switch statement to link musl-based linux distros to ld-musl-x86-64.so.2
* Update linker.c
/lib/ld-musl-x86-64.so.1 is musl's ld so. My bad
* don't need ENV_MUSLEABI.* in the switch for x86_64
* typo
* Added a CI test for an Alpine Linux container
* Update main.yml
Forgot to have bundle_output job use `env.LLVM_RELEASE_VERSION_ALPINEv3_22`.
* Added env.LLVM_RELEASE_VERSION_ALPINEv3_22 to `upload artifacts`
* changed bundle name to c3-musl-${{matrix,build_type}}.tar.gz
* Undid an accidental name change in build-linux-ubuntu22
* Update main.yml
sudo doesn't exist in alpine by default, and runs in root by default.
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
`--linker=builtin` fails because it forces search of `/lib64/ld-linux-x86-64.so.2`. lib64 doesn't exist on musl unless created as a symlink, and the appropriate so is /lib/ld-musl-<arch>.so.1
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
make isn't in alpine by default. added it in for risc-v example.
* gcc-riscv-none-elf is alpine's package
* using realpath for c3c over using relative pathing
* Have to use relative path for arguments in compiler test
* added --linker=builtin to
* Added linux-musl-<arch> targets
* Added more ld targets for glibc
* set both testproject libs as folders until they behave better
* added linux-musl-x64 target to clib2
* added riscv targets for ld-linux
* ubuntu doesn't have ld in /lib, but solely in /lib64?
* Make MUSL distinct from the target.
* Fix default in project schema
* Fix define
* Fix manifests.
* Update main.yml
add --linux-libc flag for builtin linking
* Grammar refresh
* Update releasenotes.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-12-03 00:42:36 +01:00
Christoffer Lerno
ce0ab62c78
Grammar refresh
2025-12-03 00:36:10 +01:00
Christoffer Lerno
0bc5cbca74
More raylib examples.
2025-12-01 22:33:01 +01:00
Christoffer Lerno
a2aa9fae6b
- Reference macro parameters syntax does not error in certain cases. #2612
2025-11-30 02:23:00 +01:00
Christoffer Lerno
9d79c3f33d
- $defined(hashmap.init(mem)) causes compiler segfault #2611 .
2025-11-30 00:08:46 +01:00
Christoffer Lerno
a26055c932
Added more raylib examples.
2025-11-29 22:40:58 +01:00
Christoffer Lerno
b296875c05
Fix BigInt
2025-11-28 23:20:45 +01:00
Glenn Kirk
a54658d37f
Add a missing enum value for NSEventModifierFlags
2025-11-28 17:05:57 +01:00
Christoffer Lerno
0a0e097bdf
Improve printf("%d") speed.
2025-11-28 17:04:10 +01:00
Dmitry Atamanov
2df51bfe07
Remove unused tester.py
2025-11-28 16:09:06 +01:00
Dmitry Atamanov
cb065152ea
Fix typo in @char16 macro
2025-11-28 16:08:38 +01:00
Dmitry Atamanov
07fa14f00b
Change sema_decls.c mode to 0664 (rw-rw-r--)
2025-11-28 16:06:58 +01:00
Glenn Kirk
ff1b17d18b
Fix the precompiled binary download links on the Github readme page
2025-11-28 16:04:41 +01:00
Christoffer Lerno
c3d5778ae0
Cache printf output.
2025-11-28 12:43:26 +01:00
Christoffer Lerno
373ad1a399
Added raylib example
2025-11-27 23:39:38 +01:00
Christoffer Lerno
6deed2d4a4
Update raylib in CI
2025-11-27 22:58:04 +01:00
Christoffer Lerno
6324d78c32
Added raylib example.
2025-11-27 21:53:32 +01:00
Christoffer Lerno
9e14338b77
Update raylib examples.
2025-11-27 20:42:35 +01:00
Christoffer Lerno
6e4614b6a4
- Fix bug when converting from vector to distinct type of wider vector. #2604
2025-11-27 16:40:55 +01:00
Christoffer Lerno
0b52819090
- Bug on rethrow in return with defer #2603 .
2025-11-27 12:53:12 +01:00
Christoffer Lerno
404a78943d
- Somewhat faster BigInt output.
2025-11-27 12:15:40 +01:00
Christoffer Lerno
7215a9fa12
Unexpected maybe-deref subscript error with out parameter #2600 .
2025-11-27 00:21:59 +01:00
Christoffer Lerno
463c6957fc
- Support int $foo... arguments. #2601
2025-11-26 23:54:18 +01:00
Christoffer Lerno
8ec3a52ef7
- Add float[<3>] x = { .xy = 1.2, .z = 3.3 } swizzle initialization for vectors. #2599
2025-11-26 11:31:22 +01:00
Glenn
ab1efdda73
Add NSApplicationTerminateReply and registerClassPair to objc stdlib
...
The missing registerClassPair function is required to register a class and make it active with objc after allocating with the existing allocateClassPair function.
2025-11-26 08:44:46 +01:00
Christoffer Lerno
4f3b6f922d
- Resolving a missing property on a const enum with inline, reached an assert #2597 .
2025-11-25 23:48:40 +01:00
Book-reader
869a1d93cb
Disable Xtensa target by default, enabled with -DXTENSA_ENABLE ( #2586 )
...
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-11-24 23:50:52 +01:00
Christoffer Lerno
5d468ccbf0
- Make printing typeids give some helpful typeid data.
2025-11-24 17:11:19 +01:00
Christoffer Lerno
887ed5b9e9
- String.to_integer does not correctly return in some cases where it should #2590 .
2025-11-24 12:46:31 +01:00
Christoffer Lerno
5c1a6d7623
- Incorrect error message when using generic type that isn't imported #2589
2025-11-24 12:27:09 +01:00
Christoffer Lerno
1b49ebf855
- Deprecate --test-nocapture in favour of --test-show-output #2588 .
2025-11-24 11:46:06 +01:00
Christoffer Lerno
98155b61f1
- Name property would be used even under c3c test #2587 .
2025-11-22 18:02:00 +01:00
m0tholith
60cdea5292
Add test option --test-log-level to choose tests' log level ( #2560 )
...
* Add test option `--test-log-level` to choose tests' log level
* draft: Improvements to `--test-log-level`
* Some fixes.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-11-20 23:15:14 +01:00
Glenn Kirk
49e836b1ab
[stdlib] macOS - Add objc and core foundation types and enums. ( #2572 )
...
* Add CGFloat, CGPoint, CGSize, CGRect
* Add WindowCollectionBehavior, WindowLevel, and WindowTabbingMode
* Change EventMask to ulong to match the objc unsigned long long
* Change int types to NS(U)Integer types to match objc
* Add core foundation tests
* Add objc tests
* Add darwin conditional to the test files
* Change enums to const inline to better match the NSEvent.h api.
Update the EventMask helper function to match the NSEvent.h api:
event_type_from -> event_mask_from_type.
* Update the release notes
* Deprecate original objc enums and replace with const inline enums backed with NS numerical types.
Rename the new objc enums with an NS prefix.
Update unit tests to account for new NS prefixed enums.
Add states item length constants to core_foundation.
Status item lengths don't really belong in either file, but as they are
dependant on CGFloat it made sense to move them to the same module.
Update release notes.
* Some tweaks
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-11-20 22:47:20 +01:00
Christoffer Lerno
5b83108dd1
- Add sigsegv stacktrace in test and regular errors for Darwin Arm64. #1105
2025-11-20 21:05:19 +01:00
Christoffer Lerno
a50de26c5d
- With project.json, when overriding with an empty list the base settings would still be used. #2583
2025-11-20 14:52:02 +01:00
Christoffer Lerno
7b50c87858
- Fix issue when tests encounter a segmentation fault or similar.
2025-11-20 12:52:25 +01:00
Christoffer Lerno
a816a78e98
Fix alignment.
2025-11-20 12:09:38 +01:00
Christoffer Lerno
39694e65c0
- *(int*)1 incorrectly yielded an assert in LLVM IR lowering #2584 .
2025-11-20 10:36:32 +01:00
Christoffer Lerno
2a41fa6281
Passing a single value to @wasm would ignore the renaming
2025-11-18 18:25:07 +01:00
Christoffer Lerno
49b8cfe267
- Allow splatting of structs. #2555
2025-11-17 16:33:22 +01:00
Christoffer Lerno
20dfdf5c5d
Fix test breaking for MSVC
2025-11-17 10:46:01 +01:00
Christoffer Lerno
1e543dc286
- Support @param directives for ... parameters. #2578
2025-11-17 10:44:04 +01:00
Christoffer Lerno
06884720e5
- Improve error message for Foo{} when Foo is not a generic type #2574 .
2025-11-16 23:54:19 +01:00
Christoffer Lerno
1ea181524e
- Fix decl attribute in the wrong place causing an assertion. #2581
2025-11-16 22:57:37 +01:00
Christoffer Lerno
b16ee3119d
- Using defer catch with a (void), would cause an assertion. #2580
...
- Fix testcase
2025-11-16 22:07:04 +01:00
Christoffer Lerno
4e66693065
- Refactored @simd implementation.
...
- Regression vector ABI: npot vectors would load incorrectly from pointers and other things. #2576
2025-11-16 01:37:39 +01:00
Christoffer Lerno
5f96b8e4c6
- Casting a distinct type based on a pointer to an any would accidentally be permitted. #2575
2025-11-13 15:54:29 +01:00
Christoffer Lerno
748a2f6530
- Enums now work with membersof to return the associated values. #2571
...
- Deprecated `SomeEnum.associated` in favour of `SomeEnum.membersof`
2025-11-13 13:15:02 +01:00
Christoffer Lerno
6360ddbc77
- When encountering a foreach over a ZString* it would not properly emit a compilation error, but hit an assert #2573 .
2025-11-11 12:36:02 +01:00
Christoffer Lerno
eccc6700dc
- Fix appending to c:\ or \ #2569 .
2025-11-09 21:45:19 +01:00
Christoffer Lerno
52ececba37
- Fix to Path handling c:\foo and \home parent. #2569
2025-11-08 23:42:47 +01:00
Christoffer Lerno
ffc65bcbf4
- Compiler assert with const enum based on vector #2566
2025-11-08 22:30:18 +01:00
Christoffer Lerno
0da6bf4455
- Passing a compile time type implicitly converted to a typeid would crash instead of producing an error. #2568
2025-11-08 22:17:58 +01:00
m0tholith
7063e684ba
Make expected error in test::@error macro optional
...
If not supplied with a fault, `test::@error` checks if a fault of any
type/value was returned
2025-11-07 11:46:37 +01:00
Christoffer Lerno
07363c6ecd
- Error message with hashmap shows "mangled" name instead of original #2562 .
2025-11-04 23:19:57 +01:00
Christoffer Lerno
5070840da9
- Regression vector ABI: initializing a struct containing a NPOT vector with a constant value would crash LLVM. #2559
2025-11-04 01:04:07 +01:00
Christoffer Lerno
4a25bcc5ee
Function referencing in @return? for simplified fault declarations. Check @return? eagerly #2340 .
2025-11-03 23:49:35 +01:00
Christoffer Lerno
d43d7100af
Fix division-by-zero checks on a /= 0 and b /= 0f #2558 .
2025-11-03 21:31:47 +01:00
Christoffer Lerno
791cbbfb62
Fix division-by-zero checks on a /= 0 and b /= 0f #2558 .
2025-11-03 16:47:57 +01:00
Christoffer Lerno
9b05dfdef1
Update release notes.
2025-11-03 15:13:58 +01:00
Dave Akers
b072e88bb3
Add $schema to project_default_keys
...
Adding $schema to avoid compiler WARNING about an unknown parameter.
2025-11-03 15:13:18 +01:00
Christoffer Lerno
af33d2b1cc
Update release notes.
2025-11-03 13:58:52 +01:00
Technical Fowl
d438d7510e
Add default exception handler for win32 ( #2557 )
...
* Add default exception handler for win32
2025-11-03 13:58:07 +01:00
Christoffer Lerno
1673aef74f
Fix test.
2025-11-03 12:55:00 +01:00
Christoffer Lerno
b3bce10699
Remove division-by-zero checks for floating point in safe mode #2556 .
2025-11-03 02:43:01 +01:00
Christoffer Lerno
3ff922e12b
- Missing imports allowed if module @if evaluates to false #2251 .
2025-11-02 13:20:36 +01:00
Christoffer Lerno
3b718335ec
- Improve multiline string parser inside compiler #2552
2025-11-01 00:12:32 +01:00
Christoffer Lerno
f25ad512a7
Foo.is_eq would return false if the type was a typedef and had an overload, but the underlying type was not comparable. Version 0.7.8.
2025-10-31 22:47:01 +01:00
Christoffer Lerno
5a3c484ceb
Remove automatic win32 cleanup. RC2
2025-10-30 21:29:48 +01:00
Christoffer Lerno
331a77c1c2
Update 0.7.7
2025-10-30 11:01:01 +01:00
Christoffer Lerno
045053f6bf
Fix for RISCV on LLVM 17
2025-10-28 18:22:32 +01:00
Christoffer Lerno
4809979898
- Add --riscv-cpu settings for RISC-V processors #2549 .
2025-10-27 18:33:54 +01:00
Christoffer Lerno
a5b2636b2e
Added cpu-flags to the command line help
2025-10-27 14:11:50 +01:00
Christoffer Lerno
c483c3b75f
Update naming to cpu-flags
2025-10-27 14:08:21 +01:00
Christopher Coverdale
c10d449e43
Add local TcpSocketPair ( #2526 )
...
* Add extern fn socketpair() to posix
* Add extern fn getsockname() for local socketpair loopback in windows
* Add local TcpSocketPair
* Add unit test for TcpSocketPair
* Add implicit wsa startup
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-10-27 13:16:14 +01:00
Christoffer Lerno
54b110a367
Dev ( #2547 )
...
* Update feature handling for Wasm, RiscV, Aarch64, Arm
* - The option `--riscvfloat` renamed `--riscv-abi`.
- Add initial `--cpu-features` allowing fine grained control over CPU features.
2025-10-27 01:09:59 +01:00
Dmitry Atamanov
ee8dc3d681
Update Linux nolibc/hello_world ( #2546 )
2025-10-27 00:45:16 +01:00
Christoffer Lerno
a38a627a1d
Allow (Foo)0 bitstruct casts even if type sizes do not match.
2025-10-25 20:33:47 +02:00
Christoffer Lerno
8aaf54e8b1
- Rename @extern to @cname, deprecating the old name #2493 .
2025-10-25 15:55:25 +02:00
Christoffer Lerno
423152202f
Dev ( #2545 )
...
* Optimize vector load / store. Fixes to alignment. Support typedef with `@simd` and `@align` #2543 . Update vector ABI #2542
* Fix alignment issue with indirect arguments.
2025-10-25 12:31:06 +02:00
Christoffer Lerno
f37e7460aa
Update OpenBSD llvm version.
2025-10-23 13:58:10 +02:00
Christoffer Lerno
8f5d5a0bb5
"Maybe-deref" subscripting foo.[i] += 1 #2540 .
2025-10-23 00:42:38 +02:00
Christoffer Lerno
883052a6bb
Improved generic inference in initializers #2541 .
2025-10-22 23:48:32 +02:00
Christoffer Lerno
9cf271f5fb
Refactoring codegen with Flat / Lowered types. Helpers for struct gep. type_get_indexed_type no longer returns the canonical type, fixes issues in #2534
2025-10-21 16:53:38 +02:00
Christoffer Lerno
5d8cad91b1
Fix lambda regression
2025-10-20 22:55:24 +02:00
Giuliano Macedo
614c6989d8
Fixed incorrect format strings when using error_exit. ( #2530 )
...
* Fixed incorrect format strings when using `error_exit`.
2025-10-20 11:24:07 +02:00
Tonis
03ad72afbb
Quaternion math improvements ( #2524 )
...
* Add radians to deg function
* Quaternion math fixes
* Formatting, use splat/swizzling, divide into multiple tests.
---------
Co-authored-by: tonis2 <tanton@paysure.solutions >
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-10-20 11:04:28 +02:00
Christoffer Lerno
b924ede71a
Regression: Not printing backtrace when tests fail for MacOS #2536 .
2025-10-20 02:50:06 +02:00
Christoffer Lerno
a81f857d8c
Update to fix with splat.
2025-10-20 02:26:04 +02:00
Christoffer Lerno
6169d7acdf
Correctly mention aliased type when method is not implemented #2534 .
2025-10-20 00:19:51 +02:00
Christoffer Lerno
4af31da7ea
Compiler segfault when getting a nonexistant member from an unnamed struct #2533 .
2025-10-20 00:03:15 +02:00
Christoffer Lerno
0bd2c81757
Splatting optional compile-time macro parameter from inside lambda expression does not work #2532 .
2025-10-19 23:05:50 +02:00
Book-reader
5ed1281451
fix nix hooks & patch phase
2025-10-15 22:06:10 +02:00
Christoffer Lerno
7b649314ec
Fix tests.
2025-10-15 00:50:24 +02:00
Christoffer Lerno
e37343fbe3
Refactor the C ABI conversion to use frontend independent types.
2025-10-14 19:38:51 +02:00
Christoffer Lerno
7b02907830
Try to workaround tag lock.
2025-10-12 21:59:41 +02:00
Christoffer Lerno
6eee760239
Add --max-macro-iterations to set macro iteration limit.
2025-10-11 16:26:07 +02:00
Christoffer Lerno
ae33d1a206
Fix issue testing if something is global. Remove ScopeId. Adding comments to code.
2025-10-11 13:50:06 +02:00
Christoffer Lerno
3430240c2a
Update readme with OpenBSD
2025-10-11 00:47:37 +02:00
Christoffer Lerno
6f11260a5c
Disallow aliasing of @local symbols with a higher visibility in the alias.
2025-10-10 14:04:19 +02:00
Christoffer Lerno
df67b7dddd
Allow .. ranges to use "a..a-1" in order to express zero length.
2025-10-10 00:34:30 +02:00
Christoffer Lerno
f3b7df2ab0
"build-dir" option now available for project.json, added to project. #2323
2025-10-09 23:41:58 +02:00
Christoffer Lerno
a000ae560a
Add new builtins $$str_snakecase $$str_replace and $$str_pascalcase.
...
Added `@str_snakecase`, `@str_replace` and `@str_pascalcase` builtin compile time macros based on the `$$` builtins.
2025-10-09 22:13:59 +02:00
Christoffer Lerno
0d85caf21c
Add splat defaults for designated initialization #2441 .
...
Add ??? and +++= to list-precedence.
2025-10-09 12:45:55 +02:00
Christoffer Lerno
e34a26422f
Change macro recursion depth to work on MSVC
2025-10-07 23:47:05 +02:00
Christoffer Lerno
fe70f10bcc
Sorting functions correctly took slices by value, but also other types by value. Now, only slices are accepted by value, other containers are always by ref.
2025-10-07 22:43:40 +02:00
Christoffer Lerno
d6be1cbf65
Incorrect visibility on local globals with public aliases. #2519
2025-10-07 21:52:15 +02:00
Christoffer Lerno
04cd079d4e
- Compiler segfault when accessing member of number cast to bitstruct #2516 .
...
- Additional fix to #2515
- Compiler assert when getting a member of a `bitstruct : char @bigendian` #2517 .
2025-10-07 00:12:41 +02:00
Christoffer Lerno
b4b14674b4
- Bitstruct truncated constant error escapes $defined #2515
2025-10-06 20:50:56 +02:00
Christoffer Lerno
5a1831c989
Error when using $vaarg/$vacount/$vasplat and similar in a macro without vaargs #2510 .
2025-10-06 00:45:36 +02:00
Christoffer Lerno
e9ec421b3b
Compiler fails to stop error print in recursive macro, and also prints unnecessary "inline at" #2513 .
2025-10-06 00:31:27 +02:00
Christoffer Lerno
872f63eecc
- Bitstruct value cannot be used to index a const array in compile time. #2512
2025-10-05 22:23:07 +02:00
Christoffer Lerno
1eb8c0ced1
Bug in io::write_using_write_byte.
2025-10-05 00:29:34 +02:00
Christoffer Lerno
b5ae2485a7
Update version to 0.7.7
2025-10-04 11:49:23 +02:00
Christoffer Lerno
fe6817f90d
Update frontpage version.
2025-10-03 18:42:32 +02:00
Christoffer Lerno
98a72007f8
Releasenotes fixup
2025-10-03 18:41:11 +02:00
Christoffer Lerno
87c1e09a7a
Compiler segfault when splatting variable that does not exist in untyped vaarg macro #2509
2025-10-03 14:08:19 +02:00
Christoffer Lerno
e0fbe31f00
Update release versions
2025-10-02 21:27:35 +02:00
Christoffer Lerno
7d6c844b99
Dead code analysis with labelled if did not work properly.
2025-10-02 21:24:05 +02:00
Christoffer Lerno
a03446a26d
- Fix lambda-in-macro visibility, where lambdas would sometimes not correctly link if used through a macro.
2025-10-01 21:05:49 +02:00
Christoffer Lerno
a7e77fec78
$for int $a = 1; $a < 2; $a++ would not parse.
2025-10-01 14:53:52 +02:00
Christoffer Lerno
05c3fa1afd
Update CI
2025-10-01 09:43:20 +02:00
Christoffer Lerno
30c8435669
Remove prerelease
2025-10-01 09:35:38 +02:00
Christoffer Lerno
94497c968b
- Prevent foo.bar = {} when bar is a flexible array member. #2497
...
- Fix several issues relating to multi-level inference like `int[*][*]` #2505
2025-09-30 23:43:20 +02:00
Christoffer Lerno
281d4af464
Update contact information for CoC
2025-09-29 13:57:01 +02:00
Christoffer Lerno
cb2d0e798e
Prevent foo.bar = {} when bar is a flexible array member.
2025-09-29 01:59:38 +02:00
Christoffer Lerno
da67cd4eb0
Assert when the binary doesn't get created and --run-once is used. #2502
2025-09-29 00:16:26 +02:00
Christoffer Lerno
7d06ca6d35
Crash during codegen when taking the typeid of an empty enum with associated values.
2025-09-29 00:01:20 +02:00
Christoffer Lerno
6d45450130
Renaming, and further refactoring.
2025-09-28 15:33:17 +02:00
Christoffer Lerno
27bbeaf79c
Remove use of CheckType to simplify expression handling.
2025-09-28 11:41:32 +02:00
Christoffer Lerno
3af5a537da
Cleanup around expressions.
2025-09-27 16:37:56 +02:00
Christoffer Lerno
6287e8dfbf
Restore some out checking.
2025-09-26 21:19:38 +02:00
konimarti
1f49a5448e
Add AES algorithm ( #2496 )
...
* crypto: add AES algorithm
* Some updates to the API
* Silence test.
* Fixed stdlib tests
* Some cleanup. Comments. Make internal methods functions.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-09-26 16:59:30 +02:00
m0tholith
ece4a2b6fb
Make StderrLogger print file and line if FULL_LOG ( #2500 )
...
* Make StderrLogger print file and line if `FULL_LOG`
* Avoid inlining a lot of code by using a macro wrapper. Fix test.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-09-26 16:58:29 +02:00
Christoffer Lerno
e68bd0c57f
Update test.
2025-09-25 14:48:00 +02:00
Christoffer Lerno
eaeafb7299
Issue not correctly aborting compilation on recursive generics.
2025-09-25 14:48:00 +02:00
Christoffer Lerno
44d736a537
Add +++= operator.
2025-09-25 14:48:00 +02:00
Christoffer Lerno
122dbb3668
Compiler assert with typed macro vaargs accessing a macro passed as vaarg #2498
2025-09-25 14:13:06 +02:00
Christoffer Lerno
c2abbe2e2f
Loosen generic resolution.
2025-09-24 00:12:58 +02:00
Christoffer Lerno
3ccabd625c
Renaming
2025-09-22 23:08:11 +02:00
Christoffer Lerno
cfe6534c15
Add shebang test.
2025-09-20 22:55:08 +02:00
Christoffer Lerno
f5090eb158
Support #! as a comment on the first line only.
2025-09-20 21:10:19 +02:00
Christoffer Lerno
d3db91536c
Incorrect nameof on nested struct names. #2492
2025-09-20 15:00:44 +02:00
Arnaud Moura
9c42919e5a
Install scripts ( #2393 )
...
* Add scripts to install c3
* Install script support debian binaries
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-09-19 22:24:05 +02:00
Book-reader
a6d33ec4af
Update stdlib to use struct member docs from #2427 and other small changes ( #2473 )
...
* Doc comment improvements
* update `compression/qoi.c3` to use const enums
* revert sweeping doc comment changes that impacted readability for now
* Some tweaks.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-09-19 18:41:32 +02:00
Christoffer Lerno
b03ae8bb17
Alias and distinct types didn't check the underlying type wasn't compile time or optional.
2025-09-19 18:05:29 +02:00
Christoffer Lerno
59fd777198
Add exec timings to -vv output #2490
2025-09-19 17:20:56 +02:00
Christoffer Lerno
d8286fa2a5
Add 'loop-vectorize', 'slp-vectorize', 'unroll-loops' and 'merge-functions' optimization flags #2491 .
2025-09-19 13:34:06 +02:00
Christoffer Lerno
3345e70c63
Comparing slices and arrays of user-defined types that implement == operator now works #2486 .
2025-09-19 11:21:29 +02:00
BWindey
12eea4a98d
[STDLIB] Add macro return types ( #2487 )
...
* add return types to macros where applicable
* std::time::clock::now() -> clock::now()
2025-09-18 14:06:58 +02:00
Christoffer Lerno
fdc20dc642
Taking .ordinal from an enum passed by pointer and then taking the address of this result would return the enum, not int.
2025-09-18 14:04:49 +02:00
Christoffer Lerno
c5e3a1b2da
- Compiler segfault for invalid e-mails in project.json. #2488
...
- `env::PROJECT_VERSION` now returns the version in project.json.
2025-09-18 10:58:15 +02:00
Christoffer Lerno
35270fb0bf
Fix unnecessary namespacing.
2025-09-18 00:16:08 +02:00
Christoffer Lerno
d782dad149
Fix compile time format check when the formatting string is a constant slice.
2025-09-17 14:31:00 +02:00
Christoffer Lerno
92aefb15f8
Generic inference ( #2475 )
...
* Change generic symbol resolution.
* Infer generic parameters lhs -> rhs: `List{int} x = list::NOHEAP`.
* Regression: Compiler segfault when assigning struct literal with too few members #2483
2025-09-16 18:05:21 +02:00
Christoffer Lerno
8342ac80d3
$alignof, $offsetof and $nameof can now be used in $defined.
2025-09-16 15:36:37 +02:00
Christoffer Lerno
c71444e7a0
Compile time switch over type would not correctly compare function pointer types.
2025-09-16 14:10:28 +02:00
Christian Brendlin
06e10bb69f
Add Gentoo installation instructions to README
...
Added Gentoo installation instructions for c3c.
2025-09-15 14:38:23 +02:00
Velikiy Kirill
fabd96552f
Implement write_to_stdin() in std::os::process ( #2482 )
...
* SubProcess: Add write_to_stdin
* SubProcess: Change unit test for windows support
2025-09-15 13:41:35 +02:00
m0tholith
2e99ae5ab9
For c3c run and friends, pass SIGINT to child process on Linux ( #2480 )
2025-09-13 18:51:33 +02:00
Christoffer Lerno
8fea6ee8ab
Compiler segfault when modifying variable using an inline assembly block inside defer #2450 .
2025-09-12 20:01:28 +02:00
Christoffer Lerno
e6b10ee00c
Stack object size limit error on a static object. #2476
2025-09-12 17:11:25 +02:00
Christoffer Lerno
6aff6d66de
Fix missing bitstruct member <* *> compatibility.
2025-09-10 23:39:04 +02:00
Christoffer Lerno
8035991ac3
?? with void results on both sides cause a compiler crash #2472
2025-09-10 10:47:14 +02:00
Jonathan Nilsson
c0bd14cee7
Find cl and set INCLUDE env var outside of a visual studio command promt ( #2467 )
...
* Added search for cl
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-09-09 22:38:40 +02:00
Christoffer Lerno
3ba0beee96
Support for SysV for CVaList
2025-09-09 13:41:26 +02:00
Christoffer Lerno
8e6535f13c
Fix of last checkin
2025-09-09 01:06:18 +02:00
Christoffer Lerno
0d8f9520e9
CVaList support on MacOS aarch64.
2025-09-09 01:05:20 +02:00
Christoffer Lerno
3caaf0a3e8
Compiler hang with unaligned load-store pair. #2470
2025-09-09 00:07:45 +02:00
Christoffer Lerno
a2206f1bcd
int val = some_int + some_distinct_inline_int errors that int cannot be cast to DistinctInt #2468
2025-09-08 10:21:47 +02:00
Christoffer Lerno
7b5277d52c
Any register allowed in X86_64 inline asm address. #2463
2025-09-07 00:03:49 +02:00
Christoffer Lerno
9f55a74d2e
Remove use of find_len and len_from_list. Rename lenof to lengthof
2025-09-06 18:35:03 +02:00
Christoffer Lerno
3eb8f68ded
- Add lenof() compile time function #2439
...
- Fix release notes
2025-09-06 18:17:17 +02:00
Christoffer Lerno
bd9bc118db
Allow doc comments on individual struct members, faultdefs and enum values #2427 .
2025-09-06 16:18:33 +02:00
Christoffer Lerno
95375a2591
Overloading &[] should be enough for foreach. #2466
2025-09-06 15:18:26 +02:00
Christoffer Lerno
b7115e9c70
Correctly silence "unsupported architecture" warning with --quiet #2465
2025-09-06 12:09:31 +02:00
Zack Puhl
078d9dc0b7
Add LinkedList Operators and Update Tests ( #2438 )
...
* Add LinkedList Operators and Update Tests
* add linkedlist printing and `@new` macros (single-line init and pool-capable)
* add linkedlist node and reg iterator; comparisons w/ ==
* Fix benchmarks. Drop random access to the linked list using []. Only return a direct array view.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-09-06 11:57:21 +02:00
Book-reader
79c0c8e082
Build linux binaries for releases with proper curl support ( #2464 )
...
* Build linux binaries with proper curl support
* Move vendor-fetch tests to a more appropriate location
2025-09-06 11:00:07 +02:00
Christoffer Lerno
69b3263a00
- Added path::home_directory, path::documents_directory, path::videos_directory, path::pictures_directory, path::desktop_directory, path::screenshots_directory,
...
`path::public_share_directory`, `path::templates_directory`, `path::saved_games_directory`, `path::music_directory`, `path::downloads_directory`.
Fix codegen bug in expressions like `foo(x()) ?? io::EOF?` causing irregular crashes.
2025-09-06 02:27:10 +02:00
dimapaloskin
cbd415881b
Support .m files in expand_csources
2025-09-06 01:48:20 +02:00
LowByteFox
6dbd81a6f9
add ability for TinyCC to compile c3c ( #2459 )
...
* add ability for TinyCC to compile c3c
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-09-06 01:47:48 +02:00
Christoffer Lerno
e605a21fd3
Revert "Revert 0.7.6 code for 0.7.5 re-release"
...
This reverts commit d1349c9cfb .
2025-09-05 23:30:35 +02:00
Christoffer Lerno
d1349c9cfb
Revert 0.7.6 code for 0.7.5 re-release
2025-09-05 18:42:54 +02:00
Christoffer Lerno
c375aef9a3
Updates to grammar
2025-09-04 20:18:48 +02:00
Book-reader
3c1f692d49
Make enum Cc inline so it can index Termios.c_cc ( #2448 )
2025-09-04 11:41:06 +02:00
Christoffer Lerno
29e20ee1be
- Inlining location when accessing #foo symbols.
...
- Improve inlined-at when checking generic code.
2025-09-04 11:39:48 +02:00
niedlich
cf14787552
Typo fixes ( #2457 )
...
* fix typos in comments and strings
* fix typos in symbols (and some comments/strings)
* fix typos in releasenotes.md
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-09-04 01:07:07 +02:00
Book-reader
10241df23c
Add generic InterfaceList type for storing values that implement a specific interface ( #2433 )
...
* Add generic InterfaceList type
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-09-03 22:58:27 +02:00
Christoffer Lerno
8795ffc4f1
Returning pointer to index of slice stored in a struct from method taking self incorrectly detected as returning pointer to local variable #2455 .
2025-09-03 01:02:25 +02:00
Christoffer Lerno
e25812a071
$defined(x[0] = val) causes an error instead of returning false when a type does not have []= defined #2454
2025-09-03 00:08:43 +02:00
Christoffer Lerno
14a929588a
Confusing error message when type has [] overloaded but not []= #2453
2025-09-02 23:56:15 +02:00
Christoffer Lerno
02d1486af9
- Compiler assert with var x @noinit = 0 #2452
2025-09-02 23:39:00 +02:00
Christoffer Lerno
bab317282c
Update version to 0.7.6
2025-09-01 16:21:48 +02:00
Christoffer Lerno
a3a6319bcf
Fix tests
2025-09-01 13:32:40 +02:00
Christoffer Lerno
17dfbb377e
Fixed test.
2025-09-01 13:05:14 +02:00
Christoffer Lerno
ff39f14dd1
$defined(Foo x = $vaexpr[0]) works correctly.
2025-09-01 12:09:14 +02:00
Christoffer Lerno
af4309b286
$defined returns an error when assigning a struct initializer with an incorrect type #2449
2025-09-01 10:44:19 +02:00
Christoffer Lerno
176fb47c23
Update to 0.7.5 release candidate.
2025-09-01 02:11:08 +02:00
Christoffer Lerno
3a69c9f1fe
Fix test.
2025-09-01 01:18:17 +02:00
Christoffer Lerno
944cc00d34
Fix regression on splat.
2025-09-01 01:14:39 +02:00
Christoffer Lerno
a751177a3e
Const enum methods are not being recognized. #2445
2025-08-31 23:56:48 +02:00
Christoffer Lerno
d291a40f69
Compiler hangs on == overload if other is generic #2443
...
Fix missing end of line when encountering errors in project creation.
2025-08-31 23:40:55 +02:00
Christoffer Lerno
cb006dd715
- Compiler module-scope pointer to slice with offset, causes assert. #2446
2025-08-31 23:18:27 +02:00
Christoffer Lerno
c7f09f2879
Disambiguate types when they have the same name and need cast between each other.
2025-08-31 15:16:52 +02:00
Christoffer Lerno
c0387221af
Fix regression where files were added more than once. #2442
2025-08-31 12:07:10 +02:00
Christoffer Lerno
0c7c5fbd7b
Update MAP_ANONYMOUS for Linux
2025-08-31 00:27:01 +02:00
Christoffer Lerno
fafcf3d0a9
Enum inference, like Foo x = $eval("A"), now works correctly for $eval.
2025-08-30 15:24:11 +02:00
Christoffer Lerno
b757f1447b
Fix incorrect priority filtering. Move ??? to features.
2025-08-30 13:22:10 +02:00
LowByteFox
bc3d9d761f
fix buffer overflow when deallocating an object and implement asan poisoning for unused memory
2025-08-30 11:31:35 +02:00
Christoffer Lerno
10bc68fb39
Fixed regression with optional argument macros and lambdas.
2025-08-30 01:00:24 +02:00
Christoffer Lerno
de8aed9d96
Enable $defined((void)#hash)
2025-08-29 23:24:32 +02:00
Christoffer Lerno
1080303768
Using ... to expand elements.
2025-08-29 16:30:28 +02:00
Christoffer Lerno
0503e15e31
Fix error message for $case after $switch
2025-08-29 14:42:07 +02:00
Christoffer Lerno
ca2fabc9f9
- $defined(#hash) will not check the internal expression, just that #hash exists.
...
- Added optional macro arguments using `macro foo(int x = ...)` which can be checked using `$defined(x)`.
- Supplemental `roundeven` has a normal implementation.
2025-08-29 11:23:39 +02:00
Christoffer Lerno
0178a44b3c
Add some initial ability to compile for a limited set of backends because of narrow-minded LLVM maintainers. 640 kb is good enough for anybody.
2025-08-28 20:38:14 +02:00
Christoffer Lerno
8f3cb9c6e9
Add more comments to mem functions.
2025-08-28 18:23:01 +02:00
Christoffer Lerno
c339278ff7
String.bformat has reduced overhead.
2025-08-28 12:12:22 +02:00
Christoffer Lerno
47316dac59
Add compile time ternary $val ??? <expr> : <expr>.
2025-08-28 01:56:05 +02:00
Christoffer Lerno
90d3f429aa
- @test/@benchmark on module would attach to interface and regular methods.
2025-08-28 00:28:32 +02:00
Christoffer Lerno
239d249f01
- Added $kindof compile time function.
...
- Deprecated `@typekind` macro in favour of `$kindof`.
- Deprecated `@typeis` macro in favour of `$typeof(#foo) == int`.
2025-08-27 20:38:12 +02:00
Christoffer Lerno
7312c10b9e
- @is_const is deprecated in favour of directly using $defined.
...
- `@is_lvalue(#value)` is deprecated in favour of directly using `$defined`.
2025-08-27 18:21:55 +02:00
Christoffer Lerno
3c6e6f1965
Make log and exp no-strip.
2025-08-27 14:41:19 +02:00
Christoffer Lerno
28b9be64ee
Update error message for missing body after if/for/etc #2289 .
2025-08-27 12:37:01 +02:00
Christoffer Lerno
d2cae909e1
A file with an inferred module may not contain additional other modules.
2025-08-27 11:42:53 +02:00
Christoffer Lerno
e194081e21
Fix test.
2025-08-27 10:45:59 +02:00
Christoffer Lerno
04cc34f12e
Fix correct ? after optional function name when reporting type errors.
2025-08-27 09:33:25 +02:00
Christoffer Lerno
f7143c1852
Fix tests, reenable LLVM 22
2025-08-26 20:55:58 +02:00
Christoffer Lerno
1781e97f02
Update jumptable codegen.
2025-08-26 20:34:44 +02:00
Christoffer Lerno
c17cb7d0ca
Fix alignment on jump table.
2025-08-26 20:09:04 +02:00
Christoffer Lerno
21343baa75
Update for LLVM 21 ( #2435 )
...
Support LLVM 21
2025-08-26 17:29:39 +02:00
Christoffer Lerno
58c59361ea
- Add linklib-dir to c3l-libraries to place their linked libraries in. Defaults to linked-libs
...
- If the `os-arch` linked library doesn't exist, try with `os` for c3l libs.
2025-08-26 15:21:45 +02:00
Christoffer Lerno
cb17cfff7d
Deprecation of @assignable_to
2025-08-26 13:21:42 +02:00
Christoffer Lerno
1634217fc4
Grabbing (missing) methods on function pointers would cause crash #2434 .
2025-08-25 16:39:17 +02:00
Christoffer Lerno
bc9b0900a5
- Inlining a const as an lvalue would take the wrong path and corrupt the expression node.
2025-08-25 15:26:47 +02:00
Christian Brendlin
f43a7540c5
clarify directory creation error messages ( #2388 )
...
* Improve error messages for project creation
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-08-25 14:56:59 +02:00
Zack Puhl
410a25f334
Add array @reduce, @filter, @any, @all, & @indices_of ( #2419 )
...
* wip: array reduce and any/all
* wip: continue adding more functional-like array module functions
* wip: documentation and other fixes
* finish unit tests, require INDEX variable in lambdas, ready for first review
* don't worry about iterating by ref (it wasn't passing it that way anyhow)
* update release notes again
* simplify, remove "summary operators" and related tests
* Use more $defined, remove "has_operator". Fix regression in `$defined(var $f = 123)`
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-08-25 14:47:08 +02:00
Zack Puhl
35c04cdc36
Add form-feed and vertical tab to trim defaults ( #2407 )
...
* Add form-feed and vertical tab to` trim` defaults
* add some initial string-based benchmarking
* update to non-const string
* do not account for mem times in bench
* misc bench fixes to repair reporting times; improve trim tests
* ok last one for real..remove (void) casts
* finally, swap to more efficient default whitespace order in `trim`
2025-08-25 14:23:14 +02:00
Christoffer Lerno
3e641ab82b
Properly add "inlined at" for generic instantiation errors #2382 .
2025-08-25 13:31:56 +02:00
Christoffer Lerno
7972397c65
Incorrect name on wincrt, likely a regression.
2025-08-24 13:54:52 +02:00
Christoffer Lerno
9bf933ae31
- has_tagof on tagged lambdas returns false #2432
2025-08-23 23:41:32 +02:00
Christoffer Lerno
a69ee59b82
Fix tests.
2025-08-23 22:49:33 +02:00
Christoffer Lerno
961aa0ef61
Struct and typedef subtypes inherit dynamic functions.
2025-08-23 22:31:29 +02:00
Christoffer Lerno
48318c3ad4
Fixed tests.
2025-08-23 19:43:01 +02:00
Christoffer Lerno
a004cd3d03
Lambdas on the top level were not exported by default. #2428
2025-08-23 19:40:18 +02:00
Christoffer Lerno
768ce6092d
@tag was not allowed to repeat.
2025-08-23 18:42:57 +02:00
Christoffer Lerno
e4e499edd2
Allow $defined take declarations: $defined(int x = y)
...
Taking the address of a label would cause a crash. #2430
2025-08-23 12:00:17 +02:00
Christoffer Lerno
f36e9fea48
Types converts to typeid implicitly.
2025-08-22 00:26:18 +02:00
Christoffer Lerno
d5eec296a0
Some cleanup.
2025-08-21 17:06:06 +02:00
Christoffer Lerno
e2e2ca1d7f
Add @safeinfer to allow var to be used locally.
2025-08-21 12:39:08 +02:00
Christoffer Lerno
6ab7198f2f
- Added AsciiCharset for matching ascii characters quickly.
...
- Added `String.trim_charset`.
2025-08-21 02:57:17 +02:00
Christoffer Lerno
2e1f7c95ce
Cleanup.
2025-08-21 01:46:41 +02:00
Christoffer Lerno
a2ef63f5b6
Error if a stack allocated variable is too big (configurable with --max-stack-object-size).
2025-08-21 00:33:56 +02:00
vssukharev
b7c9a4e2e9
Several fixes for the compiler ( #2422 )
...
* Update .gitignore for nix
* Fix build failure when compiling with -Werror=maybe-uninitialized
* Fix test failure formatting
* Add separateDebugInfo to c3c Nix build
2025-08-20 21:47:22 +02:00
Christoffer Lerno
28ffb864a3
Deprecated PollSubscribes and PollEvents in favour of PollSubscribe and PollEvent and made them const enums.
2025-08-19 12:20:17 +02:00
Book-reader
18b4ce4e7d
fix Socket.get_option calling setsockopt instead of getsockopt ( #2421 )
...
* fix Socket.get_option
* `Socket.get_option` didn't properly call `getsockopt`, and `getsockopt` had an invalid signature.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-08-19 11:36:18 +02:00
Christoffer Lerno
551ce34b9b
- foo[x][y] = b now interpreted as (*&foo[x])[y] = b which allows overloads to do chained [] accesses.
2025-08-19 01:57:51 +02:00
Christoffer Lerno
de09a19a48
- Incorrect type checking when &[] and [] return optional values.
...
- Failed to find subscript overloading on optional values.
- Added `&[]` overload to HashMap.
2025-08-19 00:41:40 +02:00
Manu Linares
ba55946c9a
Fixes slicing with negative value error message - llvm_codegen_expr.c ( #2410 )
...
* Fixes slicing with negative value error message - llvm_codegen_expr.c
Fixes printing negative value
Example:
```
fn void main()
{
int[100] arr;
usz a = 35;
usz b = 36;
arr[b:a - b];
}
```
output should be:
ERROR: 'Negative value (-1) given for slice length.'
* Update releasenotes.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-08-18 23:12:03 +02:00
Christian Brendlin
33ab18033a
#2391 : Improve missing $endif error message ( #2413 )
...
* Improve error message missing
* remove temp comment
* Update releasenotes.md
* Use sema_note to print the "$if" line
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-08-18 23:09:07 +02:00
Christian Brendlin
96127d4ff3
Fix crash when exporting functions with const enums #2384 ( #2414 )
...
* headers: handle const enums in exported signatures as base type
* update releasenotes.md
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-08-18 22:49:42 +02:00
Alessandro Mauri
43163fe2a0
Fix out of bounds access when stdout is empty
2025-08-18 22:31:46 +02:00
Christoffer Lerno
a52b30c951
Update releasenotes for fix, which was the previous commit for fixing "Compiler assert when calling unassigned CT functions #2418 ". Fail :(
2025-08-18 21:29:36 +02:00
Christoffer Lerno
7d6a864d56
Miscompilation of do-while when the while starts with a branch #2394 . Also: change do-while to make the lowering follow the execution.
2025-08-18 21:28:19 +02:00
Christoffer Lerno
eeab73df4e
Miscompilation of do-while when the while starts with a branch #2394 . Also: change do-while to make the lowering follow the execution.
2025-08-18 21:04:52 +02:00
Christoffer Lerno
db45abdfc7
Update releasenotes for #2398 fix.
2025-08-18 13:09:24 +02:00
vssukharev
cb32441533
Temporary fix for #2398 ( #2415 )
...
* Temporary fix for #2398
* Update sema_liveness.c
Remove comment
---------
Co-authored-by: Christoffer Lerno <christoffer.lerno@gmail.com >
2025-08-18 13:06:23 +02:00
Christoffer Lerno
643aa47e99
Compiler segfault with struct containing list of structs with an inline member #2416
2025-08-18 12:19:14 +02:00
Christoffer Lerno
5e1bf75621
Updated release notes
2025-08-18 12:03:05 +02:00
Christoffer Lerno
7c8e3dd4fd
Fix max module name to 31 chars and the entire module path to 63 characters.
2025-08-18 12:02:00 +02:00
Zack Puhl
ad02fad167
Add Freestanding OS Types ( #2399 )
...
* Add Freestanding OS Types to `env::`
2025-08-16 19:47:03 +02:00
Sander van den Bosch
261184b5c1
Add HashSet and String methods ( #2386 )
...
* Add `String.contains_char` using `String.index_of_char` and `HashSet.values` together with `HashSet.tvalues`
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-08-16 16:57:31 +02:00
Manu Linares
d07da2804e
Update sema_decls.c
...
Fix compilation error
```
[ 48%] Building C object CMakeFiles/c3c.dir/src/compiler/sema_passes.c.o
/home/mb/.cache/yay/c3c-git/src/c3c/src/compiler/sema_decls.c: In function ‘sema_analyse_operator_method’:
/home/mb/.cache/yay/c3c-git/src/c3c/src/compiler/sema_decls.c:2312:25: error: suggest parentheses around assignment used as truth value [-Werror=parentheses]
2312 | is_wildcard = method->func_decl.is_wildcard_overload = true;
| ^~~~~~~~~~~
```
2025-08-16 16:47:59 +02:00
Zack Puhl
702b63ddb7
Add array::zip and Related Macros ( #2370 )
...
* zip / zip_into
* Deprecate `add_array` in favour of `push_all` on lists.
* Add support for generic lists for zip.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-08-16 13:30:24 +02:00
konimarti
e35dbd29fb
string: use correct allocator in replace ( #2405 )
...
`replace` accepts an Allocator but uses `mem` instead.
2025-08-16 03:41:59 +02:00
Christoffer Lerno
b52ab886d2
Compiler segfault on global slice initialization with null[:0] #2404 .
2025-08-15 20:10:28 +02:00
Christoffer Lerno
4b95d6be4c
New method resolution.
2025-08-15 19:48:08 +02:00
Christoffer Lerno
34b0b6f8f9
Fix for bug when @format encountered * in some cases.
2025-08-15 08:26:43 +02:00
Christoffer Lerno
4fea202e6d
Added libloaderapi to std::os::win32
2025-08-14 22:11:20 +02:00
Zack Puhl
8cfdb76869
Add benchmarkrun and *.wasm to .gitignore ( #2400 )
...
* Add `benchmarkrun` and `*.wasm` to .gitignore
* add .s assembly files too
2025-08-14 20:49:18 +02:00
Christoffer Lerno
858f8d2405
Updating license docs further.
2025-08-14 20:42:07 +02:00
Christoffer Lerno
67aa18c1aa
Clarifying license.
2025-08-14 20:40:30 +02:00
Christoffer Lerno
31b15c775e
Slicing a constant array with designated initialization would not update the indexes.
2025-08-14 20:27:23 +02:00
Zack Puhl
bf7e7e2397
Fix Benchmark Progress Printing ( #2401 )
2025-08-14 20:24:37 +02:00
Zack Puhl
eb8fb8871f
Fix $$str_hash to use a5hash like String.hash() ( #2403 )
...
* Fix `$$str_hash` to use `a5hash` like `String.hash()`
2025-08-14 20:24:01 +02:00
Christoffer Lerno
85dc9c45ab
- Deprecate @compact use for comparison. Old behaviour is enabled using --use-old-compact-eq.
...
- Switch available for types implementing `@operator(==)`.
- `Type.is_eq` is now true for types with `==` overload.
- Functions being tested for overload are now always checked before test.
- Compile time indexing at compile time in a $typeof was no considered compile time.
2025-08-14 15:53:35 +02:00
Book-reader
076ef187cb
improve & fix libc termios bindings ( #2372 )
...
* improve & fix libc termios bindings
2025-08-13 17:24:41 +02:00
Zack Puhl
c8d39251a9
Add compile-time @min and @max ( #2378 )
...
* Add compile-time `@min` and `@max`
2025-08-13 17:23:24 +02:00
Christoffer Lerno
f5e6b697b8
Make @try maydiscard.
2025-08-13 13:31:29 +02:00
Christoffer Lerno
e8e88c1920
Merge branch 'dev'
2025-08-13 13:30:47 +02:00
Christoffer Lerno
82a58e1c66
Update libc memcpy.
2025-08-13 13:29:56 +02:00
Velikiy Kirill
8e8d0436ad
Add epoll bindings to std::os::linux + misc ( #2350 )
...
* Add epoll to std::os::linux + misc
* Fix import in linux.c3
* epoll: Add unit tests
* epoll: Fix imports in unit tests
* epoll: Add libc import
2025-08-13 02:41:09 +02:00
Christoffer Lerno
db99de9717
Improve codegen for stack allocated large non-zero arrays.
2025-08-12 17:01:39 +02:00
tonis2
fd9fbe26a1
JSON parser trailing issue fix
2025-08-12 16:19:41 +02:00
Christoffer Lerno
582453cb45
Assert triggered when trying to slice a struct.
2025-08-12 00:01:55 +02:00
Zack Puhl
b73a44ec7d
Add/Fix OpenBSD native_cpus ( #2387 )
...
* Add OpenBSD `native_cpus`
* update release notes
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-08-11 23:10:09 +02:00
Christoffer Lerno
be98a01ed8
types::has_equals fails with assert for bitstructs #2377
2025-08-11 20:53:11 +02:00
Christoffer Lerno
625a6d987d
Refactoring
2025-08-11 20:53:11 +02:00
vssukharev
2597f6217e
Several fixes for Nix build ( #2389 )
...
* Fixed a bug for build via nix, when c3c-checks and c3c-debug didn't have a git hash
* Got rid of python3 requirement for checks in nix as it's no longer needed
* Now c3c properly displays it's build date in nix build
* Add more platforms for checks in nix build
* Add installation and compilation on Nix to README
2025-08-11 19:21:41 +02:00
sipekdan
0470f3be8e
Fix typo in bf16 suffix parsing logic
2025-08-11 19:20:19 +02:00
Christoffer Lerno
1d25197bfd
Bitstructs no longer overloadable with bitops. #2374
2025-08-06 14:51:37 +02:00
Zack Puhl
aae873c044
Add bitsizeof to Builtins ( #2376 )
...
* Add `bitsizeof` to Builtins
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-08-06 13:55:39 +02:00
Zack Puhl
6471728ee5
Add @clz CT macro ( #2367 )
...
* Add `@clz` CT macro
2025-08-06 13:42:52 +02:00
Christoffer Lerno
29bae1fbd6
Updated like the PR #2375
2025-08-06 11:28:36 +02:00
Christoffer Lerno
9c770f360e
Formatter did not properly handle "null" for any, and null for empty faults. #2375
2025-08-06 11:23:56 +02:00
Christoffer Lerno
3b6d68ef21
Compiler segfault when using bitwise not on number literal cast to bitstruct #2373 .
2025-08-06 00:55:56 +02:00
Christoffer Lerno
24c03f9800
Fixed bug generating $c += 1 when $c was derived from a pointer but behind a cast.
2025-08-06 00:44:22 +02:00
Christoffer Lerno
ed61b51489
Adding MultiLogger
2025-08-05 18:49:41 +02:00
Christoffer Lerno
0205ee8688
Added the std::core::log for logging.
2025-08-05 18:30:46 +02:00
Christoffer Lerno
abd3585c44
Parsing difference between "0x00." and "0X00." literals #2371
2025-08-05 13:09:53 +02:00
Christoffer Lerno
aa910a1c44
Compiler assert when using generic parameters list without any parameters. #2369
2025-08-05 12:50:36 +02:00
Christoffer Lerno
00b88a8027
Compiler assertion when defining a function with return type untyped_list #2368 . In general, improve error message when ct types are return types.
2025-08-05 04:11:54 +02:00
Christoffer Lerno
229fdd6193
Detect recursive creation of generics #2366 .
2025-08-05 02:55:32 +02:00
Christoffer Lerno
5292e08cd6
Remove lambda code that should never happen.
2025-08-04 22:13:37 +02:00
Christoffer Lerno
90990ed2f3
Support partial const enums despite use-old-enums enabled.
2025-08-04 17:06:17 +02:00
Christoffer Lerno
c99284103d
Fix issue with naked functions #2365
2025-08-04 15:51:49 +02:00
sudokit
b463358add
Added dl_iterate_phdr
2025-08-04 14:56:51 +02:00
LowByteFox
0e10b71cbf
Stdlib: SingleSizeObjectPool implementation ( #2360 )
...
* implement working single size object pool
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-08-04 14:54:26 +02:00
Christoffer Lerno
cb2d8133e0
Fixed: regression in comments for @deprecated and @pure.
2025-08-04 13:25:30 +02:00
Christoffer Lerno
f2d27229d2
Bug causing a compiler error when parsing a broken lambda inside of an expression.
2025-08-04 12:25:19 +02:00
Zack Puhl
604661b12c
Increase Primitive Type Hash Speeds ( #2329 )
...
* simplify and add much faster hash functions in key locations
* add benchmark runtime @start and @end macros for better control
* update benchmark reporting and hashmap tests
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-08-04 11:50:17 +02:00
hamkoroke
440df8415e
Support memory mapped files and add File.map ( #2321 )
...
* Support memory mapped files and add File.map
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-08-03 23:26:52 +02:00
Christoffer Lerno
c31c423386
Reduce allocated Vmem for the compiler on 32 bit machines.
2025-08-03 22:58:51 +02:00
Velikiy Kirill
8358af2240
Add LinkedBlockingQueue ( #2328 )
...
* Add LinkedBlockingQueue
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-08-03 22:47:21 +02:00
Christoffer Lerno
4625b457fb
Add additional checks for phi to prevent miscompilation.
2025-08-03 17:46:03 +02:00
Christoffer Lerno
151a28a92a
Codegen error in if (try x = (false ? io::EOF? : 1)), i.e. using if-try with a CT known value.
2025-08-03 16:28:11 +02:00
Christoffer Lerno
9fe6c77d28
Codegen error in if (try x = (true ? io::EOF? : 1)), i.e. using if-try with a known Empty.
2025-08-03 13:33:53 +02:00
waveproc
1c4f7a4b61
change cmake build instructions in README.md ( #2300 )
...
* change cmake build instructions in README.md
---------
Co-authored-by: Your Name <you@example.com >
2025-08-03 00:11:57 +02:00
Velikiy Kirill
f23bbb342c
Update release notes to include HashSet and Linked containers
2025-08-02 23:19:55 +02:00
Zack Puhl
91b866c967
Immediately skip empty tests ( #2352 )
2025-08-02 23:17:34 +02:00
Zack Puhl
483fe62750
OpenBSD Sockets ( #2353 )
...
* native file testing for BSD
* basic OpenBSD socket port
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-08-02 23:15:53 +02:00
Zack Puhl
2a47cc2ca9
Pair and Triple Compare w/ Unit Tests ( #2359 )
...
* Pair and Triple Compare w/ Unit Tests
* scope creep myself by adding date-time eq op
* make Pair and Triple printable
* Update releasenotes. Restrict equals on tuples to when underlying type supports `==`. Remove unnecessary Time.eq.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-08-02 23:11:27 +02:00
Zack Puhl
e707190539
Add @intlog2 for Floored CT log-base2 ( #2355 )
...
* Add `@intlog2` for Floored CT log-base2
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-08-02 22:53:36 +02:00
Christoffer Lerno
cb62554a26
Fix version.
2025-08-02 16:57:39 +02:00
Christoffer Lerno
9c58db99af
With avx512, passing a 512 bit vector in a union would be lowered incorrectly, causing an assert. #2362
2025-08-02 16:56:43 +02:00
Christoffer Lerno
90c339ebdb
List.remove_at would incorrectly trigger ASAN.
2025-08-02 16:56:43 +02:00
Christoffer Lerno
e3a8a3ec02
Support alias foo = module std::io module aliasing.
2025-08-02 16:56:43 +02:00
Christoffer Lerno
bdbe81fedd
Fix libm regression.
2025-08-02 13:22:48 +02:00
Christoffer Lerno
f0142e3b1a
Fix json check.
2025-08-01 17:07:37 +02:00
Christoffer Lerno
2c6ff00261
Fix alignment.
2025-08-01 10:55:04 +02:00
Christoffer Lerno
61a21203f4
Assigning string literal to char[<*>] stores pointer rather than characters. #2357
2025-08-01 10:32:53 +02:00
Christoffer Lerno
d7affc5028
Fix regression in file output placement.
2025-08-01 10:13:22 +02:00
Christoffer Lerno
eb9549a818
Release candidate 0.7.4
2025-08-01 00:06:16 +02:00
Christoffer Lerno
6d9906db0a
Fix implicit linking from macros when it's not valid to add dependencies.
2025-07-31 16:21:50 +02:00
Christoffer Lerno
334ee975b9
Assignment evaluation order now right->left, following C++17.
2025-07-31 11:49:42 +02:00
Christoffer Lerno
d600d0898c
Fix regression, not permitting macro parameters inlined into naked functions.
2025-07-30 10:38:37 +02:00
Christoffer Lerno
44f4efa5aa
Do not allow parameters in naked functions.
2025-07-30 01:01:56 +02:00
Christoffer Lerno
8151305701
Fix so that rethrow is detected as well.
2025-07-29 20:50:32 +02:00
Christoffer Lerno
3ac9bfc387
Allow accessing parameters in a naked function, just disallow return, this fixes #1955 .
2025-07-29 20:38:53 +02:00
BWindey
51b9cb85bc
Fix get_config_dir() implementation ( #2348 )
...
* Fix get_config_dir() implementation
* Formatting and fallback to home if the path is empty.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-07-29 19:11:56 +02:00
Christoffer Lerno
d805ff9782
Lambda deduplication would be incorrect when generated at the global scope.
2025-07-29 17:45:11 +02:00
Christoffer Lerno
fa9ba3f607
Not setting android-ndk resulted in a "set ndk-path" error.
2025-07-29 11:33:40 +02:00
Zack Puhl
9d2be2851b
Add @try Builtin ( #2333 )
...
* Add @try macro
* Add @try_catch. Update release notes.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-07-29 00:50:56 +02:00
Zack Puhl
2639338426
Support full paths with $embed ( #2335 )
...
* Support full paths with `$embed`
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-07-28 23:44:17 +02:00
Christoffer Lerno
d8daa4ac83
Fix dir check Win32 CI
2025-07-28 23:23:09 +02:00
Christoffer Lerno
6641155892
Lambdas now properly follow its attributes #2346 .
2025-07-28 19:49:40 +02:00
Christoffer Lerno
86034353ec
Remove unnecessary "ret" in naked functions #2344 .
2025-07-28 18:36:33 +02:00
Christoffer Lerno
944ef0fc8d
Fix incorrect LLVM output folder.
2025-07-28 18:07:47 +02:00
Christoffer Lerno
194b7c4772
Crash when parsing recursive type declaration #2345 .
2025-07-28 18:02:25 +02:00
m0tholith
6963e143a1
Add gitignore template to project creation
2025-07-28 10:39:55 +02:00
Christoffer Lerno
4977bd1d78
@format did not work correctly with macros #2341 .
2025-07-28 10:38:18 +02:00
Velikiy Kirill
a21e641748
LinkedHashMap: Fix head being null when initializing from map ( #2334 )
...
* LinkedHashMap: Fix head being null when initializing from map
2025-07-28 00:26:14 +02:00
Christoffer Lerno
208b0f6d0e
Fix issue where recursively creating a dir would be incorrectly marked as a failure the first time.
...
Place output in `out` by default for projects. Use temp folder for building at the command line.
2025-07-28 00:19:12 +02:00
Christoffer Lerno
0bc546595d
- Using @noreturn in a trailing body macro would not work properly #2326 .
...
- Bug when reporting error in a macro return would crash the compiler #2326 .
- Short body return expression would not have the correct span.
2025-07-26 02:03:02 +02:00
Velikiy Kirill
a673b4ad66
Add LinkedHashMap and LinkedHashSet implementations ( #2324 )
...
* Add LinkedHashMap and LinkedHashSet implementations
Add two new ordered collection types to std::collections:
- LinkedHashMap: insertion-order preserving hash map
- LinkedHashSet: insertion-order preserving hash set
2025-07-25 23:28:10 +02:00
Velikiy Kirill
9a68a5c063
HashSet: Contract message fixes
2025-07-25 23:06:18 +02:00
Velikiy Kirill
e790df539d
Add HashSet implementation ( #2322 )
...
* Add HashSet implementation
Add a generic HashSet with full allocator support and standard set operations.
- Basic operations: add/remove/contains/clear
- Set operations:union_set/intersection/symmetric_difference/difference/is_subset
- Memory management with allocator support
- Iteration support
- Automatic resizing with load factor control
* Add "add_all" "add_all_from" "remove_all" "remove_all_from"
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-07-25 19:53:39 +02:00
Christoffer Lerno
fbeb779335
Fix typo in wait_timeout
2025-07-24 14:12:39 +02:00
Christoffer Lerno
625bfa5713
Updated releasenotes.
2025-07-23 17:04:33 +02:00
Christoffer Lerno
943a294900
Fix missing const cast when casting a const int expression.
2025-07-23 17:03:43 +02:00
Christoffer Lerno
3400dd5e42
char[*] b = *(char[*]*)&a; would crash the compiler if a was a slice. #2320
2025-07-23 16:10:31 +02:00
Christoffer Lerno
e8b3c44de3
Add a "wchar" type.
2025-07-23 15:09:55 +02:00
Christoffer Lerno
9575698fa4
Add String conversion functions snake_case -> PascalCase and vice versa.
2025-07-23 00:26:44 +02:00
Christoffer Lerno
5f0a7dd63e
Rename AlignedRef -> UnalignedRef
2025-07-22 15:55:43 +02:00
Kiana
38bc11b7b8
Add libc::readlink() ( #2316 )
...
* Add libc::readlink()
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-07-22 15:46:23 +02:00
LowByteFox
04528aee1f
fix openbsd CI not uploading artifacts
2025-07-22 15:44:58 +02:00
LowByteFox
5c82747970
Improved OpenBSD support ( #2317 )
...
* add openbsd support, compiles and passses all tests
* fix backtrace
* gh actions should include openbsd artifacts
2025-07-22 15:15:20 +02:00
Christoffer Lerno
b45c337515
Contract fix.
2025-07-22 15:14:10 +02:00
Christoffer Lerno
9dc6b0e660
Added AlignedRef generic type.
2025-07-22 15:11:14 +02:00
Christoffer Lerno
428165590e
Add Volatile type.
2025-07-22 14:13:48 +02:00
Christoffer Lerno
53051e04a3
Add thread::fence (from $$fence builtin). Ref and RefCounted types.
2025-07-22 00:37:41 +02:00
Christoffer Lerno
869bcf8b2b
Removing use of $assignable and deprecate it. Fix regression for stacktraces on MacOS. Added readline_to_stream. Regression: Chaining an optional together with contracts could in some cases lose the optional.
2025-07-21 03:20:40 +02:00
hamkoroke
382a65abcd
Support asm x86 popcnt ( #2314 )
...
* Support asm x86 popcnt
2025-07-21 02:40:17 +02:00
Christoffer Lerno
908d705669
Removing use of $assignable and deprecate it.
2025-07-20 20:07:06 +02:00
Airtz
d422fb699f
More Ed25519 cleanup ( #2315 )
...
* Cleanup Ed25519
2025-07-20 19:57:37 +02:00
Kiana
506e63284b
Tidy up path.c3 ( #2309 )
...
* Tidy up path.c3
2025-07-20 12:26:44 +02:00
Zack Puhl
ed92476916
Add wyhash2 and metro64/128 modern hashing ( #2293 )
...
* add wyhash2, metro64, and metro128 hashes; best performing non-crypto hash functions
* add superfast 64-bit a5hash; not streamed, no 128-bit impl
* add komihash and associated tests/benchmarks
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-07-20 00:06:10 +02:00
LowByteFox
1218afd51f
Add ability to compile on OpenBSD ( #2310 )
...
* fix curl in cmake, make c3c compile on OpenBSD, fix typo in OS_TYPE_FREEBSD
2025-07-19 21:09:39 +02:00
Christoffer Lerno
b88722b4a6
Copying const enums and regular enums incorrect #2313 .
2025-07-19 21:07:25 +02:00
Christoffer Lerno
694d297eb8
"poison" the current function early when a declaration can't be correctly resolved.
2025-07-19 20:49:26 +02:00
Christian Buttner
2053f2767b
Add ConditionVariable.wait_until and ConditionVariable.wait_for ( #2302 )
...
* Add `ConditionVariable.wait_until` and `ConditionVariable.wait_for`
* Add "@structlike" for typedefs.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-07-19 13:12:14 +02:00
Christoffer Lerno
448176b0b7
Rename ed25519 keys/signature.
2025-07-19 10:06:51 +02:00
Airtz
b1a22b5002
Implement Ed25519 ( #2297 )
...
* Implement Ed25519
* Overloading addition with a pointer would not work.
* Added @addr macro.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-07-19 01:13:15 +02:00
Christoffer Lerno
e9aee55714
A distinct type based on an array would yield .len == 0
2025-07-18 21:24:09 +02:00
Christoffer Lerno
2acf3c57c7
Check unaligned array access.
2025-07-18 20:45:57 +02:00
Christoffer Lerno
f2babb6063
Remove requirement of license.
2025-07-18 16:49:04 +02:00
Zack Puhl
b8d07474fe
Add SipHash Family of Keyed PRFs ( #2287 )
...
* implement SipHash family of keyed PRFs
2025-07-18 16:16:47 +02:00
Christian Buttner
cf913b41c6
Fix Formatter.print returning incorrect size ( #2306 )
...
* Fix `Formatter.print` returning incorrect size
2025-07-18 15:54:07 +02:00
Christoffer Lerno
adb3df05c6
Allow even smaller memory limits.
2025-07-18 10:54:03 +02:00
Christoffer Lerno
34bded30eb
Fix typo
2025-07-17 15:19:02 +02:00
Christoffer Lerno
774a375ce7
@links on macros would not be added to calling functions.
2025-07-17 15:17:58 +02:00
Christoffer Lerno
ee35001732
Suppress codegen of panic printing with when panic messages are set to "off".
...
Implicit linking of libc math when libc math functions are used.
2025-07-17 14:45:02 +02:00
Christoffer Lerno
da4105ffb1
Whereami fix
2025-07-16 22:34:14 +02:00
Christoffer Lerno
5c5692ae98
Dev ( #2307 )
...
* Refactor whereami
2025-07-16 15:56:36 +02:00
Christoffer Lerno
379d16abe7
Some refactoring of ranges. env::AUTHORS and env::AUTHOR_EMAILS
2025-07-16 12:23:24 +02:00
Christoffer Lerno
078ce38c57
Test fix.
2025-07-16 00:22:28 +02:00
Christoffer Lerno
f99b903d78
- Fix unexpected display of macro definition when passing a poisoned expression #2305 .
2025-07-15 23:31:44 +02:00
Christoffer Lerno
3650b81970
Segfault when failing to cast subexpression to 'isz' in pointer subtraction #2305 .
2025-07-15 21:47:49 +02:00
Christian Buttner
bb6fcdfa6f
Improve atomic.c3
...
- Change `Atomic.xor` from function to macro
- Allow function pointers as native atomic type
- Use enum inference
2025-07-15 20:32:18 +02:00
Christian Buttner
8df112e157
Add WString.len
2025-07-15 20:30:14 +02:00
Christoffer Lerno
af91f35017
Fix stringify of $vaexpr #2301 .
2025-07-15 17:13:10 +02:00
Zack Puhl
3cce90bba1
fix hashmap tinit_with_key_values
2025-07-15 00:26:59 +02:00
Christoffer Lerno
1a351bdb6d
Error message for missing arg incorrect for methods with zero args #2296 .
2025-07-14 23:21:15 +02:00
Christoffer Lerno
efaac43248
- Virtual memory library.
...
- New virtual emory arena allocator.
- Fixed resize bug when resizing memory down in ArenaAllocator, DynamicArenaAllocator, BackedArenaAllocator.
- Added feature flag "SLOW_TESTS"
2025-07-14 22:36:43 +02:00
Christoffer Lerno
f082cac762
Updates to API
2025-07-14 03:44:52 +02:00
Christoffer Lerno
2bd289ebd6
Added VirtualMemory
2025-07-14 03:07:03 +02:00
Christoffer Lerno
aba9baf207
Added Vmem allocator
2025-07-13 17:26:57 +02:00
Christoffer Lerno
e755c36ea2
Removed the use of temp allocator in backtrace printing.
...
Added string::bformat.
2025-07-13 02:58:57 +02:00
Christoffer Lerno
6c7dc2a28e
Improved error on using cast expression as lvalue.
2025-07-11 13:47:52 +02:00
Christoffer Lerno
cdd530d807
Fixed bug splatting constants into constants.
2025-07-11 01:55:09 +02:00
Christoffer Lerno
02c0db7b8b
Multiline contract comments #2113
2025-07-11 01:18:58 +02:00
Christoffer Lerno
8a62c12089
Update releasenotes with whirlpool
2025-07-10 18:32:26 +02:00
Christoffer Lerno
988549599d
$is_const is deprecated in favour of @is_const based on $defined.
...
`$foo` variables could be assigned non-compile time values.
`$foo[0] = ...` was incorrectly requiring that the assigned values were compile time constants.
2025-07-10 18:31:44 +02:00
Zack Puhl
70159c00cc
Add WHIRLPOOL hashing to stdlib ( #2273 )
...
* add WHIRLPOOL hashing to stdlib
2025-07-10 16:39:42 +02:00
Christoffer Lerno
2dfbdea889
Update error message for struct initialization #2286
2025-07-10 16:29:49 +02:00
Christoffer Lerno
299d1f530f
Correctly poison the analysis after a failed $assert or $error. #2284
2025-07-09 16:51:43 +02:00
Christoffer Lerno
bf0ff8abbc
Splat 8 arguments can sometimes cause incorrect behaviour in the compiler. #2283
2025-07-09 16:36:02 +02:00
Ero Mrinin
123b1c8f44
Added unpack macro for Triple ( #2277 )
2025-07-09 03:11:13 +02:00
Christoffer Lerno
a314e05826
Use hex consistently for .max is 64 bits or more.
2025-07-09 03:09:10 +02:00
Christoffer Lerno
83fd24faa2
Improve error on unsigned implicit conversion to signed.
2025-07-09 02:49:19 +02:00
Christoffer Lerno
1d4ad5f1d5
Function pointers are now compile time constants.
...
const enum cannot be set to function pointer unless it's a lambda #2282 .
2025-07-08 12:42:16 +02:00
Christoffer Lerno
26d5cc694a
Formatting option "%h" now supports pointers.
2025-07-08 11:43:49 +02:00
Christoffer Lerno
a2122e0153
Update error message.
2025-07-08 00:24:29 +02:00
Christoffer Lerno
10fc94aaa7
Add RISCV asm print.
2025-07-07 23:52:43 +02:00
Christoffer Lerno
0835bada39
Add --list-asm to view all supported asm instructions.
2025-07-07 23:49:39 +02:00
Christoffer Lerno
277af1a2b6
Fix rdtsc instruction.
2025-07-07 19:02:13 +02:00
Christoffer Lerno
5b835bec3e
Fix to codegen when using a bitstruct constant defined using a cast with an operator #2248 .
2025-07-07 17:09:32 +02:00
Christoffer Lerno
dc23cef59a
LLVM 20 compatibility for test.
2025-07-07 03:01:09 +02:00
Christoffer Lerno
098079d317
Fix analysis error compiling. Fix $define for updated shift.
2025-07-07 02:50:17 +02:00
Christoffer Lerno
1ab57ecf20
Improve contract for readline. #2280
2025-07-07 02:42:48 +02:00
Christoffer Lerno
808ab56545
- Bit shift operation fails with inline uint enum despite matching underlying type #2279 .
2025-07-07 02:30:54 +02:00
Christoffer Lerno
19acdc7a19
Do not do certain implicit conversions on enums in binary expression.
2025-07-06 21:44:06 +02:00
Christoffer Lerno
e15fdc709f
Improve error message when doing a rethrow in a function that doesn't return an optional.
...
Array indices are now using int64 internally.
2025-07-06 20:20:42 +02:00
Disheng Su
457244e3de
Fix json parser ( #2272 )
...
* Fix json parser number
* Fix json parser leading zero
* Fix json parser with duplicated keys
* Fix json parser with trailing characters
* Fix json parser: set recursive depth to 128
* Fix json parser: skip comment to false
* Fix json parser: reject number trailing with null
* Make max depth configurable. Simplify with defer catch. Accept `2.`
* Make max depth configurable. Simplify with defer catch. Accept `2.`
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-07-06 03:07:46 +02:00
Ero Mrinin
d5559ecafd
Tuple update ( #2235 )
...
* 'next_float' macro patch
More optimized implementation.
* tuple-type update
* U suffix in 'next_float'
* Do not add triplet, quadruplet, keep Tuple but deprecate. Add unpack
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-07-06 02:08:59 +02:00
Kiana
802fbfcf1e
Add ansi.c3 for AnsiColor support ( #2261 )
...
* Add ansi.c3 for AnsiColor support
* Added tests
updated functions to macros
added formatting codes
* Fixed indentation
* Update names. Add plain rgb version. Add runtime colors.
* Update indentation, add 21-29
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-07-06 01:37:54 +02:00
Christoffer Lerno
a20e74c401
Fixes to thread local pointer handling.
2025-07-06 00:22:21 +02:00
Christoffer Lerno
7cdb1ce9eb
Catch accidental foo == BAR; where foo = BAR; was most likely intended. #2274
2025-07-05 20:40:55 +02:00
Christoffer Lerno
0d170a70b6
Make to_float more tolerant to spaces.
2025-07-05 19:42:44 +02:00
Christoffer Lerno
b19cd0b87d
Casting a fault to a pointer would trigger an assert.
2025-07-05 01:38:44 +02:00
Christoffer Lerno
50efc95c83
Update sponsors
2025-07-05 00:57:23 +02:00
Christoffer Lerno
fa50268b4e
Update max memory.
2025-07-04 17:46:02 +02:00
Christoffer Lerno
ae1d51d089
--max-mem now works correctly again.
2025-07-04 17:06:52 +02:00
Christoffer Lerno
1b8355ff07
Update error message on invalid operator.
2025-07-04 14:33:06 +02:00
Christoffer Lerno
f32afb70b8
Add contract to create thread.
2025-07-04 11:02:23 +02:00
Christoffer Lerno
60d96ca7b7
Initialize pool correctly in print_backtrace.
2025-07-04 02:43:49 +02:00
Christoffer Lerno
014f734260
Remove unused code.
2025-07-04 02:26:01 +02:00
Christoffer Lerno
de4963ef95
Add --echo-prefix to edit the prefix with $echo statements. Supports {FILE} and {LINE}
2025-07-04 01:09:02 +02:00
ryuukk
e7d3e60ebd
Disable libxml2 dependency on linux ( #2268 )
...
* Disable libxml2 depdendency
* All the linuxes
2025-07-04 00:14:10 +02:00
Christoffer Lerno
a46f73ad24
Const slice indexing was not bounds checked.
2025-07-03 23:53:01 +02:00
Christoffer Lerno
759bc1d909
Const slice lengths were not always detected as constant.
2025-07-03 23:32:02 +02:00
Christoffer Lerno
c79c9dac8d
Inline r / complex for complex numbers fixed.
2025-07-03 23:04:16 +02:00
Christoffer Lerno
635d4babc4
Fix tests.
2025-07-03 22:37:23 +02:00
Christoffer Lerno
9b3b4ae8be
$for ct-state not properly popped.
2025-07-03 22:20:14 +02:00
Christoffer Lerno
b3e7f074e9
Forgot the fix...
2025-07-03 15:46:35 +02:00
Christoffer Lerno
ee1ed73fc5
Non-const macros may not return untyped lists.
2025-07-03 15:45:14 +02:00
Christoffer Lerno
10e11fb742
Better detect offending cast.
2025-07-03 15:14:24 +02:00
Christoffer Lerno
8b47317ec7
Fix issue with labelled break inside of a $switch.
2025-07-03 13:11:12 +02:00
Christoffer Lerno
04626b72cd
Check up the hierarchy when considering if an interface cast is valid #2267 .
2025-07-03 12:36:35 +02:00
Christoffer Lerno
2151cd0929
Missing bounds check on upper bound with const ranges foo[1:3].
2025-07-02 13:12:49 +02:00
Christoffer Lerno
93ded9c1e0
Switch case with const non-int / enum would be treated as ints and crash. #2263
2025-07-02 12:26:26 +02:00
Christoffer Lerno
20964b43ce
Fix of const enum resolution order #2264
2025-07-02 12:01:52 +02:00
Christoffer Lerno
af192354fd
Comparing a null ZString with a non-null ZString would crash.
2025-07-02 01:22:34 +02:00
Christoffer Lerno
ad48637cbb
Correctly reject interface methods type and ptr.
2025-07-01 20:08:46 +02:00
Christoffer Lerno
89507bd335
Improved error messages on missing qualifier on enum value. #2260
2025-07-01 17:08:12 +02:00
Christoffer Lerno
21533ffee4
Update sponsors.
2025-07-01 16:15:38 +02:00
Christoffer Lerno
4502a9286c
Fix typeid on compile time types.
2025-07-01 00:27:17 +02:00
Christoffer Lerno
ba11511c69
Update release notes.
2025-07-01 00:03:28 +02:00
Christoffer Lerno
965ef19a5b
Allow $typeof to return a compile time type.
2025-07-01 00:02:12 +02:00
Christoffer Lerno
8f86b331c1
Fix --use-old-enums
2025-06-30 23:10:32 +02:00
Christoffer Lerno
59a1590955
Hex string formatter check incorrectly rejected slices.
2025-06-30 21:41:52 +02:00
Christoffer Lerno
fad87b294b
mkdir/rmdir would not work properly with substring paths on non-windows platforms.
2025-06-30 21:41:52 +02:00
Christoffer Lerno
13bb2b6690
Const Enums From / to ordinal using casts is back. Add "--use-old-enums", deprecating lookup.
2025-06-30 21:41:52 +02:00
Christoffer Lerno
4a803ed0cf
Bump version
2025-06-30 19:33:41 +02:00
Christoffer Lerno
9e80f1b26c
Release candidate.
2025-06-30 17:21:32 +02:00
Christoffer Lerno
9299c78747
Detect when a slice on the stack is accidentally returned from a function.
2025-06-30 15:56:19 +02:00
Christoffer Lerno
e1a125e326
- Initial support for #1925 , does not affect C compilation yet, and doesn't try to link etc. Using "--emit-only"
2025-06-29 23:50:17 +02:00
cubedium
a13eb99962
Added colored error and warning compiler messages. ( #2253 )
...
* Added colored error and warning compiler messages.
* Fixed the warning messages to be colored yellow instead of blue.
* Made the use_ansi function public with compiler_internal.h and toggleable colored error messages with the --ansi flag
* Moved use_ansi declaration. No ansi on test/lsp output.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-06-29 20:22:09 +02:00
Disheng Su
d46733e11a
Add string escaping and unescaping functionality ( #2243 )
...
* Add `String.escape`, `String.unescape` for escaping and unescaping a string.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-06-29 20:11:11 +02:00
Christian Buttner
ce569462f6
Improve CMakeLists.txt and Windows build
2025-06-29 18:21:11 +02:00
Christoffer Lerno
9285dfefad
- $member.get supports bitstructs.
...
- $member.set for setting members without the *& trick.
- io::struct_to_format now supports bitstructs.
2025-06-29 01:19:09 +02:00
Book-reader
5246ef83e7
Fix typo in libc_allocator.c3
2025-06-28 14:33:18 +02:00
Zack Puhl
0448e50b3d
Fix Incorrect SHA256 Hashes for Large Inputs ( #2247 )
...
* fix >256MiB sha256 bitcount computation overflow
2025-06-28 03:20:33 +02:00
Christoffer Lerno
2d535aaa25
Default assert() message drops parens #2249 .
2025-06-28 00:07:26 +02:00
Christoffer Lerno
dc1e5323ab
Segfault in the compiler when using a bitstruct constant defined using a cast with an operator #2248 .
2025-06-27 23:00:14 +02:00
Christoffer Lerno
63abf1c2f8
- Compiler null pointer when building a static-lib with -o somedir/... #2246
2025-06-27 15:46:17 +02:00
Christoffer Lerno
df8904909b
Fix bugs relating to optional interface addr-of #2244 .
2025-06-27 15:02:12 +02:00
Christoffer Lerno
e986e3a8c0
Refactoring.
2025-06-25 15:08:57 +02:00
Christoffer Lerno
f67da4f315
Refactoring, optimize negation in if statement.
2025-06-25 12:33:17 +02:00
Christoffer Lerno
8a4e7b6ce8
Fix regression causing text output.
2025-06-25 02:48:22 +02:00
Christoffer Lerno
2b0fb52f65
Fix regression: Enum inference with compare operators #2241
2025-06-25 00:55:29 +02:00
Christoffer Lerno
faf073885f
Updated fix of #2218
2025-06-24 22:28:14 +02:00
Christoffer Lerno
11b8a9808d
Fix overeager constant folding.
2025-06-24 16:17:04 +02:00
Christoffer Lerno
1ef9c73342
Compile-time comparison of constant vectors. #1575 .
2025-06-24 16:04:24 +02:00
Christoffer Lerno
92d56b7a35
Updated project suggestions
2025-06-24 14:19:41 +02:00
Christoffer Lerno
a894adbdd6
Assert comparing untyped lists #2240 .
2025-06-24 12:47:08 +02:00
Christoffer Lerno
605a7c4091
Improve error message on pointer diff #2239 .
2025-06-23 23:47:26 +02:00
Zack Puhl
adabae2a24
add 'strdup' reference to libc
2025-06-23 15:37:25 +02:00
Christoffer Lerno
affb722b23
@tag didn't work with members #2236 .
2025-06-23 14:45:16 +02:00
Christoffer Lerno
1b2f5989e1
Assert casting bitstruct to short/char #2237
2025-06-23 14:12:34 +02:00
Christoffer Lerno
e0b6c83a62
Aaaand let's get that last test.
2025-06-23 02:05:31 +02:00
Christoffer Lerno
839f835845
Last test fix.
2025-06-23 00:58:16 +02:00
Christoffer Lerno
2636a855c4
Forgotten test directives.
2025-06-23 00:38:12 +02:00
Christoffer Lerno
0d147a48b2
Another fix to #2226
2025-06-23 00:36:15 +02:00
Christoffer Lerno
aff3a3f746
Compiler segfault when using distinct type in attribute imported from other module #2234 .
2025-06-22 23:58:38 +02:00
Christoffer Lerno
c95204c3f7
Fix inc/dec vector ptr.
2025-06-22 18:09:08 +02:00
Christoffer Lerno
794e8371c8
Rename test.
2025-06-21 23:47:49 +02:00
Christoffer Lerno
2bbc6cbbca
Further #2226 fixes.
2025-06-21 23:18:17 +02:00
Christoffer Lerno
07bd37da43
Further #2226 fixes.
2025-06-21 16:50:52 +02:00
Christoffer Lerno
a0497e9274
math::overflow_* wrappers incorrectly don't allow distinct integers #2221 .
2025-06-21 13:28:45 +02:00
Christoffer Lerno
fa730e7ec2
Overload resolution fixes to inline typedef #2226 .
2025-06-21 13:03:16 +02:00
Christoffer Lerno
b4a6e3704f
Update grammar to interpret $Foo = int as a statement.
2025-06-21 00:30:43 +02:00
Christoffer Lerno
dd80e8b799
Compile time type assignment (eg $Foo = int) is no longer an expression.
2025-06-20 23:31:40 +02:00
Zack Puhl
5efc721b0c
Add SHA512 Module to stdlib ( #2227 )
...
* add sha512 module to stdlib with passing unit tests
* fix release notes PR ref num for this
* deduplicate const SHA512 hash info
2025-06-20 19:08:45 +02:00
Christoffer Lerno
20c13c0bb4
- Incorrect handling of constant null fault causing compiler crash #2232 .
2025-06-20 15:29:52 +02:00
Christoffer Lerno
cd3e924d1e
Fix test for LLVM 20
2025-06-20 02:01:32 +02:00
Estanislao Pérez Nartallo
2e42868467
Fix error maybe-uninitialized ( #2230 )
...
* Add build instructions for Arch Linux
* Fix error maybe-uninitialized in llvm_codegen_expr.c when compiling with clang 20.1.6
2025-06-20 00:55:06 +02:00
Christoffer Lerno
8d698b5e40
Lambda C-style vaargs were not properly rejected, leading to crash #2229 .
2025-06-20 00:52:03 +02:00
Christoffer Lerno
2f45beecbe
@pool now has an optional reserve parameter, some minor changes to the temp_allocator API
2025-06-19 01:13:43 +02:00
Christoffer Lerno
1b4b9bca94
Linking fails on operator method imported as @public #2224 .
2025-06-18 23:34:39 +02:00
Tanis Pérez Nartallo
40ae9d2e55
Add build instructions for Arch Linux
2025-06-18 23:34:16 +02:00
Christoffer Lerno
0df538d0e2
Test LLVM 20 compatibility
2025-06-18 22:41:35 +02:00
Christoffer Lerno
aa425a0886
Fixes to x += { 1, 1 } for enum and pointer vectors #2222 .
2025-06-18 22:27:30 +02:00
Christoffer Lerno
842788e59d
x += 1 and x -= 1 works propertly on pointer vectors #2222 .
2025-06-18 17:02:56 +02:00
Christoffer Lerno
2b97d7d59c
x++ and x-- works on pointer vectors #2222 .
2025-06-18 13:17:21 +02:00
Christoffer Lerno
75f78551cf
Rename TypdefDecl to TypeAliasDecl
2025-06-18 11:59:44 +02:00
Christoffer Lerno
01ef53a090
Bug when offsetting pointers of large structs using ++ and --.
2025-06-18 10:13:48 +02:00
Christoffer Lerno
a55f56a88f
Linker errors when shadowing @local with public function #2198
2025-06-18 02:07:07 +02:00
Christoffer Lerno
eb75d8f82a
Method ambiguity when importing parent module publicly in private submodule. #2208
2025-06-18 00:18:56 +02:00
Christoffer Lerno
f07bd3cbc6
$defined(#expr) broken with binary. #2219
2025-06-17 18:00:16 +02:00
Christoffer Lerno
93640699be
Support distrinct types as the base type of bitstructs. #2218
2025-06-17 16:49:46 +02:00
Christoffer Lerno
99e29bff8d
Bug in AST copying would make operator overloading like += compile incorrectly #2217
2025-06-17 16:02:43 +02:00
Ero Mrinin
95137db64b
'next_float' macro patch ( #2213 )
...
More optimized implementation.
2025-06-17 09:54:27 +02:00
Christoffer Lerno
e7ce79e731
Fix error for named arguments-order with compile-time arguments #2212
2025-06-16 23:56:03 +02:00
Christoffer Lerno
779f548a00
Allow generics over distinct types #2216 .
2025-06-16 23:16:35 +02:00
Christoffer Lerno
f0bd93d1f0
Additional #2210 fixes.
2025-06-16 22:56:34 +02:00
Christoffer Lerno
3ce15bd7af
Incorrect codegen if a macro ends with unreachable and is assigned to something. #2210
2025-06-15 22:35:44 +02:00
Christoffer Lerno
07eee04e94
In some cases, the compiler would dereference a compile time null. #2215
2025-06-15 21:58:39 +02:00
Christoffer Lerno
1f7b62b248
Fix to is_array_or_slice_of_char #2214 .
...
`is_array_or_slice_of_char` and `is_arrayptr_or_slice_of_char` are replaced by constant `@` variants.
2025-06-15 21:27:47 +02:00
Christoffer Lerno
b2c994618f
Fix to is_array_or_slice_of_char #2214 .
...
`is_array_or_slice_of_char` and `is_arrayptr_or_slice_of_char` are replaced by constant `@` variants.
2025-06-15 16:54:20 +02:00
Christoffer Lerno
2afa544d7d
Correctly format '%c' when given a width. #2199
2025-06-15 02:27:36 +02:00
Christoffer Lerno
dda2d2ecbe
Show code that caused unreachable code #2207
...
`$echo` would suppress warning about unreachable code. #2205
2025-06-15 00:37:28 +02:00
Christoffer Lerno
f79f6d4001
- cflags additions for targets was not handed properly. #2209
2025-06-14 23:40:54 +02:00
Christoffer Lerno
cf167c9446
Make unreachable() only panic in safe mode.
2025-06-14 18:37:49 +02:00
Christoffer Lerno
f0201f971e
Fix NULL -> false.
2025-06-13 22:51:51 +02:00
Christoffer Lerno
a3abea1a33
Reorder fields.
2025-06-13 22:08:07 +02:00
Christoffer Lerno
5f6f52838c
The form-feed character '\f' is no longer valid white space.
2025-06-13 21:37:06 +02:00
Christoffer Lerno
e0237096d6
- Support untyped second argument for operator overloading.
...
- Distinct versions of builtin types ignore @operator overloads #2204 .
- @operator macro using untyped parameter causes compiler segfault #2200 .
- Add comparison with `==` for ZString types.
2025-06-13 17:12:39 +02:00
Christoffer Lerno
82491a6f85
- Fixes to @format checking #2199 .
2025-06-12 02:26:39 +02:00
Christoffer Lerno
1aacb1fa60
Fixed regression compiler crash when using && for untyped parameters #2197 .
2025-06-10 16:26:08 +02:00
Christoffer Lerno
bbd9f6dc96
Add --sources build option to add additional files to compile. #2097
2025-06-10 14:09:15 +02:00
Christoffer Lerno
496d23e93f
Fix some @require comments.
2025-06-10 01:54:45 +02:00
Christoffer Lerno
e936b999d2
Update Android ABI lowering
2025-06-08 23:14:07 +02:00
Christoffer Lerno
becda6ea1d
Improve Android linking
2025-06-08 15:06:19 +02:00
Christoffer Lerno
2ad17a04d4
Improve android detection.
2025-06-08 12:18:55 +02:00
Christoffer Lerno
1617792a35
Fix Android detection.
2025-06-08 11:53:47 +02:00
Christoffer Lerno
c7b3ae0cf9
Fix Android errno
2025-06-08 11:33:28 +02:00
Christoffer Lerno
1dcd40aa5f
--lsp sometimes does not emit end tag #2194 .
2025-06-08 00:30:11 +02:00
Christoffer Lerno
40554192b1
- Make accepting arguments for main a bit more liberal, accepting main(int argc, ZString* argv)
...
- Make `$echo` and `@sprintf` correctly stringify compile time initializers and slices.
- Fixes methodsof to pick up all sorts of extension methods. #2192
- Fix regression accidentally allowing `$assert $foo, $bar`
2025-06-08 00:23:04 +02:00
Book-reader
9bc5e259d2
fix types::may_load_atomic with enums
2025-06-07 13:54:27 +02:00
Christoffer Lerno
f66cadccd2
Add printf format to $assert and $error #2183 .
2025-06-06 23:50:55 +02:00
Christoffer Lerno
be511b26cd
Additional fixes on $define
2025-06-06 20:11:58 +02:00
Christoffer Lerno
4cfa5441d2
Additional fixes on $define
2025-06-06 15:38:46 +02:00
Christoffer Lerno
5e45c34f21
- Deprecate String.is_zstr and String.quick_zstr #2188 .
2025-06-06 15:30:46 +02:00
Awang
d7a11903c7
Add external __errno() function for env::ANDROID ( #2182 )
2025-06-06 14:47:16 +02:00
Christoffer Lerno
b893697a87
Various fixes for $defined
2025-06-06 14:41:20 +02:00
Christoffer Lerno
f2daf2e11e
@sprintf macro (based on the $$sprintf builtin) allows compile time format strings #1874 .
2025-06-06 03:18:28 +02:00
Christoffer Lerno
9baeca3a8e
$eval now also works with @foo, #foo, $Foo and $foo parameters #2114 .
2025-06-06 01:23:23 +02:00
Christian Brendlin
ef649050c4
Add support for custom file extensions in project.json targets ( Resolves #1315 ) ( #2169 )
...
* [Feat] add support for custom output file extensions in build process
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-06-05 23:04:09 +02:00
Christoffer Lerno
d6d0e08906
Allow inference across && #2172 .
2025-06-05 14:20:40 +02:00
Christoffer Lerno
c9d9127da6
Deprecate foo.#bar.
2025-06-05 12:51:35 +02:00
Christoffer Lerno
7f85534414
- Implicitly convert from constant typeid to Type in $Type assignment, and $assignable.
...
- Make $Type parameters accept constant typeid values.
2025-06-05 00:37:16 +02:00
Christoffer Lerno
ba1332dc2a
Splatting const slices would not be const. #2185
2025-06-04 16:09:15 +02:00
Christoffer Lerno
45a0895c39
Fix fmod regression.
2025-06-04 15:25:18 +02:00
Christoffer Lerno
72cc8e430a
-0xFF will now be a signed integer.
...
- `-2147483648`, MIN literals work correctly.
2025-06-04 15:20:49 +02:00
Christoffer Lerno
9645bd3289
- $typefrom now also accepts a constant string, and so works like $evaltype.
...
- `$evaltype` is deprecated in favour of `$typefrom`.
2025-06-03 14:51:56 +02:00
Christoffer Lerno
8fc01d4e1a
Simplify contract macros.
2025-06-02 22:53:06 +02:00
Bram Windey
a48e2274e5
Update options.run_dir from target.run_dir if options.run_dir is null
2025-06-02 14:09:29 +02:00
Christoffer Lerno
786e47408a
Update compiler version
2025-06-02 13:40:16 +02:00
Christoffer Lerno
6e348d1e71
Update compiler version
2025-06-02 10:12:04 +02:00
Christoffer Lerno
d697b910ba
Removed the naive check for compile time modification, which fixes #1997 but regresses in detection.
2025-06-01 23:50:13 +02:00
Christoffer Lerno
4d848f1707
Incorrect ensure on String.split.
2025-06-01 20:28:32 +02:00
Christoffer Lerno
6377f0573d
Typo
2025-06-01 20:06:34 +02:00
Christoffer Lerno
c3d2b2824c
Bug using #foo arguments with $defined #2173
2025-05-31 17:35:29 +02:00
Christoffer Lerno
18e408ead4
Fix example.
2025-05-30 19:22:17 +02:00
Christoffer Lerno
08c63108a1
Release candidate 0.7.2
2025-05-30 19:13:19 +02:00
Christoffer Lerno
da25a411f9
Generic faults is disallowed.
2025-05-30 19:12:26 +02:00
Christian Brendlin
e685414829
Fix #1718 : Add --header-output option to specify header file directory ( #2161 )
...
* Fix #1718 : Add --header-output option to specify header file directory
- Add header_out field to BuildOptions struct
- Add header_file_dir field to BuildTarget struct
- Add --header-output command line option parsing with help text
- Modify header_gen() to use configured output directory instead of hardcoded root
- Add default behavior to use build directory when no custom path specified
- Add directory creation for header output paths
- Resolves issue where generated C headers were always output to root directory
* Fix directory creation timing for header output
- Move header output directory creation before header_gen() call
- Ensures custom header output directories are created before files are written
- Fixes issue where --header-output would fail if directory doesn't exist
* Fix style
* Fix Style
* Add to releasenotes.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-05-30 10:19:46 +02:00
BWindey
ae5a74bc41
[Feat] add quiet to project.json settings ( #2166 )
...
* Add quiet to BuildTarget struct and set default to false
* Link BuildTarget.quiet with BuildOptions.verbosity_level (like --quiet flag)
* Parse quiet from project.json, and sort the entries alphabetically
* Add changes to release-notes
* Only set options.verbosity_level if it wasn't set on the commandline
* Formatting
* Added small fix.
2025-05-30 10:16:14 +02:00
Christoffer Lerno
76374d31c4
Spelling
2025-05-30 10:08:04 +02:00
Christoffer Lerno
ffd7a5e483
Fix incorrect percentage
2025-05-30 01:47:05 +02:00
BWindey
d143ec227c
Libc ioctl extern function ( #2162 )
...
* Add barebones extern ioctl() binding in libc
* Update release notes
2025-05-29 23:00:35 +02:00
Christoffer Lerno
f2703508f2
Fixed test.
2025-05-29 21:14:50 +02:00
Christoffer Lerno
bb96dc931e
Add deprecation for @param foo "abc".
2025-05-29 00:45:11 +02:00
Christoffer Lerno
a5a2b00ec8
Too strict project view #2163 .
2025-05-28 22:44:00 +02:00
Christoffer Lerno
00f1206f3c
Compiler didn't check foreach over flexible array member, and folding a flexible array member was allowed #2164 .
2025-05-28 22:21:06 +02:00
Christoffer Lerno
349d9ef3cf
Allow recursive generic modules.
2025-05-28 15:39:35 +02:00
Christoffer Lerno
9f30b56e13
Deprecate f32, f64 and f128 suffixes.
2025-05-28 13:01:49 +02:00
Christoffer Lerno
83d6b35afe
Add d as floating point suffix for double types.
2025-05-28 12:02:24 +02:00
Christoffer Lerno
f4b9f375e0
Add run-dir to project.json
2025-05-27 23:22:32 +02:00
Christoffer Lerno
be3f9007c9
Check pointer/slice/etc on [out] and & params. #2156 .
2025-05-27 23:03:43 +02:00
Christian Brendlin
b665e2cbe5
change releasenotes entry to reflect to correct issue ( #2159 )
...
I changed the reference #2138 to point to the issue #2012 instead of the pull request.
2025-05-27 14:15:36 +02:00
Christoffer Lerno
0ed68f94cf
Update matrix pass.
2025-05-27 13:59:12 +02:00
Christoffer Lerno
966e8107f8
Add $$matrix_mul and $$matrix_transpose builtins.
2025-05-27 00:50:21 +02:00
Book-reader
61a4dcc807
add macro wrappers for $$overflow_add, $$overflow_sub, and $$overflow_mul builtins
2025-05-26 20:58:16 +02:00
Christoffer Lerno
52541a03eb
@jump now included in --list-attributes #2155 .
2025-05-26 16:18:08 +02:00
Christoffer Lerno
972c84b65b
for with incorrect var declaration caused crash #2154 .
2025-05-26 15:56:51 +02:00
Christoffer Lerno
f668b96cc9
$$sat_mul was missing.
2025-05-26 12:23:19 +02:00
Christoffer Lerno
9461873b4c
Distinct types could not be used with tagof #2152
2025-05-26 00:57:20 +02:00
Christoffer Lerno
8d563eba7a
Implicit casting from struct to interface failure for inheriting interfaces #2151 . Fix second bug in #2148
2025-05-24 17:10:11 +02:00
Christoffer Lerno
fe98225f0a
Remove superfluous cleanup parameter in os::exit and os::fastexit.
2025-05-23 22:04:54 +02:00
Christoffer Lerno
bae3e59217
Add missing @noreturn to os::exit
2025-05-23 21:41:33 +02:00
Christoffer Lerno
b5ddc36d7f
Limit vector max size, default is 4096 bits, but may be increased using --max-vector-size.
2025-05-23 21:40:14 +02:00
Christoffer Lerno
c2c0ecded8
- --path does not interact correctly with relative path arguments #2149 .
2025-05-23 19:17:04 +02:00
Christoffer Lerno
9d5b31dad5
Missing error on default values for body with default arguments #2148 .
2025-05-23 18:57:21 +02:00
Christoffer Lerno
6c0e94cad9
Fix indent
2025-05-23 16:45:57 +02:00
Christian Brendlin
84aee6a25b
Feature: Add inherit_stdio Option for SubProcess ( #2138 )
...
* add inherit_stdio option
2025-05-22 11:06:23 +02:00
Matthew Brush
71a765c66e
Update CODESTYLE.md
...
Fix a couple typos and wording.
2025-05-22 11:03:50 +02:00
Gregory Oakes
5c3b637cf6
Add Maybe.equals when inner type is equatable.
2025-05-22 00:06:11 +02:00
Christoffer Lerno
bd1de1e7dc
&&& was accidentally available as a valid prefix operator.
2025-05-21 23:36:33 +02:00
Christoffer Lerno
3cd2267b0a
Update error message.
2025-05-20 23:00:31 +02:00
Christoffer Lerno
7fcc91edc8
Improve error message when encountering recursively defined structs. #2146
2025-05-19 21:36:47 +02:00
Christoffer Lerno
9052f07c19
Empty default case in @jump switch does not fallthrough #2147 .
2025-05-19 21:18:23 +02:00
Christoffer Lerno
c7f0d54328
Designated const initializers with {} would overwrite the parent field.
2025-05-18 23:40:52 +02:00
Christoffer Lerno
498803e9ba
Error when using named argument on trailing macro body expansion #2139 .
2025-05-17 23:50:15 +02:00
Christoffer Lerno
082457c5fb
Incorrect parsing of call attributes #2144 .
2025-05-17 22:10:03 +02:00
Christoffer Lerno
23897bc9a4
- Incorrect parsing of ad hoc generic types, like Foo{int}**** #2140 .
...
- $define did not correctly handle generic types #2140 .
2025-05-17 21:14:10 +02:00
Christoffer Lerno
8ada2a70d9
Using a non-const as the end range for a bitstruct would trigger an assert.
2025-05-17 18:55:58 +02:00
mr6r4y
a91330b7d1
Fix typo causing segmentation fault
2025-05-17 15:41:49 +02:00
Christoffer Lerno
2f3954a7d9
Deprecate SomeFn.params
2025-05-16 21:57:18 +02:00
Christoffer Lerno
b7ae5dce8b
Deprecate MyEnum.elements.
2025-05-16 16:12:37 +02:00
Christoffer Lerno
91db6ceeda
Defining an enum like ABC = { 1 2 } was accidentally allowed.
2025-05-16 09:56:08 +02:00
Christoffer Lerno
fc2f718d9e
Update error message.
2025-05-15 23:34:01 +02:00
Christoffer Lerno
64ef3fc756
Some folding was missing in binary op compile time resolution #2135 .
2025-05-15 16:04:55 +02:00
Christoffer Lerno
93dd432b62
Improve error message when using keywords as functions/macros/variables #2133 .
2025-05-15 15:27:14 +02:00
Christoffer Lerno
6c822e5aa3
Add math::@ceil() compile time ceil function. #2134
2025-05-15 12:46:46 +02:00
Christoffer Lerno
8c741c617c
Variable aliases of aliases would not resolve correctly. #2131
...
Variable aliases could not be assigned to.
2025-05-15 09:36:16 +02:00
Christoffer Lerno
b83e57b952
Added @rnd() compile time random function (using the $$rnd() builtin). #2078
2025-05-15 00:51:33 +02:00
Christoffer Lerno
24ebe975d8
Allow the right hand side of ||| and &&& be runtime values.
2025-05-14 23:40:36 +02:00
Christoffer Lerno
511ae0da00
Contract on trying to use Object without initializing it.
2025-05-14 23:22:34 +02:00
Christoffer Lerno
36eb650228
Correctly error on @attrdef Foo = ;.
2025-05-14 12:15:48 +02:00
DragonFriend
50b4d7aa35
Add replace and treplace to String ( #2127 )
...
* Add replace and treplace functions to String
2025-05-14 11:00:20 +02:00
Christoffer Lerno
abe4727c3a
Deprecate uXX and iXX bit suffixes.
...
Add experimental LL / ULL suffixes for int128 and uint128 literals.
2025-05-13 23:48:59 +02:00
Christoffer Lerno
c528f53d58
- attrdef with any invalid name causes compiler assert #2128 .
2025-05-12 01:41:19 +02:00
Christoffer Lerno
83955ea5b5
Add --run-dir, to specify directory for running executable using compile-run and run #2121 .
2025-05-12 01:24:51 +02:00
Christoffer Lerno
fc5c70a628
Update links.
2025-05-11 22:46:43 +02:00
Christoffer Lerno
5287640140
Fix link
2025-05-11 22:38:50 +02:00
Christoffer Lerno
634438eb82
Cleanup.
2025-05-08 21:05:43 +02:00
Christoffer Lerno
164c901ae6
More comments on the allocators.
2025-05-07 12:52:19 +02:00
Christoffer Lerno
54e70cae0f
Add DateTime + Duration overloads.
2025-05-07 10:49:30 +02:00
Lucian Feroiu
30ec200492
Add support for default Homebrew-installed LLD ( #2119 )
2025-05-06 22:38:48 +02:00
Christoffer Lerno
584a8a2e60
- Fix regression in Time diff due to operator overloading #2124
...
- Add `Duration * Int` and `Clock - Clock` overload.
2025-05-06 22:33:39 +02:00
Christoffer Lerno
3f07d1c7b8
Fix No index OOB check for [:^n] #2123
2025-05-06 16:53:14 +02:00
Christoffer Lerno
125436d23e
Better default assert messages when no message is specified #2122
2025-05-05 00:01:36 +02:00
Christoffer Lerno
900365c25e
Fix stringify for compound initializers #2120 .
2025-05-04 15:31:55 +02:00
Christoffer Lerno
d313afa487
Add String.count to count the number of instances of a string.
2025-05-02 21:48:04 +02:00
Christoffer Lerno
a411f20762
Assert when a macro with compile time value is discarded, e.g. foo(); where foo() returns an untyped list. #2117
2025-05-02 21:16:56 +02:00
Christoffer Lerno
8a0907cb70
Add String.tokenize_all to replace the now deprecated String.splitter
2025-05-02 20:51:15 +02:00
Christoffer Lerno
8a09b2e5f7
std::ascii moved into std::core::ascii. Old _m variants are deprecated, as is uint methods.
2025-05-02 18:06:28 +02:00
Christoffer Lerno
bfccc303d1
Added comments.
2025-05-02 13:36:46 +02:00
Christoffer Lerno
0d3299f267
Added String.quick_ztr and String.is_zstr
2025-05-02 13:22:13 +02:00
Christoffer Lerno
11bb8b49da
- Assert triggered when casting from int[2] to uint[2] #2115
2025-05-01 18:23:48 +02:00
Christoffer Lerno
f0d2b0eff0
Update links in example code
2025-05-01 02:14:15 +02:00
Christoffer Lerno
005cc08118
0.7.2 bump
2025-04-30 18:03:00 +02:00
Christoffer Lerno
c5494a23ce
Update readme
2025-04-30 16:13:59 +02:00
Christoffer Lerno
5dcc67aa1b
Release candidate 0.7.1
2025-04-30 14:37:14 +02:00
Christian Buttner
335f53fb64
Rework Win32 mutex, condition variable and once flag ( #2111 )
...
* Rework Win32 mutex, condition variable and once flag.
2025-04-29 22:50:01 +02:00
Christoffer Lerno
3636898ac0
Fixed enum regression after 0.7.0 enum change.
2025-04-29 11:53:32 +02:00
Christoffer Lerno
5ba24e05d0
Typo
2025-04-27 14:22:51 +02:00
Christoffer Lerno
0ada5504af
Add a file about contributing.
2025-04-27 14:01:22 +02:00
Christoffer Lerno
8ac02a28cc
Error message for casting generic to incompatible type does not work properly with nested generics #1953
2025-04-27 00:40:43 +02:00
Christoffer Lerno
246957b8bd
Minor refactoring
2025-04-26 23:32:52 +02:00
Christian Buttner
0595270d9a
Fix mem::copy_inline compile.
2025-04-25 16:04:41 +02:00
Christoffer Lerno
8b86d1461d
"Length mismatch between slices" when there is none #2110
2025-04-25 16:03:36 +02:00
Christoffer Lerno
0129308bf3
c3c build picks first target rather than the first executable #2105 .
2025-04-25 15:44:34 +02:00
Christoffer Lerno
05094b4f47
@ensure should be allowed to read "out" variables. #2107
2025-04-25 15:36:07 +02:00
Christoffer Lerno
9a59cd164d
Fixed regression slice copy #2106
2025-04-25 15:14:00 +02:00
Christoffer Lerno
3eecaf9e29
Compiler crash when passing an untyped list as an argument to assert #2108 .
2025-04-25 15:02:23 +02:00
Christoffer Lerno
8b47673524
Added Enum.lookup and Enum.lookup_field.
2025-04-25 14:44:00 +02:00
Christoffer Lerno
8b29e4780d
The %s would not properly print function pointers.
2025-04-25 11:26:28 +02:00
niedlich
fd2a81afb1
Improved CMake integration of LLVM ( #2103 )
...
Added the paths for the CMake config files for LLVM 19 and higher to ``CMAKE_PREFIX_PATH``,
so that they will also be searched automatically.
2025-04-23 11:41:26 +02:00
Christoffer Lerno
a0d4df2272
Update README.md
...
Add showcase link.
2025-04-23 00:52:46 +02:00
Christoffer Lerno
e39c7cae8d
Comparing a distinct type with an enum with an inline distinct type failed unexpectedly
2025-04-22 21:51:37 +02:00
Christoffer Lerno
8a2907806b
Fixes to tclone and other temp allocations with overaligned data.
2025-04-20 21:30:36 +02:00
Christoffer Lerno
f778e75757
Added missing @clone_aligned and add checks to @tclone
2025-04-20 18:31:52 +02:00
hyperpastel
6ab7953706
Patch false maybe-uninitialized warning
2025-04-20 16:59:52 +02:00
Christoffer Lerno
42e4370994
Fix conditional in slice assign check.
2025-04-18 22:14:33 +02:00
Christoffer Lerno
9a1fdbbca0
Add missing build_options.c commit.
2025-04-18 19:50:04 +02:00
joshringuk@gmail.com
434a0e8e4b
array contains
2025-04-18 18:15:01 +02:00
Christoffer Lerno
946c167bf1
Improve error for default args #2096 . Deprecated old inference with slice copy. Copying must now ensure a slicing operator at the end of the right hand side: foo[1..2] = bar[..] rather than the old foo[1..2] = bar. The old behaviour can be mostly retained with --use-old-slice-copy).
2025-04-18 17:19:04 +02:00
Christoffer Lerno
ba10c8953d
@ensure was not included when the function doesn't return a value #2098 .
2025-04-17 20:26:21 +02:00
Christoffer Lerno
72d7813c20
@if was ignored on attrdef, regression 0.7 #2093
2025-04-17 19:07:48 +02:00
Christoffer Lerno
1083de1f81
- Fix broken enum inline -> bool conversions #2094 .
2025-04-17 19:00:04 +02:00
Christoffer Lerno
b4b6cba301
- Improved error messages on Foo { 3, abc } #2099 .
2025-04-17 18:42:25 +02:00
Christoffer Lerno
3244898610
- @if now does implicit conversion to bool like $if. #2086
2025-04-16 23:49:12 +02:00
Christoffer Lerno
6454856fdb
String str = "" is now guaranteed to be null terminated. #2083
2025-04-16 23:19:28 +02:00
Christoffer Lerno
5cf48ad730
Add Ubuntu 22
2025-04-16 20:25:42 +02:00
Boris Barbulovski
b5d0739de0
Add env::ANDROID to std.*
2025-04-16 17:47:49 +02:00
AlexCodesApps
f6e130ad3c
Type mismatch fix ( #2081 )
...
* Fixed type mismatch in static function 'match_argopt' in file 'src/build/build_options.c',
where false was returned from the function which has a return type of 'const char *'.
2025-04-16 17:46:54 +02:00
Simone Raimondi
f9e62b80ea
Fix for build ( #2082 )
2025-04-16 17:45:39 +02:00
Christoffer Lerno
debbae594c
Remove more Ubuntu 20
2025-04-16 17:11:53 +02:00
Christoffer Lerno
37ffd92f7b
- Bug with slice acces as inline struct member #2088 .
2025-04-16 17:02:22 +02:00
Christoffer Lerno
a44e932806
ABI bug on x64 Linux / MacOS when passing a union containing a struct of 3 floats. #2087
2025-04-16 15:58:14 +02:00
Christoffer Lerno
668175851b
Improved error message #2084
2025-04-16 15:25:05 +02:00
Christoffer Lerno
e7c9ec0938
Added comments.
2025-04-16 01:32:01 +02:00
Christoffer Lerno
d6fa9cd50b
Added some comments about the tracking allocator.
2025-04-15 16:03:12 +02:00
Christoffer Lerno
41e173d255
Added some comment about the temp allocator.
2025-04-15 15:53:11 +02:00
Christoffer Lerno
fde2bb2a7e
Support @if on locals.
2025-04-15 13:20:10 +02:00
Christoffer Lerno
0a9bb2e8e0
Fix to simple a += b overload fallback. Renaming and reordering in the stdlib.
2025-04-15 12:01:58 +02:00
Christoffer Lerno
b64dcde21d
Make aliases able to use @deprecated. Prefer math::I and math::I_F for math::IMAGINARY and math::IMAGINARYF the latter is deprecated. Combination of += and [] overloads now properly handled in most cases.
2025-04-14 20:51:01 +02:00
Christoffer Lerno
eade5fa57a
Fix Windows sincos.
2025-04-14 03:36:03 +02:00
Christoffer Lerno
f85198e3ee
Added += and related as overloads. Updated tests and docs. Slice2 extracted to its own file.
2025-04-14 00:55:46 +02:00
Christoffer Lerno
dca805bd8a
Added tests to sincos. Correctly detect multiple overloads of the same type. Fix regression quaternion overload. Remove "1." style.
2025-04-13 15:46:27 +02:00
Christoffer Lerno
3888fcb182
- Add @operator_r and @operator_s attributes.
2025-04-13 13:43:03 +02:00
Christoffer Lerno
de73265d28
Fix operator overload struct placement.
2025-04-11 21:27:59 +02:00
Christoffer Lerno
cb895754c8
Size to store overload increas for msvc.
2025-04-11 21:17:42 +02:00
Christoffer Lerno
6e42bfef3b
Typo
2025-04-11 21:04:46 +02:00
Christoffer Lerno
01357ef6d7
Check before hitting assert.
2025-04-11 21:00:30 +02:00
Christoffer Lerno
89d205258e
Fix test.
2025-04-11 19:11:49 +02:00
Christoffer Lerno
0f2d425297
Operator overloading for + - * / % & | ^ << >> ~ == !=
2025-04-11 18:46:22 +02:00
Christoffer Lerno
28fc03c376
Do not user finalizer with wasm
2025-04-08 00:03:35 +02:00
Christoffer Lerno
1290906d66
Setup temp allocator by default on Wasm
2025-04-07 23:35:38 +02:00
Christoffer Lerno
25d416aca1
Regression with invalid setup of the WASM temp allocator.
2025-04-07 21:58:21 +02:00
Christoffer Lerno
8cce7f6836
Incorrect rounding at compile time going from double to int.
2025-04-07 02:36:04 +02:00
Christoffer Lerno
4c26adb376
Improved error message when narrowing isn't allowed.
2025-04-07 01:12:23 +02:00
Christoffer Lerno
94b8330ac5
Function @require checks are added to the caller in safe mode. #186
2025-04-06 15:28:10 +02:00
Christoffer Lerno
3cb5df5639
0.7 fixes. Improving the yacc grammar.
2025-04-04 18:14:16 +02:00
Christoffer Lerno
ded5fde2d5
Fix test, fix type name.
2025-04-04 13:48:07 +02:00
Christoffer Lerno
65fb977e89
Clearer errors when using a &ref parameter with type.
2025-04-04 13:21:53 +02:00
Christoffer Lerno
e3f3b6f5f1
Better errors trying to convert an enum to an int and vice versa. Trying to cast an enum to int and back caused the compiler to crash.
2025-04-04 02:38:51 +02:00
Boris Barbulovski
ab4ed9472a
Copy paste typo.
2025-04-04 02:29:25 +02:00
Christoffer Lerno
1668999f90
Better errors on some common casting mistakes (pointer->slice, String->ZString, deref pointer->array) #2064 .
2025-04-04 00:12:52 +02:00
Christoffer Lerno
e828d9a05a
Fix stdlib naming.
2025-04-03 01:47:52 +02:00
Avaxar
47447dc069
Glob crt1.o on Linux depending on architecture
2025-04-03 00:59:51 +02:00
Christoffer Lerno
39a59c929f
Add dummy deprecated key.
2025-04-03 00:59:24 +02:00
Christoffer Lerno
f355738dda
Project refactoring. Remove deprecated properties.
2025-04-03 00:56:17 +02:00
Christoffer Lerno
87e254e4b1
Added vector hash to release notes and change raylib dependency
2025-03-31 16:42:24 +02:00
Sander van den Bosch
561a683230
Added .hash() functions for vectors ( #2043 )
...
* Added .hash() functions for vectors
* Update test to a non-zero sized vector
* Changed vector hash functions to hash the underlying bytes in a char slice, the same approch is used for arrays
* Added test for hashed
* Updated formatting to be consistant with C3 code style
* Formatting, use "self"
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-03-31 16:33:48 +02:00
Alec Larson
63e5aa58c5
Create project_schema.json
...
By setting the `$schema` field of your `project.json` file to a URL leading to this JSON schema, your IDE may be able to provide auto-completion.
2025-03-31 16:09:52 +02:00
Christoffer Lerno
2be3071bdb
0.7.1 dev
2025-03-31 01:36:58 +02:00
Christoffer Lerno
d3e81b193a
Update CI
2025-03-31 01:34:01 +02:00
Christoffer Lerno
586d191585
Fix in stdlib and update readme.
2025-03-30 23:11:29 +02:00
Christoffer Lerno
83e5a0c2ab
Fix CI
2025-03-30 12:51:15 +02:00
Christoffer Lerno
c058c50aef
Add releasenotes to zip.
2025-03-30 12:34:04 +02:00
walther chen
46d3e3dc97
readme example typo
2025-03-29 23:08:20 +01:00
Christoffer Lerno
40ff6b1315
Release candidate 0.7.0
2025-03-29 22:36:28 +01:00
Christoffer Lerno
8453270921
Added Wumpus
2025-03-29 00:25:20 +01:00
Christoffer Lerno
6739de3a10
Re-enable everything and use the new release flow.
2025-03-28 11:18:40 +01:00
Christoffer Lerno
010a77816b
Test new CI
2025-03-28 01:26:57 +01:00
Christoffer Lerno
61113a8471
Update name
2025-03-28 01:12:13 +01:00
Christoffer Lerno
7b0cc85b2c
Update github token
2025-03-28 00:51:43 +01:00
Christoffer Lerno
ea5fec80b0
Try deleting old releases.
2025-03-28 00:37:39 +01:00
Christoffer Lerno
9db316ddac
Restore the checkout.
2025-03-27 22:41:28 +01:00
Christoffer Lerno
cb164e2ca2
Remove what seems to be useless tags.
2025-03-27 20:35:54 +01:00
Christoffer Lerno
83ff1da80c
Update latest name
2025-03-27 15:12:21 +01:00
Christoffer Lerno
d626dea52a
Update timestamp name
2025-03-27 00:04:56 +01:00
Christoffer Lerno
5d026268a7
"Single module" was not enforced when creating a static library using as a project target.
2025-03-27 00:02:51 +01:00
Christoffer Lerno
2ab318a178
Generate tag name update
2025-03-26 21:30:12 +01:00
Christoffer Lerno
638d5332ff
Generate tag name
2025-03-26 18:31:08 +01:00
Christoffer Lerno
5c46b0c2a0
Add @each_row for the csv module.
2025-03-26 18:19:19 +01:00
Christoffer Lerno
4538a1f50d
- Correctly errors when a generic module contains a self-generic type.
2025-03-26 18:04:00 +01:00
Christoffer Lerno
e0f1919849
Rename latest build
2025-03-26 14:15:46 +01:00
Christoffer Lerno
df175dd48c
Added some direction for stdlib contributions.
2025-03-26 11:59:28 +01:00
Christoffer Lerno
6e340f22af
Add star history
2025-03-25 23:53:36 +01:00
Christoffer Lerno
ff2809a3ac
Fix of regression in @assert_leak.
2025-03-25 22:11:47 +01:00
Maxime Beaudoin
a8554b4233
String.c3 function parameters ambiguous ( #2061 )
...
* Some tweaks. Fixes regression in `format`
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-03-25 14:25:23 +01:00
Christoffer Lerno
fa707db078
Do not implicitly convert enums to ordinal in formatting functions.
2025-03-25 12:27:51 +01:00
Christoffer Lerno
439349ceb8
Move dynamic dispatch lowering.
2025-03-25 00:20:01 +01:00
Christoffer Lerno
d760378b02
- Added @format attribute for compile time printf validation #2057 .
...
- Bug when printing a boolean value as an integer using printf.
2025-03-24 13:32:44 +01:00
Christoffer Lerno
50d7919fec
- Compile test and benchmark functions when invoking --lsp #2058 .
2025-03-23 23:30:50 +01:00
Christoffer Lerno
f53f8bf423
Fix help message for asm-out
2025-03-23 23:19:31 +01:00
Christoffer Lerno
82f1b543ed
&self not runtime null-checked in macro #1827 . Regression in temp allocators.
2025-03-23 22:50:09 +01:00
walther chen
b48588ca8f
improve error message for uninitialized temp allocator pool on new
...
threads
2025-03-23 22:15:42 +01:00
Christoffer Lerno
a03d821602
- Use @pool_init() to set up a temp pool on a thread. Only the main thread has implicit temp pool setup.
...
- `tmem` is now a variable.
2025-03-21 17:08:58 +01:00
[ Taha. Dostifam ]
fab00f21a6
Added a progress bar to vendor-fetch in compiler section ( #2055 )
...
* added a progress bar to vendor-fetch of compiler section
* Handle ansi settings.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-03-20 21:53:02 +01:00
Christoffer Lerno
49033320e2
Stable path for unpacked libraries.
2025-03-20 20:51:36 +01:00
Christoffer Lerno
207bcfea02
os::exit and os::fastexit added.
2025-03-20 13:36:59 +01:00
Christoffer Lerno
d2c44717f1
Exclude 21 due to packaging errors of LLVM.
2025-03-20 10:09:48 +01:00
Christoffer Lerno
0beb30c979
Updated error message #2037
2025-03-19 23:25:56 +01:00
Christoffer Lerno
de74e97ab1
Fixes to temp allocator.
2025-03-18 19:58:16 +01:00
Christoffer Lerno
7e100472e7
- AnyList now also defaults to the temp allocator.
...
- `os::getcwd` and `os::get_home_dir` requires an explicit allocator.
- `file::load_new` and `file::load_path_new` removed.
2025-03-18 18:34:52 +01:00
Christoffer Lerno
cfc87a9d66
Update example.
2025-03-18 15:41:37 +01:00
Christoffer Lerno
84753bde6d
- Allow inferred type on body parameters. E.g. @stack_mem(1024; alloc) { ... };
2025-03-18 15:40:26 +01:00
Christoffer Lerno
72608ce01d
- Temp allocator now supports more than 2 in-flight stacks.
...
- Printing stacktrace uses its own temp allocator.
- `@pool` no longer takes an argument.
- `Allocator` interface removes `mark` and `reset`.
- DynamicArenaAllocator has changed init function.
- Added `BackedArenaAllocator` which is allocated to a fixed size, then allocates on the backing allocator and supports mark/reset.
2025-03-18 15:16:22 +01:00
Christoffer Lerno
82cc49b388
- !!foo now works same as as ! ! foo.
...
- Incorrectly allowed getting pointer to a macro #2049 .
2025-03-16 23:57:30 +01:00
Christoffer Lerno
425676a98d
Bug due to missing cast when doing $i[$x] = $z.
...
Added `math::iota`.
2025-03-16 10:58:13 +01:00
Christoffer Lerno
5c77c9a754
- Change distinct -> typedef.
...
- Order of attribute declaration is changed for `alias`.
- Added `LANGUAGE_DEV_VERSION` env constant.
- Rename `anyfault` -> `fault`.
- Changed `fault` -> `faultdef`.
- Added `attrdef` instead of `alias` for attribute aliases.
2025-03-15 20:10:47 +01:00
Christoffer Lerno
fc5615a7a1
Restore def so that libraries work.
2025-03-13 11:51:21 +01:00
Christoffer Lerno
9707a9694f
Temporarily turn off raylib
2025-03-13 11:46:38 +01:00
Christoffer Lerno
8b49e6c14d
Rename def to alias.
2025-03-13 11:22:27 +01:00
Christoffer Lerno
ae76839347
Fix @return? parsing.
2025-03-13 11:03:19 +01:00
Christoffer Lerno
b8ae2b06d6
Rename @return! to @return?
2025-03-12 21:40:30 +01:00
Christoffer Lerno
c9dbd86d82
Crash resolving a method on Foo[2] when Foo is distinct #2042 .
2025-03-12 15:45:43 +01:00
Christoffer Lerno
d5b211a786
Fault nameof prefixes the first last module path, for instance std::io::EOF is rendered as io::EOF.
2025-03-11 22:46:02 +01:00
Christoffer Lerno
f5d02cd0d2
Crash when trying to convert a struct slice to a vector #2039 .
2025-03-11 21:18:19 +01:00
Christoffer Lerno
8c23c5028d
Make @public import recursive. #2018
...
`import` can now both be @public and @norecurse.
2025-03-10 15:33:29 +01:00
Christoffer Lerno
461bd43a22
Fix Android 2
2025-03-10 11:04:43 +01:00
Christoffer Lerno
fbc8168bb9
Improve error message on foo ?? io::EOF with missing '?' #2036 . Fix build on Android
2025-03-10 11:02:43 +01:00
Christoffer Lerno
ff75f2c21f
Update naming of enum const.
2025-03-10 00:15:50 +01:00
Christoffer Lerno
25bccf4883
New faults and syntax ( #2034 )
...
- Remove `[?]` syntax.
- Change `int!` to `int?` syntax.
- New `fault` declarations.
- Enum associated values can reference the calling enum.
2025-03-10 00:11:35 +01:00
Boris Barbulovski
fefce25081
C3 Android logcat interface. ( #2030 )
...
* C3 Android logcat interface.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-03-09 15:52:24 +01:00
Boris Barbulovski
f21cc02320
Initial Android support. ( #2024 )
...
* Initial Android support.
* Add Android x86_64
* - Typo api_verion
- Typo in DEFAULT_TARGETS
- Removed unnecessary snprintf
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-03-08 23:38:52 +01:00
BWindey
1461414128
[TEST] Add unit tests for libc ( #1974 )
...
Some tests for libc + fixes
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-03-08 22:25:21 +01:00
m0tholith
dc8b35e62f
Added is_initalized function to list, linkedlist, and anylist types ( #2027 )
...
* Added `is_initalized` function to list, linkedlist, and anylist types
2025-03-08 21:49:17 +01:00
Christoffer Lerno
1dca90b89d
Fix tests.
2025-03-07 23:54:01 +01:00
Christoffer Lerno
a088a5057a
Remove if (catch foo) { case ... } syntax.
2025-03-07 22:48:28 +01:00
Christoffer Lerno
facaa75083
Remove use of if-catch-case
2025-03-07 13:57:05 +01:00
Christoffer Lerno
cce097fdef
Disable mingw compilation.
2025-03-07 12:36:19 +01:00
Christoffer Lerno
5a6884b708
Set linker for mingw64
2025-03-07 12:34:00 +01:00
Christoffer Lerno
5898cad98d
Fix typo giving the wrong mem on error, closes #2023 .
2025-03-07 12:14:01 +01:00
Christoffer Lerno
5482107ca8
Some formatting and updated test. Updated releasenotes.
2025-03-07 00:14:41 +01:00
Christoffer Lerno
c790ecbca5
Update msys in CI
2025-03-07 00:04:03 +01:00
Stephen Molloy
1fba9a7993
String.to_float("+") fails ( #2021 )
...
* When stripping +/- from the start of a string in String.to_real: only do this if the string length is greater than 1.
* Added a test for the String.to_float("+") bug
2025-03-07 00:02:13 +01:00
Christoffer Lerno
ca87ff066b
Fix hello world.
2025-03-05 19:28:12 +01:00
Christoffer Lerno
c0b80eccad
Change @return! syntax to require ":" after faults. Update all contracts to consistently use ":" before the description.
2025-03-05 17:11:45 +01:00
Christoffer Lerno
cf0405930e
Fix case where occasionally atomic_load would miscompile.
2025-03-05 01:58:07 +01:00
Christoffer Lerno
28b1e4d182
Fix issue when doing boolean atomic operations.
2025-03-04 16:58:27 +01:00
Christoffer Lerno
9c65098a91
Fix missing "$switch" update.
2025-03-04 16:39:20 +01:00
Christoffer Lerno
2439405e70
- $foreach "()" replaced by trailing ":" $foreach ($x, $y : $foo) -> $foreach $x, $y : $foo:
...
- `$for` "()" replaced by trailing ":" `$for (var $x = 0; $x < FOO; $x++)` -> `$for var $x = 0; $x < FOO; $x++:`
- `$switch` "()" replaced by trailing ":" `$switch ($Type)` -> `$switch $Type:`
- Empty `$switch` requires trailing ":" `$switch` -> `$switch:`
2025-03-04 16:13:47 +01:00
Jonas
46b52ec9ce
Fix Atomic.max ( #2011 )
...
* Fix atomic max and comments in std::atomic
* Updates to `Atomic` to handle distinct types and booleans.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-03-04 15:39:03 +01:00
Nikita Pivkin
c6c78e7709
fix broken link to macOS installation section
...
Signed-off-by: Nikita Pivkin <nikita.pivkin@smartforce.io >
2025-03-04 14:03:14 +01:00
Zack Puhl
177df6321a
add test file for wide string constants
...
add full UTF-8 to wide-str language capabilities
move wstr language constant expressions to builtins and adjust test cases
2025-03-04 13:46:59 +01:00
Christoffer Lerno
d2a461d270
Updated release notes.
2025-03-04 10:31:47 +01:00
Nikita Pivkin
7a848416f7
docs: update 'Building via Docker' section
...
Signed-off-by: Nikita Pivkin <nikita.pivkin@smartforce.io >
2025-03-04 10:30:32 +01:00
Erik Bäckman
83bc24f58c
Fix libc::stat on FreeBSD (x86_64)
2025-03-04 10:20:13 +01:00
Christoffer Lerno
0ef99c23a8
Allow swizzling assign, eg. abc.xz += { 5, 10 };
2025-03-04 02:18:24 +01:00
Christoffer Lerno
0a905d8458
Change all hash functions to have a common hash function.
2025-03-03 20:07:02 +01:00
Christoffer Lerno
261bfb97c6
Rename length_sq to sq_magnitude
2025-03-03 18:47:55 +01:00
Christoffer Lerno
cc94199131
Remove Vec2 and other aliases from std::math.
2025-03-03 18:13:39 +01:00
Christoffer Lerno
0925010c07
Removal of any-switches
2025-03-03 15:02:25 +01:00
Christoffer Lerno
13f824e349
Add ONHEAP for List and HashMap
2025-03-03 12:20:18 +01:00
Christoffer Lerno
3d6f28919c
Aliases were incorrectly considered compile time constants.
2025-03-03 11:35:18 +01:00
Christoffer Lerno
910fc6e364
Post and pre-decrement operators switched places for vector elements. #2010 .
2025-03-03 01:21:01 +01:00
Christoffer Lerno
c40198b016
- new_* functions in general moved to version without new_ prefix.
...
- `string::new_from_*` changed to `string::from_*`.
- `String.to_utf16_copy` and related changed to `String.to_utf16`.
- `String.to_utf16_tcopy` and related changed to `String.to_temp_utf16`
- `mem::temp_new` changed to `mem::tnew`.
- `mem::temp_alloc` and related changed to `mem::talloc`.
- `mem::temp_new_array` changed to `mem::temp_array`.
2025-03-03 00:32:20 +01:00
Christoffer Lerno
b35aafd3d5
Update for NoSanitize on globals.
2025-03-03 00:32:20 +01:00
Christoffer Lerno
222bfb158b
Remove deprecated functions.
2025-03-03 00:32:20 +01:00
Christoffer Lerno
61c67c8f23
Fix address sanitizer to work on MachO targets (e.g. MacOS).
2025-03-03 00:32:20 +01:00
Christoffer Lerno
2b90500c22
Remove container sanitizer unless using the LIBC allocator.
2025-03-03 00:32:20 +01:00
Christoffer Lerno
74a6e9f0c0
Add struct swizzle test.
2025-03-03 00:32:20 +01:00
Christoffer Lerno
fbac2d6df3
Formatting updates.
2025-03-03 00:32:20 +01:00
Christoffer Lerno
8f0de40b3d
Update nix.
2025-03-03 00:32:20 +01:00
Christoffer Lerno
8bb99c6f81
Fixes to examples and MSVC compilation.
2025-03-03 00:32:20 +01:00
Christoffer Lerno
cc5f9c6aab
Update CI for 0.7
2025-03-03 00:32:20 +01:00
Christoffer Lerno
fb6b048bd0
Remove operator(@construct). Fix sample.
2025-03-03 00:32:20 +01:00
Christoffer Lerno
2a895ec7be
First 0.7 update, removing all deprecated features.
2025-03-03 00:32:20 +01:00
Christoffer Lerno
cff6697818
Fix CI for Windows
2025-03-02 01:25:16 +01:00
Christoffer Lerno
453cd295e2
Bundle README
2025-03-02 00:01:56 +01:00
Christoffer Lerno
55c88408be
Remove some deprecated use.
2025-03-01 23:58:28 +01:00
Christoffer Lerno
f52c2a6f96
Update information about latest version.
2025-03-01 23:24:17 +01:00
Christoffer Lerno
c430ff5d09
Retry release.
2025-03-01 21:03:21 +01:00
Christoffer Lerno
dd8e280835
Release 0.6.8
2025-03-01 18:47:08 +01:00
Christoffer Lerno
34c2d8ce77
Fix regression with scripts.
2025-03-01 17:24:38 +01:00
Christoffer Lerno
28b9ff8016
Fixed some additional errors due to the BuildParseContext refactoring.
2025-03-01 12:48:22 +01:00
Christoffer Lerno
76f226f536
Fixed error and poor error message when using an invalid target name.
2025-03-01 12:30:36 +01:00
Christoffer Lerno
1b0ac13d76
Deprecation of operator(@construct)
2025-02-28 10:39:08 +01:00
Christoffer Lerno
f134b8b67a
Swizzling an inline vector in a struct would cause a crash.
2025-02-27 21:49:20 +01:00
Christoffer Lerno
33b05bcfeb
More deprecations in lib6, and updates to lib7
2025-02-27 11:10:41 +01:00
Christoffer Lerno
6d3c1f5d2f
Fix final? issues with -o.
2025-02-26 02:51:42 +01:00
Christoffer Lerno
96943ca66f
Check exe and lib output so -o works with directories. Removed construct forms from Maybe.
2025-02-26 02:35:28 +01:00
Christoffer Lerno
374d73af12
Cleanup.
2025-02-26 01:49:19 +01:00
Adversing
81397f0726
Add --print-env option to c3c ( #1880 )
...
* Add `--build-env` for build environment information.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-02-26 01:48:03 +01:00
Aleksandr Vedeneev
0c33b78a2f
Test runner args #1967 ( #1988 )
...
* harmonized testrun arguments with c3c --test-* naming
added --test-quiet option
added --test-noleak to disable tracking allocator mem leak detection
added --test-nocapture - tests can print out everything as they run
* Move changes to lib7
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-02-26 00:49:21 +01:00
Christoffer Lerno
ee5b9e5826
@if declarations were missing from -P output #1973 .
2025-02-25 17:00:47 +01:00
Christoffer Lerno
5d3c3781e4
Update msys CI
2025-02-25 16:09:23 +01:00
Christoffer Lerno
c13c0d04b1
Run MSVC with "no-terminal"
2025-02-25 16:02:51 +01:00
Christoffer Lerno
88f44f1eac
Fix test.
2025-02-25 15:48:44 +01:00
Christoffer Lerno
50680d6893
Fix bug casting bool to int to other int #1995 . Use test_suite7 in CI.
2025-02-25 15:36:06 +01:00
Christoffer Lerno
31096531e1
Several fixes for .o files and -o output, improving handling and naming, checking for existence of sub-folders before output. Warning on using .o and -o output when not single module etc. Fix to static lib regression. Info about asm / llvm / obj output.
2025-02-25 14:05:00 +01:00
Christoffer Lerno
062a67fe75
Updates to file:: and path::, Path is now passed an allocator. path::traverse function. mkdir / rmdir / chdir works directly with strings. Strings get file_basepath, path_dirname. Test suite runner now uses lib7. Bug when printing a parameter declaration error. Fix optional jumps in expression lists, #1942 .
2025-02-25 02:18:33 +01:00
Christoffer Lerno
1dfc24822e
Update pool test.
2025-02-24 22:37:20 +01:00
Christoffer Lerno
e35c7f0b90
Update pool test.
2025-02-24 18:07:36 +01:00
Christoffer Lerno
7083b2b8e5
Added --suppress-run from #1931 .
2025-02-24 11:25:07 +01:00
Christoffer Lerno
135213388d
Add bigint fixes to lib7
2025-02-24 11:15:50 +01:00
Jonas Quinten
ed62268997
std::math::bigint: Fixed init_with_array with empty array
2025-02-24 11:12:55 +01:00
Jonas Quinten
38110b0269
fix
2025-02-24 11:12:55 +01:00
Jonas Quinten
e34d56327a
std::math::bigint: Fixed init_with_u128 and init_with_array
2025-02-24 11:12:55 +01:00
Jonas Quinten
b50e6bd0e4
std::math::bigint: Added unit tests for init_with_u128 and init_with_array
2025-02-24 11:12:55 +01:00
Christoffer Lerno
3ba68f85fe
Fix bug checking for @builtin
2025-02-24 10:28:50 +01:00
Christoffer Lerno
9f5c5a9acf
Update some examples.
2025-02-24 02:20:02 +01:00
Christoffer Lerno
b6f5938eda
Change to {} generics in lib7. Update qoi and other encodings and multiple other small changes.
2025-02-24 01:44:57 +01:00
Christoffer Lerno
87725a3a9e
Create a unit7 for all unit tests.
2025-02-24 01:05:45 +01:00
Christoffer Lerno
70029cc4b8
Updated stdlib to experimental allocator first. Updates to DString, String and anything using new_* syntax.
2025-02-23 22:54:48 +01:00
Christoffer Lerno
4f72bc4be9
Fixes to lib7, added parallel test structure.
2025-02-23 13:53:04 +01:00
Christoffer Lerno
3a1aa8bdf0
Fix precedence of braces. Updated to lib2.
2025-02-23 01:30:34 +01:00
Christoffer Lerno
a986d053c0
Add lib2 to allow hacking the stdlib more for 0.7.x
2025-02-23 00:24:01 +01:00
Christoffer Lerno
43943c1f33
Update MSVC paths in CI
2025-02-22 23:02:07 +01:00
Christoffer Lerno
3da9f73338
- Output into /.build/obj/<platform> by default.
...
- Output llvm/asm into llvm/<platform> and asm/<platform> by default.
- Don't delete .o files not produced by the compiler.
- Correctly handle in/out when interacting with inout.
2025-02-22 22:34:26 +01:00
Christoffer Lerno
855be92881
Regression with .gitkeep in project init. List.init incorrectly didn't have the first argument the allocator. Added .init to priority queue. Created mem thread allocator alias. Correctly handle ident aliases. Allow ident on builtin aliases.
2025-02-21 21:34:48 +01:00
Christoffer Lerno
e674deb486
Fix generics.
2025-02-21 16:12:35 +01:00
Christoffer Lerno
3ef094a3d3
Add some conveniences to Clock and thread. Allow atomic load on booleans.
2025-02-21 15:56:32 +01:00
Christoffer Lerno
9c60c2cb33
Change to avoid thread races during compilation.
2025-02-21 13:15:19 +01:00
Christoffer Lerno
b54d994475
Fix memcmp misuse in parsing asm args.
2025-02-21 09:46:56 +01:00
Christoffer Lerno
80e360d8dd
Dispose of copied module.
2025-02-20 23:25:25 +01:00
Christoffer Lerno
9f165342e2
Revert disposal
2025-02-20 22:41:44 +01:00
Christoffer Lerno
a2bfeb156d
Dispose of the LLVMModule
2025-02-20 22:36:00 +01:00
Christoffer Lerno
bb8c03777d
Fix address overread
2025-02-20 21:56:28 +01:00
Christoffer Lerno
8338888976
Do not use optimization for C++ wrapper.
2025-02-20 18:36:22 +01:00
Christoffer Lerno
79db06ecd1
Crash when trying to define a method macro that isn't @construct but has no arguments.
2025-02-20 15:51:21 +01:00
Christoffer Lerno
341a70bd5d
Implicitly unwrapped optional value in defer incorrectly copied #1982 .
2025-02-20 03:44:22 +01:00
Christoffer Lerno
8bf9ca89a1
Add a separate job to just run the test suite runner for Mac.
2025-02-20 02:30:43 +01:00
Alex Veden
5046608d1f
added io::stdout().flush() - to force printing test name before possible deadlock
...
mem::scoped() and long jump resilience fixed #1963
fixed --test-nosort argument + extra test for teardown_fn memory leak
Some renaming. Simplify robust test allocator handling. Pop temp allocators in test runner.
`Thread` no longer allocates memory on posix.
Update unprintable struct output.
Correctly give an error if a character literal contains a line break.
2025-02-20 01:15:48 +01:00
Christoffer Lerno
535151a2a5
Fix character literal regex.
2025-02-20 00:59:18 +01:00
Christoffer Lerno
b45cb22950
Some improvements to the test_suite_runner
2025-02-19 20:59:12 +01:00
Christoffer Lerno
d6485ca08b
Test new tester script.
2025-02-19 18:01:44 +01:00
Christoffer Lerno
d9e5926d57
Fix error when boolean combined with ??. First checkin of C3 tester (unfinished)
2025-02-19 01:02:58 +01:00
Christoffer Lerno
cbacd64987
Update tests to (Foo) { ... } syntax.
2025-02-18 18:53:30 +01:00
Christoffer Lerno
168c11e006
{| |} expression blocks deprecated.
2025-02-18 12:50:34 +01:00
Mateo Acuña
26362d5068
Improve crtbegin.o Lookup for Linux Targets ( #1975 )
...
* refactor linux crtbegin lookup to use architecture-specific glob paths
* Fixed incorrect function call to `get_linux_crt_begin_glob_path` (`get_linux_crt_begin_arch_glob`)
* Formatting
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-02-18 00:30:54 +01:00
Christoffer Lerno
e77d1fb646
- Increase precedence of (Foo) { 1, 2 }
...
- Add `--enable-new-generics` to enable `Foo{int}` generic syntax.
2025-02-18 00:26:22 +01:00
Christoffer Lerno
c41d551ead
Create 0.6.8
2025-02-18 00:26:22 +01:00
Christoffer Lerno
0d7697280c
Fix of test (again)
2025-02-17 00:22:21 +01:00
Christoffer Lerno
0a93581695
Fix test.
2025-02-17 00:03:44 +01:00
Christoffer Lerno
0509b40b21
- Fix issue when dereferencing a constant string.
...
- Fix problem where a line break in a literal was allowed.
2025-02-16 23:55:55 +01:00
Christoffer Lerno
6e11bdbd35
Fix issue where target was ignored for projects.
2025-02-16 23:31:03 +01:00
Christoffer Lerno
8a6e996442
Create release candidate 0.6.7
2025-02-16 01:24:51 +01:00
pekochan069
be00fdb253
Add scoop installation
2025-02-14 20:13:50 +01:00
Christoffer Lerno
0dd1a93d0d
Regression String! a; char* b = a.ptr; would incorrectly be allowed.
2025-02-14 16:11:31 +01:00
Christoffer Lerno
7ca70b20be
Allow (Foo) { 1, 2 } syntax for compound literals.
2025-02-14 12:51:58 +01:00
Bruno Dias
e0cfe56121
Fixed nix build for macos. ( #1914 )
...
* Fixed nix build for macos.
* Fix test.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-02-13 22:44:21 +01:00
Christoffer Lerno
6ca77065d8
Fix issue when parsing bitstructs, preventing them from implementing interfaces.
2025-02-13 21:51:22 +01:00
Christoffer Lerno
e96dce92cd
Issue when scalar expanding a boolean from a conditional to a bool vector #1954 .
2025-02-13 21:36:28 +01:00
Christoffer Lerno
cec9b21707
Missing end padding when including a packed struct #1966 .
2025-02-13 21:15:27 +01:00
Christoffer Lerno
8c58b31bbd
Remove <[]> experimental generic syntax.
2025-02-13 12:53:46 +01:00
Christoffer Lerno
c785572467
Add allocator::wrap.
2025-02-13 03:10:53 +01:00
Jamie Wales
a297470887
Add further tests to vector library
2025-02-12 23:31:10 +01:00
Velikiy Kirill
f0682422c0
Add more Windows API types and structs ( #1956 )
...
* Add more Windows API types and structs
* Add more Windows API types and structs (merged sock.c3 to wsa.c3)
* Some formatting.
---------
Co-authored-by: Kirill Velikiy <velikoss@vk.com >
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-02-12 23:30:07 +01:00
Christoffer Lerno
1f856cacf5
HashMap is now Printable. Fix access inlining for enums. #1958
2025-02-12 23:11:46 +01:00
Ygor Pontelo
c9ecb09cd7
duration fix ( #1950 )
...
* duration fix
* Update release notes, explicitly send -1.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-02-12 22:13:07 +01:00
Christoffer Lerno
4961d0433f
- Circumvent Aarch64 miscompilations of atomics.
...
- Fixes to ByteBuffer allocation/free.
- Fix issue where compiling both for asm and object file would corrupt the obj file output.
2025-02-12 12:50:30 +01:00
Christoffer Lerno
ba48627ca0
Fix address out of bounds access in test.
2025-02-11 00:22:01 +01:00
Christoffer Lerno
45eb3acffe
Remove unused parameter in mem::clear.
2025-02-11 00:15:33 +01:00
Christoffer Lerno
d3ad533dd6
Fix issue in List with sanitizers.
2025-02-11 00:13:04 +01:00
Christoffer Lerno
9e54014848
Fix issue in GrowableBitSet with sanitizers.
2025-02-10 23:55:02 +01:00
Christoffer Lerno
f8e3ffd267
Fix test
2025-02-10 22:19:16 +01:00
Christoffer Lerno
8b8a2beb0d
Fix threading test.
2025-02-10 22:08:54 +01:00
Christoffer Lerno
79a4b6855b
- Detect unaligned loads #1951 .
...
- Fix issue where aligned bitstructs did not store/load with the given alignment.
2025-02-10 22:07:15 +01:00
Christoffer Lerno
86680279fa
Improve inference on ?? #1943 .
2025-02-10 16:20:33 +01:00
Christoffer Lerno
b46d3947dd
Postpone Xtensa addition.
2025-02-10 12:00:50 +01:00
Christoffer Lerno
c4212c4649
- Test runner will also check for leaks.
...
- `write` of qoi would leak memory.
- Issue when having an empty `Path` or just "."
- `set_env` would leak memory.
2025-02-10 00:39:02 +01:00
Christoffer Lerno
63f619e5b6
Add tracking allocator to test runner. #1809
2025-02-09 03:10:35 +01:00
Christoffer Lerno
ce06de4b18
Updates to grammar.
2025-02-09 02:19:27 +01:00
Christoffer Lerno
e1d546225f
Update stdlib with new syntax for short function decl.
2025-02-08 23:04:59 +01:00
Christoffer Lerno
c4f9efc8f5
Allow fn int test() => @pool() { return 1; } short function syntax usage #1906 .
2025-02-08 22:45:14 +01:00
Christoffer Lerno
69e30c19f8
Distinct inline void causes unexpected error if used in slice #1946 .
2025-02-08 20:33:08 +01:00
Christoffer Lerno
940874e349
Cleaner error message when missing comma in struct initializer #1941 .
2025-02-08 19:54:44 +01:00
Christoffer Lerno
d3f2180330
bigint::from_int(0) throws assertion #1944 .
2025-02-08 19:15:14 +01:00
Christoffer Lerno
68b5c1e1f1
Fix bigint hex parsing #1945 .
2025-02-08 19:06:06 +01:00
Christoffer Lerno
c8e671d34b
Assert when using optional as init or inc part in a for loop #1942 .
2025-02-08 18:58:44 +01:00
Christoffer Lerno
46c7e9aefa
Cleanup QOI
2025-02-08 00:32:48 +01:00
Christoffer Lerno
2126be2222
Fix issue number.
2025-02-08 00:15:47 +01:00
Christoffer Lerno
fa4fb44779
Issue with defer copying when triggered by break or continue.
2025-02-08 00:14:01 +01:00
Christoffer Lerno
07e8779d4e
Fix fixup ordering in defer.
2025-02-07 23:12:34 +01:00
Christoffer Lerno
77db50bce8
Allow function types to have a calling convention. #1938
2025-02-07 22:03:15 +01:00
Jooris Hadeler
ea4c864d4b
Add Socket.peek to allow peeking at the receiving queue. ( #1933 )
...
* Add `Socket.peek` to allow peeking at the receiving queue.
This uses the `MSG_PEEK` flag to peek at the beginning of the
receiving queue without removing data from said queue.
2025-02-07 21:00:54 +01:00
rexim
e6ec09f2c5
Remove the need for the socket helper function, and use the new inline enum functionality.
2025-02-07 20:55:40 +01:00
rexim
122179980c
Introduce Socket.shutdown()
2025-02-07 20:52:36 +01:00
Christoffer Lerno
27e76fe59e
Project view refactoring.
2025-02-07 20:49:51 +01:00
Christoffer Lerno
d13f302ac8
Build options refactoring.
2025-02-07 16:04:44 +01:00
Christoffer Lerno
3e1e3e3e29
Incorrect error message when providing too many associated values for enum #1934 .
2025-02-07 10:44:53 +01:00
Christoffer Lerno
0388910c17
Cleanup.
2025-02-07 01:08:28 +01:00
Christoffer Lerno
4b984e12a5
Refactor build options.
2025-02-07 00:11:04 +01:00
Christoffer Lerno
4e717657bd
Remove not-yet-supported docs tool.
2025-02-06 23:23:24 +01:00
Fangrui Song
78dcda0bb2
Clean up some linker/C compiler options
...
-fno-pic/-fno-pie/-fpic/-fPIC/-fpie/-fPIE options belong to the same
famility where the last option wins. These options have no effect in the
link phase.
Clang and GCC usually pass `--eh-frame-hdr` to ld, with the exception
that `gcc -static` does not pass `--eh-frame-hdr`. The difference is a
historical choice related to `__register_frame_info`. We can behavle
like Clang and always pass `--eh-frame-hdr`.
Remove a `-L` that does not specify a directory.
2025-02-06 22:57:49 +01:00
Christoffer Lerno
bc63c16c93
Add @select to perform the equivalent of a ? x : y at compile time.
2025-02-06 22:21:26 +01:00
Christoffer Lerno
e3851f3723
return (any)&foo would not be reported as an escaping variable if foo was a pointer or slice.
2025-02-06 16:33:42 +01:00
Aleksandr Vedeneev
3a502feb1d
test::eq/ne/gt syntax ( #1928 )
...
* test::eq/ne/gt syntax
* renamed @almost to test::eq_approx
2025-02-05 22:50:25 +01:00
Christoffer Lerno
ef72e19bf0
Remove 20 from docker.
2025-02-05 01:03:07 +01:00
Christoffer Lerno
8b794e8cea
Updated test (again!)
2025-02-04 23:36:27 +01:00
Christoffer Lerno
549e27a800
Fix test compatibility with LLVM 21
2025-02-04 23:11:09 +01:00
Christoffer Lerno
d05cc991f5
Support new LLVM, fix max version.
2025-02-04 23:03:02 +01:00
Christoffer Lerno
07be4b0e06
Support new LLVM
2025-02-04 23:01:32 +01:00
Christoffer Lerno
6fcda240b8
Fixes to enum conversions.
2025-02-04 22:26:51 +01:00
Christoffer Lerno
fff3cf33c7
Issue where inlined expr enums weren't properly const folded.
2025-02-04 21:46:23 +01:00
Christoffer Lerno
a862437bac
Rephrased the text.
2025-02-04 11:27:44 +01:00
Christoffer Lerno
7a6df10b39
Update error message on casting between distinct types.
2025-02-04 11:24:08 +01:00
Christoffer Lerno
c54c400291
Allow inline enum values to define sizes.
2025-02-04 00:23:59 +01:00
Christoffer Lerno
aaa5c0f743
Fix bug in parsing inline enums.
2025-02-03 23:43:34 +01:00
Christoffer Lerno
9d2f4e72c2
Add inline to enums #1819 .
2025-02-03 22:51:50 +01:00
Danyella Strikann
70a849cbb5
Removed the unused command headersfrom the usage
...
Signed-off-by: Danyella Strikann <danyellastrikann@duck.com >
2025-02-03 00:40:41 +01:00
Christoffer Lerno
ecb25a0010
Remove accidental include.
2025-02-03 00:39:19 +01:00
Christoffer Lerno
300983f831
Compile time array assign ops, e.g. $c[1] += 3 #1890 .
2025-02-03 00:35:20 +01:00
Christoffer Lerno
f2df4855ff
Improve error message when using ',' in struct declarations. #1920
2025-02-02 22:44:30 +01:00
rexim
50c590bb5f
Suggest alternative to reference macro arguments
2025-02-02 22:22:34 +01:00
Radek Micek
4a99ebef51
clock_gettime returns CInt, not void
2025-02-02 22:21:31 +01:00
Christoffer Lerno
20d93ede0c
Fix test compatibility with LLVM 20
2025-02-02 02:47:51 +01:00
Christoffer Lerno
f8b2f7f268
Refactor casts and make untyped list conversions not dependent on context.
2025-02-01 23:37:32 +01:00
Christoffer Lerno
dc6d994480
Fixing various issues around shifts, like z <<= { 1, 2 }.
2025-02-01 15:43:42 +01:00
Christoffer Lerno
2b3b7e32b8
Fix bug indexing into a constant array at compile time.
2025-02-01 00:36:30 +01:00
Christoffer Lerno
03e2b30ede
Compile time array inc/dec #1890 .
2025-01-31 23:58:44 +01:00
Adversing
f3afec61bb
Added fmodf function #1875
2025-01-31 22:20:45 +01:00
Christoffer Lerno
bda33ca3f9
Update defer
2025-01-31 16:59:14 +01:00
Christoffer Lerno
50c1aac9bb
Usage of @noreturn macro is type-checked as if it returns #1913 .
2025-01-31 16:19:12 +01:00
Christoffer Lerno
9092defd46
defer is broken when placed before a $foreach #1912
2025-01-31 14:39:51 +01:00
Christoffer Lerno
7dd9256e2d
Update temp path append function.
2025-01-30 23:20:38 +01:00
Christoffer Lerno
a056efce04
Additional cleanup.
2025-01-30 19:32:20 +01:00
Christoffer Lerno
0bad8f92b0
More conservative use of getcwd and some cleanup.
2025-01-30 18:13:12 +01:00
Christoffer Lerno
b040736f7f
Additional cleanup.
2025-01-30 14:38:25 +01:00
Christoffer Lerno
778260213e
Some minor cleanup and updates. Should improve build issue with Gentoo #1907 .
2025-01-30 10:45:41 +01:00
Christoffer Lerno
50385be614
Some minor cleanup and updates.
2025-01-30 01:58:51 +01:00
Christoffer Lerno
3c50376175
New test runner
2025-01-30 01:09:48 +01:00
Christoffer Lerno
6848753a10
Warn on if-catch with just a default case #1904 .
2025-01-29 15:29:09 +01:00
Christoffer Lerno
13771cc536
Truncate output from execute and print to stdout on error.
2025-01-29 13:51:33 +01:00
Christoffer Lerno
ac3b2f0fea
- Fix bug where in dead code, only the first statement would be turned into a nop.
...
- Remove unused $inline argument to mem::copy.
2025-01-29 13:07:19 +01:00
Christoffer Lerno
4b61ac7dae
Project / build refactoring.
2025-01-29 00:25:22 +01:00
Christoffer Lerno
70d0ad1fcc
Missing error when placing a single statement for-body on a new row #1892 .
2025-01-28 17:13:37 +01:00
rexim
af2a0ffd3f
Fix missing r15 register in inline assembly
2025-01-28 15:10:48 +01:00
Christoffer Lerno
02c3d5419b
Add with_padding convenience functions.
2025-01-28 00:18:08 +01:00
Christoffer Lerno
55fba09b3b
Fixed STB_WEAK errors when using consts in macros in the stdlib #1871 .
2025-01-27 23:51:23 +01:00
Christoffer Lerno
d2a7dc4a9a
Fix test take two.
2025-01-27 20:51:41 +01:00
Rene Hangstrup Møller
d8ca0f69f6
fix allocator::new_aligned #1898
2025-01-27 20:38:11 +01:00
Christoffer Lerno
7d0e143224
Remove debug code.
2025-01-27 20:36:41 +01:00
Christoffer Lerno
bd139f73ac
Fix test.
2025-01-27 15:25:46 +01:00
Christoffer Lerno
f23dda8d50
Fix regression for exec #1881 .
2025-01-27 14:34:05 +01:00
Christoffer Lerno
a88364aaad
Fixes miscompilation of nested @jump #1896 .
2025-01-27 11:35:55 +01:00
Christoffer Lerno
9530fe8fcd
Fix regression for parsing types and switch to the "new" generic syntax that's being tested.
2025-01-26 22:51:27 +01:00
Christoffer Lerno
26dc88e096
Fix issues with @jump on empty default or only default #1893 #1894
2025-01-26 15:38:24 +01:00
Christoffer Lerno
1f1c445a76
Issue where trailing body argument was allowed without type even though the definition specified it #1879 .
2025-01-25 23:52:13 +01:00
Christoffer Lerno
3e4f9e875f
Add test for casts and append.
2025-01-25 23:18:35 +01:00
BWindey
dab4844195
[FIX] Let c3c project subcommands use same logic as others to get project.json ( #1885 )
...
* Extract project JSON loading into its own function
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-01-25 22:52:31 +01:00
Christoffer Lerno
e40bab2d30
Allow (int[*]) { 1, 2 } cast style initialization. Experimental change from [*] to [?]. Fix issue where compile time declarations in expression list would not be handled properly.
2025-01-25 22:10:12 +01:00
Christoffer Lerno
ca91ad4097
Fix bug where .min/.max would fail on a distinct int #1888 .
2025-01-25 01:01:52 +01:00
Christoffer Lerno
e2b11c17bc
- Compile time array assignment #1806 .
...
- Allow `+++` to work on all types of arrays.
2025-01-25 00:48:06 +01:00
Christoffer Lerno
eda997545a
Fix issue in optimized if lowering.
2025-01-24 17:14:34 +01:00
Christoffer Lerno
92b3490210
Fix issue where an if statement would not execute at all.
2025-01-24 16:42:59 +01:00
Christoffer Lerno
ba545b44f0
Change const checking in if lowering.
2025-01-24 16:31:27 +01:00
Christoffer Lerno
4f130cfe56
Further lvalue refactoring. This completely removes CHECK_LVALUE.
2025-01-24 00:19:22 +01:00
Christoffer Lerno
145b76ec75
Cleanup.
2025-01-23 11:03:43 +01:00
Christoffer Lerno
e30952b484
INLINE to static inline for refactored function.
2025-01-23 11:00:35 +01:00
Christoffer Lerno
b145c073f0
VERY experimental <[ ]> syntax for generics. Continue lvalue refactoring.
2025-01-23 01:29:35 +01:00
Christoffer Lerno
948d56b321
Refactor $ct lvalue handling.
2025-01-23 00:00:22 +01:00
Christoffer Lerno
69d0fa8c44
Correctly check jump table size and be generous when compiling it #1877 .
2025-01-22 22:33:35 +01:00
Christoffer Lerno
a845a932f5
Change _MSC_VER to PLATFORM_WINDOWS for some exec. Fix to nix.
2025-01-22 00:44:50 +01:00
Christoffer Lerno
3221180315
Fixes to `"exec" use.
2025-01-22 00:26:40 +01:00
BWindey
c326c525be
[FEAT] Add CLI flags to filter 'c3c project view' results ( #1863 )
...
* Project view feature
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-01-21 23:46:41 +01:00
Christoffer Lerno
16aadae9bd
Remove allocator argument
2025-01-21 22:25:42 +01:00
Snikimonkd
b7ffa3b17c
[feat] add test tmp files to gitignore
2025-01-21 12:44:13 +01:00
Christoffer Lerno
772b20c26b
Fix find_msvc
2025-01-21 01:26:55 +01:00
Christoffer Lerno
c7eb0024c7
Error on switch case fallthough if there is more than one newline #1849 .
2025-01-21 00:38:24 +01:00
Christoffer Lerno
1a2dcd07ee
Add win-debug setting to be able to pick dwarf for output #1855 .
2025-01-21 00:13:11 +01:00
Christoffer Lerno
ab32231cd1
Added releasenotes.
2025-01-20 23:51:54 +01:00
Snikimonkd
a0192a0116
[FEAT] add golang like channel ( #1843 )
...
* [feat] add golang like channels
* Updated new_init/init. Some fixes for init.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-01-20 23:51:00 +01:00
Christoffer Lerno
13e3ecbde2
Tab and style
2025-01-20 23:31:49 +01:00
Christoffer Lerno
fefe6d1342
Filter $exec output from \r, which otherwise would cause a compiler assert #1867 .
2025-01-20 22:32:53 +01:00
Bram Windey
bbef5656a5
Fix 'strtul' to 'strtoul'
2025-01-20 21:45:15 +01:00
Christoffer Lerno
ad3cd88350
Fix dues to crash when converting a const vector to another vector #1864 .
2025-01-20 16:26:26 +01:00
Christoffer Lerno
5183370773
Update mingw llvm/lld
2025-01-20 14:53:59 +01:00
cd-n0
f74891d214
Fix linux-crt and linux-crtbegin not getting recognized as a project parameter ( #1865 )
...
* Fix `linux-crt` and `linux-crtbegin` not getting recognized as a project parameter
* Update releasenotes.md
2025-01-20 14:48:41 +01:00
Christoffer Lerno
d2885faa79
Further cleanup.
2025-01-20 04:09:47 +01:00
Christoffer Lerno
c59d47f652
Keep the old behaviour which made the script detect bugs (although indirectly!)
2025-01-20 03:43:12 +01:00
Christoffer Lerno
f863c4ae84
Fix incorrect arg type failing MSVC compilation. Missing ASSERT updated. Update python script. Fix bug printing error duplicate generic module.
2025-01-20 03:35:49 +01:00
Christoffer Lerno
bb2a2526e4
Refactoring access + some macro renaming.
2025-01-20 02:44:39 +01:00
Christoffer Lerno
f9b86226a8
Refactoring identifier and catch unwrap into two different nodes.
2025-01-19 13:23:21 +01:00
Christoffer Lerno
a4f5c97150
Fix typo
2025-01-18 23:53:32 +01:00
Christoffer Lerno
5de03abe0d
Concatenating an const empty slice with another array caused a null pointer access.
2025-01-18 23:50:31 +01:00
Christoffer Lerno
c3f5806aa3
Const strings and bytes were not properly converted to compile time bools.
...
Contracts @require/@ensure are no longer treated as conditionals, but must be explicitly bool.
2025-01-18 23:24:55 +01:00
Christoffer Lerno
5a36f0bc16
Fix issue with @const where the statement $foo = 1; was not considered constant.
2025-01-18 22:40:58 +01:00
Christoffer Lerno
c5dbbf9ff7
Compiler allows a generic module to be declared with different parameters #1856 .
2025-01-17 23:24:42 +01:00
Christoffer Lerno
304b604652
Added weakly linked __powidf2
2025-01-17 17:42:39 +01:00
BWindey
b787985bf7
Improve c3c --help/-hh and c3c project ( #1851 )
...
* Fix missing newline and incorrect indentation for 'c3c project' help on fetch
* Use a ternary trick :D
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-01-17 12:23:15 +01:00
Christoffer Lerno
d72ec09cee
Fix lack of location for reporting lambdas with missing return statement #1857 .
2025-01-17 11:55:56 +01:00
Christoffer Lerno
d4bd68c188
Fix bug in SHA1 for longer blocks #1854 .
2025-01-17 01:10:40 +01:00
Christoffer Lerno
f51bfa5a44
Update latest version.
2025-01-16 22:45:48 +01:00
Christoffer Lerno
3e4d1de70e
Fix issue requiring prefix on a generic interface declaration.
2025-01-16 22:09:53 +01:00
Christoffer Lerno
721aaa28aa
Added '%h' and '%H' for printing out binary data in hexadecimal using the formatter.
2025-01-16 01:06:57 +01:00
Christoffer Lerno
15503a9054
Release candidate 0.6.6
2025-01-15 22:10:48 +01:00
Taylor W
660654f9e0
math_tests: pow test ( #1842 )
...
* math::nolibc: replaced code with word macros
* math_tests: pow test
Added test for pow and added more test points for the exp and log tests.
2025-01-15 13:35:18 +01:00
Christoffer Lerno
2f7d18bfb8
Quicksort and insertsort incorrectly allowing arrays and vectors by value. #1845 .
2025-01-15 13:31:29 +01:00
Christoffer Lerno
29a6a0db32
Fix unavailable LLVM int128 alignment.
2025-01-15 11:49:33 +01:00
Christoffer Lerno
7b2fe92241
Improve error message on incorrect inner struct/union name #1847 .
2025-01-15 10:54:50 +01:00
Christoffer Lerno
70da1f748a
Enum associated declarations accidentally allowed declaration in function style. #1841
2025-01-14 23:06:17 +01:00
Christoffer Lerno
3033295884
Fix bug with enums with jump tables #1840 also affecting ranged enums entries.
2025-01-14 22:47:12 +01:00
Christoffer Lerno
8c12f92aff
Make stringify to recursively enter #hash expressions #1834 .
2025-01-14 12:40:42 +01:00
Christoffer Lerno
76da7936e5
Fix issue with inferred vector output to JSON. #1839
2025-01-14 12:25:49 +01:00
Max
2a924ae3b0
fix the link order to support LLVM_20 change ( #1838 )
...
* fix the link order to support LLVM_20 change
* Update CI to use LLVM 20
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-01-14 11:23:40 +01:00
Christoffer Lerno
5ba9acad5d
Fix bug where &i[0] = null was not detected to be an error. #1833
2025-01-14 01:43:59 +01:00
Christoffer Lerno
4cb984e56d
Prevent temp arena scribbling from causing an asan warning. #1825
2025-01-13 16:58:55 +01:00
Christoffer Lerno
70606a2bbe
Report the correct type as not having a method when access fails #1828 .
2025-01-13 14:11:51 +01:00
Taylor W
259112e178
math: macros to set floating-point numbers with uint ( #1826 )
...
* math: Setting the bits of floating-point numbers
Added macros which set all 32 bits of a float, the lower 32 bits of
a double, and the upper 32 bits of a double. Some changes were made to
older code to use these macros.
* Replaced code with bitsetting macros in __tan.c3 and tan.c3
* math: tests for word macros and release notes
Tests were written for the word macros, which include getting and
setting a float with a uint and getting and setting the high or low word
of a double with a uint.
Release notes were updated to include the word setter macros.
2025-01-13 13:37:49 +01:00
Christoffer Lerno
a2cde1e072
Correctly handle known length slices with index checks... and now works with $defined too.
2025-01-13 13:20:59 +01:00
Christoffer Lerno
de04c52379
Correctly handle known length slices with index checks.
2025-01-13 02:30:35 +01:00
Christian Buttner
27970085e5
Fix formatter output length calculation.
2025-01-12 22:54:43 +01:00
Jefferson Amstutz
e0afc0f9ea
use WORKING_DIRECTORY to ensure stability of finding the git hash
2025-01-12 22:53:16 +01:00
konimarti
0e44e63fa8
net/url: implement url encoding (RFC 3986) ( #1795 )
...
* net/url: implement url encoding (RFC 3986)
Implement url percent-encoding and -decoding functions according to RFC
3986. Add unit tests.
Link: https://datatracker.ietf.org/doc/html/rfc3986
* net/url: ensure correct encoding of URL components
Add encoding and decoding methods to the Url struct components according
to RFC 3986.
An Url can be parsed from a String with `new_parse()` or `temp_parse()`.
The parsed fields are decoded. The only field that is not decoded is
`raw_query`. To access the decoded query values, use
`Url.query_values()`.
`Url.to_string()` will re-assemble the fields into a valid Url string
with proper percent-encoded values.
If the Url struct fields are filled in manually, use the actual
(un-encoded) values. To create a raw query string, initialize an
`UrlQueryValues` map, use `UrlQueryValues.add()` to add the query
parameters and, finally, call `UrlQueryValues.to_string()`.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-01-12 22:52:25 +01:00
Adversing
2623d7d525
Feat: Added exp, log and pow functions as requested in #1632 ( #1781 )
...
* Feat: Added exp, log and pow functions as requested in #1632
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-01-12 22:50:10 +01:00
Christoffer Lerno
4e78e32ced
Fix regression with contract docs and generics #1821
2025-01-12 14:19:19 +01:00
Christoffer Lerno
f65ca07b62
Fix bug when multiple $else clauses followed an $if #1824 .
2025-01-12 13:31:35 +01:00
welrox
7a805340c5
Add more aarch64 instructions for inline asm
2025-01-12 02:49:24 +01:00
Christoffer Lerno
a863d7fe9e
Prevent #hash arguments from taking code that modifies ct variables. #1794
2025-01-12 02:20:18 +01:00
Christoffer Lerno
f60bfa8442
Assert concatenating constant slices #1805 . Do not link "ld" on Linux with no libc.
2025-01-11 23:46:08 +01:00
Christoffer Lerno
50fdf9900d
Regression: Broken type of constant initialized with cast from bitstruct #1811
2025-01-11 23:17:38 +01:00
Christoffer Lerno
8785c2c46f
Assert when partially initializing a constant struct containing a slice #1812 .
2025-01-11 22:42:33 +01:00
Christoffer Lerno
c8fa7b0cb3
Fix regression with swizzle references for vectors #1810 .
2025-01-11 21:36:17 +01:00
Christoffer Lerno
f2e69f8fdc
Fix bug with defer assignment in macro #1807 .
2025-01-11 20:48:53 +01:00
Christoffer Lerno
8a9edc02b6
Fix bug preventing compile time slices from being iterated over with $foreach.
2025-01-11 03:23:03 +01:00
Christoffer Lerno
d173ba0377
More tests.
2025-01-11 01:51:34 +01:00
Christoffer Lerno
fbb4ae056a
Bug when using +++ on value build a slice or array: the rhs cast was not done, corrupting data.
2025-01-11 01:02:13 +01:00
Christoffer Lerno
ae10ae6847
Fix regression when checking a macro constness.
2025-01-11 00:37:34 +01:00
Christoffer Lerno
64ab67bb58
Fixes to JSON output, making it valid.
2025-01-11 00:17:06 +01:00
Christoffer Lerno
dd650bc334
Fixes to JSON output.
2025-01-11 00:07:39 +01:00
Christoffer Lerno
48923a2237
Function comments are stored and displayed with -P.
2025-01-10 23:39:57 +01:00
Christoffer Lerno
1f29110271
Handle bytes and strings the same way in terms of zero termination.
2025-01-10 19:58:00 +01:00
Christoffer Lerno
e133f4406a
Extend embedded files to zero terminate.
2025-01-10 19:25:53 +01:00
pekochan069
2fa258a066
Change vswhere command to find to find msvc toolchain correctly
2025-01-10 15:46:16 +01:00
Alex Veden
87d29a62e5
allowing c3c test -- <args1>
2025-01-10 15:45:05 +01:00
konimarti
190dc246b3
mem: add macro to assert on memory leak in scope ( #1792 )
...
* mem: add macro to assert on memory leak in scope
Implement `mem::@assert_leak` to assert on a memory leak in the scope of
the macro body. Memory report for the leak can be disabled by setting
the boolean argument to false.
* fix: add conditional compilation flags
* Moved the code into `mem.c3` and made it a builtin.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-01-10 13:33:33 +01:00
Christoffer Lerno
6ae84aac78
Updated releasenotes.
2025-01-10 13:17:45 +01:00
Louis Brauer
c8c58f946c
Date/Time formatters ( #1782 )
...
* Add .DS_Store to .gitignore
* Allow <= 999_999 as usec on DateTime (was < 999_999)
* Move [Tz]DateTime .format() to std::time::datetime and import only with libc
* Changed name to DateTimeFormat, prefer function over method. Move names to enum.
* Updated tests to the latest standard.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-01-10 13:16:51 +01:00
Christoffer Lerno
0d1fb2843e
Improve the error message when running out of memory.
2025-01-10 00:29:08 +01:00
Christoffer Lerno
d67fcb3956
Fix to the successful --lsp output.
2025-01-10 00:09:27 +01:00
Christoffer Lerno
f1325f6539
Added --lsp output.
2025-01-10 00:06:42 +01:00
Christoffer Lerno
3a1bba19af
Allow test runners to take String[] arguments.
2025-01-09 22:32:59 +01:00
Christoffer Lerno
0857363470
Fix '\\' in -P output.
2025-01-09 20:46:36 +01:00
Christoffer Lerno
713199d7be
Fix -P output.
2025-01-09 20:45:42 +01:00
Christoffer Lerno
b941f93416
Deprecate old void! @benchmark and @test functions.
2025-01-09 20:33:53 +01:00
Christoffer Lerno
c22b7d45c1
Update test failing on LLVM 17
2025-01-09 01:35:16 +01:00
Christoffer Lerno
c78bb45f2f
Fix sample.
2025-01-09 01:33:58 +01:00
Christoffer Lerno
11f9365eb0
Remove all TODOs and make them strings to not crash things for -P output.
2025-01-09 01:32:21 +01:00
Christoffer Lerno
cdc1656f3a
#foo style arguments were not type checked when given a type. #1790
2025-01-09 01:28:30 +01:00
Christoffer Lerno
8fb3ec73ff
Deprecate $varef.
2025-01-08 23:56:10 +01:00
Christoffer Lerno
214e806a33
Deprecate `fn void! main() type main functions.
2025-01-08 23:17:50 +01:00
Christoffer Lerno
8e0d6d11b9
Deprecated '&' macro arguments.
2025-01-08 22:13:49 +01:00
Christoffer Lerno
9412b58d80
Remove trailing comma in project creation.
2025-01-08 13:44:09 +01:00
Christoffer Lerno
dad97fc2d9
Improved #foo resolution inside of the compiler.
...
Deprecation of several `&` macros.
2025-01-08 12:55:20 +01:00
vssukharev
ff33cc4dad
Add Nix build and checks to CI/CD
2025-01-06 23:11:04 +01:00
Christoffer Lerno
51e0e5e66d
Change ordering to simplify adding methods to type in conditional modules.
2025-01-06 22:36:29 +01:00
Christoffer Lerno
5fa6ecf9ae
Enforce utf-8 on windows.
2025-01-06 20:02:57 +01:00
Christoffer Lerno
34c7f4e6b7
Deref subscripts as needed for macro ref method arguments. #1789
2025-01-06 13:54:02 +01:00
Christoffer Lerno
737559d3f8
Fix typo, minor changes.
2025-01-06 12:36:59 +01:00
Christoffer Lerno
f801372074
Optimize temp variables in LLVM.
2025-01-06 04:25:47 +01:00
Christoffer Lerno
ea2dce0ab4
Make "?:" lower in the frontend.
2025-01-06 03:01:13 +01:00
Christoffer Lerno
314c6f94f0
Remove the last "cast" operations.
2025-01-06 01:51:03 +01:00
Christoffer Lerno
8fd119e546
Refactor vector->array scalar->vector and slice->array casts to expressions.
2025-01-06 00:22:26 +01:00
Christoffer Lerno
8612476103
Refactor float<->float ptr->int and int->enum casts to expressions.
2025-01-05 23:16:48 +01:00
Louis Brauer
35812bd7ba
Add String.trim_left() / right() ( #1773 )
...
* Add String.trim_left() / right()
* Fix formatting
2025-01-05 21:53:18 +01:00
Christoffer Lerno
f1ef2e8138
Improve @param parse errors #1777
2025-01-05 18:14:30 +01:00
robin
c47cb512ab
Additional convenient functions and enums ( #1767 )
...
Added some missing API calls and enums when working with the Objective-C
Runtime.
2025-01-05 16:22:46 +01:00
KillerxDBr
fe7d4230d8
Fix 'clean' command on Windows MinGW
...
'c3c clean' command try to use 'rm' on Windows MinGW compiled executable, since it does not define "_MSC_VER", but define "_WIN32"
There are other uses of "_MSC_VER" in the same file, they probably can be changed to "_WIN32" too
2025-01-05 16:19:12 +01:00
Christoffer Lerno
b6e166f44d
Include @name when searching for possible matches to name in the error message. #1779
2025-01-05 16:12:13 +01:00
Christoffer Lerno
ab2d223e71
Macros with trailing bodys aren't allowed as the single statement after a while loop with no body #1772 .
2025-01-05 16:00:39 +01:00
Christoffer Lerno
c6c7baa3b4
Refactor casts, removing SLBOOL and PTRBOOL.
2025-01-05 15:45:39 +01:00
Christoffer Lerno
218f293cd4
Introducing int_to_ptr expr.
2025-01-05 15:26:20 +01:00
Christoffer Lerno
4d641d193c
Refactoring removing cast types.
2025-01-05 15:09:30 +01:00
Christoffer Lerno
67ff78f1ca
Fix not freeing a zero length String
2025-01-05 14:30:00 +01:00
vssukharev
4f0716ab13
Fix issue when building on NixOS, firstly occured under commit 819a85ee
2025-01-05 14:18:56 +01:00
Christoffer Lerno
07c59e6a6c
Fix +a = 1 erronously being accepted. Refactorings.
2025-01-05 02:24:11 +01:00
Christoffer Lerno
86a674b87e
Remove unused cast.
2025-01-04 23:25:55 +01:00
Christoffer Lerno
9957ab259c
Fix vector float -> bool conversion.
2025-01-04 23:16:34 +01:00
Christoffer Lerno
4c3944f626
Refactor vec comparisons.
2025-01-04 23:06:21 +01:00
Christoffer Lerno
6f9b466d7c
Optimize recast.
2025-01-04 21:58:04 +01:00
Thomas Adam
61badb6af7
libc: add isatty()
2025-01-04 15:41:51 +01:00
Christoffer Lerno
e31e57c7e7
Improved error message when accessing @private from other modules. Added convenience functions to Maybe.
2025-01-04 14:58:06 +01:00
Christoffer Lerno
469188044d
Assert on certain slice to slice casts. #1768 .
2025-01-04 13:31:47 +01:00
Christoffer Lerno
38063e5602
Refactor casts.
2025-01-04 13:04:08 +01:00
Bernd
ba5e2b7fa6
socket.c3: optimize poll() duration wrapping ( #1762 )
...
* socket.c3: optimize poll() duration wrapping
2025-01-04 00:32:17 +01:00
Christoffer Lerno
eed806962d
Allow compile time $foreach iteration over constant Strings and bytes.
2025-01-04 00:26:21 +01:00
Christoffer Lerno
a1ce5e15ce
Fix tests.
2025-01-04 00:09:24 +01:00
Christoffer Lerno
f0735c945a
Update name to "validation"
2025-01-03 23:48:25 +01:00
Christoffer Lerno
d84e131b73
Add 'warnings' setting.
2025-01-03 23:37:37 +01:00
Christoffer Lerno
ad1511e69c
Prohibit raw vaargs in regular functions with a function body.
2025-01-03 15:36:42 +01:00
Christoffer Lerno
db4dc114f2
$vasplat was allowed inside of a function when passed as an argument to a function.
2025-01-03 15:01:24 +01:00
Christoffer Lerno
a7f363ea43
Dynamic function lookup fails after changing type without dummy anycast due to poor tracing of typeid. #1761
2025-01-03 14:39:01 +01:00
Christoffer Lerno
0ccbba61ce
Improve error message.
2025-01-03 12:07:54 +01:00
Christoffer Lerno
d921a4e168
Fix case when construct is using vaarg.
2025-01-03 12:05:10 +01:00
Thomas Adam
819a85ee06
build: add /usr/lib to LLVM_LIB search paths
...
It seems that on Alpine Linux (Edge), the LLVM_LIBRARY_DIRS cmake
variable doesn't look in /usr/lib, which is where the relevant files are
on Alpine.
Only do this for !WIN32 systems.
2025-01-03 11:47:00 +01:00
Christoffer Lerno
a3d15fe16c
Fix issue with zero arg @operator(construct). Assert on add to uninitialized ct variable #1765
2025-01-03 11:45:46 +01:00
Christoffer Lerno
56d25cdeeb
Remove array->vector casts
2025-01-03 01:35:51 +01:00
Louis Brauer
d027a15b4a
add std::net::url - with fixes ( #1748 )
...
* add std::net::url for parsing/generating URLs
* Move String.index_of_chars into std
* Fix param contract
* Idiomatic type naming, Allman formatting, slicing, document functions
* Use String.tokenize
* Don't return str_view() from freed dstring
* Change indentation to tabs
* Variable casing according to guidlelines
* Updated API and added line to the releasenotes.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-01-02 21:13:42 +01:00
Francesco Alemanno
a16316d7b4
enhance default hashing strategy for basic types ( #1758 )
...
* enhance default hashing strategy for basic types
* fix
* `$defined` in a global scope should accept testing normal macros.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2025-01-02 20:44:33 +01:00
Christoffer Lerno
14d8e93004
Return type inference bugs with macros #1757
2025-01-02 17:34:37 +01:00
Christoffer Lerno
37c62bf9b7
Update releasenotes.
2025-01-02 16:29:16 +01:00
Koni Marti
72839d7654
fix: net::poll() with negative timeout
...
If the timeout to net::poll() is -1, poll() will block until a requested
event occurs. However, in the poll() function, the Duration timeout is
converted to milliseconds (Duration is in microseconds). The conversion
involves integer arithmetics which results in a zero timeout (= -1 /
1000), i.e. poll() will return immediately and the following accept will
fail.
To fix this, only convert to milliseconds if timeout paramter is
non-negative.
Example to reproduce the error:
```
module echo;
import std::io, std::net;
fn void main()
{
TcpServerSocket server = tcp::listen("localhost", 6969, 69, REUSEADDR)!!;
server.sock.set_non_blocking(true)!!;
Poll[*] polls = {{ .socket = server.sock, .events = net::SUBSCRIBE_READ }};
if (catch net::poll(polls[..], net::POLL_FOREVER)) io::printn("poll error");
TcpSocket client = tcp::accept(&server)!!;
io::printn("OK");
}
```
Poll() will return immediately and the following tcp::accept() will fail
with an "ACCEPT_FAILED" error.
Reported-by: Alexey Kutepov <reximkut@gmail.com >
2025-01-02 16:28:26 +01:00
Christoffer Lerno
1994cba73e
Fix default #foo args.
2025-01-02 15:23:21 +01:00
vssukharev
55cdcbb39b
Fix typo in libc: SIGABTR -> SIGABRT
2025-01-01 21:36:33 +01:00
Christoffer Lerno
c7ce6230db
Update test with target.
2025-01-01 21:02:16 +01:00
Christoffer Lerno
7c45ae24ae
Macros with default arguments to &, # and type parameters didn't work as expected. #1754 .
2025-01-01 17:52:32 +01:00
Christoffer Lerno
99c350fc43
Fix error where panic would not properly stop the program when stacktrace couldn't be printed #1751 .
2025-01-01 13:00:04 +01:00
Christoffer Lerno
faf1c5cb64
Introduce EXPR_RVALUE for some additional refactoring.
2025-01-01 12:19:00 +01:00
Radek Micek
ece6efc75e
Fix fputc
2025-01-01 12:17:58 +01:00
Christoffer Lerno
0a809ab5f0
Allow using 'var' to declare lambdas in functions.
2025-01-01 01:02:35 +01:00
Christoffer Lerno
78ff1a4af5
Support experimental @operator(construct) operator overload.
2025-01-01 00:45:42 +01:00
Christoffer Lerno
c0dcae4f1d
Improve ordering of method registration to support adding methods to generic modules with method constraints #1746
2024-12-31 18:15:38 +01:00
Christoffer Lerno
5e32c8a828
Improve posix thread error handling.
2024-12-31 17:27:13 +01:00
Christoffer Lerno
4d15a2f45e
Improve error reporting when using type names as the function argument #1750 .
2024-12-31 16:59:51 +01:00
Christoffer Lerno
a913f21c45
Fix issue with compiling a constant struct containing a string array in a local context.
2024-12-31 16:45:10 +01:00
Christoffer Lerno
322c70433b
Refactoring, stop using int to bool as cast. Merge make any.
2024-12-31 16:32:37 +01:00
Christoffer Lerno
ad9cfcdcc7
Fix typo.
2024-12-30 18:24:01 +01:00
Christoffer Lerno
4232c9d2b0
Fix bug when including compile time parameters in trailing body more than once.
2024-12-30 17:57:36 +01:00
antek-bizon
9edd59d280
Add compilation guide for Fedora
2024-12-30 13:56:29 +01:00
Christoffer Lerno
df74cbf06f
Fix bug where !! and ! was not recognized to jump out of the current scope. Remove more casts.
2024-12-30 01:43:02 +01:00
Christoffer Lerno
5af224ab16
Remove 3 casts and replace them with a single new normal expression node.
2024-12-30 00:55:40 +01:00
vssukharev
7b734df09e
Several nix fixes ( #1737 )
...
* Fixed nix c3c development shell
* Fix unknown git hash on nix build
2024-12-29 21:12:26 +01:00
Christoffer Lerno
1340a47bc2
- any_to_int checks value to be int and no longer works with enum.
...
- Add check in formatter printing "%c".
2024-12-29 17:07:00 +01:00
Book-reader
4f4476ba75
fix typo in @require statement in builtin.c3
2024-12-29 12:24:36 +01:00
Christoffer Lerno
5c7a183f8a
Change CBool to be 1 byte.
2024-12-28 22:46:26 +01:00
Taylor W
53bada2a1e
math::nolibc: atanh ( #1730 )
...
* math::nolibc: log1p
* math::no_libc: atanh
Added atanh nolibc definition and more test points in the math_tests
module.
2024-12-28 21:13:44 +01:00
Totto16
43efb7df2f
fix: use helper printing macros, to use the correct printing width (e.g. %llu vs %lu)
2024-12-28 19:21:39 +01:00
Christoffer Lerno
f5cea221a6
Miscompile when indexing an array with small unsigned types.
2024-12-28 17:39:25 +01:00
Christoffer Lerno
b7082f34a1
C backend work.
2024-12-28 17:09:43 +01:00
Christoffer Lerno
d20d957881
Add @enum_from_value
2024-12-27 23:21:36 +01:00
Christoffer Lerno
008274cda5
Update the release notes.
2024-12-27 22:35:28 +01:00
Alexey Kutepov
e07ab7547f
Fix Segfault and UX of the c3c project add-target subcommand ( #1729 )
...
* Fix UX of the `c3c project add-target` subcommand
- Fix segfault on `project.json` containing empty map `{}`
- Enable `add-target` to operate on non-existing project files
- Extend `add-target` syntax to accept source through CLI args
This enables the following workflow without friction and needless
crashes:
```console
$ cat > main.c3 <<END
import std::io;
fn void main() {
io::printfn("Hello, World");
}
END
$ c3c project add-target main executable main.c3
$ c3c run
```
* Fix read_project() call in fetch_project()
* Keep the style of curlies consistent
2024-12-27 22:33:57 +01:00
Christoffer Lerno
cf10837eb8
Add static lib for MSVC
2024-12-27 21:46:08 +01:00
Christoffer Lerno
291b26f230
Add static lib.
2024-12-27 02:05:40 +01:00
Christoffer Lerno
08e8c9bf57
Use weak on dyn-symbols on Linux.
2024-12-27 02:05:40 +01:00
Christoffer Lerno
625152440c
Use weak_odr rather than weak on Windows which seems to prevent issues such as #1704 . Fix regression.
2024-12-26 21:35:41 +01:00
Aaron
fbd51821d1
Fixed -P JSON syntax, string conversion. ( #1714 )
...
* Fix JSON formatting in parse command, strings now "JSON-legal"
* Clean up
* Implemented JSON for CONST_BYTES
* Handle empty byte string, slightly more concise
* of course msvc is the *only* compiler that complains about this
2024-12-26 02:18:49 +01:00
Christoffer Lerno
c3ebf51295
Add "name" project property to override the name of the resulting binary. #1719
2024-12-26 02:15:45 +01:00
Christoffer Lerno
9a9ff7f32c
Fix bug in OnStackAllocator when freeing overallocated data. # #1720
2024-12-25 23:57:47 +01:00
Christoffer Lerno
7b73eec82b
Prevent DString from being initialized with "".
2024-12-25 23:40:58 +01:00
Christoffer Lerno
75ba4a1cdb
Incorrectly handles distinct enums and pointers with '+=' and '-=' #1717 .
2024-12-25 23:09:10 +01:00
Christoffer Lerno
e5ca9065bd
Deprecate cast conversion from enum -> integer.
2024-12-25 20:34:28 +01:00
Taylor Wampler
1042d0825f
Fixed typo in atan.c3
2024-12-25 19:15:59 +01:00
Christoffer Lerno
17942925f5
Fix bug in temp allocator when temp memory is exhausted and allocation needs overaligned mem. #1715
2024-12-25 17:56:37 +01:00
Christoffer Lerno
7424317d03
Fix call to copy.
2024-12-25 00:16:35 +01:00
Christoffer Lerno
dbf1d91961
Add --win-vs-dirs to override VS detection dirs.
2024-12-25 00:07:57 +01:00
Christoffer Lerno
eb1644b302
Change included common options.
2024-12-24 20:43:52 +01:00
Christoffer Lerno
cde5bc3263
Change included common options.
2024-12-24 20:39:24 +01:00
Taylor Wampler
e995e289db
math::nolibc: acos and asin
...
There are now nolibc definitions for the inverse cosine and inverse
sine.
More test points were added for acos, asin, and atan in the math_tests module.
This was done becuase the nolibc inverse trigonometric functions have
various branching conditions depending on the provided input value. Several
branches in these functions were neglected.
2024-12-24 11:29:32 +01:00
Taylor W
5020caa9c3
C3_MATH feature ( #1709 )
...
* C3_MATH feature
This feature allows the usage of noclib math files even when libc is in use.
If a nolibc symbol exists, it will be used in place of libc, otherwise
it will default to libc.
* Added MIT License notices to atan.c3
2024-12-23 23:42:57 +01:00
Aaron
f34eb7d9f3
Prevent trailing _ for all numbers ( #1706 )
...
* moved _ check to scan_number_suffix
* Skipping underscore on list-operators command
* Disallow # from operator, update release notes
2024-12-23 21:23:46 +01:00
Guillaume M.
bf74ef0e5e
Fix crt detection for Arch Linux ( #1705 )
...
* Fix crt detection for arch linux
On archlinux, the crt is located directly in /usr/lib. Thus, the globbing done in find_linux_crt fails since it expects the crt to be in a subdirectory of /usr/lib. This patch fixes this issue.
2024-12-23 20:03:53 +01:00
Christoffer Lerno
0ff52311c3
- Fix problem where crt1 was linked for dynamic libraries on Linux and BSD. #1710
2024-12-23 20:02:17 +01:00
Christoffer Lerno
e453e6f9ca
- Add enum.from_ordinal and fault.from_ordinal
...
- Deprecate cast-style conversion from integer to enum.
- Make deprecation an error in test mode.
2024-12-23 15:27:59 +01:00
Christoffer Lerno
6078598aff
- static-lib and dynamic-lib options from the command line now produces headers.
...
- Fix bug outputting exported functions without predefined extname.
- Removed 'headers' command line option.
2024-12-22 11:49:11 +01:00
Taylor W
9fdb3b3b4a
Adding trigonometric and hyperbolic trigonometric tests ( #1699 )
...
* math_tests: rewrote test_atan()
Rewrote the atan test so that analagous checks are symmetrically
performed for all possible inputs: int, float, and double. The total
number of tests has increased while reducing the total amount of
code.
* math_tests: inverse trig and inverse hyperbolic trig
Tests were written for acos, acosh, asin, asinh, and atanh.
* math: cos macro missing values::promote_int
The cosine macro can't take an integer input without this fix. You can
see that some of the other macros, like the sine macro, have this.
* math_tests: trig and exponential
Wrote tests for the trigonometric macros as well as the
exponential macro. The hyperbolic trig macros use the exponential macro
rather than any LLVM instrinsics (for now at least, LLVM 19 has the proper
compiler intrinsics).
* math: float comparison
In the math module two macros were defined to assist in comparing
floating-point numbers for a given tolerance.
The trig, hyperbolic trig, and exponential tests in the math_tests module
were updated to use these macros instead of direct comparison.
2024-12-21 22:25:23 +01:00
Christoffer Lerno
1362aa655f
Split help into normal and "full" help, #1703
2024-12-21 16:08:07 +01:00
Christoffer Lerno
9c22ab8925
Add "skip_empty" to split methods. Add split_to_buffer method.
2024-12-21 15:43:37 +01:00
Christoffer Lerno
ca2dbb2f4b
Update Mingw build.
2024-12-20 21:56:28 +01:00
Christoffer Lerno
16bbc5a026
Add "tokenizer" to String.
2024-12-20 13:18:40 +01:00
Christoffer Lerno
627f10cd18
Fix bug when a macro calling an extern function was called in another module also declaring and calling the same function. #1690
2024-12-19 20:39:23 +01:00
Christoffer Lerno
13509b9231
Remove LLVM 20 from testing due to broken build.
2024-12-19 19:51:50 +01:00
Tomas Kallup
ca88afbf5b
Fix hashmap put all for create + test case
...
Closes : #1695
2024-12-19 16:15:18 +01:00
vssukharev
42c9c9894b
Slight updates in nix
2024-12-18 21:04:42 +01:00
Christoffer Lerno
b4de62cfc2
Added iter() value_iter() and key_iter() to HashMap.
2024-12-18 21:02:28 +01:00
Christoffer Lerno
226fbc191b
Update to Slice2d
2024-12-17 23:12:32 +01:00
Denis Palashevskii
4839d8861d
increase BitWriter.write_bits nbits limit, add tests ( #1692 )
...
* increase BitWriter.write_bits nbits limit, add tests
* update releasenotes.md
2024-12-17 21:21:58 +01:00
Brecht Sanders
789b47d565
Support detection of shared MinGW-w64 LLVM libraries
...
Support detection of shared MinGW-w64 LLVM libraries by also looking for liblld*.dll.a files.
2024-12-17 11:29:40 +01:00
Walther Chen
c13cdcdd36
in new_struct_to_str, fix uaf
2024-12-17 11:29:18 +01:00
Christoffer Lerno
4ae3d0150f
Fix case trying to initialize a char[*]* from a String.
2024-12-15 20:42:42 +01:00
Christoffer Lerno
7d153a162a
Prepare 0.6.6
2024-12-14 23:06:08 +01:00
Christoffer Lerno
7bc3e94ff3
Build 0.6.5 release. Fixed.
2024-12-14 17:38:02 +01:00
Christoffer Lerno
9c1fb26660
Build 0.6.5 release.
2024-12-14 17:33:00 +01:00
Christoffer Lerno
3dd725a0f0
Crash when a constant null typeid is checked for properties. #1679
2024-12-14 15:13:43 +01:00
Christoffer Lerno
a8aad53038
It was possible to create 0 length arrays using byte literals. #1678
2024-12-14 02:49:45 +01:00
konimarti
68c60f58c0
math: fix adjoint of Matrix2 ( #1676 )
...
* math: fix adjoint of Matrix2
Fix the adjoint of the Matrix2x2 implementation in the math module. This
also fixes the calculation of the inverse which depends on the adjoint.
* update release notes
2024-12-13 11:16:47 +01:00
Radek Micek
c9c3f33acc
Fix weekday
2024-12-12 22:30:23 +01:00
Christoffer Lerno
5ffc5187eb
Update Win LLVM library.
2024-12-12 21:52:13 +01:00
Christoffer Lerno
5d31cdfa16
Incorrect no-libc definition of cos, making it unavailable for wasm.
2024-12-12 21:50:56 +01:00
Christoffer Lerno
e8ff4af5b9
Fix test for LLVM 20
2024-12-11 23:05:57 +01:00
Christoffer Lerno
723e1dd9a6
Fix issue with overloaded *= etc
2024-12-11 20:56:11 +01:00
Christoffer Lerno
369a4558a3
Remove mention of install_win_reqs.bat
2024-12-11 13:57:03 +01:00
Christoffer Lerno
5e6a3d9d8e
Fix tabs in readme.
2024-12-10 23:14:20 +01:00
Koni Marti
62dca4f1c5
math: add gcd and lcm
...
Add gcd and lcm functions to calculate the greatest common divisor (gcd)
and the least common multiple (lcm) to the math module. This will also
work for BigInts that implements its own gcd/lcm.
2024-12-10 15:44:52 +01:00
Christoffer Lerno
061c02306f
Cast removing arbitrary array indices and converting them to pointers should always be fine #1664
2024-12-08 18:58:43 +01:00
Christoffer Lerno
f006b05010
Fix issue with accessing arrays in access-overloaded types, e.g. list[1][2] #1665 .
2024-12-08 18:04:29 +01:00
Koni Marti
c5a727aa9b
math: update complex numbers
...
Add inverse, conjugate, and equals functions to the Complex numbers. Add
an IMAGINARY constant to represent the imaginary unit. Also, add unit
tests for different types.
2024-12-08 16:51:44 +01:00
konimarti
e67e9d3bbf
Fix fnv a hashes ( #1667 )
...
* fix fnv32a
* fix fnv64a
* Simplify code
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2024-12-07 15:39:45 +01:00
Christoffer Lerno
ea86c9d37a
Fix of issue where multiple methods were accepted for the same type. Fix of issue where a method was linked to a type alias instead of the underlying type. #1661
2024-12-06 13:09:47 +01:00
Christoffer Lerno
d1a2e6e5bd
Update Windows debug output.
2024-12-06 02:18:36 +01:00
konimarti
c96985f1db
sort: add is_sorted ( #1660 )
...
* sort: add is_sorted
Add is_sorted function to check whether a list is sorted or not. Sort
order (ascending or descending) will be detected by looking at the data.
Add tests.
* update the release notes
* refactor: use lambda
2024-12-05 22:37:13 +01:00
Christoffer Lerno
b7010c83e0
Fix windows emit loc.
2024-12-04 21:33:03 +01:00
Christoffer Lerno
20a3d19ac7
Update Windows build to use LLVM 19.1.4
2024-12-04 14:00:18 +01:00
Christoffer Lerno
0ded93ab9b
Do not produce expression locations for windows.
2024-12-04 12:21:12 +01:00
Christoffer Lerno
ec82ec0426
Fix CI.
2024-12-04 00:02:36 +01:00
Christoffer Lerno
6281f8ff89
Add -q option, make --run-once implicitly -q.
...
Add `-v`, `-vv` and `-vvv` options for increasing verbosity, replacing debug-log and debug-stats options. #1601
2024-12-03 23:37:31 +01:00
Koni Marti
2c9d2d4fd7
update the release notes
2024-12-03 21:21:38 +01:00
Christoffer Lerno
8569239bc1
Crash when using --no-obj without compile-only. #1653
2024-12-03 19:48:24 +01:00
konimarti
5463c398cb
Add quickselect ( #1654 )
...
* sort: extract partition from quicksort
Extract the partition logic from quicksort into a macro. This allows to
reuse the partition logic for, e.g., the quickselect algorithm.
* sort: implement quickselect
implement Hoare's selection algorithm (quickselect) on the basis of the
already implemented quicksort. Quickselect allows to find the kth
smallest element in a unordered list with an average time complexity of
O(N) (worst case: O(N^2)).
* add quicksort benchmark
Create a top-level benchmarks folder. Add the benchmark implementation
for the quicksort algorithm.
Benchmarks can then be run in the same way as unit tests from the
root folder with:
c3c compile-benchmarks benchmarks/stdlib/sort
2024-12-03 19:27:26 +01:00
Nexus
7381734913
fix: prevent infinite read-loop by updating left_to_read after write ( #1652 )
...
* fix not updated `left_to_read` after the buffer has been written
2024-12-02 14:34:57 +01:00
Christoffer Lerno
462322026f
Fix bug with missing target in test and crash in benchmark. Note that this doesn't resolve the issues with these yet.
2024-11-30 20:26:04 +01:00
Christoffer Lerno
b5e5c719ed
Enforce single module compilation for static libraries to make constructors run properly.
2024-11-30 15:34:54 +01:00
neokeld
a0f4976b07
Add char_at method in DString
2024-11-30 13:30:20 +01:00
Christoffer Lerno
44c2486a74
Update test for LLVM 20
2024-11-30 12:53:58 +01:00
Christoffer Lerno
5fc6672784
Crash compiling for arm64 when returning 16 byte and smaller structs by value not a power of 2 #1649 .
2024-11-30 11:47:49 +01:00
Christoffer Lerno
bcb1edba90
Update tests.
2024-11-28 23:32:34 +01:00
Christoffer Lerno
8099e7a75d
Update LLVM debug info.
2024-11-28 21:59:20 +01:00
Christoffer Lerno
cc9a501351
Fix bug preventing optionals from being used in ranges or as indices.
2024-11-28 00:48:58 +01:00
Christoffer Lerno
b536a23124
Updated release notes.
2024-11-27 13:46:39 +01:00
Christoffer Lerno
6ca5bcc6b8
Add simple memcpy, memcmp and memset functions for nolibc.
2024-11-27 13:45:41 +01:00
Christoffer Lerno
ac966f118a
Updated base32 / base64 API.
2024-11-27 11:58:28 +01:00
Christoffer Lerno
f13472a8c3
Contracts on generic modules would evaluate too late, sometimes not catching the error until it already occurred elsewhere. Add file::save.
2024-11-27 00:02:43 +01:00
Christoffer Lerno
0e213ae777
Disable report heap allocs using parameter.
2024-11-26 03:11:10 +01:00
Christoffer Lerno
a0c82a6a47
Updated base32 API.
2024-11-26 03:01:45 +01:00
Christoffer Lerno
a087ba608b
Begin unifying baseXX encodings. b64 / hex data strings can now be used with \` as well.
2024-11-25 16:20:10 +01:00
Tim Jurcka
9112d63655
Fix args passed to __asan_region_is_poisoned
2024-11-25 11:44:39 +01:00
Koni Marti
3f7f7a0aa7
base64: use url encoding with updated api
...
Ensure that the URL alphabet for base64 is used with the urlencode
functions (urlencode, urlencode_buffer, urlencode_temp and
urlencode_new) are used. Add a new test.
2024-11-25 11:44:24 +01:00
Koni Marti
8d03aafe72
base32: update base32 api
...
Update the base32 api to be consistent with the recent changes to the
base64 api introduced by commit 60101830 ("Updated base64 encoding
api").
2024-11-25 11:43:40 +01:00
Koni Marti
b0c0fd7dc8
encoding: implement hex encoding (base16)
...
Implement hex encoding and decoding (base16) according to RFC 4648.
Add unit tests.
Link: https://www.rfc-editor.org/rfc/rfc4648
2024-11-25 11:41:22 +01:00
Nexus
c273f26cb3
Add "sources" option support for library. ( #1631 )
...
* Add "sources" support for library manifest
* Add "sources" to library manifest creation
* Add "sources" key to target manifest
* Added fallback for already made libraries
* Remove src/ in library creation
* add changes to releasenotes.md
2024-11-24 15:37:15 +01:00
Christoffer Lerno
60101830cc
Updated base64 encoding api.
2024-11-24 00:14:31 +01:00
Ellipse12
a58d782704
added check for to_string in is_struct_with_default_print
...
The function wasn't checking if the struct had the method `to_string` which made it segfault when trying to override the default to_string on a struct
2024-11-23 23:08:45 +01:00
Koni Marti
9b94c1dda9
fix: base64 decoding
...
Fix the base64 decoding. If there's an 'A' character in the encoded
text, the base64 decode function returns an INVALID_PADDING error. The
reason lies in the way Base64Decoder.init tries to find a suitable
invalid character. Fix this by defining the invalid character as 0xff
(which is already the case for a decoding without padding).
This error has not been caught by the test harness, because no test
contains an 'A' character in the the encoded text yet. Add a new test.
2024-11-23 23:06:44 +01:00
Christoffer Lerno
201a6b350e
Support MSVCRT and OLDNAMES.lib in python script.
2024-11-23 18:54:27 +01:00
Christoffer Lerno
b2724caeda
Begin work on asm label support.
2024-11-23 17:10:42 +01:00
Sander van den Bosch
9d99d556a1
Add .tlb file extention from msvc files to .gitignore
2024-11-22 22:37:38 +01:00
Christoffer Lerno
a1a6511e26
Remove "Timespec"
2024-11-22 16:50:29 +01:00
Christoffer Lerno
652456646f
Prevent methods from using names of properties or fields. #1638
2024-11-22 16:40:33 +01:00
Christoffer Lerno
ca0dc49f64
Improve support for Windows cross compilation on targets with case sensitive file systems.
2024-11-21 23:28:58 +01:00
Christoffer Lerno
ae1b39eb60
Not possible to alias or take reference for extension methods on non-user defined types. #1637
2024-11-21 14:48:13 +01:00
Christoffer Lerno
22f7faf60e
SimpleHeapAllocator bug when splitting blocks allowed memory overrun.
2024-11-21 13:36:24 +01:00
Christoffer Lerno
f3bf9eb14d
Update mingw packages.
2024-11-21 11:31:55 +01:00
Christoffer Lerno
347a1a48d4
Indexing an Optional slice would crash in codegen #1636 .
2024-11-21 11:30:53 +01:00
Christoffer Lerno
c9793457f3
Fix issue with properties in different targets not being respected. #1633
2024-11-21 01:24:44 +01:00
Christoffer Lerno
50d31ba398
Fix issue with overloaded subscript and ++/--.
2024-11-20 23:44:42 +01:00
Sander van den Bosch
2788c4cc00
Add new AMX and other feature flags
2024-11-20 23:43:30 +01:00
Christoffer Lerno
ba54232b8d
Fix issue with overloaded subscript and ++/--.
2024-11-20 00:23:08 +01:00
Christoffer Lerno
489bb70901
Updated cast rules
2024-11-19 00:04:10 +01:00
Christoffer Lerno
dd06dfa5ba
Fix issue with resolved try-unwrap in defer.
2024-11-18 15:53:27 +01:00
Walther Chen
f39e339726
Fix error when HashMap.remove on uninitialized HashMap ( #1629 )
...
* HashMap: test removal on uninitialized
* HashMap.remove_entry_for_key: return false on unintialized
* test: switch to temp_init
* release note
2024-11-18 14:20:32 +01:00
Christoffer Lerno
295b374b48
Support &a[0] returning the distinct type when applying it to a distinct of a pointer.
2024-11-17 22:25:57 +01:00
Christoffer Lerno
8ed390c394
A distinct inline pointer type can now participate in pointer arithmetics.
2024-11-16 23:08:54 +01:00
Christoffer Lerno
f9e9cac6e8
Cleanup and better contract error messages.
2024-11-16 00:02:03 +01:00
konimarti
f3304acc93
Add io stream primitives ( #1626 )
...
* io: implement MultiReader struct
Implement a MultiReader (InStream) which sequentially read from the
provided readers (InStreams). Return IoError.EOF when all of the readers
are read.
* io: implement MultiWriter struct
Implement a MultiWriter (OutStream). The MultiWriter duplicates its
writes to all the provided writers (OutStream).
* io: implement TeeReader struct
Implement a TeeReader (InStream) which reads from a wrapped reader
(InStream) and writes data to the provided writer (OutStream).
2024-11-15 23:18:29 +01:00
Walther Chen
a233771433
Fix WriteBuffer.write_bytes off-by-one ( #1625 )
...
* fix WriteBuffer.write_bytes off-by-one
* test for WriteBuffer.write_bytes off-by-one
2024-11-14 14:58:09 +01:00
Christoffer Lerno
ea9a871d90
Fix incorrect doc contracts on interfaces.
2024-11-14 11:47:00 +01:00
Christoffer Lerno
84d010bb2f
Remove accidental doc comment.
2024-11-14 11:14:02 +01:00
Christoffer Lerno
e0ba468b7e
Update mingw libs.
2024-11-14 01:26:29 +01:00
Christoffer Lerno
f88c0dd645
Tweak the error message on unexpectedly getting a non-type identifier. #1622
2024-11-14 00:19:17 +01:00
Walther Chen
758918c077
fix WriteBuffer.write_byte
2024-11-14 00:06:54 +01:00
Christoffer Lerno
7b516e6113
@builtin was not respected for generic modules #1617 .
2024-11-13 23:34:34 +01:00
Matteo Cardinaletti
61a76bb834
Init command will now add test-sources to project.json #1520
2024-11-12 15:17:09 +01:00
vssukharev
e6b6edefaf
Add support for nix flakes ( #1614 )
...
* Add support for nix flakes
* Added debug build type for flake.nix; Got rid of redundant version check in nix/default.nix
* Added dev shell with compile_commands.json into flake.nix
* Fixed issue with generated compile_commands.json while creating c3c derivation with nix. Deduced devShells in flake.nix to nix/shell.nix
2024-11-12 12:33:39 +01:00
Christoffer Lerno
a228eb020d
Allow splat in initializers.
2024-11-11 23:54:35 +01:00
Christoffer Lerno
c46933a81a
Refactor "splat" parsing.
2024-11-11 15:43:17 +01:00
Christoffer Lerno
746046c8c0
Fix bug where a > 0 ? f() : g() could cause a compiler crash if both returned void!.
2024-11-10 01:18:56 +01:00
Christoffer Lerno
acab95792f
Improve error message when incorrectly using Type as an rvalue.
2024-11-10 01:18:56 +01:00
Christoffer Lerno
b882265e52
Start work on 0.6.5
2024-11-10 01:18:56 +01:00
Christoffer Lerno
547f2ef189
Tighten up conversion rules for arrays and slices.
2024-11-10 01:16:01 +01:00
Christoffer Lerno
69004943a7
Update to 0.6.4.
2024-11-09 17:09:54 +01:00
Christoffer Lerno
658fb4b1f9
Updated for 0.6.4 release.
2024-11-08 12:38:23 +01:00
Christoffer Lerno
e675b0c00a
Fix last test for LLVM20
2024-11-07 13:49:03 +01:00
Christoffer Lerno
95ac29559c
Fix some tests for LLVM20
2024-11-07 12:43:26 +01:00
konimarti
b7a095b4b4
Fix Formatter.floatformat and Object.to_format ( #1602 )
...
* fix: change float format specifier in Object.to_format
Fix the float format specifier in Object.to_format. If there is a float
stored in a Object such as 3.14, it would be printed out as 3 because
the format specifier is %d but should be %g.
* fix: print nan in floatformat
Fix floatformat to print 'nan' if float is nan. Currently,
io::printn(float.nan) will produce 'inf' instead of 'nan'.
2024-11-07 00:01:14 +01:00
Christoffer Lerno
08d1b29301
Add contracts on @catch / @ok. Taking the $typeof of a wildcard optional returns void!
2024-11-05 10:50:38 +01:00
Christoffer Lerno
741707273d
Add "prepare" target in project.json #1577
2024-11-04 22:46:19 +01:00
Tomas Kallup
bdd6ed0e83
Fix: Unify termios types for actions & flags
...
The type for `Tcflags` was used instead of the CInt (now `Tcactions`)
and vice versa.
2024-11-04 17:15:40 +01:00
konimarti
8154e275fa
encoding: implement RFC4648 base32 encoding ( #1596 )
...
Implement base32 encoding and decoding according to RFC 4648 with the
standard and extended hex alphabets. Add unit tests.
Link: https://www.rfc-editor.org/rfc/rfc4648
Signed-off-by: Koni Marti <koni.marti@gmail.com >
---------
Signed-off-by: Koni Marti <koni.marti@gmail.com >
2024-11-04 12:19:28 +01:00
Christoffer Lerno
6258cba79a
@tag on macros cannot be retrieved with tagof #1582
2024-11-04 02:51:58 +01:00
Waqar Ahmed
213831289a
Fix compile with gcc 14.2.1 ( #1594 )
...
* Fix compile with gcc 14.2.1 Fixes -Werror=maybe-uninitialized warnings
* Updated to use INVALID_PTR rather than NULL.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2024-11-04 00:20:14 +01:00
Christoffer Lerno
ba34b45651
Fix LLVM 20 compilation
2024-11-03 23:52:48 +01:00
rexim
4be5c74798
Relative DESTINATION path when installing man page
...
This makes the install() function install the file with respect to
`CMAKE_INSTALL_PREFIX` which may not always be `/usr/local/` especially
when some people install the compiler locally in their `$HOME` folder.
https://cmake.org/cmake/help/latest/command/install.html
2024-11-03 23:20:15 +01:00
Christoffer Lerno
b06a611e69
Improve error message when using void aliases as variable storage type.
2024-11-01 14:56:29 +01:00
Christoffer Lerno
fd5b8d1374
Add bounds checking on List access.
2024-11-01 14:18:29 +01:00
Christoffer Lerno
4d84811629
Fixed test.
2024-10-31 21:41:50 +01:00
Christoffer Lerno
cd4fd02ee3
Sometimes generating introspection info would not be in the global scope causing a crash #1586 .
2024-10-31 21:27:46 +01:00
Ygor Pontelo
475972aecd
allow current directory as project ( #1580 )
...
* allow current directory as project
* avoid multiple underscores in module name
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2024-10-30 21:23:51 +01:00
Christoffer Lerno
b7a23e558a
Fixes with error handling recursive @tag #1583 .
2024-10-30 20:57:17 +01:00
Christoffer Lerno
827440686f
$define would occasionally not properly evaluate declarations it encountered.
2024-10-30 11:59:18 +01:00
aiko
7f70145f55
wrote manpage in c3c.1 and added manpage install to CMakeLists.txt
2024-10-28 22:37:56 +01:00
MohMaGen
0639659270
fix: remove requirements for pop_first.
2024-10-27 20:35:09 +01:00
Christoffer Lerno
4be08ee0bd
string::new_struct_to_str and io::struct_to_format to dump struct data. io::print will now print structs.
2024-10-26 21:00:07 +02:00
Christoffer Lerno
cc6a24cf80
Null-check function pointer invocation #1573 .
2024-10-26 18:41:47 +02:00
Christoffer Lerno
b187d5a3fc
Named vector component access would not fold at compile time. #1574
2024-10-26 13:22:35 +02:00
Christoffer Lerno
83f8d24892
Update sponsors. More comments in path.c3
2024-10-26 13:00:54 +02:00
Walther Chen
fd1898b70a
copy out keys also in HashMap.copy_keys ( #1569 )
...
* copy out keys also in HashMap.copy_keys
* test for copying keys out
2024-10-26 01:57:00 +02:00
Walther Chen
8ce63106b9
Update .editorconfig to reflect current style ( #1571 )
...
* Update .editorconfig to reflect current style
* .editorconfig use tabs for python
* update msvc_build_libraries.py from two-space to tab indent
* update test/src/tester.py from 4-space to tab indent
2024-10-25 17:44:32 +02:00
Christoffer Lerno
c0c571ffe0
Incorrect error message when $eval is provided an invalid string. #1570
2024-10-25 10:31:45 +02:00
Christoffer Lerno
d8f4da4d90
Incorporating change from #1568 and the other fix needed.
2024-10-23 23:48:27 +02:00
Matteo Cardinaletti
f02387073d
Json AST: Adding 'constants' and Improving 'globals' #1540 , #1541
2024-10-23 23:31:28 +02:00
Christoffer Lerno
d344cc6020
(uptr)&((Foo*)null).a incorrectly inserts a null check. #1544 .
...
Fix regression handling typedefs from generic modules.
2024-10-22 12:15:39 +02:00
Christoffer Lerno
9100638400
&self argument not implicitly null checked. #1556 .
2024-10-21 00:45:40 +02:00
Christoffer Lerno
d2085654a7
if (try foo) was handled incorrectly inside a defer.
2024-10-20 18:30:03 +02:00
Christoffer Lerno
78d5939d9d
Show error when declarations do not start with fn in interfaces. #1565 . Some added functionality to lists and time.
2024-10-18 17:10:00 +02:00
Christoffer Lerno
c013006671
Improve infer conversions on constants, e.g. ZString a = foo ? "a" : "b"; #1561
2024-10-17 01:20:52 +02:00
Fernando López Guevara
e09a9f0d80
chore(cmake): improve lld resolution on apple
2024-10-17 00:46:16 +02:00
Christoffer Lerno
705856d51a
- Disallow casting a void* to any or an interface, unless it is null.
...
- Defer resolution of declarations when looked up in `def` aliased #1559 .
2024-10-16 12:50:47 +02:00
Christoffer Lerno
4445b6c054
Improve error messages on expressions like var $type = int; #1553 .
2024-10-15 11:50:15 +02:00
Christoffer Lerno
cf03bc0a0a
Formatting fixes
2024-10-14 16:13:51 +02:00
Christoffer Lerno
f37f1769ae
c3.l grammar fixed.
2024-10-14 12:37:53 +02:00
Christoffer Lerno
31cd839063
Switch to <* *> docs. Fix issue with dynamically loaded C3 libs with other C3 code.
2024-10-14 02:14:34 +02:00
Christoffer Lerno
9f6a4eb300
Empty expression block would crash compiler with debug on #1554 .
2024-10-13 02:19:26 +02:00
PavelBlinnikov
6a2957faf7
fix: segfault in panic when statically compiled
...
Co-authored-by: RoadToLP <ilya.titoff2013@yandex.ru >
2024-10-12 22:18:38 +02:00
Walther Chen
e6c9cfed42
Small fixes to AST json ( #1550 )
...
* fix ast json
* INERT_COMMA -> INSERT_COMMA
* fix struct field types
2024-10-12 19:28:47 +02:00
Christoffer Lerno
0da7f1b4de
Wrong error message for interface methods with body #1536 .
2024-10-12 02:51:07 +02:00
Christoffer Lerno
8ce171877e
Also weaken libc and generic templates.
2024-10-12 02:13:35 +02:00
Christoffer Lerno
a38c7f6e49
Fix tests.
2024-10-12 01:19:15 +02:00
Christoffer Lerno
d19f628c73
Return missing MSVC fix.
2024-10-12 00:05:50 +02:00
Christoffer Lerno
526d15b804
Stop using linkonce and use weak instead.
2024-10-11 23:56:29 +02:00
Christoffer Lerno
c308397ed6
Fix weak linking for windows.
2024-10-11 23:35:12 +02:00
Christoffer Lerno
0cf93a8c32
Fix test.
2024-10-11 22:13:53 +02:00
Christoffer Lerno
cba25710fe
Refactor and unify linker visibility and fix issues with weak stdlib.
2024-10-11 21:45:44 +02:00
Christoffer Lerno
1b471283c9
- Don't weakly link in exe.
2024-10-11 18:11:27 +02:00
Christoffer Lerno
09fee2aa4b
- Standard library is now correctly weakly linked, fixing the use of C3 .so together with executable. #1549 , #1107 .
2024-10-11 17:14:02 +02:00
Koni Marti
2739c86881
Add csv unit tests
...
Add unit tests for std::encoding::csv.
Signed-off-by: Koni Marti <koni.marti@gmail.com >
2024-10-11 16:11:45 +02:00
Christoffer Lerno
cdf67684cc
Add releasenote for latest fix.
2024-10-11 13:53:29 +02:00
Koni Marti
4e5ba327fe
Fix mem leak in HashMap.keys_new_list
...
Fix a memory leak in HashMap.key_new_list(). The custom memory allocator
will not be used, since key_new_list() will call HashMap.copy_keys()
without passing the memory allocator along. Hence, HashMap.copy_keys()
will allocate on the heap and these memory blocks will not be freed.
To fix this, pass the custom allocator to HashMap.copy_keys(). Also,
since HashMap.key_new_list() is deprecated anyways, replace it by
HashMap.copy_keys().
Affected from this leak is Object.to_format() from
std::collection::object (for an ObjectInternalMap) which is used in the
JSON parser.
The tests for the JSON parser show the memory leak:
$ c3c compile-test test/unit/stdlib/encoding
$ valgrind --leak-check=yes ./testrun
==1454708==
==1454708== HEAP SUMMARY:
==1454708== in use at exit: 384 bytes in 8 blocks
==1454708== total heap usage: 69 allocs, 61 frees, 528,672 bytes allocated
==1454708==
==1454708== 48 bytes in 1 blocks are definitely lost in loss record 1 of 8
==1454708== at 0x48447A8: malloc (vg_replace_malloc.c:446)
==1454708== by 0x12CDBF: std.core.mem.allocator.LibcAllocator.acquire (libc_allocator.c3:42)
==1454708== by 0x1790FD: malloc_try (mem_allocator.c3:64)
==1454708== by 0x1790FD: alloc_array_try (mem_allocator.c3:286)
==1454708== by 0x1790FD: alloc_array (mem_allocator.c3:269)
==1454708== by 0x1790FD: copy_keys (hashmap.c3:310)
==1454708== by 0x1790FD: std_collections_map$String$p$std.collections.object.Object$.HashMap.key
==1454708== by 0x14D593: std.collections.object.Object.to_format (object.c3:53)
==1454708== by 0x164556: std.io.Formatter.print_with_function (formatter.c3:86)
==1454708== by 0x165B49: std.io.Formatter.out_str (formatter.c3:152)
==1454708== by 0x16E2B0: std.io.Formatter.vprintf (formatter.c3:456)
==1454708== by 0x12696B: std.core.dstring.DString.appendf (dstring.c3:532)
==1454708== by 0x124EA9: std.core.string.tformat (string.c3:79)
==1454708== by 0x113C79: json_test.test_string (json.c3:34)
==1454708== by 0x118AA1: std.core.runtime.run_tests (runtime.c3:227)
==1454708== by 0x1190B1: std.core.runtime.default_test_runner (runtime.c3:246)
==1454708==
[..snip..]
==1454708==
==1454708== LEAK SUMMARY:
==1454708== definitely lost: 384 bytes in 8 blocks
==1454708== indirectly lost: 0 bytes in 0 blocks
==1454708== possibly lost: 0 bytes in 0 blocks
==1454708== still reachable: 0 bytes in 0 blocks
==1454708== suppressed: 0 bytes in 0 blocks
==1454708==
==1454708== For lists of detected and suppressed errors, rerun with: -s
==1454708== ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
Signed-off-by: Koni Marti <koni.marti@gmail.com >
2024-10-11 13:52:34 +02:00
Christoffer Lerno
efeb9e627e
Interfaces not correctly copied with generics #1545 .
2024-10-11 13:26:22 +02:00
Christoffer Lerno
8e24f15d58
Cannot use void as a generic parameter #1546 . Interfaces now support .ptr and .type directly without casting to any.
2024-10-11 12:10:35 +02:00
Christoffer Lerno
1adad860f4
Update AST output.
2024-10-11 11:24:01 +02:00
Christoffer Lerno
cf07570871
Improved error message when declaring a variable void!.
2024-10-11 00:15:49 +02:00
Christoffer Lerno
bf30e52993
Improved error message on invalid subscript index type #1535 .
2024-10-10 14:59:16 +02:00
Christoffer Lerno
a91ddd40dd
Infer now works across ternary. Crash returning struct or vector from function using ternary expression #1537 .
2024-10-10 14:44:40 +02:00
Christoffer Lerno
57ecadd23e
Updated CSV API
2024-10-10 14:14:24 +02:00
Christoffer Lerno
967f14148f
Bug when defers and $if were combined in a macro, which would cause miscompilation.
2024-10-10 13:42:12 +02:00
Christoffer Lerno
7a6544b17c
Constant bytes <=> char[] conversion should work #1514
2024-10-09 19:38:06 +02:00
Christoffer Lerno
bf59efd3f4
Fix sincos to be different on Darwin compared to other.
2024-10-09 16:14:24 +02:00
Christoffer Lerno
c1266e9d06
Compiler error when any/interface initialized using {} #1533 .
2024-10-09 13:12:40 +02:00
Christoffer Lerno
557adb6ed9
Update the init function of the arena allocator.
2024-10-09 12:45:50 +02:00
Christoffer Lerno
9f10996ac7
Bug when a continue is copied in a defer.
2024-10-08 22:13:30 +02:00
Christoffer Lerno
31f48829b0
Added CBool #1530 .
2024-10-08 22:00:06 +02:00
Christoffer Lerno
39d4a97e24
Fix broken sincos function.
2024-10-08 20:34:41 +02:00
Christoffer Lerno
a665978b64
Fixing some whitespace issues.
2024-10-08 19:38:31 +02:00
Koni Marti
0cc62058a9
fix(string): use heap allocator for ZString.copy
...
Use the heap allocator for ZString.copy() instead of the temp allocator
to stay consistent across the code base.
The temp allocator is used for ZString.tcopy().
2024-10-08 17:33:29 +02:00
Christoffer Lerno
7dfdb9d061
Fix to ad hoc generic types.
2024-10-08 11:48:20 +02:00
Christoffer Lerno
e3ea1d5049
Deprecate @adhoc, allow non-nested ad hoc generic types.
2024-10-08 11:02:10 +02:00
Christoffer Lerno
19a96acac8
Improve error message in the case of MyInterface x = foo; #1522
2024-10-07 21:00:17 +02:00
Christoffer Lerno
80d016e076
Unintended deref of pointers with methods caused regression with hash function.
2024-10-07 20:43:37 +02:00
Fernando López Guevara
ac214b97df
chore(cmake): switch from LLVM_LIBRARY_DIRS (list) to LLVM_LIBRARY_DIR for single path usage
2024-10-07 19:12:05 +02:00
Fernando López Guevara
1a948e4341
fix(time): update month
2024-10-07 19:11:14 +02:00
Christoffer Lerno
6bbc77a69c
Segfault with passing a program with - using stdin. Using no module with - would reject the program. #1523
2024-10-06 12:19:13 +02:00
Denis Palashevskii
217151be8d
fix int formatting in std::collections::object
2024-10-05 14:03:27 +02:00
Christoffer Lerno
2ef1465244
Improved ObjC support.
2024-10-04 23:25:51 +02:00
Christoffer Lerno
cfc1d0d8f8
Incorrect subscript resolution #1519
2024-10-04 20:50:48 +02:00
Christoffer Lerno
6fabecac1a
Better error for int Foo(int a) declarations #1516
2024-10-04 18:15:06 +02:00
Christoffer Lerno
77ac864995
Unexpected compile error using a typed constant with copysign #1517
2024-10-04 18:01:57 +02:00
Christoffer Lerno
f95769541d
Better error for int a[4] = .... #1518
2024-10-04 17:52:32 +02:00
Christoffer Lerno
fa4ca7944f
- Add read/write to stream with big endian ints.
...
- Move accidently hidden "wrap_bytes".
2024-10-03 20:42:25 +02:00
Christoffer Lerno
02e9bfaf31
Separate const slice. Fix #1489 . Fix const slice appending. Remove unintended print of char[] as String. Support const conversion of array -> slice.
2024-10-03 15:04:33 +02:00
Christoffer Lerno
7f66d5992f
Update latest version.
2024-10-03 13:10:25 +02:00
Christoffer Lerno
84e10cf635
0.6.3 Release version.
2024-10-03 10:11:31 +02:00
Christoffer Lerno
1b8f8c5f5a
Compiler crash when compiling c code in a library without --obj-out #1503 .
2024-10-03 00:56:01 +02:00
Fernando López Guevara
131a783e89
feat(hash): added test for sha256
2024-10-02 16:55:17 +02:00
chri-k
2233f24c8f
Add variants of DString.insert_at to match .append ( #1510 )
2024-10-02 10:22:59 +02:00
Christoffer Lerno
607a625641
Updated bigint.
2024-10-02 01:13:34 +02:00
Christoffer Lerno
9b49d19224
DString reverse and an initial BigInt implementation (untested),
2024-10-01 22:51:48 +02:00
Christoffer Lerno
46ae4353e0
Assume XTensa in 21+ instead.
2024-10-01 16:06:23 +02:00
Christoffer Lerno
44fcba2e3a
Remove LLVM 20
2024-10-01 15:58:23 +02:00
Christoffer Lerno
f434795ee5
Test enable 19 and 20
2024-10-01 15:51:44 +02:00
Christoffer Lerno
0ea423d022
Foreach over distinct iterable would ignore operator(len).
2024-10-01 13:00:54 +02:00
Fernando López Guevara
c9b9de2838
fix(string): remove allocator argument on temp_ascii_to_lower
2024-09-30 22:01:44 +02:00
Christoffer Lerno
5918d5120f
Foreach over distinct pointer failed to be caught as error #1506 .
2024-09-30 21:32:33 +02:00
DanyDollaro
0d73f2fffa
Added mutex tests ( #1501 )
...
* Added mutex tests. Add errorcheck in safe mode for Posix threads. Make non-recursive locks fail when used recursively on Windows. Fix thread pool tests. Simple locking count.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2024-09-30 20:57:16 +02:00
Christoffer Lerno
c8018c5543
Added generic PBKDF2 implementation.
2024-09-30 00:07:49 +02:00
Christoffer Lerno
071bd0ebf2
Fix bug when reading zip manifest, that would not return a zero terminated string. #1490
2024-09-29 21:14:03 +02:00
Christoffer Lerno
a00fce516e
Added test and releasenotes for #1498 .
2024-09-29 11:23:40 +02:00
chri-k
94abb3bd0c
Fix escape sequence handling in encoding::json
2024-09-29 11:22:15 +02:00
Christoffer Lerno
2e94ea1a0d
Improved error messages on Foo a = foo { 1 }; #1496
2024-09-28 23:53:31 +02:00
Christoffer Lerno
3b009e0b50
Added generic HMAC.
2024-09-28 23:28:11 +02:00
Christoffer Lerno
cc130e04dd
Added MD5 and crypto::safe_compare.
2024-09-28 22:16:25 +02:00
Christoffer Lerno
2eca868540
Add UUID generation.
2024-09-28 20:58:03 +02:00
Christoffer Lerno
eeba5f020a
Bad error on parameterized type without parameter #1495 .
2024-09-28 19:44:57 +02:00
Christoffer Lerno
ded8bce8e6
Change no recursive import to use attribute.
2024-09-28 13:48:43 +02:00
Christoffer Lerno
8e7efaae99
ThreadPool is now adhoc available.
2024-09-28 13:28:39 +02:00
Alex Ling
fe9e434020
Fix incorrect to_gmt_offset result
2024-09-28 13:23:48 +02:00
Christoffer Lerno
8a0b0f5cf5
Disable fixed_pool where no threads are available.
2024-09-28 03:50:22 +02:00
Christoffer Lerno
5df321816b
Unintended commit reverse.
2024-09-28 01:42:06 +02:00
Christoffer Lerno
7ff645c423
Free if broadcast fails.
2024-09-28 01:33:12 +02:00
Christoffer Lerno
93f290d57c
Added a simple fixed threadpool which allocates.
2024-09-28 01:25:08 +02:00
Rachad ADEKAMBI
2146a76795
fix typo#1492 ( #1493 )
...
* fix typo#1492
* Fix missing update in sema_decls
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2024-09-28 00:22:15 +02:00
chopsticks-user
b071e24d7e
Minimal GL and GLFW bindings to render a triangle
2024-09-27 13:12:32 +02:00
Christoffer Lerno
a99e4b602a
Error when slicing a struct with an inline array #1488 .
2024-09-27 13:10:48 +02:00
Alex Ling
4cdea865f0
TzDateTime enhancements #1473
2024-09-26 12:32:05 +02:00
Christoffer Lerno
bf9ae2f0d3
Bad error message aliasing an ident with a path. #1481 .
2024-09-25 21:41:40 +02:00
alex_s168
da2f958614
add x86 APX features ( #1482 )
...
add apx features Update cpu_detect.c3
2024-09-25 21:11:01 +02:00
Christoffer Lerno
b47201fe61
Fix handling of default target with libc.
2024-09-25 21:09:33 +02:00
Christoffer Lerno
a8932910d9
wasm32 / wasm64 targets are use-libc=no by default.
2024-09-25 21:01:00 +02:00
Christoffer Lerno
413877b59d
Allow ^ suffix for non-recursive imports #1480 .
2024-09-25 15:23:21 +02:00
Christoffer Lerno
da47588502
Make methods be available in earlier stages of analysis. Add @adhoc attribute to allow types with ad hoc generic declarations.
2024-09-25 14:26:49 +02:00
Christoffer Lerno
6f7ffbeb3c
Add rand_in_range random function. Fix methodsof to apply to more types. Prevent methodsof in the wrong stage.
2024-09-25 00:18:11 +02:00
Christoffer Lerno
a258f2084f
Allow specifying an import module using @wasm #1305 .
2024-09-24 21:31:48 +02:00
Christoffer Lerno
d067a31ce6
Fix entropy
2024-09-24 20:15:10 +02:00
Christoffer Lerno
c6e4eee789
Added rnd function.
2024-09-24 19:02:03 +02:00
Christoffer Lerno
07c49f832e
Safer seed of rand with WASM.
2024-09-24 18:38:11 +02:00
Christoffer Lerno
01b087238a
Const initializer refactoring. Improve error on "Foo![]" #1477
2024-09-24 18:04:39 +02:00
Christoffer Lerno
d4832812ef
Fix regression.
2024-09-23 14:13:55 +02:00
Christoffer Lerno
9c098fd79f
Always flatten cont initializer inner type.
2024-09-23 02:51:53 +02:00
Christoffer Lerno
029d5e9068
Const initializer further cleanup.
2024-09-23 00:29:43 +02:00
Christoffer Lerno
f30486adf9
Const initializer cleanup.
2024-09-22 22:31:33 +02:00
Brian Sinquin
e21c337d3d
Project fetch missing libraries ( #1469 )
...
Project fetch missing libs
2024-09-21 23:49:26 +02:00
Christoffer Lerno
f66f324e0e
Suppor slicing of bytes.
2024-09-21 22:56:27 +02:00
Christoffer Lerno
885acdac24
Support compile time slicing of untyped lists.
2024-09-21 20:20:56 +02:00
Christoffer Lerno
ccb04c317c
Fix bug due to enum associated values not being checked for liveness.
2024-09-21 18:05:20 +02:00
Christoffer Lerno
abbedeec4f
Allow the "self" parameter to be $/# for macro methods. Fix bug when passing a type as a compile time value.
2024-09-21 15:55:39 +02:00
Christoffer Lerno
cdae3ec936
Some refactoring of the bitstruct representation. Correctly represent inner types. #1471
2024-09-21 13:43:52 +02:00
Christoffer Lerno
d727696830
Segfault using ternary with no assignment #1468 .
2024-09-21 00:57:36 +02:00
Christoffer Lerno
2a9078a3b4
Also depend on Ubuntu20
2024-09-20 23:14:19 +02:00
Christoffer Lerno
ac479c7e40
llvm issue with try when bool is combined #1467
2024-09-20 20:15:44 +02:00
Christoffer Lerno
cda6ffea1e
Slicing constant strings at compile time works.
2024-09-20 19:34:00 +02:00
Caleb-o
0900f401c0
Add Enum constraint to enummap
...
Fix typo in enumset require
2024-09-20 19:17:09 +02:00
Christoffer Lerno
d5a96ed637
Disabling LLVM 19 again.
2024-09-20 19:16:33 +02:00
Christoffer Lerno
8d9eff5297
Re-enable LLVM 19
2024-09-20 16:22:04 +02:00
Christoffer Lerno
19c1511901
Support linking .o files in compilation command. #1417
2024-09-20 16:21:29 +02:00
Christoffer Lerno
8e37e54645
Add env::COMPILER_BUILD_HASH and env::COMPILER_BUILD_DATE
2024-09-20 12:29:23 +02:00
Christoffer Lerno
c25645eab1
Add .gitkeep files to project subfolders.
2024-09-20 10:47:13 +02:00
Chandler
b9f7711f21
Update Arch Linux install instructions
...
c3c was recently added to the official Arch 'extra' repo. Updated the README to reflect this.
2024-09-20 00:40:58 +02:00
Christoffer Lerno
9447913de6
Use arena with JSON parser. Slightly altered output for json printing.
2024-09-20 00:39:10 +02:00
Brian Sinquin
8a9834cac0
Vendor-fetch download to lib directory specified in project.json ( #1422 ) ( #1441 )
...
Vendor-fetch download default destination set to dependency-search-path in project.json Add fetched libraries in the project configuration file dependency entry.
2024-09-19 23:44:05 +02:00
Christoffer Lerno
2fec1c83a4
Enum attributes would be overwritten by enum value attributes.
2024-09-19 23:02:06 +02:00
Christoffer Lerno
ff36380ddf
Allow user-defined attributes to have typed parameters. Folding a constant array of structs at compile time would cause an assert.
2024-09-19 22:21:29 +02:00
Christoffer Lerno
f2cfa61a39
User defined attributes could not have more than 1 parameter due to bug.
2024-09-19 21:14:08 +02:00
Christoffer Lerno
41156cc45d
Temp allocator overwrites data when doing reset on extra allocated pages. #1462
2024-09-19 20:50:14 +02:00
Christoffer Lerno
9f51bfcc10
Support casting bitstructs to bool.
2024-09-19 01:03:06 +02:00
Christoffer Lerno
9426e813be
Add test.
2024-09-18 23:16:07 +02:00
Christoffer Lerno
20fd7aba9b
Regression when passing types as #expr arguments. #1461
2024-09-18 22:16:26 +02:00
Christoffer Lerno
3bada4560e
Correctly print interfaces.
2024-09-18 14:53:55 +02:00
Christoffer Lerno
9719abe99a
Better slice error message, and enable slice on non-vaarg.
2024-09-18 10:55:18 +02:00
Christoffer Lerno
5540519e52
Cleanup.
2024-09-18 10:20:57 +02:00
Christoffer Lerno
0b94e73c0b
Regression fix arguments needed when presenting error on a method.
2024-09-18 10:07:39 +02:00
Christoffer Lerno
5e2a06bfd6
Update shell argument escape.
2024-09-18 00:48:39 +02:00
Christoffer Lerno
ac95e411bc
Make str_eq safe to use with NULL.
2024-09-17 23:48:36 +02:00
Christoffer Lerno
08219fc57e
Fix reordering semantics in struct assignment.
2024-09-17 22:41:49 +02:00
Josh Ring
09643f3c8b
fix install instructions on ubuntu's latest LTS ( #1449 )
...
* fix install instructions on ubuntu's latest LTS
* cleanup arch linux and fixed some typos
2024-09-17 01:38:50 +02:00
Christoffer Lerno
08a575fa82
Crash invoking a @body argument with the wrong number of parameters.
2024-09-17 00:33:38 +02:00
Christoffer Lerno
62887a6ce8
Temporarily disable building with LLVM 19 and 20
2024-09-17 00:28:53 +02:00
Christoffer Lerno
297a6c9348
Support C3C_LIB and C3C_CC environment variables. Enable compiling against 20 to see if it works.
2024-09-17 00:12:50 +02:00
Christoffer Lerno
1181edc48e
Fix error message when not finding a particular function
2024-09-16 22:43:30 +02:00
Christoffer Lerno
81f1930349
Code cleanup. Correct deprecation notice on '$or'. Allow "self" param on macro method to be constant.
2024-09-16 10:40:34 +02:00
RealPacket
54a1819d46
chore: Remove overrides for C3 files ( #1450 )
2024-09-16 10:21:41 +02:00
Christoffer Lerno
1b5472cc94
Add paramsof.
2024-09-15 23:43:09 +02:00
Christoffer Lerno
06a083bafc
Lambda / function type would accidentally be processed as a method.
2024-09-15 22:12:03 +02:00
Christoffer Lerno
9bb45cb6a3
Add missing concat. Fix error message location on not enough arguments.
2024-09-15 15:56:13 +02:00
Real-Packet
1bfe9c568e
chore(ci): Update actions/*-artifact to v4 (simple find & replace)
...
Because v3 is being deprecated and uses Node 16 instead of Node 20.
v4 is also a drop in replacement so we can just find & replace the usages without any changes to easily upgrade to v4.
2024-09-15 02:11:00 +02:00
Christoffer Lerno
4f5e5fcdba
Remove mem tap.
2024-09-15 02:10:19 +02:00
Christoffer Lerno
bca44d1c14
Bug with casting anyfault to error.
2024-09-15 00:55:22 +02:00
Christoffer Lerno
e6d1d66c8f
Updated grammar script and fix concat op
2024-09-14 23:13:06 +02:00
Christoffer Lerno
c3a5f5c0f0
Build macos version with LLVM 17
2024-09-14 22:18:33 +02:00
Christoffer Lerno
c0875d7987
Fix macos release.
2024-09-14 22:15:16 +02:00
Christoffer Lerno
6b6ac2bcb3
Rename release files.
2024-09-14 20:19:12 +02:00
Christoffer Lerno
f78466452a
Updated grammar.y
2024-09-14 19:24:21 +02:00
Christoffer Lerno
f51230e793
Fix bugs in "trap-on-wrap" #1434 .
2024-09-14 16:19:40 +02:00
Christoffer Lerno
3ab201ce10
Use atexit to fix finalizers on Windows #1361 .
2024-09-14 16:17:57 +02:00
Christoffer Lerno
45a94cfe86
Asserts are now correctly included and traced in when running tests. Removed accidental debug trace.
2024-09-14 13:48:27 +02:00
Christoffer Lerno
f16cc999bd
Fix bug where inline index access to array in a struct would crash the compiler.
2024-09-14 12:58:37 +02:00
Christoffer Lerno
d39f25efd3
Support inline struct designated init as if inline was anonymous.
2024-09-13 20:31:21 +02:00
Christoffer Lerno
6b2ce6de6f
Fix unreachable.
2024-09-13 15:32:26 +02:00
Christoffer Lerno
3f1738e0fe
Unified constant handling.
2024-09-13 15:11:15 +02:00
Real-Packet
3ceaf2ab81
chore: migrate to softprops/action-gh-release
...
Hopefully this works. Had to generate a new GPG key because GPG requires a password for signing stuff with GPG and I forgot to use it to sign something so I could save it in the password manager.
Fixes c3lang/c3c#1437
2024-09-13 15:07:45 +02:00
wilsonk
4c7d61ae82
Bsd family fixes ( #1435 )
...
Some small fixes for the BSD's
Try fcntl for NetBSD
Fixes for stdin, etc. and setjmp/longjmp
2024-09-13 14:49:51 +02:00
Alexey Kutepov
d53dd57b84
Introduce os::native_fputc() abstraction layer for File.write_byte() ( #1440 )
...
Introduce os::native_fputc() abstraction layer for File.write_byte()
2024-09-13 12:25:41 +02:00
Christoffer Lerno
6ff5ac5592
Removed unused functions.
2024-09-12 15:28:19 +02:00
Christoffer Lerno
9ce1bbe3cd
Update README.md
...
Fix link
2024-09-12 14:02:10 +02:00
Christoffer Lerno
65c48419d0
Minor refactorings. Added "Thank you" section to readme. Some fixes to hostinfo.
2024-09-12 13:47:49 +02:00
alex_s168
d376ee6671
ability to disable llvm at compile time ( #1433 )
...
ability to disable llvm at compile time
2024-09-12 13:36:00 +02:00
Christoffer Lerno
eaa419a48d
Correct '.so' suffix on dynamic libraries on Linux.
2024-09-12 09:21:23 +02:00
Christoffer Lerno
1b6ec34c61
Refactor alignment code. Change deprecated function in test.
2024-09-12 08:30:01 +02:00
Christoffer Lerno
9f4da339c3
Support int[*] { 1, 2, 3 } expressions.
2024-09-12 00:11:09 +02:00
wilsonk
1b54a99f6a
Add initial FreeBSD support ( #1430 )
...
Add initial FreeBSD support
2024-09-11 22:38:53 +02:00
ElaDeCode
2b0d2892af
move macro matrix_look_at to matrix module
2024-09-11 14:58:42 +02:00
Fernando López Guevara
27f2d201ed
fix: cast native thread
2024-09-11 10:12:33 +02:00
Christoffer Lerno
d6cf622e49
Make subscript use its own "index" type rather than reuse Range.
2024-09-10 22:11:19 +02:00
Christoffer Lerno
2092e2167e
Add io::read_new_fully for reading to the end of a stream. Add io::wrap_bytes for reading bytes with io functions.
2024-09-10 13:21:07 +02:00
Christoffer Lerno
503032cbcf
Update range checking.
2024-09-10 13:21:07 +02:00
Christoffer Lerno
6f90e13502
Fix regression for $include.
2024-09-10 12:15:45 +02:00
Christoffer Lerno
b22bd459dd
Fix regression for splat.
2024-09-10 00:21:01 +02:00
Christoffer Lerno
f67147a405
Fix bug in new splat code, fixes #1423 .
2024-09-09 22:12:30 +02:00
Christoffer Lerno
df4eb3d0f0
Allow var in lambdas in macros. Allow ad hoc generic declaration in lambdas and type definitions. Fix deprecation flag.
2024-09-09 21:46:06 +02:00
Christoffer Lerno
32cc4bcd03
Fix issues for compiling on 32-bit.
2024-09-09 00:55:50 +02:00
Christoffer Lerno
1502c6d660
Limit object filename lengths. #1415
2024-09-07 23:38:20 +02:00
Christoffer Lerno
d4fb5b747b
Update QOI type names.
2024-09-07 16:10:15 +02:00
Hema2
7581651011
Add QOI to the standard library ( #1409 )
...
Add QOI to the standard library
2024-09-07 15:55:26 +02:00
Christoffer Lerno
4f54e273ab
Asserts are retained regardless of optimization when running tests.
2024-09-07 15:40:32 +02:00
Christoffer Lerno
1cc1b83b6f
format functions are now functions and work better with splat.
2024-09-07 14:34:30 +02:00
Christoffer Lerno
8e9199f453
Untyped splat.
2024-09-07 14:26:42 +02:00
Christoffer Lerno
223501eeca
Support splat for varargs #1352 .
2024-09-07 05:26:43 +02:00
Christoffer Lerno
7649738618
Improve lvalue handling in the compiler. #1357
2024-09-07 03:19:35 +02:00
Christoffer Lerno
78c60ae695
Increase stack size for msys.
2024-09-07 01:37:45 +02:00
Christoffer Lerno
f5f122d5a5
Reduce recursion depth. Improve error message.
2024-09-07 00:48:16 +02:00
Christoffer Lerno
4b27a33a10
Refactor vasplat.
2024-09-07 00:29:41 +02:00
id3nom
15aca2eb84
Add CMake option C3_ENABLE_CLANGD_LSP ( #1414 )
...
* CMake option C3_ENABLE_CLANGD_LSP
The CMake option enables the generation of compile_commands.json in
the build directory and the creation of a symlink in the root
directory targeting the new file,
this will allow the Clangd Language Server Protocol (LSP) to
function properly.
* Added .editorconfig
EditorConfig helps maintain consistent coding styles:
https://editorconfig.org/
2024-09-06 23:06:09 +02:00
Christoffer Lerno
1cb91c0ac9
Fold default args in non-debug.
2024-09-06 23:04:09 +02:00
Christoffer Lerno
840b3b3161
"optsize" did not work correctly in project.json.
2024-09-06 22:55:15 +02:00
Christoffer Lerno
a5cf3ce2f1
Update releasenotes.
2024-09-06 20:56:38 +02:00
Lars Nilsson
04c85eb9ce
Adding hashmap and map initialization functions with data ( #1402 )
...
Adding hashmap and map initialization functions with data to populate them with
2024-09-06 20:55:42 +02:00
Christoffer Lerno
82364d2e3c
Function vasplat refactoring.
2024-09-06 20:54:28 +02:00
Christoffer Lerno
3db7bf5dfd
Crash when reading an empty 'manifest.json'.
2024-09-06 18:05:43 +02:00
Christoffer Lerno
de13023981
Converting a slice to a vector/array would copy too little data.
2024-09-06 15:36:43 +02:00
Christoffer Lerno
35b825c78a
Function vasplat refactoring.
2024-09-06 11:44:48 +02:00
Christoffer Lerno
28428fcf30
Handle "splice splat" in the vararg slot as an expression.
2024-09-06 10:43:03 +02:00
Christoffer Lerno
1e570bf506
Rename vec_erase_ptr_at to vec_erase_at.
2024-09-06 00:41:07 +02:00
Christoffer Lerno
ad0e97ab7b
Deprecated inline generic types, deprecated tuple / triple types.
2024-09-05 23:42:20 +02:00
Christoffer Lerno
ed5d338a39
Added new style named arguments.
2024-09-05 22:13:22 +02:00
Christoffer Lerno
e795745e43
lvalue refactoring.
2024-09-05 22:09:35 +02:00
Christoffer Lerno
5e4d790fc3
Fixing incorrectly solved generic module name collision bug.
2024-09-04 21:51:03 +02:00
Christoffer Lerno
7e47f4ed08
Generic methods were incorrectly registered as functions, leading to naming collisions. #1402
2024-09-04 15:13:29 +02:00
Christoffer Lerno
63fc77a861
Move of const to separate file and removal of old concat code.
2024-09-04 09:34:51 +02:00
Christoffer Lerno
59ff94c005
Issue where a lambda wasn't correctly registered as external. #1408
2024-09-03 23:25:47 +02:00
Christoffer Lerno
bbc199cda3
Some cleanup of asm and assert
2024-09-03 13:53:15 +02:00
Christoffer Lerno
df91ee3d2a
Update version.
2024-09-03 11:48:43 +02:00
Christoffer Lerno
528fecef4d
Create release.
2024-09-02 23:21:01 +02:00
Christoffer Lerno
d39f1a6af0
Fix to test.
2024-09-02 22:53:54 +02:00
Christoffer Lerno
4367ef11fa
Further fixing storeload.
2024-09-02 22:37:50 +02:00
Ikko Eltociear Ashimine
b8d77d2490
chore: update linux.c3
...
Recieve -> Receive
2024-09-02 11:07:34 +02:00
Christoffer Lerno
2600c3116c
Do not add the libc allocator if it isn't available.
2024-09-02 01:44:35 +02:00
Christoffer Lerno
2506c2579b
Prevent loading / storing large structs with LLVM.
2024-09-02 01:16:48 +02:00
Lars Nilsson
fe7392a656
Adding check of HTTP response code so that Windows will remove up the opened file if the download was not successful
2024-09-01 21:44:09 +02:00
Christoffer Lerno
8b7a3f1835
Optimize the value after foo()!!
2024-09-01 21:14:30 +02:00
Christoffer Lerno
e6acc56c1f
Bug where if try would work incorrectly in a macro.
2024-08-31 23:09:36 +02:00
Christoffer Lerno
d635cfb90f
printf will now show errors in the output when there are errors.
2024-08-31 19:36:18 +02:00
Christoffer Lerno
6cb6113c57
- Memory leak in Object when not using temp allocators.
...
- Tracking allocator would double the allocations in the report.
2024-08-31 03:35:39 +02:00
Alexey Kutepov
6aea0f12cd
Properly persist git hash on each build ( #1391 )
...
Properly persist git hash on each build
Rebuild `git_hash.h` only when `.git` folder changes
`add_custom_target()` always considers its target out-of-date which
leads to rebuilding of `git_hash.h` on every build (which is
ironically what we wanted) and consequently rebuilding of
build_options.c and relinking of c3c even when no changes are made,
which is mildly annoying.
We are replacing `add_custom_target()` with `add_custom_command()`
which depends on `.git`, so `git_hash.h` is only rebuilt if any git
commands are performed. Which is less annoying.
In case of no `.git` we simply do not depend on it which leads to
`git_hash.h` being rebuilt only once.
2024-08-30 15:01:08 +02:00
Christoffer Lerno
99ace59b45
Create a build library on --test.
2024-08-30 14:55:35 +02:00
Christoffer Lerno
31f9ed3e6b
Methods can now properly be aliased using def #1393 .
2024-08-30 12:50:39 +02:00
Christoffer Lerno
573c0881e9
Correctly use wincrt setting for in libraries.
2024-08-29 23:53:14 +02:00
Christoffer Lerno
7134b3ba35
Update Raylib examples to use Raylib5.
2024-08-29 23:34:31 +02:00
Christoffer Lerno
bc267e22bd
Add fmod implementation for nolibc.
2024-08-29 20:04:59 +02:00
Christoffer Lerno
3d83316b03
Regression: backtrace accidentally turned off by default.
2024-08-29 19:15:50 +02:00
Christoffer Lerno
dfe80eb050
Improve the error message when the compilation does not produce any files #1390 .
2024-08-28 11:16:39 +02:00
Christoffer Lerno
22151a0a03
Fix bug with defer (catch err) when used together with regular defer.
2024-08-28 10:41:59 +02:00
rexim
484a9acc6f
Print Git Hash on --version
2024-08-27 04:41:39 +02:00
Christoffer Lerno
26acce246d
Fixed int128 div/mod. Fix WASM memory init priority.
2024-08-27 04:31:14 +02:00
Christoffer Lerno
388578c209
Too restrictive compile time checks for @const. Fixes to wasm nolibc in the standard library.
2024-08-26 13:33:15 +02:00
Christoffer Lerno
b33cce385c
Fix of bug in defer (catch err) with a direct return error.
2024-08-26 11:49:41 +02:00
Christoffer Lerno
4b2019cf20
Add "allocator-required" functions.
2024-08-25 21:53:54 +02:00
Christoffer Lerno
61246d713d
Print linking in CI and fix win linking.
2024-08-25 21:10:24 +02:00
Christoffer Lerno
40455f5260
Print linking in CI
2024-08-25 20:30:21 +02:00
Christoffer Lerno
78ce03bd62
Prefer \ to concat windows paths.
2024-08-25 20:14:36 +02:00
Christoffer Lerno
61645d14fa
Only output -pie to the linker for executables. Fix issue assembling paths using concat_file_arg
2024-08-25 19:54:38 +02:00
Christoffer Lerno
d465ba5356
--test will now provide the full filename and the column.
2024-08-25 18:26:44 +02:00
Christoffer Lerno
8fde7cd6f5
--path is now properly respected.
2024-08-25 18:15:33 +02:00
Itzerr
734e0f350a
Fixed gencontext_begin_module using wrong reloc_model. ( #1384 )
...
Fixed gencontext_begin_module using wrong reloc_model.
2024-08-25 18:08:33 +02:00
Chuck Benedict
e1bbab3831
RISCV: Correct auipc imm; clarify signed imm error; add imm negative t… ( #1378 )
...
RISCV: Correct auipc imm; claify signed imm error; add imm negative tests. Allow fitted int asm imm const in uints; add rv regs
2024-08-25 11:19:30 +02:00
Christoffer Lerno
a870881fff
Allow "project.json5" to be used.
2024-08-25 00:19:08 +02:00
Christoffer Lerno
1ed3eab010
Assigning a const zero to an aliased distinct caused an error.
2024-08-24 14:37:27 +02:00
theunixer
dd16ecf63a
Essential dependency to build(llvm17-devel) on void linux was not mentioned.
2024-08-24 11:10:59 +02:00
Christoffer Lerno
d1a0ec5a35
Compiler didn't detect when a module name was used both as a generic and regular module.
2024-08-23 19:31:49 +02:00
Nikita Pivkin
cb790b4672
Remove unused parameters from check_col and check_row
...
Signed-off-by: Nikita Pivkin <nikita.pivkin@smartforce.io >
2024-08-23 19:03:03 +02:00
Christian Buttner
19d37ef641
Add types::is_signed, is_unsigned and inner_type. ( #1365 )
...
Add `types::is_signed`, `is_unsigned` and `inner_type`.
2024-08-23 19:01:05 +02:00
Christoffer Lerno
0722011385
Fix of compile arguments.
2024-08-23 16:47:19 +02:00
Christian Buttner
59ed118e66
Address/memory/thread sanitizer.
2024-08-23 16:06:22 +02:00
Christoffer Lerno
d54468d7ed
Simplify some asm code and update releasenotes for RISCV
2024-08-23 10:23:17 +02:00
Christoffer Lerno
218f1a6ead
Add support for vendor specific extensions in project.json and manifest.json.
2024-08-22 12:49:14 +02:00
Christoffer Lerno
abbd94e89b
Add iOS and Android targets.
2024-08-22 00:31:03 +02:00
Christoffer Lerno
b46463563e
Add path test windows and escape in double quote.
2024-08-21 10:37:50 +02:00
Christoffer Lerno
33ce8e8a75
Add path test windows.
2024-08-21 10:15:45 +02:00
Chuck Benedict
05ab0707fc
Add RISC-V block asm support
2024-08-20 22:42:38 +02:00
Christoffer Lerno
d32861193b
DynamicArenaAllocator would not correctly free.
2024-08-20 22:42:01 +02:00
Christoffer Lerno
fb4a231703
Add $member.get(value) to replace value.$eval($member.nameof)
2024-08-20 14:24:12 +02:00
Christoffer Lerno
0963ab4cc0
Update readme.
2024-08-19 23:52:39 +02:00
Christoffer Lerno
a248511d7b
Added ElasticArray
2024-08-19 23:20:14 +02:00
Christoffer Lerno
79a1639f8a
Fix aligned alloc for Win32 targets.
2024-08-19 15:25:00 +02:00
Christoffer Lerno
476a6424ee
insert_at incorrectly prevented inserts at the end of a list.
2024-08-19 11:44:06 +02:00
Christoffer Lerno
6de17b9ae9
Fix use of deprecated function. Fix bug when compile time subtracting a distinct type. Fix test/benchmark debug info use.
2024-08-19 09:36:45 +02:00
Christoffer Lerno
cb7116f08b
New linker options handling
2024-08-19 01:28:57 +02:00
Christoffer Lerno
15a4e23b22
Benchmark / test no longer suppresses debug info. #1364
2024-08-18 22:29:41 +02:00
Christoffer Lerno
2b0857baf9
Add connection reset error.
2024-08-18 20:01:54 +02:00
Christoffer Lerno
20b0bf43ad
Fix of dstring.
2024-08-18 09:50:54 +02:00
Christoffer Lerno
17d6f03bae
New hashmap type, Map
2024-08-18 00:37:24 +02:00
Owen Shepherd
4edaf603c9
fix: Guard against uninitialized hashmap in key removal
...
Removing non-present keys is a supported operation on HashMaps,
and most other operations are well-defined on uninitialized
HashMaps.
Currently, removing any key on an uninitialized HashMap will
result in an 'Array index out of bounds' error.
This change guards against such a case.
2024-08-17 02:35:04 +02:00
Christoffer Lerno
74b8da1e15
Avoid any constants that have the "untyped list" type but isn't a CONST_UNTYPED_LIST.
2024-08-16 21:49:21 +02:00
Christoffer Lerno
16cb756d3f
Bug converting untyped list #1360
2024-08-16 18:33:30 +02:00
Christoffer Lerno
f1efdf3d98
Incorrect zero analysis on foo["test"] = {} #1360
2024-08-16 16:50:58 +02:00
Christoffer Lerno
edfea639cf
- Introduce $vaarg[...] syntax and deprecate the old $vaarg(...).
...
- Similar change to `$vasplat`: `$vasplat` and `$vasplat[1..]`.
2024-08-16 09:28:28 +02:00
Christoffer Lerno
9fd9280132
Fix incorrect parsing of $exec.
2024-08-16 00:07:09 +02:00
Christoffer Lerno
d0bb69516a
Missing check on optional left hand side for s.x. #1360
2024-08-15 21:15:59 +02:00
Christoffer Lerno
dc44254ba1
Debug info with recursive canonical type usage could cause segfault.
2024-08-15 20:22:56 +02:00
Christian Buttner
85c682f7e6
Escape arguments to platform linker/compiler. ( #1358 )
...
* Escape arguments to platform linker/compiler.
2024-08-15 15:01:53 +02:00
Christoffer Lerno
2a69f93605
Issues with wincrt linking.
2024-08-15 13:33:08 +02:00
Christoffer Lerno
ad4950130c
Remove use of tappend in rmtree on windows.
2024-08-15 00:40:01 +02:00
Christoffer Lerno
3ccb4b9ec3
$exec may now provide a stdin parameter. Deprecated path.append, path.tappend, getcwd, tgetcwd, path.absolute, ls. Deprecated env::get_config_dir, replaced by env::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 Updated win escapes for exec.
2024-08-15 00:31:47 +02:00
Christoffer Lerno
6bc486400c
Add globals to -P output.
2024-08-13 22:50:45 +02:00
Christoffer Lerno
9228dbb8b8
Fix ordering issues with $include / $exec by adding a pass #1302 .
2024-08-13 22:19:53 +02:00
Christoffer Lerno
e68b453218
Do not bundle output with docker.
2024-08-13 15:23:56 +02:00
Christoffer Lerno
1dd2b0ec19
Add a few newlines to maybe keep some compilers happy.
2024-08-13 14:33:33 +02:00
Tom Clesius
e7e9d3b8c7
Adapt Docker script and Dockerfile ( #1347 )
...
Adapt Docker script and Dockerfile
2024-08-13 13:37:16 +02:00
kostyavechkanov
800ad9e898
Feature/add-target ( #1 ) ( #1350 )
...
Feature/add target (#1 ) project add-target command
2024-08-13 13:34:53 +02:00
Christoffer Lerno
ddecf2d5f0
Correctly show macOS version settings for project.json
2024-08-13 10:25:15 +02:00
Mikhail Shimanov
09da17dab7
Update README.md
...
Duplicate package removed
2024-08-12 23:26:38 +02:00
Christoffer Lerno
1678e2a939
Assert not properly traced #1354 . Update interface fix.
2024-08-12 21:01:04 +02:00
Christoffer Lerno
9aab962ebc
Interface resolution when part of generics #1348 .
2024-08-12 10:25:53 +02:00
Christoffer Lerno
baf6e71a80
Fix interface lazy resolution errors. Fix i128 change in LLVM.
2024-08-12 01:25:30 +02:00
Christoffer Lerno
412fa4b12f
Use PIE/PIC on Linux
2024-08-11 23:00:38 +02:00
Christoffer Lerno
3cae557b88
Int128 alignment fixed on x64 Linux.
2024-08-11 22:48:21 +02:00
Christoffer Lerno
f7c39ae4a9
Recursively follow interfaces when looking up method.
2024-08-11 21:16:02 +02:00
Christoffer Lerno
6d93ce9d33
Update to libc::setjmp on Win32, to do no stack unwinding.
2024-08-11 18:22:14 +02:00
Sergwest
031cbae0d6
added the necessary library to build on void linux in the README.md
2024-08-11 17:07:48 +02:00
Christoffer Lerno
5fbee47c2b
Update version information,
2024-08-11 17:03:21 +02:00
Christoffer Lerno
2cd25a489a
Fix of global state init.
2024-08-11 16:55:40 +02:00
Christoffer Lerno
e67586b8b0
Fixes to library loading and test sources.
2024-08-11 16:46:53 +02:00
Christoffer Lerno
7d643942b4
Fix issues when checking methods and interfaces hasn't been resolved yet.
2024-08-11 16:16:16 +02:00
Christoffer Lerno
2257a7f4ec
Comment out decl size.
2024-08-11 15:14:52 +02:00
Christoffer Lerno
f8ca173fd8
Refactoring a bit.
2024-08-11 15:05:36 +02:00
Christoffer Lerno
b08e6743be
When resolving inherited interfaces, the interface type wasn't always resolved.
2024-08-11 10:19:20 +02:00
Christoffer Lerno
a97e4fe42d
Add temp allocator scribble. Make bufferstream safer.
2024-08-11 01:17:25 +02:00
Christoffer Lerno
2706495668
Add temp allocator scribble. Make bufferstream safer.
2024-08-11 01:17:03 +02:00
Christoffer Lerno
224c3f4123
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'.
2024-08-11 00:27:06 +02:00
Christoffer Lerno
f2911be116
Assertion when has_tagof is accidentally called on fn type #1343
2024-08-10 21:59:41 +02:00
Christoffer Lerno
05c5eaed48
Add deprecation notice for $and, $or, $concat, $append.
2024-08-10 21:25:13 +02:00
Christoffer Lerno
8541e9535e
Fix print when a tag is not found.
2024-08-10 21:15:19 +02:00
Christoffer Lerno
811cb2b95c
Add string methods to json, and fix issue in dstring when the formatter uses temp. Remove unnecessary use of temp allocator in to_format for json.
2024-08-10 19:13:58 +02:00
Christoffer Lerno
05421223be
Add --silence-deprecation
2024-08-10 09:54:59 +02:00
Christoffer Lerno
808a6b82f3
Add simple UTF16 detection.
2024-08-10 02:50:42 +02:00
Christian Buttner
30af7f1ca6
Add c-include-dirs project/manifest setting. ( #1338 )
...
Set the include directories to be used when compiling C sources.
2024-08-10 01:51:59 +02:00
Christoffer Lerno
274e5280cb
Rename muldiv and update tests for LLVM 20
2024-08-09 23:56:26 +02:00
Samuel Goad
f85c4cd79f
Update string_iterator.c3 to include extra convenience methods ( #1327 )
...
Update string_iterator.c3 to include extra convenience methods
Added peek: returns the next character without incrementing current
Added has_next: checks if the iterator has another element
Added get: gets the current element (the same one that was returned with the previous call to next).
2024-08-09 23:10:46 +02:00
Lexi
696d39b922
Move safe_mul_div macro and make it generic on integer types ( #1334 )
...
Move safe_mul_div macro and make it generic on integer types
2024-08-09 22:54:26 +02:00
Christoffer Lerno
d997445284
The compiler now skips UTF8 BOM.
2024-08-09 22:39:24 +02:00
Christoffer Lerno
f3e5268083
% analysis was incorrect for int vectors.
2024-08-09 15:23:40 +02:00
Christoffer Lerno
44db4a21fc
Add @tag and .tagof .has_tagof. Allow bitstructs to have attributes.
2024-08-09 15:03:44 +02:00
Christoffer Lerno
c8a113384c
Better precision with Clock on Win32
2024-08-08 23:03:04 +02:00
Lexi Allen
07e7bc0a94
Fix win32 native_clock() by converting native performance counter value to nanoseconds using previously gotten frequency value
2024-08-08 21:14:58 +02:00
Prithviraj Renjella Rajendra Prasad
7c8acbe485
Implemented arg passing to clean-run and run commands ( #1328 )
...
* added clean-run and run commands to list of commands that pass args
* Updated compiler usage message to reflect that commands run and clean-run accept args
2024-08-08 16:24:00 +02:00
Christoffer Lerno
65c2126202
Removing tb codegen info, because it's sure to have code-rotted by now.
2024-08-08 12:55:40 +02:00
Christoffer Lerno
0ef0f62b69
Only destroy temp allocators on env::LIBC.
2024-08-08 12:48:01 +02:00
Christoffer Lerno
921422a189
Fix Vec2.angle
2024-08-08 01:48:39 +02:00
Christoffer Lerno
56b771a7ad
Support destroying temp allocators, and destroy temp allocators on exit.
2024-08-07 16:24:26 +02:00
Christoffer Lerno
d2988e6a88
With single module, name the .o file after what -o provides. #1306
2024-08-07 01:35:09 +02:00
Velikiy Kirill
16510d2400
Update tcp.c3 to finally (i guess) fix Windows Sockets ( #1324 )
...
Update tcp.c3
2024-08-06 21:20:59 +02:00
Christoffer Lerno
6f790598ef
Update manifest.json template. #1321
2024-08-06 17:42:23 +02:00
Christoffer Lerno
63f0c7b2fe
'wincrt' in manifest.json should now be respected #1322
2024-08-06 17:37:43 +02:00
Christoffer Lerno
800f7970a7
Fixes to the socket functions. Improved output when pointer is out of range. Better error when casting to a distinct fails.
2024-08-06 17:08:03 +02:00
Velikiy Kirill
b7381fc075
Adding win32_WSACleanup()
2024-08-06 15:59:36 +02:00
Christoffer Lerno
b1785606cc
LLVM codegen for constants in enums could fail.
2024-08-06 00:28:03 +02:00
Christoffer Lerno
387d7d5508
Fix defer on 19/20
2024-08-05 23:15:55 +02:00
Christoffer Lerno
6adacf8892
Fix module name regression.
2024-08-05 23:04:29 +02:00
Christoffer Lerno
f7d6f93f1b
Refactoring -> ensure built in aliases have a valid unit.
2024-08-05 22:48:18 +02:00
Dodzey
9daa173ab7
Add methodsof to type info ( #1303 )
...
Add `methodsof` to type info for struct, union and bitstruct
2024-08-05 21:58:13 +02:00
Lexi
e748f72447
Project view command ( #1314 )
...
Add parsing for the project command and view subcommand. Add basic implementation of c3c project view. Move get_valid_integer into common build.
Co-authored-by: Christoffer Lerno <christoffer.lerno@gmail.com >
2024-08-05 21:45:15 +02:00
Christoffer Lerno
14358417c8
Refactoring -> ensure built in aliases have a valid unit.
2024-08-05 21:44:02 +02:00
Oloruntobi1
8aa3461bf6
[DOCS] updated readme with issue 1086 link
2024-08-05 19:55:04 +02:00
Christoffer Lerno
04c37a98b5
Formatting.
2024-08-05 19:53:39 +02:00
rexim
4850f1e94b
Ignore EINTR return from waitpid
...
Apparently it is a thing that can happen and for example musl just
ignores such situations and tries to wait again.
dd1e63c363/src/process/system.c (L39)
2024-08-05 19:53:05 +02:00
Christoffer Lerno
60945ffe58
Fix of tests.
2024-08-05 19:52:34 +02:00
Christoffer Lerno
746016996c
Variable in if-try / if-catch cannot be a reused variable name.
2024-08-05 18:43:04 +02:00
Christoffer Lerno
67a2734777
Issue where a if (catch e = ...) in a defer would be incorrectly copied. Causing codegen error.
2024-08-05 15:20:50 +02:00
Christoffer Lerno
b208fc7cf5
Add unreachable.
2024-08-04 23:40:28 +02:00
Christoffer Lerno
2748cf99b3
- Fix issue where a compile time parameter is followed by "...".
...
- Fix issue with some conversions to untyped list.
- Experimental change: add `+++` `&&&` `|||` as replacement for `$concat`, `$and` and `$or`.
2024-08-04 23:16:25 +02:00
Christoffer Lerno
b49b60ab5f
Fix compiler timings.
2024-08-04 11:21:23 +02:00
Christoffer Lerno
620c67b04e
Bug in List add_array when reserving memory.
2024-08-04 01:34:45 +02:00
Alexey Kutepov
a5b5f315d1
Implement passing arguments to program via compile-run ( #1296 )
2024-08-03 19:47:52 +02:00
Christoffer Lerno
43ea05aad2
Remove $expand.
2024-08-03 12:47:19 +02:00
Halen84
0ec1c80221
Fix typo in parse_global.c
...
In parse_def_ident()
2024-08-03 03:50:55 +02:00
Christoffer Lerno
d91c289bf6
Distinct inline can now be called if it is aliasing a function pointer.
2024-08-03 03:08:38 +02:00
Christoffer Lerno
74b9971494
Add wincrt setting to libraries.
2024-08-02 20:15:40 +02:00
Christoffer Lerno
f8f116109a
Use back-off strategy when allocating virtual memory.
2024-08-02 15:45:16 +02:00
Christoffer Lerno
8498cb6258
Add @const attribute for macros, for better error messages with constant macros #1293
2024-08-02 15:01:02 +02:00
Yhya Ibrahim
7a72f44f64
Add --run-once option to delete the output file after running it ( #1295 )
...
Add `run-once` option to delete the output file after running it
2024-08-02 12:47:36 +02:00
Christoffer Lerno
a90e3c440b
Distinct inline would not implement protocol if the inlined implemented it. This closes #1292
2024-08-02 11:37:38 +02:00
Christoffer Lerno
1aab8b87ec
Add experimental @noalias attribute.
2024-08-01 22:57:26 +02:00
Christoffer Lerno
ebf071ac51
Fix incorrect override of optimization levels when using projects.
2024-08-01 21:40:51 +02:00
Christoffer Lerno
3d0fc33441
&& doesn't work correctly with lambdas #1279 .
2024-08-01 21:16:23 +02:00
Christoffer Lerno
c50df85976
Fix docs to match the update in supporting LLVM 17+ only.
2024-08-01 20:04:54 +02:00
Christoffer Lerno
db9fc20acf
Wrapper RTTI now follows LLVM RTTI.
2024-08-01 19:58:52 +02:00
Christoffer Lerno
10058cf271
- Distinct func type would not accept direct function address assign. #1287
2024-08-01 16:26:50 +02:00
Christoffer Lerno
310dadef45
No type_lowering in the frontend.
2024-08-01 13:26:47 +02:00
Christoffer Lerno
3159f036a2
Update lowering for function pointers.
2024-08-01 11:37:40 +02:00
Christoffer Lerno
c3e426c82a
Assertion with duplicate function pointer signatures #1286
2024-08-01 01:52:26 +02:00
Christoffer Lerno
b83d388523
Incorrect justify formatting of integers.
2024-08-01 01:20:42 +02:00
Christoffer Lerno
d8820259d2
Enable LLVM 19
2024-08-01 00:21:14 +02:00
Christoffer Lerno
354d78e893
Temporarily disable LLVM for Linux
2024-08-01 00:12:01 +02:00
Christoffer Lerno
7f00f35f4b
$expand macro, to expand a string into code. opt project setting now properly documented.
2024-08-01 00:07:16 +02:00
Yhya Ibrahim
8c33b073c2
Fix a warning/error where C compilers can not predict that a variable is initialized
2024-07-31 18:05:26 +02:00
Christoffer Lerno
d6490c9bab
Make it possible to set max limit for memory pages.
2024-07-31 18:03:52 +02:00
PalsFreniers
b0e104bfd0
Adding Termios library as std::libc::termios (posix libc functions) ( #1272 )
...
Adding libc's termios to lib/std/libc
2024-07-31 14:45:04 +02:00
Chuck Benedict
563e677b08
Add Riscv Example ( #1268 )
...
Add Riscv example. Risc-V CI. Install baremetal toolchain. Prevent imported crt file from messing up linker search.
2024-07-31 14:43:47 +02:00
Ikko Eltociear Ashimine
7664d0568e
Update bytewriter.c3
...
minor fix
2024-07-31 01:37:12 +02:00
Christoffer Lerno
e1a13e433f
Experimental xtensa support
2024-07-31 01:36:28 +02:00
Dodzey
d212f7d946
Remove extra item
2024-07-30 17:52:14 +02:00
Christoffer Lerno
8d6dabf65c
Struct members declared in a single line declaration were not sharing attributes. #1266
2024-07-30 02:45:50 +02:00
Dmitry Atamanov
a4c5b85db8
Remove extra space.
2024-07-29 15:16:14 +02:00
Christoffer Lerno
e66001c182
Using winmain would call the wrong definition #1265 .
2024-07-29 15:04:32 +02:00
Christoffer Lerno
08c7b35731
Improve the error message when typing fn void Foo().
2024-07-28 21:08:47 +02:00
Christoffer Lerno
35cb36fcea
Fix incorrect linker selection.
2024-07-28 17:55:59 +02:00
Christoffer Lerno
bf8ca989d6
Add --show-backtrace option to disable backtrace for even smaller binary.
2024-07-28 01:10:59 +02:00
Christoffer Lerno
4976ebcef4
Permit foreach values to be optional. Update matching algorithm.
2024-07-27 21:53:44 +02:00
Christoffer Lerno
51661f5c55
c3c init-lib does not create the directory with the .c3l suffix #1253
2024-07-27 11:52:56 +02:00
Christoffer Lerno
3cbb10392c
Don't generate .o files on compile and compile-run if there is no main.
2024-07-27 05:00:27 +02:00
Christoffer Lerno
168ce752d1
Package Linux binaries in a folder called "c3" and not "linux"
2024-07-27 02:49:09 +02:00
Christoffer Lerno
8fcf9bc6bf
Give some symbol name suggestions when the path is matched.
2024-07-27 01:21:02 +02:00
Christoffer Lerno
56f43f55f3
Add WASM test.
2024-07-26 21:39:45 +02:00
Christoffer Lerno
9386ac026d
dbghelp.lib was linked even on nolibc on Windows.
2024-07-26 20:54:57 +02:00
Christoffer Lerno
e1565ccdc5
Regression: Invalid is_random implementation due to changes in 0.6.
2024-07-26 20:49:17 +02:00
Christoffer Lerno
34993a20fd
Fix broken WASM std library code.
2024-07-26 19:20:58 +02:00
Christoffer Lerno
ea0124433a
Remove "EXPR_GROUP" to simplify the code somewhat.
2024-07-26 14:34:08 +02:00
Christoffer Lerno
73b15c691d
Deprecate *-add settings, use without -add. Updated CI.
2024-07-26 03:23:30 +02:00
Christoffer Lerno
623dd9f3b3
Added "weak" type aliases def Foo = my_foo::Foo @weak;
2024-07-26 01:13:48 +02:00
Christoffer Lerno
379637f214
Scalar -> vector not implicit in call or assign.
2024-07-24 14:00:09 +02:00
Christian Buttner
26ca8f7777
Add type property is_substruct.
2024-07-24 14:00:09 +02:00
Christoffer Lerno
237f7e7f1a
Updated stats.
2024-07-24 14:00:09 +02:00
Christoffer Lerno
34fc9851bf
Update wrapper
2024-07-24 14:00:09 +02:00
Christoffer Lerno
abdaca08fe
Add new optimizer runner.
2024-07-24 14:00:09 +02:00
Christoffer Lerno
bdc9f339c9
The msvc_sdk script failed to work properly on windows when run in folders with spaces
2024-07-24 13:18:26 +02:00
Christoffer Lerno
3188d4d858
Reference parameter doesn't work with vector subscript #1250 .
2024-07-23 21:20:40 +02:00
Christoffer Lerno
1bb76b1a49
Unsplat with named parameters was accidentally disallowed.
2024-07-22 11:44:34 +02:00
Christoffer Lerno
9584efd84c
Update AVX support.
2024-07-22 02:34:33 +02:00
Christoffer Lerno
c84bc8a8f3
Add convenience function.
2024-07-21 00:43:16 +02:00
Christian Buttner
edc55a2afd
Small fixes to stdlib. ( #1247 )
...
Small fixes to stdlib. Match the signature of `NativeConditionVariable.wait_timeout` and `NativeMutex.lock_timeout` of thread_win32.c3 to `ConditionVariable.wait_timeout` and `TimedMutex.lock_timeout` to avoid casting errors. Add `time::us`.
2024-07-20 19:19:16 +02:00
Christoffer Lerno
480325177c
Remove accidental debug code.
2024-07-20 18:40:25 +02:00
Christoffer Lerno
03cfa42eb6
Duplicate symbols with static variable declared in macro #1248 . Improved error message when trying user foreach with an untyped list.
2024-07-20 03:39:33 +02:00
Christoffer Lerno
b25c573ae3
Indexing into a constant array / struct now works at compile time. Constants defined by indexing into another constant could fail codegen. Stdlib nolibc code bugs fixed.
2024-07-20 01:20:03 +02:00
Christoffer Lerno
7f5757d66b
Add .dot to integer vectors.
2024-07-19 11:34:05 +02:00
Christoffer Lerno
a3a275c3d5
Updated linux build
2024-07-19 11:10:59 +02:00
Christoffer Lerno
557f007b12
Spelling
2024-07-19 10:38:52 +02:00
Christoffer Lerno
542406c16f
Exclude 18 for linux for now.
2024-07-19 01:13:49 +02:00
Christoffer Lerno
1fa870411f
Separate LLVM18 compile for Linux in CI
2024-07-19 00:36:04 +02:00
Christoffer Lerno
c096487eea
Test if this fixes LLVM 18 compilation.
2024-07-19 00:32:27 +02:00
Christoffer Lerno
97a8e0cdd4
Retain backwards compatibility with old manifest.json.
2024-07-19 00:23:54 +02:00
Christoffer Lerno
eb20a5c051
mainfest.json is now checked for incorrect keys. Added --list-manifest-properties to list the available properties in manifest.json.
2024-07-19 00:03:05 +02:00
Christoffer Lerno
5c6acf89da
Added docs to io.c3
2024-07-18 20:44:36 +02:00
Christoffer Lerno
9dfe7ddbde
Add wrapper methods, use LLVM-transforms directly.
2024-07-18 20:44:36 +02:00
Christian Buttner
8285720180
Add tests and improvements for @nopadding and @compact.
2024-07-17 17:00:36 +02:00
Christoffer Lerno
a4a1a42842
Update llvm build to use on windows.
2024-07-17 16:55:55 +02:00
Christoffer Lerno
3c3217ab2b
Fix PIE.
2024-07-16 14:58:48 +02:00
Alex Anderson
17ee3887dd
Use usz and fix out of bounds access in branchless loop
2024-07-16 13:22:11 +02:00
Alex Anderson
db75da65db
Make countingsort.c3's recursion stage branchless
...
Tracks the three potential cases for each fallback, item counts ranging from [2,32], [33,128], [128, ...] and uses a loop specifically for each fallback.
2024-07-15 22:25:59 +02:00
Christoffer Lerno
cf95257c81
Fix test (again).
2024-07-15 17:30:42 +02:00
Christoffer Lerno
b40036c203
Fix test.
2024-07-15 17:04:06 +02:00
Christian Buttner
b18661a8b0
Make stdlib mem::allocator more complete. ( #1238 )
...
Make stdlib mem::allocator more complete. Fill in some gaps and docstrings. List.to_new_array. Handle overalignment smoothly in list.
2024-07-15 16:35:40 +02:00
Christoffer Lerno
bc0d52142a
Added pull request #1189 : Fix os::native_is_{file,dir} bug. Add tests.
2024-07-15 03:02:54 +02:00
Christoffer Lerno
24041ed80d
Macro $case statements now pick the first match and does not evaluate the rest. Added countingsort tests #1234 .
2024-07-15 02:01:26 +02:00
Christoffer Lerno
1a03e6b22e
Prevent implicit array casts to pointers with higher alignment. #1237
2024-07-14 23:44:05 +02:00
Christoffer Lerno
68fb916195
Fix when memcmp is defined.
2024-07-14 16:51:38 +02:00
Christoffer Lerno
dfb8a1b8cb
Improved bool and float array comparisons.
2024-07-14 14:16:17 +02:00
Christoffer Lerno
6c38409c57
Array comparison now uses built-in memcmp on LLVM to enable optimizations.
2024-07-14 01:35:19 +02:00
Christoffer Lerno
27fd7a9088
- Fix problem where a $$FUNC would return "<GLOBAL>" when evaluated for a static in a function #1236 .
2024-07-13 19:57:04 +02:00
Christoffer Lerno
0e62423e06
Bitstruct in struct fix.
2024-07-13 01:54:45 +02:00
Christoffer Lerno
3f45ed14b9
Compare @compact structs.
2024-07-12 23:54:07 +02:00
Christoffer Lerno
ca4b782912
MemberIndex -> ArrayIndex
2024-07-12 18:27:05 +02:00
Christian Buttner
1976a11154
@nopadding and @compact attributes (#1235 )
...
Add `@nopadding` attribute. `@compact`
2024-07-12 18:25:09 +02:00
Christoffer Lerno
e7d8f64a49
Compile c files to separate directories. Add compressed library to example test project.
2024-07-10 13:35:01 +02:00
Christoffer Lerno
5cf1f13328
Private function called from nested macro not visible to linker #1232
2024-07-09 22:01:39 +02:00
Christoffer Lerno
fba706f10b
Updated sorting code.
2024-07-09 01:04:11 +02:00
Alex Anderson
c50630989e
draft: add countingsort.c3 ( #1230 )
...
Draft countingsort.c3
2024-07-08 21:08:57 +02:00
Christoffer Lerno
3832be94d0
Added sort helper function.
2024-07-08 21:02:49 +02:00
Alex Anderson
900c1152d3
add insertion sort ( #1225 )
2024-07-08 18:53:47 +02:00
Christoffer Lerno
4ea50a8a85
Update version.
2024-07-08 17:39:31 +02:00
Christoffer Lerno
0132fd4101
Bad error message when using a generic method without generic parameters #1228
2024-07-08 17:32:39 +02:00
Christoffer Lerno
0e90ce3b8a
Prevent accidental delete of lib folder when building.
2024-07-08 14:05:09 +02:00
Christoffer Lerno
9368ebfbd3
Allow using $defined(&a[1]) to check if the operation is supported.
2024-07-08 01:42:34 +02:00
Christoffer Lerno
8381dbbd8f
Fix incorrect INLINE on const init function.
2024-07-07 23:29:57 +02:00
Christoffer Lerno
343ccaa2ef
Support c-file compilation in libraries.
2024-07-07 11:21:31 +02:00
Christoffer Lerno
3f62775f4b
Support c-file compilation in libraries.
2024-07-07 02:04:37 +02:00
Christoffer Lerno
c3ecad96b7
Update CI, add example.
2024-07-05 16:53:49 +02:00
Christoffer Lerno
2ffb0cf5f7
Fix ABI lowering for 128 bit vectors on Linux.
2024-07-05 16:07:17 +02:00
Christoffer Lerno
ef716f3a69
Pull requests to dev also have a test action.
2024-07-05 15:17:23 +02:00
Christoffer Lerno
cc935862b7
Build using LLVM 18
2024-07-05 02:06:37 +02:00
Christoffer Lerno
85a535dd0c
$typeof(*x) should be valid when x is an [out] parameter #1226
2024-07-04 16:50:35 +02:00
Christoffer Lerno
ab626fe3eb
Update avoid warning in FetchContent
2024-07-04 12:07:01 +02:00
Christoffer Lerno
05011df13a
Update flags to mac compile
2024-07-04 02:36:17 +02:00
Christoffer Lerno
fcdb25c426
Update some comments and variable names.
2024-07-04 02:15:08 +02:00
Christian Buttner
cc9ca35e04
Add $debugtrap builtin. ( #1220 )
...
Add `$breakpoint` builtin.
2024-07-04 00:50:29 +02:00
Christoffer Lerno
4a50de8318
Use LLVM 18 by default. Update MSVC to LLVM 18.1.8.
2024-07-04 00:48:35 +02:00
Christian Buttner
12051e7544
Fix $$unaligned_store arg check and add test. ( #1224 )
...
Fix `$$unaligned_store` arg check and add test.
2024-07-04 00:44:32 +02:00
Christoffer Lerno
210508fe4f
Updated test.
2024-07-03 15:59:46 +02:00
Christoffer Lerno
ba5b045351
Fix Type->$Type in allocator #1223
2024-07-03 15:57:17 +02:00
Christoffer Lerno
9a19eeacb3
Added further tests to #1219
2024-07-03 15:14:50 +02:00
Christian Buttner
10ed03d6bf
Extend win32 stdlib API.
2024-07-03 11:11:34 +02:00
Christoffer Lerno
3be1bf4384
Added test and updated releasenotes for formatter changes.
2024-07-02 23:28:23 +02:00
Christian Buttner
3396b20661
Fix formatter crash for null ZString, print "(null)" for null pointers.
2024-07-02 23:24:18 +02:00
Christoffer Lerno
c9e1140189
Reorganizing the Windows OS files.
2024-07-02 17:37:45 +02:00
Christoffer Lerno
416cd30b42
Wrong size for structs containing overaligned structs #1219
2024-07-02 15:17:41 +02:00
Christoffer Lerno
d66a07cc55
Add defer catch test.
2024-07-02 13:57:48 +02:00
Christoffer Lerno
ce17dbe240
Bug fix for rethrow + defer catch. More types and functions for win32
2024-07-02 02:48:48 +02:00
Christoffer Lerno
326fc501e2
Simplified @is_comparer
2024-07-02 00:36:05 +02:00
Christoffer Lerno
91ad3ee0a2
Fix regression for math::log
2024-07-01 16:52:39 +02:00
Christoffer Lerno
2993c422c1
Fix to scalar -> vector conversions.
2024-07-01 15:03:40 +02:00
Christian Buttner
6f8cdde7e4
Added a --no-headers option.
2024-07-01 13:38:58 +02:00
Christoffer Lerno
f521a0dd77
FOREACH_BEGIN / VECEACH replaced by FOREACH / FOREACH_IDX
2024-07-01 13:31:41 +02:00
Christian Buttner
12fdb58da6
Implicitly cast distinct inline to index. ( #1218 )
...
Implicitly cast distinct inline to index.
2024-07-01 13:16:39 +02:00
Christoffer Lerno
09876cefde
@unaligned_store and @unaligned_load
2024-06-30 01:05:57 +02:00
Christoffer Lerno
d1e2ea7635
Require MSVC 17.7 or higher.
2024-06-29 20:47:25 +02:00
Christoffer Lerno
7b131f2a45
Print MSVC version
2024-06-29 20:35:23 +02:00
Christoffer Lerno
f3d5e3d4c2
Set minimum LLVM version for compilation.
2024-06-29 20:30:37 +02:00
Christoffer Lerno
492f83f5e2
Bit negating const zero flags would give an incorrect result. #1213
2024-06-28 16:43:57 +02:00
Christoffer Lerno
7dcd1618d8
Fixes to header gen.
2024-06-28 11:28:05 +02:00
Christoffer Lerno
e2a39aa12e
Updated mangling code.
2024-06-28 00:57:14 +02:00
Christoffer Lerno
043833be7b
Fixes to casts.
2024-06-27 19:32:45 +02:00
Christoffer Lerno
ad394c19d5
Remove asserts from header gen.
2024-06-27 17:21:08 +02:00
Christoffer Lerno
05592183b1
Fixed distinct comparison behaviour.
2024-06-27 15:06:23 +02:00
Christoffer Lerno
079cbb8f68
Updated module mangling, restrict module names.
2024-06-27 13:37:37 +02:00
Christoffer Lerno
3bddde20ab
Fixes to distinct inline conversions.
2024-06-26 21:48:10 +02:00
Christoffer Lerno
0a8a63bc15
Fix to headergen. Updated module name store.
2024-06-26 11:43:14 +02:00
Christoffer Lerno
fd2491446a
Update mangling.
2024-06-24 21:55:49 +02:00
Christoffer Lerno
26f3fe37f4
Fix of built in aliases for headers.
2024-06-24 17:23:59 +02:00
Christoffer Lerno
4cff80ecea
Header exports implicit.
2024-06-24 15:04:44 +02:00
Christian Buttner
83fe94d497
Fix posix NativeConditionVariable.wait_timeout. ( #1211 )
...
Fix posix NativeConditionVariable.wait_timeout. TimeSpec::ns may not exceed one second.
2024-06-24 11:52:21 +02:00
Christoffer Lerno
616bde2c4d
Further header updates.
2024-06-24 11:34:23 +02:00
Christian Buttner
0b971c2bd0
Fix off-by-one errors for stdlib unicode conversions.
2024-06-23 23:46:19 +02:00
Christoffer Lerno
201b1b7fbc
- Bitstructs, unions and flexible arrays now correctly emitted in headers.
...
- Require `@export` functions to have `@export` types.
2024-06-23 23:39:58 +02:00
Christoffer Lerno
b0b976ee52
Fix JSON and compile issue.
2024-06-23 17:40:56 +02:00
Christoffer Lerno
7020569f45
Cleanup.
2024-06-23 16:36:04 +02:00
Christoffer Lerno
e153c76719
Bit negate now properly does type promotion.
2024-06-23 16:13:37 +02:00
Christoffer Lerno
e7f9c11a14
"panic-msg" setting to suppress panic message output.
2024-06-23 10:42:03 +02:00
Christoffer Lerno
f2e5c5e9b9
- Fix bug with @jump miscompile
...
- Remove "panic" text from unreachable() when safe mode is turned off.
2024-06-22 23:20:23 +02:00
Christoffer Lerno
e02f73417c
Trailing body arguments may now be &ref, #hash, $const and $Type arguments.
2024-06-22 22:04:20 +02:00
Christian Buttner
41db9c43e5
Allow omitting = true for designated initializers of bitstruct bools.
2024-06-22 15:57:41 +02:00
Christoffer Lerno
0dc2f0e923
Make function pointers comparable with null again.
2024-06-22 15:38:19 +02:00
Christoffer Lerno
5940d5ddad
Removal of unused code.
2024-06-21 23:24:05 +02:00
Christoffer Lerno
684850dda1
Fixing flexible array resolution.
2024-06-21 18:36:39 +02:00
Christoffer Lerno
e8e615f4db
Remove superfluous code and flags for type resolution.
2024-06-21 17:45:33 +02:00
Christoffer Lerno
559b060b6b
Fix bug in header gen.
2024-06-21 12:31:50 +02:00
Christoffer Lerno
581262d736
Try LLVM 19 support.
2024-06-21 11:44:27 +02:00
Christoffer Lerno
8878a49a1d
Introduction of TYPE_FUNC_PTR / TYPE_FUNC_RAW. Fixed rules for function pointers.
2024-06-21 10:46:28 +02:00
Christoffer Lerno
3a7bc4d253
Return the typekind "FUNC" for a function pointer.
2024-06-20 20:47:24 +02:00
Christoffer Lerno
316982fb8f
Added test and removed todo.
2024-06-19 01:17:43 +02:00
Christoffer Lerno
cfaea34053
Some additional cleanup.
2024-06-19 00:57:38 +02:00
Christoffer Lerno
8fd1d895d6
Cleanup ct_call parsing.
2024-06-19 00:28:24 +02:00
Christoffer Lerno
b592ecf6f5
Fixed crash on certain recursive function definitions #1209 .
2024-06-18 22:33:10 +02:00
Christoffer Lerno
65a8826158
Fix of missing copy of parameterized custom attributes.
2024-06-17 22:05:32 +02:00
Christoffer Lerno
c9fab898cc
Improved error notes when call expressions have errors.
2024-06-16 23:33:37 +02:00
Christoffer Lerno
819049d596
@str_hash, @str_upper, @str_lower, @str_find compile time macros.
2024-06-16 21:16:03 +02:00
Christoffer Lerno
147dee6ec7
Addition of $append and $concat functions. Added $$str_hash builtin. Fix to the macho runtime.
2024-06-16 01:57:05 +02:00
Christoffer Lerno
b0b885d506
Prevent Mach-O from removing @init and @dynamic in a more reliable way #1200 .
2024-06-15 15:58:12 +02:00
Christoffer Lerno
c94610f8a9
Error with unsigned compare in @ensure when early returning 0 #1207 . Added remove_first_item remove_last_item and remove_item as aliases for the match functions.
2024-06-14 17:29:46 +02:00
Christoffer Lerno
21fa006850
Merge 0.5.6 changes into 0.6.0
2024-06-12 11:39:52 +02:00
Christoffer Lerno
e293c435af
0.6.0: init_new/init_temp removed. LinkedList API rewritten. List "pop" and "remove" function now return Optionals. RingBuffer API rewritten. Allocator interface changed. Deprecated Allocator, DString and mem functions removed. "identity" functions are now constants for Matrix and Complex numbers. @default implementations for interfaces removed. any* => any, same for interfaces. Emit local/private globals as "private" in LLVM, following C "static". Updated enum syntax. Add support [rgba] properties in vectors. Improved checks of aliased "void". Subarray -> slice. Fix of llvm codegen enum check. Improved alignment handling. Add --output-dir #1155 . Removed List/Object append. GenericList renamed AnyList. Remove unused "unwrap". Fixes to cond. Optimize output in dead branches. Better checking of operator methods. Disallow any from implementing dynamic methods. Check for operator mismatch. Remove unnecessary bitfield. Remove numbering in --list* commands Old style enum declaration for params/type, but now the type is optional. Add note on #1086 . Allow making distinct types out of "void", "typeid", "anyfault" and faults. Remove system linker build options. "Try" expressions must be simple expressions. Add optimized build to Mac tests. Register int. assert(false) only allowed in unused branches or in tests. Compile time failed asserts is a compile time error. Remove current_block_is_target. Bug when assigning an optional from an optional. Remove unused emit_zstring. Simplify phi code. Remove unnecessary unreachable blocks and remove unnecessary current_block NULL assignments. Proper handling of '.' and Win32 '//server' paths. Add "no discard" to expression blocks with a return value. Detect "unsigned >= 0" as errors. Fix issue with distinct void as a member #1147 . Improve callstack debug information #1184 . Fix issue with absolute output-dir paths. Lambdas were not type checked thoroughly #1185 . Fix compilation warning #1187 . Request jump table using @jump for switches. Path normalization - fix possible null terminator out of bounds. Improved error messages on inlined macros.
...
Upgrade of mingw in CI. Fix problems using reflection on interface types #1203 . Improved debug information on defer. $foreach doesn't create an implicit syntactic scope.
Error if `@if` depends on `@if`. Updated Linux stacktrace. Fix of default argument stacktrace. Allow linking libraries directly by file path. Improve inlining warning messages. Added `index_of_char_from`. Compiler crash using enum nameof from different module #1205 . Removed unused fields in find_msvc. Use vswhere to find msvc. Update tests for LLVM 19
2024-06-12 10:14:26 +02:00
Christoffer Lerno
321c5ec756
Update mingw version and funding.
2024-05-27 12:03:45 +02:00
Christoffer Lerno
f04d93f9aa
Fix flaw in bitstruct check.
2024-05-20 22:20:33 +02:00
Christoffer Lerno
9436efe554
Compiler crash on designated initializer for structs with bitstruct.
2024-05-20 14:42:09 +02:00
Christoffer Lerno
3acbf708d3
Fix location on foreach debug output.
2024-05-19 23:27:57 +02:00
Christoffer Lerno
92979984ea
Fix mutex and wait signatures for Win32.
2024-05-18 22:24:45 +02:00
Christoffer Lerno
a16d41a1e1
Do not elide memory storage on variable for debug.
2024-05-17 19:51:35 +02:00
Christoffer Lerno
ff8b78fc99
Correct debug info on parameters without storage.
2024-05-17 16:26:12 +02:00
Christoffer Lerno
97c9bd7ce0
Assertion failed when casting argument to enum #1196
2024-05-16 16:07:55 +02:00
Christoffer Lerno
c40c93340d
Compile time fmod evaluates to 0 #1195
2024-05-16 14:33:11 +02:00
Christoffer Lerno
094c105464
Union is not properly zero-initialized #1194
2024-05-16 11:28:04 +02:00
Christoffer Lerno
e36c696624
Update CI.
2024-05-15 21:49:18 +02:00
Christoffer Lerno
555a4ab4c5
Casting a slice address to its pointer type should not compile #1193 .
2024-05-15 21:36:53 +02:00
Christoffer Lerno
7d8cc8776d
Duplicate emit of expressions on negation would incorrectly compile negated macros.
2024-05-14 23:30:39 +02:00
Christoffer Lerno
960646ac8a
Patch test.
2024-05-09 09:53:48 +02:00
Christoffer Lerno
ed9f15becf
Foreach uses non-wrapping add/dec.
2024-05-08 23:05:12 +02:00
Christoffer Lerno
b09aa74f2f
Generic modules parameterized with constants would sometimes get the wrong parameterized module name causing conversion errors #1192 .
2024-05-04 23:34:37 +02:00
Christoffer Lerno
60805fd11d
Bounds checking on length for foo[1:2] slicing #1191
2024-04-28 18:55:26 +02:00
Christoffer Lerno
89ecd4b33d
Default to AVX on x64.
2024-04-26 19:29:32 +02:00
Christoffer Lerno
237f142a87
Default CPU actually defaults to a value instead of picking the native CPU.
2024-04-26 19:03:25 +02:00
Christoffer Lerno
a21647a1aa
Do not default to native vector capability.
2024-04-26 18:45:14 +02:00
Christoffer Lerno
e9afe4ee25
Update CI script for mac.
2024-04-26 18:09:03 +02:00
Christoffer Lerno
acd067582a
Update CI script.
2024-04-26 18:07:16 +02:00
Christoffer Lerno
82227e8901
Incorrect cast of bitstructs #1186
2024-04-26 17:39:30 +02:00
Christoffer Lerno
8b6735a6aa
Allow recursive function definitions as long as they are pointers #1182 . Add 'zstr' variants for string::new_format / string::tformat.
2024-04-16 19:42:32 +02:00
Christoffer Lerno
9ed8831500
Updated link
2024-04-14 23:07:48 +02:00
Christoffer Lerno
e7d726cc2c
Fixup of scratch buffer code.
2024-04-09 14:27:52 +02:00
Christoffer Lerno
11a3dd26c8
Update mingw version.
2024-04-09 14:10:54 +02:00
Christoffer Lerno
04738586b9
Fix bug in scratch_buffer_printf.
2024-04-09 13:26:08 +02:00
cpiernikowski
18b4fce1ca
Change return type of next_bool(random) from void to bool
2024-03-28 09:44:47 +01:00
Christoffer Lerno
3b9babe745
0.5.6 Add grammar for defer (catch err).
2024-03-26 09:36:45 +01:00
Brennan Cottrell
a4a85b7bbf
Added print-input command line argument ( #1175 )
...
* added print-input command line argument
2024-03-26 09:33:47 +01:00
Christoffer Lerno
e8f0275d8e
0.5.6 Add defer (catch err) feature.
2024-03-25 11:35:16 +01:00
Christoffer Lerno
3251f58d46
Change version for MinGW
2024-03-25 09:40:52 +01:00
David
204fb211ac
Fix x86_64 ABI small issue ( #1174 )
...
* Fix x86_64 ABI small issue Update tests for fix.
---------
Co-authored-by: Christoffer Lerno <christoffer@aegik.com >
2024-03-25 09:39:26 +01:00
Christoffer Lerno
6cade814e1
Update includes for FreeBSD.
2024-03-22 09:11:18 +01:00
Christoffer Lerno
eb2fbabbb1
Update version to 0.5.6
2024-03-19 16:15:13 +01:00
Christoffer Lerno
ee9c5db719
0.5.5 release.
2024-03-18 22:05:16 +01:00
Christoffer Lerno
d8af01dc46
Update release notes and change how versions are reported.
2024-03-18 11:51:31 +01:00
David Gonzalez Martin
5bead069f2
Fix aarch64 return type ABI bug
2024-03-17 20:06:53 +01:00
shv187
63e1345780
Add getModuleHandleA + W to win32
2024-03-16 09:47:42 +01:00
Christoffer Lerno
3df988d0b8
Allow String constants -> ichar*, and allow integer pointers to explicitly convert between unsigned signed.
2024-03-15 23:08:52 +01:00
Christoffer Lerno
656202dc0d
Convert paths to backslash before running on Windows.
2024-03-15 20:09:06 +01:00
Christoffer Lerno
eec3253669
Mingw -> 18.1.1-3
2024-03-15 13:23:41 +01:00
Christoffer Lerno
d9423201b8
Change mingw version.
2024-03-15 13:20:05 +01:00
Christoffer Lerno
c6087bc369
Fix underlying type of llvm.used and update section.
2024-03-15 13:02:39 +01:00
Christoffer Lerno
b7077c7967
Fix Win32 with compile-run.
2024-03-14 12:05:01 +01:00
Christoffer Lerno
4acb07f1cb
compile-run and run now returns the proper return code.
2024-03-14 11:55:55 +01:00
Christoffer Lerno
5207022a4a
For MacOS, running with higher optimization would crash as initializers were removed.
2024-03-14 09:33:24 +01:00
Christoffer Lerno
1a25746343
Regression: no stacktrace.
2024-03-12 17:31:06 +01:00
Christoffer Lerno
0d7ceb625b
Fixed link on msvc.
2024-03-12 10:24:48 +01:00
Christoffer Lerno
95fb5f904f
New linker build option. "system-linker" deprecated and removed from project settings.
2024-03-12 10:09:02 +01:00
Christoffer Lerno
a0309855d7
Added @link attribute.
2024-03-11 18:10:40 +01:00
Christoffer Lerno
546754e803
'output' directory for projects was incorrect in templates.
2024-03-08 15:34:04 +01:00
Christoffer Lerno
86461909d3
Remove initial './' in Win32 paths when running a binary.
2024-03-04 17:04:57 +01:00
Christoffer Lerno
feebd2a733
Bug in time.add_seconds #1162 .
2024-03-01 12:09:47 +01:00
Christoffer Lerno
75e7176675
Bitstruct cast to other bitstruct by way of underlying type would fail #1159 .
2024-02-26 23:51:14 +01:00
Christoffer Lerno
bae5d9c7f8
Improved checks of aliased "void".
2024-02-26 18:45:55 +01:00
Christoffer Lerno
4ba033fc84
Fix of int.min incorrect behaviour #1154 .
2024-02-26 18:13:40 +01:00
Christoffer Lerno
f0dd0e8f92
Fix of CT named arguments #1156 .
2024-02-26 17:47:50 +01:00
Christoffer Lerno
7ea3d230bb
0.5.5 features ( #1151 )
...
0.5.5 Disallow multiple `_` in a row in digits, e.g. `1__000`. #1138 . Fixed toposort example. Struct/union members now correctly rejects members without storage size #1147 . `math::pow` will now correctly promote integer arguments. `math::pow` will now correctly promote integer arguments. Added `new_aligned` and `alloc_aligned` functions to prevent accidental under-alignment when allocating simd. Pointer difference would fail where alignment != size (structs etc) #1150 . Add test that overalignment actually works for lists. Fixed array calculation for npot2 vectors. Use native aligned alloc on Windows and POSIX. Deprecates "offset". Simplification of the Allocator interface.
2024-02-22 17:13:51 +01:00
Christoffer Lerno
b7f4fd9074
Create FUNDING.yml
2024-02-20 09:27:21 +01:00
Christoffer Lerno
9a114b38d3
Updated retry and test.c3 examples.
2024-02-17 15:19:27 +01:00
Christoffer Lerno
bec1116f86
Fixes to scoped mem report.
2024-02-17 11:52:18 +01:00
Christoffer Lerno
d7cc37b951
Important fixes to project settings.
2024-02-17 11:39:08 +01:00
Christoffer Lerno
4ce62cf221
Fix of allocator::new.
2024-02-16 21:55:30 +01:00
Christoffer Lerno
1f052da0b9
Clock.c3 fix.
2024-02-16 21:31:49 +01:00
Christoffer Lerno
812dc0c292
Update memory test code.
2024-02-16 14:19:42 +01:00
Christoffer Lerno
798fe0dce9
Updated lex file.
2024-02-16 12:01:13 +01:00
Christoffer Lerno
3f6fe55f9a
Grammar fix.
2024-02-15 23:18:11 +01:00
Christoffer Lerno
aee4aecfe7
Remove install_win_reqs.bat from releases.
2024-02-15 22:41:44 +01:00
Christoffer Lerno
748c737e8f
0.5.4: Hash variables accept designated initializers. @safemacro overrides the need for @ in macro names. Fixes to macro context evaluation. Updated allocator api. Removed install_win_reqs.bat. Deterministic @init for MacOS. Fixed temp memory issue with formatter. Support LLVM 19. Add support to compare bitstructs using == and !=. Support Windows .def files. Removed invalid grammar from grammar.y. Support compile time folding of &|^~ for bitstructs. output project setting now respected. Fix issue where constants were not properly constant folded. Add temp_push/pop. Aliased declarations caused errors when used in initializers. Fix export output. Fix of const ternary #1118 . Fix of $$MODULE in nested macros #1117 . Fix debug info on globals. out now correctly detects subscript[] use #1116 . Lateral implicit imports removed. Default to '.' if no libdir is specified. Improved error messages for --lib. Fix raylib snake example. Overzealous local escape check corrected #1127 . Improved yacc grammar #1128 . --linker argument #1067 . Fixes to the matrix operations #1130 . Added GenericList.
2024-02-15 21:39:33 +01:00
Christoffer Lerno
c673101bbb
Fix incorrect code in sample.
2024-02-14 09:16:36 +01:00
Poly2it
d66674655c
Update compilation instructions for Void Linux
2024-02-13 16:45:51 +01:00
Christian Clauss
da292e41bd
msvc_build_libraries.py: Remove unused import an f-strings with no placeholder
...
% `ruff ` # https://docs.astral.sh/ruff
```
Error: msvc_build_libraries.py:9:8: F401 `os` imported but unused
Error: msvc_build_libraries.py:10:8: F401 `sys` imported but unused
Error: msvc_build_libraries.py:19:8: F401 `re` imported but unused
Error: msvc_build_libraries.py:179:3: F541 f-string without any placeholders
Error: msvc_build_libraries.py:180:3: F541 f-string without any placeholders
Error: msvc_build_libraries.py:182:3: F541 f-string without any placeholders
Error: Process completed with exit code 1.
```
2024-01-18 11:24:03 +01:00
Christoffer Lerno
deb4cc7c4b
0.5.3: Single-module not respected. Fix issue with compiler defined types. Fix optimization levels for projects. Use GEP i8 on offsets. Optimize foreach on len 1 arrays. Move panic blocks last. Fix generic module wildcard imports. Deprecate init_temp / init_new. Fix issue with macro vaarg and untyped lists. Fix extern const globals.
2024-01-14 15:34:54 +01:00
Christoffer Lerno
e91f6e268e
0.5.2: Allow trailing comma in calls and parameter declarations #1092 . Fixes issue where single character filenames like 'a.c3' would be rejected. Improve error messages for incorrect user defined foreach. Fix bug with generics in generics. Fix to error with modified vector parameters. Crash with lhs vector inference. Fixes to priority queue.
2023-12-23 23:15:51 +01:00
Poly2it
2595ed5cc9
Add compilation instructions for Void Linux
2023-12-09 15:15:17 +01:00
Christoffer Lerno
1d61ace302
Do not link with debug libc on win32 when using cross compile libs. Add delete methods to dstring. Fixes to macOS aarch64 codegen. Use glibc backtrace when available. Add load_* methods to file. The cast (int[8])int_slice[:8] now works.
2023-12-08 18:59:57 +01:00
Christoffer Lerno
a50c5f4f7c
Fixes to the grammar.
2023-11-26 20:06:38 +01:00
Christoffer Lerno
a46bf4fbe0
Improve "const" error message #1079 .
2023-11-22 19:12:04 +01:00
Christoffer Lerno
0d1eab5c15
Fix of incorrect error recovery leading to confusing errors #1080
2023-11-22 19:12:04 +01:00
Christoffer Lerno
3255183ee4
0.5 release.
2023-11-20 23:48:18 +01:00
Tiago Teixeira
66b65a042e
Add CMake option to link c3 dynamically to LLVM/LLD ( #1077 )
...
* Add Cmake option to link c3 dynamically to LLVM/LLD
To link dynamically, use
`cmake -DC3_LINK_DYNAMIC=ON <other-options> ../`
* formatting
2023-11-20 18:10:19 +01:00
Christoffer Lerno
b8db118e64
Use signals to create the stack trace.
2023-11-20 17:17:39 +01:00
Christoffer Lerno
7c15cf2788
Hacky update to stacktrace.
2023-11-20 14:10:12 +01:00
Christoffer Lerno
31538d5955
Fix to backtrace
2023-11-20 12:39:20 +01:00
Christoffer Lerno
337eac6d2f
Only fallback on native backtrace if there is no backtrace()
2023-11-20 11:36:38 +01:00
Pierre-Nicolas Clauss
e826f02da5
feat(lib/std): get backtrace for static binaries.
2023-11-20 09:46:25 +01:00
Christoffer Lerno
d5281b10dd
Cleanup use of macro inspection to use @typekind and @typeid macros.
2023-11-18 23:35:18 +01:00
Christoffer Lerno
87fdb5956e
Improved backtrace on platforms without glibc. Added $$frameaddress and $$returnaddress properly.
2023-11-18 20:13:11 +01:00
Christoffer Lerno
00019f9d76
Small update
2023-11-17 22:10:31 +01:00
Christoffer Lerno
f257befd86
Add compatibility matrix.
2023-11-17 22:08:59 +01:00
Christoffer Lerno
07c27f3292
Remove emulated stack trace.
2023-11-17 07:27:17 +01:00
Christoffer Lerno
ffb0021d04
Use backtrace on windows. Updated backtrace API
2023-11-17 00:36:42 +01:00
Christoffer Lerno
81c93e3488
Use backtrace on windows. Updated backtrace API
2023-11-16 21:39:27 +01:00
Christoffer Lerno
587d5578ab
Fix emit location.
2023-11-13 21:42:38 +01:00
Christoffer Lerno
9345e4270a
Update panic emit.
2023-11-13 19:49:25 +01:00
Christoffer Lerno
1dde6092e5
Version update, remove unused code.
2023-11-13 18:25:06 +01:00
Christoffer Lerno
5e8816e6df
Fixes to native backtrace.
2023-11-13 17:20:46 +01:00
Christoffer Lerno
dc0aa35522
Native Linux backtrace.
2023-11-12 15:20:24 +01:00
Christoffer Lerno
f39aa1a41e
Add location tracking for memory allocations.
2023-11-09 22:03:25 +01:00
Christoffer Lerno
e31f2a03ba
Add location tracking for memory allocations.
2023-11-09 11:20:29 +01:00
Christoffer Lerno
1e38ccdd2b
Fix missing free on GrowableBitSet. init_new/init_temp for GrowableBitSet, LinkedList, List, HashMap, DString, ByteBuffer. Interface to_string renamed to_new_string. Change in allocator usage, malloc is now heap. Added new_array, new_zero_array, new, new_clear, clone. Concat => concat_new. string::printf => string::new_format, string::tprintf => string::tformat. "to_*" are now "to_new_*" and "to_temp_*". "from_*" is "new_from*"
2023-11-09 01:59:49 +01:00
Christoffer Lerno
69470b8738
Improved errors on optional return. Fixes to @nodiscard erroring. Addresses #1062
2023-11-03 23:50:15 +01:00
Christoffer Lerno
5dedaa8e67
Improve error message when creating an exe and the name is already used by a directory.
2023-11-02 21:24:44 +01:00
Christoffer Lerno
eab0b417de
Fix to print.
2023-11-01 14:08:29 +01:00
Christoffer Lerno
5e4cfacfcb
Rename "main" variable in ct_defined analysis.
2023-11-01 12:53:32 +01:00
Christoffer Lerno
120e21b80b
Convencience function for random + entropy function.
2023-10-31 22:21:38 +01:00
Christoffer Lerno
cd7a03c2cf
Interface based streams. Fix for initializing with a force unwrap inside. Allow $define to take a list. Allow $define to return error on argument type mismatch in call. Fixed broken bit operations on boolean vectors.
2023-10-31 01:06:59 +01:00
Christoffer Lerno
1aa038c92f
Interface based streams. Fix for initializing with a force unwrap inside. Allow $define to take a list. Allow $define to return error on argument type mismatch in call. Fixed broken bit operations on boolean vectors.
2023-10-31 01:06:59 +01:00
Christoffer Lerno
e4c1328ef2
Better checks for missing @dynamic. Addresses #1055 .
2023-10-28 04:12:43 +02:00
Christoffer Lerno
e17bb5f321
Void* should never deref and should allow methods to be attached to it.
2023-10-27 00:10:59 +02:00
Christoffer Lerno
a0bc03a9f5
Fix uses of @convertible.
2023-10-26 22:21:16 +02:00
Christoffer Lerno
70e7e4b1d2
Enable mingw
2023-10-26 18:54:12 +02:00
Pierre-Nicolas Clauss
7d16d9acaf
fix(build_options): detect -z flag
2023-10-26 14:23:13 +02:00
thecalculus
a7d032df21
fix: argument parsing error 'sdk_path-version' instead of 'sdk-version'
2023-10-26 13:29:39 +02:00
Christoffer Lerno
9af37fe427
$and, $or, $is_const, $assignable, .is_eq, .is_ordered, $defined($vatype(2)) works looking if we can create a type, $defined(foo[0]) $defined(foo()). Remove $checks and @checked. Improvide casting checks to always work without destructive changes.
2023-10-24 22:06:04 +02:00
Christoffer Lerno
8a12dc5bd4
Fix issue where inferred vectors where incorrectly handled in unions and structs.
2023-10-21 22:10:00 +02:00
Christoffer Lerno
d01d8d3663
"protocol" => "interface"
2023-10-20 14:12:08 +02:00
Pierre-Nicolas Clauss
e380075852
fix: standard library search paths
...
Path construction for locating the standard library expects ending
slashes.
2023-10-19 13:04:43 +02:00
Pierre-Nicolas Clauss
7df5bc0017
Add more paths to search for the standard library
...
Module `std` is searched first in a `c3` subdirectory.
Search directories are, in order and relative to the compiler executable
location:
- `lib/c3` relative to the parent directory
- `lib` relative to the parent directory
- `/lib/c3`
- `/lib`
- `/c3`
- `/`
- `c3` relative to the parent directory
- the parent directory
- `lib/c3` relative to the grand-parent directory
- `lib` relative to the grand-parent directory
2023-10-17 13:55:51 +02:00
Christoffer Lerno
9b61ddb876
Add @pure to asm. Allow regular statements in naked function.
2023-10-15 19:11:11 +02:00
pini
76fa404b89
Feat/asm x86 ( #1046 )
...
* fix(asm): consider asm blocks as volatile
When asm blocks are not marked as volatile, they may be (wrongly)
discarded by LLVM optimization passes.
* fix(asm): mark syscall as clobbering return register
The `syscall` instruction returns the system call result in the `rax`
register.
* feat(asm): add push instructions.
* feat(asm): add pop instructions
2023-10-14 20:50:45 +02:00
Christoffer Lerno
682dfd0e47
Update default asm dialect on asm strings. Fix naked function analysis.
2023-10-14 13:56:53 +02:00
Christoffer Lerno
80a9842a25
Fix incorrect check for naked functions.
2023-10-14 12:46:31 +02:00
Christoffer Lerno
89d4c2cab7
Allocator uses protocols. Fix bug where it was not possible to pass a ref variable as a ref variable. Correct codegen for !anyptr.
2023-10-14 12:39:46 +02:00
Christoffer Lerno
54f32ed71b
Fix alignment for remaining bitstruct binary ops. Turn off broken Mingw LLVM in CI.
2023-10-13 14:43:04 +02:00
Christoffer Lerno
fed343e3bb
Fix alignment for negating bitstructs. Update mingw LLVM versions in CI.
2023-10-13 13:57:44 +02:00
Christoffer Lerno
fd21b057eb
Missing target directive in test.
2023-10-13 13:37:27 +02:00
Christoffer Lerno
e81e91be93
Fix void* <=> protocol casts. Fix of tests.
2023-10-13 12:44:58 +02:00
Christoffer Lerno
9b714e1dbb
Remove TB.
2023-10-12 22:00:49 +02:00
Christoffer Lerno
e67e17ef1e
Fix MacOS SDK.
2023-10-12 21:59:40 +02:00
Christoffer Lerno
942d53a678
Fix tests. Refactoring MacOS SDK.
2023-10-12 14:10:46 +02:00
Christoffer Lerno
806d7e965f
Update MacOS output to include platform version in target triple, fixing the linker warnings metioned here: #1028
2023-10-12 12:36:12 +02:00
Christoffer Lerno
db3e9c7ec7
Add delete testing for windows and update "clean"
2023-10-11 15:49:05 +02:00
Christoffer Lerno
b657724d9b
Add delete testing in for windows.
2023-10-11 12:48:38 +02:00
Pierre Curto
5a5b600490
std::collections::list: add List.init_from_array
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-10-11 12:46:28 +02:00
Christoffer Lerno
1472d60c8a
Update version and releasenotes.
2023-10-10 23:32:04 +02:00
Christoffer Lerno
a9c28cce6d
Default protocols. Closes #1039
2023-10-10 23:30:33 +02:00
Christoffer Lerno
b7a896805d
Fix bug in growable bitset. Always insert 0xAA in malloc on testing.
2023-10-09 14:23:41 +02:00
Pierre Curto
6b571fe427
List capacity and SubProcess field name change ( #1038 )
...
* std::collections::list: adjust increased capacity
* std::os::process: rename conflicting field in SubProcess
* c3c: adjust spacing for --list-builtins and --list-keywords
2023-10-09 12:52:23 +02:00
Christoffer Lerno
3f77e868b1
Fixes #1040 .
2023-10-09 00:55:54 +02:00
Christoffer Lerno
31bc766944
Fix issue where in error messages, integers were assumed to be unicode characters.
2023-10-09 00:41:31 +02:00
Christoffer Lerno
ebddbfb416
Restrict any -> Protocol conversion. Protocol <-> looks at parent. Detect duplicate method definitions for protocols.
2023-10-08 23:43:02 +02:00
Pierre Curto
3aa85cf641
misc ( #1033 )
...
* make conv::char32_to_utf8_unsafe() return the number of bytes it wrote
add tests for DString
fix pointer arithmetic in DString.insert_at
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* add support to printf for %d and enums
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-10-08 02:12:20 +02:00
Christoffer Lerno
312a39ee24
Handle protocol inheritance. Allow overlapping protocol methods. Remove the need for &self in protocol declarations. Fix cast rules for protocol. Fix cast rules for bitstruct #1034 .
2023-10-08 02:10:28 +02:00
Christoffer Lerno
99cfaa1583
Refactor protocols.
2023-10-06 22:31:41 +02:00
Christoffer Lerno
f3e3aa231d
Make Random use protocols.
2023-10-06 22:31:41 +02:00
Christoffer Lerno
a1bce81ed0
Fix growable bitset ( #1032 )
2023-10-06 01:27:32 +02:00
Christoffer Lerno
dad21bfc6f
See if we can get better errors.
2023-10-05 20:35:40 +02:00
Pierre Curto
9643a7c2b2
add DString.insert_at ( #1026 )
...
* add DString.insert
* make conv::utf32to8 more C3-like
2023-10-05 19:12:47 +02:00
Christoffer Lerno
d16ad0b4c7
Update "clean".
2023-10-05 19:06:55 +02:00
Christoffer Lerno
32f6d711ac
Revert linker changes.
2023-10-05 18:48:05 +02:00
Christoffer Lerno
a07ba63917
Compiling does not leave exe when successful, and also works with generic modules. #1027 . For now, silence errors due to the macos linker changes. #1028 . Try update clean on Windows #456 .
2023-10-05 16:31:11 +02:00
Christoffer Lerno
70f906c71a
Dynamic protocols. Correctly widen unsigned array indices (see #1029 )
2023-10-05 15:20:41 +02:00
Christoffer Lerno
49c4595457
Dynamic protocols.
2023-10-05 15:20:41 +02:00
Christoffer Lerno
4cc30c0d33
Replace static initializer with @init / @finalizer
2023-10-03 12:45:43 +02:00
Pierre Curto
757a5b58e8
std::core::dstring: fix DString.zstr() ( #1024 )
...
rename DString.zstr to DString.zstr_view
2023-10-03 00:32:56 +02:00
Christoffer Lerno
2b9276b495
Add 'exec'
2023-09-30 23:28:22 +02:00
Pierre Curto
b2c7b713f2
add descriptions to the --list-project-properties cli option ( #1021 )
...
* fix constant name typo
* add descriptions to the --list-project-properties cli option
* add missing file name for main.c3
2023-09-30 19:52:11 +02:00
Pierre Curto
99ec44ad78
c3c init: add missing file name
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-09-29 14:07:59 +02:00
Christoffer Lerno
db4298431d
Remove debug printout.
2023-09-29 14:04:13 +02:00
Christoffer Lerno
fc8b185b5b
Add library init.
2023-09-28 11:06:51 +02:00
Christoffer Lerno
f3752d273c
Add /run dir for projects. See #921
2023-09-28 10:01:20 +02:00
Christoffer Lerno
aa6101d8ea
Correctly deduce the return type for macros with implicit return. See #1018 .
2023-09-26 17:37:27 +02:00
Christoffer Lerno
ee42992c37
Make local constants behave as global: see #974
2023-09-26 00:18:59 +02:00
Christoffer Lerno
c5404c6573
get_env for Win32, @pierrec's get_config_dir and get_home_dir
2023-09-25 16:29:49 +02:00
Christoffer Lerno
2a683a6a05
Update mingw LLVM.
2023-09-25 00:00:42 +02:00
Christoffer Lerno
a1ecf2211f
as_str() replaced by str_view()
2023-09-24 23:50:16 +02:00
Christoffer Lerno
3675254af4
Fixed test.
2023-09-24 22:01:20 +02:00
Christoffer Lerno
30d794653d
Resolve type fully before checking casts, addressing #1013 . Correctly show the error location when a method is missing its single argument #1012 .
2023-09-24 20:17:41 +02:00
Christoffer Lerno
709fe1c2c0
Some general refactoring in the builder / project code.
2023-09-23 03:22:11 +02:00
Christoffer Lerno
ad776c76a7
Add benchfn and testfn allowing easy overwrite of test and benchmark runners. #990
2023-09-23 00:30:09 +02:00
Christoffer Lerno
dde73e029c
Fix of issue #1008
2023-09-22 23:24:21 +02:00
Pierre Curto
e5b990691e
std::lib::io: make printn_gen discardable
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-09-22 15:16:44 +02:00
Pierre Curto
d6edd80f3b
lib::std::encoding: add varint::{read,write}
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-09-22 15:16:44 +02:00
Christoffer Lerno
e706a8acd0
Fix Linux constant in posix.c3. Address issue #1009 . Sanitizes the module name in generated project.
2023-09-22 15:15:47 +02:00
Christoffer Lerno
8dad8f2b1c
Use regular backtrace for Mac on signals as well.
2023-09-22 01:12:48 +02:00
Christoffer Lerno
c4228e08c5
MacOS uses regular stacktrace for errors.
2023-09-21 16:39:13 +02:00
Christoffer Lerno
c074e79069
Bitstruct members would get partly evaluated using checks, then incorrectly reset on error. Also, copying bitstruct members were broken. This addresses #1005 .
2023-09-19 18:03:20 +02:00
Christoffer Lerno
6e0982327d
Added example project file and updated project file defaults.
2023-09-19 10:06:22 +02:00
Dmitry Atamanov
a06cc76c9b
Support additional keys in projects.
2023-09-19 09:56:49 +02:00
Christoffer Lerno
9eef34049d
Remove vestiges of top down widening.
2023-09-19 09:45:56 +02:00
Dmitry Atamanov
e91cb85a66
Update checkout action to v4
2023-09-19 08:15:17 +02:00
OdnetninI (Eduardo José Gómez Hernández)
05c2737f46
Fix timeout at tcp::connect
2023-09-18 23:47:01 +02:00
Christoffer Lerno
cbdc746c9d
Fix alignment in new fetch builtins.
2023-09-17 21:07:00 +02:00
OdnetninI (Eduardo José Gómez Hernández)
8d11794f83
Fix atomic_fetch_sub builtin + Updated atomic library ( #997 )
...
Fix atomic_fetch_sub builtin + Updated atomic library
2023-09-17 13:22:12 +02:00
Christoffer Lerno
8ed9be9c58
Update build options --nostdlib --nolibc --emit-stdlib --forcelinker … ( #999 )
...
Update build options --nostdlib --nolibc --emit-stdlib --forcelinker --strip-unused. Fix error with vectors in $foreach. Also error if a $foreach iterating over an empty list. Rename forcelinker -> system-linker
2023-09-17 13:19:01 +02:00
Christoffer Lerno
d49365b4a7
Change how -O works and create -optsize / -optlevel. Update --safe / --fast.
2023-09-17 00:40:32 +02:00
Christoffer Lerno
03345bef10
Stricter checking of compare_exchange builtin.
2023-09-16 22:25:03 +02:00
Christoffer Lerno
ff05128a87
Add atomic_fetch_exchange builtin.
2023-09-15 18:22:37 +02:00
Christoffer Lerno
f6e18ded5b
Add atomic_fetch builtins.
2023-09-15 18:07:15 +02:00
Dmitry Atamanov
d129cd49a5
Add libc-free hello_world
2023-09-15 16:46:38 +02:00
Christoffer Lerno
9233305bd6
Feature flags possible to add in project.json. See #991
2023-09-15 14:28:23 +02:00
Dmitry Atamanov
d6e9985a26
Add log(x, base) function to std::math module.
2023-09-15 09:22:34 +02:00
Christoffer Lerno
6be61aa19c
Fixed asm parsing issue. Use of pointer as argument.
2023-09-15 08:25:43 +02:00
Dmitry Atamanov
4a232b7935
Add builtin benchmarks to changelog. [skip_ci]
2023-09-14 20:58:49 +02:00
Christoffer Lerno
44fafdbd7c
Fix issue with asm_target initialized multiple times as mentioned in #989
2023-09-14 10:38:02 +02:00
Christoffer Lerno
2eddda9061
Add gather/scatter for vectors.
2023-09-14 10:19:15 +02:00
Christoffer Lerno
b2ac4b4253
Allow use of pointers in vectors.
2023-09-13 13:45:33 +02:00
Christoffer Lerno
1d04b70efe
Fixed issues inferring length with subarrays. Removed old, non-working example. Infer length in the case of subarray literals.
2023-09-12 22:24:20 +02:00
Pierre Curto
d61482dffc
fix Object.free ( #982 )
...
* lib/std/collections: add HashMap.@each_entry()
* lib/std/json: fix Object.free() when object is a map
* lib/std/collections: fix allocator use in Object.{set,set_at,append}
* lib/std: add char.from_hex
* lib/std/collections: print arrays and objects compactly
* lib/std/io: fix Formatter.vprintf result
* lib/std/io/stream: rename module for ByteBuffer
* lib/std/io/stream: make Scanner a Stream reader
* lib/std/io: make std{in,err,out} return File* if no libc
2023-09-12 13:49:52 +02:00
Christoffer Lerno
37bb16cca1
Updated cast code.
2023-09-12 12:48:52 +02:00
Christoffer Lerno
ca1885fe09
Updated releasenotes.
2023-09-09 22:50:25 +02:00
Christoffer Lerno
d67e846712
Remove cast from void! to anyfault. Rename @catchof to @catch
2023-09-09 22:49:32 +02:00
Christoffer Lerno
dfe097931c
Add masked_load / masked_store
2023-09-09 01:05:51 +02:00
Christoffer Lerno
4ef74a1205
Add $$select. "--fp-math" options. Fixed issue with accidentally silent error on failed vector conversions.
2023-09-08 09:20:27 +02:00
Pierre Curto
b894e5be69
lib/std/encoding: remove use of pushback_byte in json
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-09-08 09:05:38 +02:00
Christoffer Lerno
dc7f8057a3
Set msvc compile-test to -O1
2023-09-07 09:42:05 +02:00
Christoffer Lerno
66b436f7f8
No optimizations by default.
2023-09-07 09:01:12 +02:00
Christoffer Lerno
224e38c6c7
Fixes to features.
2023-09-06 23:49:56 +02:00
Dmitry Atamanov
51a72ccd37
Add new x86 cpu features.
2023-09-06 23:38:24 +02:00
Dmitry Atamanov
40d5ce0937
Fixes $$set_rounding_mode builtin.
2023-09-06 23:11:33 +02:00
Pierre Curto
51f76c69c4
lib/std/collections: add Bitset
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-09-06 23:09:37 +02:00
Christoffer Lerno
b87e27d8a3
Update tests and CI ( #979 )
...
Update CI. Explicit native mutex "initialized" bool.
2023-09-06 22:43:07 +02:00
Christoffer Lerno
50e99b571f
Add frame pointer on "enable stacktrace". Set no-trapping-math. Update fmuladd.
2023-09-06 14:38:21 +02:00
Christoffer Lerno
e3412da033
Removed broken code. Update formatter for precision. Fix of panic.
2023-09-05 22:53:56 +02:00
Christoffer Lerno
69418ba44d
Fix issue in is_autoimport ordering.
2023-09-05 19:45:42 +02:00
Christoffer Lerno
cfe5c649c5
Prevent ordering issues with "builtin" by resolving it early.
2023-09-05 17:29:54 +02:00
Pierre Curto
f8fa9a057e
lib/std/io: support . string format speficier ( #970 )
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-09-05 14:39:51 +02:00
Christoffer Lerno
5a2ef79fe6
Update "not working" examples.
2023-09-05 14:36:17 +02:00
Christoffer Lerno
74649ef672
Fix of from_float.
2023-09-05 13:52:14 +02:00
Christoffer Lerno
e5f9cc26a8
Updated lexer suffixes.
2023-09-05 13:48:39 +02:00
Christoffer Lerno
6744a41644
Updated grammar for definitions.
2023-09-05 13:40:19 +02:00
Christoffer Lerno
ffb7935e12
Updating time duration functions.
2023-09-05 10:57:50 +02:00
Christoffer Lerno
53598b8c40
Make ZString print natively with %s.
2023-09-04 22:30:35 +02:00
Christoffer Lerno
fe0ae4a9aa
Error when splat is used with raw varargs.
2023-09-04 22:24:46 +02:00
Christoffer Lerno
d1bb9c55ee
Add blocking connection with timeout, and initial poll functionality.
2023-09-03 19:03:00 +02:00
Christoffer Lerno
29cc9ad8b1
Order IoError declarations.
2023-09-03 10:32:26 +02:00
Christoffer Lerno
4c081f59ff
Refactoring, adding printf / printfn to all streams.
2023-09-03 10:14:04 +02:00
Christoffer Lerno
9a6d83f526
Updated stream API.
2023-09-03 01:14:15 +02:00
Christoffer Lerno
a6cff5c2a5
Removal of old Network, added nonblocking set and async connect.
2023-09-02 17:39:51 +02:00
Pierre Curto
e56313a204
use slice assign and add List.*using_test functions ( #967 )
...
* std/collections: use slice assignment
* std/collections: add List.remove_using_test and List.retain_using_test
2023-09-01 12:16:15 +02:00
Christoffer Lerno
70b9e811bd
Update of enummap.
2023-09-01 11:19:20 +02:00
Christoffer Lerno
46582af0ae
Add contracts to memcpy. Fix bug when compile time local declarations are used as expressions. This caused a check to be invalid in the @pool code.
2023-09-01 11:13:43 +02:00
Christoffer Lerno
0387816cb9
Gracefully handle unlocalized errors. Fix collisions with tests and using $test variable.
2023-09-01 10:03:09 +02:00
Christoffer Lerno
b6756b5b35
Overlapping slice assign is now safe.
2023-09-01 09:40:07 +02:00
Christoffer Lerno
34e1f89ded
Changed atomic calls to be macros.
2023-09-01 08:32:38 +02:00
Christoffer Lerno
0142e5fd33
Removed the need for lambda in remove_if, removed potential implementation specific behaviour.
2023-08-31 23:39:00 +02:00
Pierre Curto
cd950a0359
lib/std/collections: fix comments, List.remove_if() and List.retain_if() methods
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-08-31 23:20:50 +02:00
Christoffer Lerno
770115abd1
Fix default library linking order.
2023-08-31 20:20:51 +02:00
Christoffer Lerno
faf7782b1e
Fix problems with slice assign over distinct types.
2023-08-31 13:41:21 +02:00
Christoffer Lerno
82ba02a904
Allow indexing of constant strings. Fixed reverse indexing of constant initializers.
2023-08-30 16:36:29 +02:00
Christoffer Lerno
dd0dc1a936
Allow anyfault and any aliasing. Fix any comparison.
2023-08-30 13:56:16 +02:00
Christoffer Lerno
eac19814e1
Make typeid switches always use subtype matching. Update seeder mixing.
2023-08-29 22:48:26 +02:00
OdnetninI (Eduardo José Gómez Hernández)
7aca8a02cb
Architecture generic Atomics (C11 + extras) ( #958 )
...
* Initial implementation for c11 atomics
* Fix cmpxchg usage
* Support for floating point atomics
* Added atomic min and max
* Updated copyright notice
* Removed Floats from and or xor. Added mul, div, bitshift
* Changed get_atomic_compatible_type to lower_to_atomic_compatible_type
* Require non-null pointers
* Fix spacing
* Added Atomic type
* Added macro to reduce code
* Small reorder and cleanup
* Added cmpxchg constrains
* Apply all the restrictions for atomic loads/stores and cmpxchg
2023-08-29 14:25:43 +02:00
Dmitry Atamanov
efb492eace
Add simple benchmark runner.
2023-08-29 12:28:06 +02:00
Christoffer Lerno
79f964dce9
Fix of atomic checks. Renamed MONOTONIC -> RELAXED.
2023-08-29 12:27:40 +02:00
Christoffer Lerno
a23112fae6
Added parentof.
2023-08-29 11:51:09 +02:00
Pierre Curto
092296984a
std/math/random: add missing SimpleRandom.init() method
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-08-28 10:03:30 +02:00
Christoffer Lerno
565f511cc7
Updated error handling on test/benchmark attribute.
2023-08-28 08:17:57 +02:00
Dmitry Atamanov
b8c92c69b0
Implement builtin benchmarks.
2023-08-28 08:13:21 +02:00
Christoffer Lerno
6ebb3caa20
Fix issue where type wasn't canonical. Addresses #957
2023-08-27 19:04:34 +02:00
Dmitry Atamanov
cc2c737357
Fix calling llvm::writeArchive for LLVM > 17.
2023-08-27 18:11:24 +02:00
Christoffer Lerno
69553fd80e
Bitstruct designated initializer sometimes failed. This addresses. #954
2023-08-27 18:10:22 +02:00
Christoffer Lerno
190e1b19f1
Fix of next_short
2023-08-26 16:17:30 +02:00
Pierre Curto
c09b6154f4
std/lib/collections: add Object.get_len(); add some tests for encoding/json
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-08-26 13:24:23 +02:00
Pierre Curto
120d5a672c
std/collections: Object.get* return an error if requested type if invalid
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-08-26 13:24:23 +02:00
Pierre Curto
307212a19c
std/encoding: use char.is_digit() where applicable
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-08-26 13:24:23 +02:00
Pierre Curto
eedb2c3c52
std/collections: add RingBuffer.popc()
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-08-26 13:24:23 +02:00
Christoffer Lerno
b1f52cf8a9
Updated random interface further.
2023-08-26 13:22:02 +02:00
Christoffer Lerno
bea9ac010c
Updated random interface.
2023-08-26 12:58:57 +02:00
Christoffer Lerno
6ebd437a5f
Fix bug when converting from typedef to distinct. Ordered struct fields. Update debug type when returning an optional.
2023-08-25 14:11:23 +02:00
Pierre Curto
c0b109fbc1
#934 followup
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-08-24 18:10:18 +02:00
Dmitry Atamanov
b77f254ab1
Tune @expect, @likely, @unlikely and @prefetch macros.
2023-08-24 16:09:56 +02:00
Dmitry Atamanov
f5fea69ef9
Move get_var, set_var and clear_var to os::env module.
2023-08-24 13:31:48 +02:00
Pierre Curto
c63b3d4209
Small updates to std::lib ( #949 )
...
* lib/std/io: add Stream.supports_{read,Write}_byte and Stream.write_all
* std/io/: use char.digit()
2023-08-24 11:59:00 +02:00
Christoffer Lerno
056ffa5876
Fix bug dropping bounds checks for arrays. This addresses #943 .
2023-08-23 14:21:11 +02:00
Christoffer Lerno
0120498ec8
Fix seeder, update with dynamic interface for random. Insert unreachable after panic in asserts. Macro ensure static check.
2023-08-23 13:52:27 +02:00
Christoffer Lerno
0b67f1a8e4
Fix windows .dyn_search.
2023-08-22 21:34:10 +02:00
Christoffer Lerno
16e71c14b9
New resolution of $define only check on the last element. Fix issue with pointer and array element types not considered live.
2023-08-22 18:16:26 +02:00
Christoffer Lerno
27445e6c1d
Semi-fix of $embed on empty. Inline caches for dynamic dispatch.
2023-08-22 15:24:21 +02:00
Dmitry Atamanov
fcb4bc0781
Reimplement QuickSort (non-recursive modification).
2023-08-22 14:48:12 +02:00
Christoffer Lerno
6c60b0d2a6
Update errno listings. Update ai flags in std::net. Fix incorrect socket error results on Win32. Change behaviour Socket set_option. TcpSocket/TcpServerSocket/UdpSocket. Rename "TimeDuration" to "Duration". Allow @if on enum values.
2023-08-19 22:41:54 +02:00
Christoffer Lerno
ed70f39da8
Update the json API
2023-08-19 00:53:28 +02:00
Christoffer Lerno
d5aebb434c
Eliding length for ":"-ranges is no longer allowed.
2023-08-18 22:25:51 +02:00
Christoffer Lerno
17f69d8da8
Update slice assign so that it looks at the arguments and does slice copying or splat assign as needed.
2023-08-18 18:46:38 +02:00
Christoffer Lerno
c07dc700df
Fix of #936 . Also some general cleanup.
2023-08-18 15:55:43 +02:00
Christoffer Lerno
957ce320ae
Cleanup and size reduction of Ast/Expr.
2023-08-18 01:57:56 +02:00
Pierre Curto
7a39933c97
add NanoDuration.to_format() ( #935 )
...
* lib/std/time: avoid switch in DateTime.compare_to()
* lib/std/time: add NanoDuration.to_format()
* std/lib: fix #934
2023-08-17 10:30:20 +02:00
Christoffer Lerno
9b0da89a03
Added compare_to as a standard macro.
2023-08-17 10:13:00 +02:00
Christoffer Lerno
b05ba8d110
Updated the test runner code slightly.
2023-08-16 17:31:16 +02:00
Christoffer Lerno
0448038c68
Added test.
2023-08-16 15:58:33 +02:00
Christoffer Lerno
e694d60f23
Updates and fixes to Mutex ( #933 )
...
Updating Mutex to have specific types: TimedMutex, RecursiveMutex, TimedRecursiveMutex. Fixes to the win32 implementation.
2023-08-16 15:45:49 +02:00
Christoffer Lerno
8a4337e819
Some improvements for the stacktrace.
2023-08-16 13:54:21 +02:00
Pierre Curto
5bd21c10b6
improve tests ( #932 )
...
* test: fix warnings generated by Python's interpreter
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/core/runtime: sort tests to run; improve tests output
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-08-16 12:28:07 +02:00
Christoffer Lerno
87c9c29ee8
Make -O1 the default, not -O2.
2023-08-16 10:51:43 +02:00
Pierre Curto
6c3d6a4b05
std/lib: fix module path for RingBuffer
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-08-15 15:58:28 +02:00
Christoffer Lerno
f39dd82adc
Fix issue where imports could be made more than once. Addresses #929
2023-08-15 10:47:40 +02:00
Pierre Curto
f4ad9fcee0
move num_cpu() to std::os ( #928 )
...
* lib/std: move num_cpu() to std::os
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* add ThreadPool (#926 )
* lib/std/collections: fix tab indentation
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/threads: add ThreadPool
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* ats/lib/threads: add num_cpu()
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/os: move macos constants to std::os::macos
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-08-14 17:04:06 +02:00
Pierre Curto
65bea1cb2d
add ThreadPool ( #926 )
...
* lib/std/collections: fix tab indentation
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/threads: add ThreadPool
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* ats/lib/threads: add num_cpu()
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-08-14 15:33:51 +02:00
Christoffer Lerno
f912e53038
Fix where designated initializers had optional arguments. See #923
2023-08-13 20:57:50 +02:00
Christoffer Lerno
3c8bbc2b90
Fix issue combining void! in macros in some cases. See #927
2023-08-13 20:35:49 +02:00
Christoffer Lerno
e22afe5424
Allow "if (try foo())"."
2023-08-13 18:15:20 +02:00
Pierre Curto
c060569599
add tests for Mutex ( #925 )
...
* std/lib: add tests for Mutex
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/collections: add missing import
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* std/collections: add RingBuffer
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-08-13 17:39:09 +02:00
Christoffer Lerno
d83f591184
Check for mutex initialization. Fix missing check on optional for certain macro situations.
2023-08-12 11:55:49 +02:00
Christoffer Lerno
b6f302d1c6
Fix issues with thread, add some simple test.
2023-08-12 02:16:46 +02:00
Pierre Curto
a846ab9cc0
std/lib/threads: fix typo
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-08-11 21:08:17 +02:00
Christoffer Lerno
f0d4c4d2ce
Ensure type is checked before analysis of compound literals. #919
2023-08-11 18:15:39 +02:00
Christoffer Lerno
3e765a3f3e
Hash maps now copy keys if keys are copyable.
2023-08-10 21:14:24 +02:00
Christoffer Lerno
356b6bb1b7
Fixed test.
2023-08-10 19:09:00 +02:00
Christoffer Lerno
951a9f2b43
Fix of ++ and -- on bitstructs.
2023-08-10 18:01:50 +02:00
Christoffer Lerno
6d870fbef0
Fix for arithmetic promotion of aliases. Some work towards $exec scripting.
2023-08-10 17:14:29 +02:00
Christoffer Lerno
01a89e2145
Fix bug where library source files were sometimes ignored.
2023-08-09 21:34:58 +02:00
Christoffer Lerno
6df6d2c084
Update type changes.
2023-08-09 02:06:50 +02:00
Christoffer Lerno
2ca67d1489
Fix void[] -> char[] cast.
2023-08-09 01:03:06 +02:00
OdnetninI (Eduardo José Gómez Hernández)
eec6ce2210
README: Updated instructions for AUR ( #915 )
...
* README: Updated instructions for AUR
* README: Missing space
2023-08-08 16:42:42 +02:00
Eduardo José Gómez Hernández
c44a0528df
Tests:std/lib/io/file: Added unit tests for read_any and write_any
2023-08-08 10:12:36 +02:00
Christoffer Lerno
5b5bc7fdbb
Fix void[] -> char[] cast.
2023-08-07 20:58:20 +02:00
Christoffer Lerno
68aadc958f
Added read_any/write_any.
2023-08-07 19:55:10 +02:00
Christoffer Lerno
91bb31856b
Introduce initial $exec.
2023-08-07 19:43:57 +02:00
Christoffer Lerno
a864822a89
Do not assert when encountering resolved non-identifier access child expressions. Addresses #913
2023-08-04 15:50:21 +02:00
Christoffer Lerno
a1a0958415
Prevent parameters to end with comma.
2023-08-03 14:37:23 +02:00
Christoffer Lerno
def97eea9d
Fixes member visibility for anonymous bitstruct. Bitstruct member attributes works. Anonymous bitstruct assignment fixed.
2023-08-03 01:00:30 +02:00
Pierre Curto
e4febe62ef
lib/std/io: make PathWalker return an optional
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-08-02 23:05:28 +02:00
Christoffer Lerno
fc0973f378
Fix issue casting an untyped list. Addresses #908 .
2023-08-02 23:03:50 +02:00
Pierre Curto
9b1c75d061
std/lib: simplify String.{,r}index_of and improve speed for the index… ( #907 )
...
* std/lib: simplify String.{,r}index_of and improve speed for the index_of one
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/collections: add EnumMap.get_ref
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-08-02 11:43:58 +02:00
Christoffer Lerno
09bb7d3525
Fix issue with type_info not being completely poisoned when encountering an error. Fixes #905
2023-08-01 12:26:49 +02:00
Pierre Curto
701d6a0746
std/lib/io: add Scanner ( #904 )
...
* std/lib/io: add Scanner
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/core: use existing methods in String.convert_ascii_to_{lower, upper}
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-08-01 10:47:21 +02:00
Christoffer Lerno
a0df1fd728
Add missing keys to project.
2023-07-31 21:15:05 +02:00
Christoffer Lerno
6a3e618ffd
Another overeager type resolution removed.
2023-07-31 14:19:41 +02:00
Christoffer Lerno
d63bc10d74
Fix issue with type properties.
2023-07-31 14:02:20 +02:00
Christoffer Lerno
4fd45700a2
Fix issue with type properties.
2023-07-31 13:55:53 +02:00
Christoffer Lerno
f0c0efca8d
Remove eager resolve.
2023-07-31 12:46:51 +02:00
Christoffer Lerno
72f5bac346
When a member is checked, still add it to the environment. Addresses #903 .
2023-07-31 12:35:41 +02:00
Christoffer Lerno
20699c1262
Fix missing ]
2023-07-31 11:00:25 +02:00
Christoffer Lerno
8a335fc64c
Updated stack trace. This addresses #898 .
2023-07-31 10:57:56 +02:00
Christoffer Lerno
8a9522a363
Updated release notes.
2023-07-31 10:43:15 +02:00
Christoffer Lerno
9315443866
Fix issue where lambdas were copied incorrectly from generics. This addresses #900 .
2023-07-30 21:12:02 +02:00
Christoffer Lerno
95cb2cc28e
Removal of def Boo = Bar<int>; Delay array checking for flexible array. Replace resolve_fn_ptr with resolve_type_structure. Resolve type structure before entering initializers.
2023-07-30 19:59:26 +02:00
Christoffer Lerno
151fc83815
Fix issue with attribute argument resolution.
2023-07-30 16:46:31 +02:00
Christoffer Lerno
b759abc954
Fix to DString reserve.
2023-07-29 22:42:55 +02:00
Pierre Curto
6808a38c9f
add std::io::stream::ByteBuffer; fix std::io::Path::walk ( #895 )
...
* lib/std/io/stream: add some inlines
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/io/stream add ByteBuffer
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/io/path: fix free of paths in walk
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/bits: remove unnecessary receiver type
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-29 21:21:45 +02:00
Christoffer Lerno
108b2244d8
Fix bug in aligned_realloc, fixes issue when a type is not resolved before the cast. #897
2023-07-28 22:21:23 +02:00
Christoffer Lerno
283a95dea2
Fix of issue where generic faults and enums would not get the "parent" id correctly fixed up. This addresses #896 .
2023-07-28 21:49:22 +02:00
Christoffer Lerno
1219e8ba37
Fix accidental tracing preventing test from working.
2023-07-28 11:14:38 +02:00
Christoffer Lerno
ada3ea08fc
Some initial parse output. Enforce handling of optionals. Fix issue where constants were folded despite the fact that they shouldn't be. Fix bug related to return foo() where foo() returns void!. ( #893 )
2023-07-27 22:58:41 +02:00
Pierre Curto
d0fa473d61
lib/std/io: assert in Formatter.out_str on "Invalid enum" if an enum value is out of range ( #892 )
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-27 21:18:31 +02:00
Christoffer Lerno
7b0408f79d
Adding feature flags.
2023-07-26 23:28:11 +02:00
Christoffer Lerno
c18526f10a
Fix of nested union/struct initialization. Fixes #886 .
2023-07-26 21:12:04 +02:00
Christoffer Lerno
499c82b089
Updated indentation to C3 standard.
2023-07-26 14:01:24 +02:00
Pierre Curto
a376d8e2bf
add ERRNO for macOS, improve net error messages ( #885 )
...
* lib/std/libc: add ERRNO values for macOS
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/net: improve error messages
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-26 13:41:35 +02:00
Pierre Curto
59b077223b
use IoError.UNSUPPORTED_OPERATION instead of asserts; improve Path.walk
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-26 13:05:12 +02:00
Christoffer Lerno
9c503cf6fd
Update to handle LLVM 18 part 2
2023-07-26 01:19:06 +02:00
Christoffer Lerno
7954db9a89
Update to handle LLVM 18
2023-07-26 00:56:45 +02:00
Christoffer Lerno
3929e2057d
Change unreachable code to error. Remove unreachable where the compiler now can detect reachability.
2023-07-25 23:31:05 +02:00
Pierre Curto
242006d05d
add is_absolute and absolute methods to path::Path ( #882 )
...
* lib/std/io/os: remove unnecessary dup in native_ls
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/core: add String.index_of_char and String.rindex_of_char
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/io: add Path.is_absolute
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/io: add Path.absolute
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std: fix Path.normalize on files starting with `.`; add Path.walk
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-25 23:23:56 +02:00
Christoffer Lerno
b74b62e242
Fixes to broken docs parsing. Fixes #880 .
2023-07-25 17:55:46 +02:00
Christoffer Lerno
d0c00b859b
Fixes incorrect type resolution of && and || with optionals. Fixes #879
2023-07-25 15:16:47 +02:00
Pierre Curto
3e78a70552
lib/std/io: replace IoError.FILE_EOF with IoError.EOF
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-25 11:32:47 +02:00
Christoffer Lerno
fad0adfcd0
Fix testcase.
2023-07-25 11:25:20 +02:00
Christoffer Lerno
9e477056ed
Fixes to $defined implementation.
2023-07-23 23:55:38 +02:00
Christoffer Lerno
de9bb1d0cc
Fix test.
2023-07-23 21:51:38 +02:00
Christoffer Lerno
45d1b1d671
Fix where bitstructs in subarrays triggered the wrong lowering. Fixes #877
2023-07-23 20:50:53 +02:00
Christoffer Lerno
afb902d792
Fixes #874
2023-07-23 16:24:02 +02:00
Christoffer Lerno
5f1ebdcd28
Fixes #873
2023-07-23 16:14:33 +02:00
Dmitry Atamanov
e72ec2f605
std::bits fixes.
2023-07-22 17:40:08 +02:00
Christoffer Lerno
d7d7fd3a10
Rewrite of function pointer handling.
2023-07-21 01:44:37 +02:00
Christoffer Lerno
7bccde72ed
Fix missing declaration resolve when inlining enum data.
2023-07-20 18:34:02 +02:00
Christoffer Lerno
3f41e58dbd
Fix pseudo-circular function pointer definitions.
2023-07-20 12:49:02 +02:00
Christoffer Lerno
581ecdb2a8
Only add a director as a link path if the directory can be found. Update raylib examples.
2023-07-19 22:06:57 +02:00
Christoffer Lerno
c4f8d5f25e
Update range.
2023-07-19 21:56:52 +02:00
Dmitry Atamanov
7fbedae604
Add has function to Range and ExclusiveRange.
2023-07-19 21:45:14 +02:00
Pierre Curto
b453186de5
lib/std/collections: add init and tinit methods to PriorityQueue
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-19 21:44:20 +02:00
Dmitry Atamanov
49ea950f78
Add is_even and is_odd to math module
2023-07-19 11:38:49 +02:00
Christoffer Lerno
5aae9f3204
Correctly apply fixup to switch macros. Addresses new issue in #862 . Updates @pool.
2023-07-19 11:38:18 +02:00
Christoffer Lerno
5c2e82fc8b
More use of temp allocator.
2023-07-19 02:46:43 +02:00
Christoffer Lerno
5a2fe4c9d9
Fix to macro codegen.
2023-07-19 01:34:50 +02:00
Christoffer Lerno
4dcfb7a675
Fix of #862 where enums declarations where not regenerated. Updated @pool implementation.
2023-07-18 23:23:53 +02:00
Pierre Curto
491c5ceec5
support for List in quicksort; add HashMap.@each ( #861 )
...
* compiler: fix typo in error message about failed name resolution
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/sort: add List support to quicksort
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/collections: add HashMap.@each
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-18 12:18:12 +02:00
Christoffer Lerno
2e6c8721bc
Fix of is_comparable.
2023-07-17 21:22:16 +02:00
Pierre Curto
fd5336c56e
lib/std/io/stream: add LimitReader ( #858 )
...
* lib/std/io/stream: add LimitReader
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std: more method conversions to use new receiver notation
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-17 20:22:29 +02:00
Christoffer Lerno
209d994336
Finalize subprograms after writing them. Correct debug info for C varargs. Add uwtable metadata. Removed visibility from functions.
2023-07-17 20:21:10 +02:00
Christoffer Lerno
aa216fa510
Dev ( #859 )
...
* Fix bug where analysing subexpr relied on them not being analysed. Fix issue where converting a const initializer bool to integer failed. Fix of issue where the case check assumed other cases were const values.
* Fix bug where analysing subexpr relied on them not being analysed. Fix issue where converting a const initializer bool to integer failed. Fix of issue where the case check assumed other cases were const values. Remove PTHREAD for windows.
* Fix bug where analysing subexpr relied on them not being analysed. Fix issue where converting a const initializer bool to integer failed. Fix of issue where the case check assumed other cases were const values. Remove PTHREAD for windows.
2023-07-17 02:00:27 +02:00
Pierre Curto
89e084938f
cross platform socket interface ( #857 )
...
* lib/std/net: add Network, Socket and Listener
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/net: add SocketOption
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/net: fixes for win32 and wasm
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-16 14:14:36 +02:00
Christoffer Lerno
11eb187fee
Allow init from slices: float[4] x = foo[:4]
2023-07-16 01:23:12 +02:00
Christoffer Lerno
8a4e6f7dd3
Fix bug where @local declarations would get registered as @private for generic modules. #856 . Update to consistent tab spacing.
2023-07-15 19:27:24 +02:00
Pierre Curto
35bffdadc2
improve the sort and collections libs ( #853 )
...
* lib/std/sort: unify binarysearch and binarysearch_with; add comments to quicksort
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/collections: mark List.{len, is_empty, get} with @inline
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/collections: add PriorityQueueMax; add tests for PriorityQueue and PriorityQueueMax
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-15 19:08:54 +02:00
Christoffer Lerno
97e5dbf62c
Allow enum and fault constants to parameterize modules.
2023-07-15 17:03:52 +02:00
Christoffer Lerno
4325d017c8
Compacted section list. Somewhat more controlled ctarg search.
2023-07-15 16:31:53 +02:00
Christoffer Lerno
34306cbf5d
Fixes missing checks to body arguments. Do not create debug declaration for value-only parameter. Bug in alignment for atomics. Macro ref parameters are pointers.
2023-07-15 15:11:44 +02:00
Kenta
90d91b4891
Update build-with-docker.sh
...
Remove debug echo call in config check
2023-07-14 10:39:29 +02:00
Christoffer Lerno
ab32e0dc9d
Fix for tests & callstack.
2023-07-13 21:48:48 +02:00
Christoffer Lerno
26ee4babcf
Native_fopen for Win32 had incorrect arguments.
2023-07-13 19:54:27 +02:00
Christoffer Lerno
c7d90baad1
Error message on bus error or segmentation fault. Some additional SIG… ( #848 )
...
* Error message on bus error or segmentation fault. Some additional SIG info. Full debug info by default. Trapping is now debugtrap rather than trap for LLVM. Row now initialized when entering function for stacktrace.
2023-07-13 15:25:06 +02:00
Christoffer Lerno
c99f298cad
Fix issue where rethrow in a macro not allowing optional caused an assert to trigger. #849
2023-07-13 12:34:15 +02:00
Christoffer Lerno
fc316b1031
Improve the error message on accidentally passing a ref parameter as a pointer.
2023-07-11 12:18:18 +02:00
Pierre Curto
1ffe430df0
lib/std/sort: use Hoare's algorithm in quicksort
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-11 11:09:51 +02:00
Pierre Curto
0efb142c88
std/lib/sort: avoid overflow in binary search
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-11 11:09:51 +02:00
Christoffer Lerno
dddeca1856
Remove assert(try). Prevent nextcase with expression if there is no switch. Fix issue with multiple declarations and compile time variables. Nextcase default. Dropped support for non-const-int ranges.
2023-07-11 01:04:35 +02:00
Christoffer Lerno
3b0370c8bb
Fix of tests.
2023-07-10 20:21:12 +02:00
Pierre Curto
2437573a8f
lib/std/io: add Stream.read_all ( #843 )
...
* lib/std/io: add Stream.read_all
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/core: use shortened receiver notation
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-10 20:13:31 +02:00
Christoffer Lerno
e2676a5c7f
Change zero terminated wide strings to use WString over Char16
2023-07-09 20:10:17 +02:00
Christoffer Lerno
68af987c60
Version update.
2023-07-09 16:25:37 +02:00
Christoffer Lerno
cd73b9bc42
Require exhaustive enum switching.
2023-07-09 16:25:15 +02:00
IgneousRed
943d010dfc
New Rngs ( #841 )
...
* New Rngs
* Mistake
* fix Mcg using wrong constant
2023-07-09 15:00:19 +02:00
Christoffer Lerno
38cc24af27
binarysearch is now a builtin, quicksort as well.
2023-07-09 01:49:43 +02:00
Christoffer Lerno
053f7880e5
Simplified quicksort with $switch.
2023-07-09 01:46:45 +02:00
Christoffer Lerno
9543fbbf1c
Exhaustive switch on enums. This addresses #838
2023-07-09 01:18:01 +02:00
Christoffer Lerno
8b605d9183
$embed.
2023-07-09 01:18:01 +02:00
Pierre Curto
77b3214746
std/lib/sort: update quicksort to use the new generics
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-08 14:06:40 +02:00
Christoffer Lerno
5f711408c0
Fix compiler error when taking the address of a parameterized function. Fix issue when being generic over a function type, this fixes #836 .
2023-07-08 13:32:32 +02:00
Pierre Curto
d709c18f5f
std/lib/core: rename DString.str to DString.as_str ( #834 )
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-08 00:10:04 +02:00
Christoffer Lerno
8780df8467
Correctly treat distinct inline types as having their inner type's methods available.
2023-07-07 13:54:33 +02:00
Pierre Curto
7dc1eab185
std/lib/collections: make List support the []= operator ( #831 )
...
* std/lib/collections: make List support the []= operator
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* std/lib/io: rename receiver to self
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-07 13:51:44 +02:00
Christoffer Lerno
79e2d683b6
Live tracing failed to trace expression types. This fixes #832 .
2023-07-07 12:00:59 +02:00
Christoffer Lerno
4f7b42cdc4
New generic syntax and ad hoc invocation.
2023-07-06 23:43:36 +02:00
Christoffer Lerno
276281c3f9
Fix of "INLINE" function.
2023-07-06 21:33:27 +02:00
Christoffer Lerno
b74de0b1e4
Fix issue where array comparison would emit the wrong basic block reference to phi when underlying comparison would emit a block.
2023-07-06 20:29:00 +02:00
Pierre Curto
df9bc377dd
std/lib/net/os: add bind, listen and accept for posix platforms
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-06 17:36:54 +02:00
Christoffer Lerno
97ded16ea2
Fix issue where macros with bodies are not filtered from liveness tracing. #818
2023-07-06 17:30:50 +02:00
Pierre Curto
731729cf1b
std/lib/hash: rename receiver to self
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-04 21:07:20 +02:00
Christoffer Lerno
daa952d990
Update quicksort.
2023-07-04 21:03:48 +02:00
Pierre Curto
f8a3e4f6f0
add basic quicksort support ( #816 )
...
* lib/std/sort: refactor binarysearch namespace to prepare for sorting
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* std/lib/sort: add basic quicksort support
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/hash: use method first parameter inferred type
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/hash: add fnv64a support
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-04 20:15:03 +02:00
Christoffer Lerno
6231cc83d9
Reduce recursion max further.
2023-07-04 18:51:34 +02:00
Christoffer Lerno
20c0bbc911
Reduce recursion max.
2023-07-04 18:39:22 +02:00
Christoffer Lerno
559dcffdf2
Do not poison macro body.
2023-07-04 18:30:12 +02:00
Christoffer Lerno
7ed0aeced2
Should fix #814 .
2023-07-04 16:30:09 +02:00
Christoffer Lerno
c249c3f3b6
Fix of accidentally printing "prev" when using $checks. Updated binary search.
2023-07-04 02:29:02 +02:00
Pierre Curto
55d17ec990
add the std::sort::binarysearch module
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-04 01:35:10 +02:00
Christoffer Lerno
bbbcd9bf48
Updated name mangling for static vars in llvm.
2023-07-04 01:12:39 +02:00
Christoffer Lerno
c2c6f09d68
Fixes #811 . Update some stdlib methods. Header printout correctly picks a name. #804
2023-07-03 15:45:06 +02:00
Christoffer Lerno
848a5212ef
Fixes #811 . Update some stdlib methods. Header printout correctly picks a name. #804
2023-07-03 13:17:43 +02:00
Tonis
eaf45436f8
Edit Matrix4 perspective fn
2023-07-02 20:02:59 +02:00
Christoffer Lerno
50784d4df6
Updated to use the new implicit type for method calls in some libraries. Made the grammar a little more liberal.
2023-07-02 10:55:25 +02:00
Christoffer Lerno
21d8a8b6da
Fix #809 missing checks on generic types, accepting both types where constants should be and vice versa.
2023-07-01 23:58:00 +02:00
Christoffer Lerno
45820d45e5
Allow using inferred type on method first parameter.
2023-07-01 22:47:54 +02:00
Pierre Curto
2ac213a3ce
lib/std/io/stream: add ReadBuffer and WriteBuffer streams
...
ReadBuffer and WriterBuffer buffer stream reads and writes to a stream.
Useful in situations where the underlying stream is sensitive to the number
of read or write calls.
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-07-01 17:38:09 +02:00
Christoffer Lerno
70ea6ce04b
Fix #806 , and also makes sure that things like FOO.x.a is a compile time value.
2023-07-01 16:29:17 +02:00
Christoffer Lerno
9102fc6032
Comments and cleanup.
2023-06-30 18:02:34 +02:00
Pierre Curto
378ea1deea
Update std::io::Stream ( #805 )
...
* add missing newlines in output messages when creating libraries
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* lib/std/io: add Stream.supports_flush; fix AvailableStreamFn
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-06-30 17:37:08 +02:00
Christoffer Lerno
f74e294dc2
Push stack codegen to function for cleaner binaries. Some refactoring in allocators.
2023-06-30 01:01:58 +02:00
Christoffer Lerno
57c8b5fc75
Fix on rethrow + macros.
2023-06-27 20:41:17 +02:00
Pierre Curto
550b1f23ec
add missing newlines in output messages when creating libraries
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-06-27 14:06:00 +02:00
Christoffer Lerno
f651a59294
Fix on rethrow + macros.
2023-06-27 13:19:28 +02:00
Christoffer Lerno
fee80682b1
Update to error message when expecting a type.
2023-06-27 10:19:09 +02:00
Christoffer Lerno
b88916214f
Fix of allocator gen.
2023-06-26 21:34:36 +02:00
Christoffer Lerno
685be0981f
Fix priorityqueue.
2023-06-26 17:43:03 +02:00
Christoffer Lerno
fc054dad81
Added some to_string.
2023-06-26 16:21:07 +02:00
Christoffer Lerno
83f8bbb91b
Update range to have exclusive and inclusive range.
2023-06-26 10:18:09 +02:00
Christoffer Lerno
0ec64c3be8
Remove broken free check on temp allocator.
2023-06-25 22:07:44 +02:00
Christoffer Lerno
f878191e6f
Fix missing defer live tracing bug #801
2023-06-25 22:04:27 +02:00
Christoffer Lerno
8c73a450a1
Reduce memory consumtion. Add "range"
2023-06-25 21:39:53 +02:00
Pierre Curto
1dccd6af79
lib/std: display any caught error in tests
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-06-24 21:53:03 +02:00
Christoffer Lerno
dcfbca076f
Fix to zero length strings and better error when using assert with a non-constant error value.
2023-06-24 20:32:30 +02:00
Christoffer Lerno
b68b1e01b3
Updated grammar.
2023-06-24 18:24:04 +02:00
Christoffer Lerno
be04473af4
Name change, some updates using "from end" indexing.
2023-06-24 18:21:16 +02:00
Christoffer Lerno
fedffc2f35
Name change, some updates using "from end" indexing.
2023-06-24 15:20:40 +02:00
Christoffer Lerno
a187c55dfe
Improved pthread availability.
2023-06-24 14:23:42 +02:00
Pierre Curto
55a1f794cf
lib/std/encoding: add base64 support
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-06-24 14:23:18 +02:00
Christoffer Lerno
68f6cb1286
Updated organization file functions, env naming.
2023-06-24 10:29:17 +02:00
Pierre Curto
0ab0f727ad
lib/std: fix ByteWriter.read_from method ( #793 )
...
* lib/std: fix ByteWriter.read_from method
When reading from a stream which does not have an available method,
ByteWriter would not make any progress if its buffer was empty.
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
* test/unit/stdlib/io: use separate module for TestReader
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
---------
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-06-23 10:44:36 +02:00
Christoffer Lerno
c46017f0dc
Make MSVC happy about definite assignment.
2023-06-23 00:26:32 +02:00
Christoffer Lerno
1bd729a4bb
Remove accidental code include.
2023-06-23 00:17:13 +02:00
Christoffer Lerno
0eee9daf1d
Macros generating lambdas now actually is a thing.
2023-06-22 23:42:40 +02:00
Christoffer Lerno
d90fa5e292
Make errno implicitly convertible to int. Add getaddrinfo on all platforms. Fix addrinfo struct and sizes.
2023-06-22 02:06:37 +02:00
Christoffer Lerno
503a4de277
Cleanup of libc
2023-06-21 16:27:53 +02:00
Christoffer Lerno
ae9fca52ca
Update version
2023-06-21 16:27:53 +02:00
Christoffer Lerno
eddae3b7f7
Close linker context.
2023-06-21 16:27:53 +02:00
Christoffer Lerno
d5b01d3a8f
Native ls
2023-06-21 16:27:53 +02:00
Christoffer Lerno
ab93389031
- Updated posix/win32 stdlib namespacing
...
- Process stdlib
- Fix to void expression blocks
2023-06-21 16:27:53 +02:00
Christoffer Lerno
5c9eb264e8
Delete object files after linking.
2023-06-21 16:27:53 +02:00
Christoffer Lerno
4d552ae44d
Update $include syntax and behaviour. Remove top level $if completely.
2023-06-21 16:27:53 +02:00
Christoffer Lerno
3dd1741484
Fix of contract error location for @require #788
2023-06-20 21:35:48 +02:00
Christoffer Lerno
f9548cb213
Fix nested hash resolution for access identifiers. Fixes #789
2023-06-20 17:05:13 +02:00
Christoffer Lerno
c3da240bc0
Grammar fix.
2023-06-19 23:34:46 +02:00
Pierre Curto
f439539c6e
lib::std::core::bitorder: add read and write
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com >
2023-06-19 23:34:30 +02:00
Christoffer Lerno
57424d8b6b
Fixes #786 , constant initialization with constants sometimes causing an error lowering to LLVM. Fixes bug passing void as a vararg argument to an any vararg.
2023-06-19 10:38:37 +02:00
Christoffer Lerno
3bdeec3bc2
Incorrect defer/return value ordering in some cases.
2023-06-18 23:25:33 +02:00
Christoffer Lerno
2d46bdf8e3
$$trap and $$unreachable is automatically no_return.
2023-06-15 21:09:05 +02:00
Christoffer Lerno
5f87cb4c4f
Fix of #780 .
2023-06-13 18:30:57 +02:00
Christoffer Lerno
76d75ac375
Fix passing temporary objects by reference for methods.
2023-06-13 12:22:35 +02:00
Christoffer Lerno
75a6ae7111
Enable LLVM 15
2023-06-12 09:42:23 +02:00
Christoffer Lerno
cf83651c79
The new @if directive.
2023-06-11 18:56:37 +02:00
Christoffer Lerno
4c1edfb941
Dev ( #777 )
...
* The new @if directive.
2023-06-10 23:16:28 +02:00
Christoffer Lerno
82c3facb65
--obj, --emit-stdlib, --strip-unused
2023-06-09 09:37:07 +02:00
Christoffer Lerno
266dba466c
Rename to no-emit-stdlib
2023-06-06 15:25:25 +02:00
Christoffer Lerno
379a5f670f
Add no-obj and no-stdlib-codegen options.
2023-06-06 15:22:28 +02:00
Christoffer Lerno
8eaad81800
Dead strip by default. Add list to_string. Fix missing check for dynamic calls.
2023-06-05 14:54:17 +02:00
Christoffer Lerno
4baacc7d52
Formatting.
2023-06-03 12:08:11 +02:00
Christoffer Lerno
0de47d7c83
Ensure panic functions are never stripped.
2023-06-02 23:19:54 +02:00
Christoffer Lerno
cfd21f8ca2
Windows thread pool.
2023-06-02 23:19:54 +02:00
Christoffer Lerno
d0e8944c56
Updated task pool.
2023-06-02 21:58:25 +02:00
Christoffer Lerno
3e54d13b62
Prefer def
2023-06-02 20:08:45 +02:00
Christoffer Lerno
b30d130d92
Configurable Linux crt/crtbegin paths.
2023-05-31 21:26:23 +02:00
Christoffer Lerno
4cf98dab93
Add special ubuntu-20 release
2023-05-31 12:42:31 +02:00
Christoffer Lerno
ea1a5435bb
Dead strip on "strip unused"
2023-05-30 16:42:15 +02:00
Christoffer Lerno
275e3c6a09
Update with CPU type.
2023-05-30 16:42:15 +02:00
Christoffer Lerno
9de02efa01
Exclude main methods from dllexport.
2023-05-28 15:59:15 +02:00
Christoffer Lerno
e0cfb39d79
Add DLL export for exported functions on win32.
2023-05-28 15:00:46 +02:00
Christoffer Lerno
d4259368a2
Remove call convention.
2023-05-26 14:22:50 +02:00
Christoffer Lerno
07b107ff5e
Better handling of attribute definition errors. Resolves #753
2023-05-26 11:31:27 +02:00
Christoffer Lerno
b794c893d6
Dynamic dispatch.
2023-05-25 22:28:45 +02:00
Christoffer Lerno
2e498a426e
Improved the README example somewhat.
2023-05-22 09:47:46 +02:00
Christoffer Lerno
0778537540
Update mac versions to test 15 and 16. Update release version to 16.
2023-05-21 22:06:24 +02:00
Christoffer Lerno
ddd0497922
Better lowering of distinct types. Noreturn function call expr recognized as a "jump" for escape analysis. Preferring "def" in libs. To upper / to lower for ascii. Initial dynlib support.
2023-05-21 21:41:01 +02:00
Tonis
a877d4458c
Improve Matrix identity functions and add Quaternion to matrix function ( #765 )
...
* Edit matrix identity fn and add quaternion to matrix fn
* Change matrix identity macros to constants
---------
Co-authored-by: Tonis <tanton@paysure.solutions >
2023-05-16 11:50:01 +02:00
Christoffer Lerno
3a725d1348
Better error on missing ';' in certain cases.
2023-05-15 08:45:10 +02:00
Christoffer Lerno
353a072b75
Fix for getting the correct generic type of consts. Fix of late initialization of structs using compound literals.
2023-05-14 17:23:45 +02:00
Christoffer Lerno
8eddbfb708
Fix to net::os::posix. Remove "\s"
2023-05-12 16:55:15 +02:00
Christoffer Lerno
021bcdcf21
Add "is_initialized" to check if a map has been initialized.
2023-05-10 13:12:31 +02:00
Christoffer Lerno
bff7b492a2
Further bitstruct cast fixes. Updated code.
2023-05-10 13:03:15 +02:00
Christoffer Lerno
4d0f73a8f5
Consistent naming in allocators. Fix where cast from char array -> bitstruct would not work.
2023-05-10 10:30:37 +02:00
Christoffer Lerno
6210522c75
Update error message, disable 17 from CI
2023-05-08 18:48:40 +02:00
Christoffer Lerno
13f808b552
Added acos/asin(h) and atanh
2023-05-08 10:50:05 +02:00
Christoffer Lerno
dc30c8edc2
Fix complaints of broken compilers.
2023-05-08 00:18:39 +02:00
Christoffer Lerno
ee5ad170e0
Simplify detection of initialized variable.
2023-05-08 00:13:12 +02:00
Christoffer Lerno
172d561f07
Change syntax of $if, $assert, $include, $echo. Introduces $error
2023-05-06 12:18:00 +02:00
Christoffer Lerno
3dd6675e1b
Fixed const vector codegen. Missing math comparisons.
2023-05-06 02:29:26 +02:00
Christoffer Lerno
db8c46d6c5
Addition of "distinct" and "inline" as keywords. Removal of "alias" keyword.
2023-05-04 08:48:17 +02:00
Christoffer Lerno
6fc38bbcb9
Accidental change.
2023-04-28 23:36:45 +02:00
Christoffer Lerno
184cc19d36
Further grammar fixes.
2023-04-28 19:11:57 +02:00
Christoffer Lerno
e25c06a065
Fixes to the grammar.
2023-04-27 12:26:58 +02:00
Christoffer Lerno
f2f514da74
Fixes to the grammar.
2023-04-26 17:24:35 +02:00
Christoffer Lerno
619fa26c26
Updated LLVM for Windows
2023-04-25 16:09:04 +02:00
Christoffer Lerno
e8642d6797
Fixes to access grammar. "delete" => "remove"
2023-04-24 09:10:35 +02:00
Christoffer Lerno
d1c2fbd79f
Fix for MSVC
2023-04-21 17:47:32 +02:00
Christoffer Lerno
2a79e0f1cf
Introduce def as a trial. Fixup of timeit.
2023-04-21 17:42:38 +02:00
Christoffer Lerno
c847650579
Introduce def as a trial. Fixup of timeit.
2023-04-21 16:03:28 +02:00
Christoffer Lerno
edd2f1c717
Updated timeit.
2023-04-21 15:57:48 +02:00
Christoffer Lerno
0a12686237
Remove acornvm
2023-04-21 15:51:00 +02:00
Christoffer Lerno
8059dc1539
delete_if, retain_if, rindex_of, compact, compact_count added to List.
2023-04-21 14:45:25 +02:00
Christoffer Lerno
809321e20c
Updated grammar. Removal of elif. Removal of ':' ';' in some ct statements. Empty faults is now an error. Remove "define" for types. Remove "private". Better errors on incorrect bitstruct syntax. Introduction of wildcard type rather than optional wildcard. Removal of scaled vector type. mkdir and rmdir. Disallow define @Foo() = { @inline }. Add handling for @optreturn and change it to @return!. Restrict interface style functions. Updated x64 ABI. stdlib updates to string. Removed deprecated functions. Update how variadics are implemented. Extended error messages. x86 ABI fixes. Shift check fixes. '!' and '?' are flipped. No trailing ',' allowed in functions. Fix to string parsing. Allow l suffix. Simplifying flatpath. any replaces variant, anyfault replaces anyerr. Allow getting the underlying type of anyfault. De-duplicate string constants. Fix of readme. Extended list. Fix of "(MyEnum)x + 1". Clock and DateTime types. Fixes to array concat.
2023-04-21 10:56:39 +02:00
Christoffer Lerno
d14e778232
Use different readdir on macOS depending on arch.
2023-04-10 09:54:02 +02:00
WraithGlade
18c1b20ea0
Fixed two typos and merged them properly. ( #758 )
...
* Fixed typo: "do" --> "does".
* Fixed typo: missing "is".
2023-04-02 17:25:16 +02:00
Christoffer Lerno
ad7ee06635
Grammar updates. Updated enum member parsing.
2023-03-22 21:46:47 +01:00
Christoffer Lerno
0f80d985fa
Fix sema errors on flexible array slices.
2023-03-22 12:56:15 +01:00
Christoffer Lerno
316af36723
Add dstringwriter.
2023-03-22 12:23:47 +01:00
Christoffer Lerno
9850adfa56
Rename OUT_OF_DISK => OUT_OF_SPACE. Allow byte writer to take a buffer.
2023-03-22 11:52:45 +01:00
Christoffer Lerno
172ae8a3a5
Only rudimentary parsing of "private" in prefix location. Make contract handling more correct.
2023-03-21 23:56:49 +01:00
Christoffer Lerno
07e3ced84e
Deprecate @extname
2023-03-21 16:41:26 +01:00
Christoffer Lerno
1c4ab48da7
Update for mingw
2023-03-21 14:06:11 +01:00
Christoffer Lerno
0a826d588f
Update
2023-03-21 00:59:41 +01:00
Christoffer Lerno
93fa135d28
Deprecation of define Type = ...
2023-03-20 22:56:06 +01:00
Christoffer Lerno
9c145996b0
$elif deprecated.
2023-03-20 16:54:45 +01:00
Christoffer Lerno
02d073675a
Fix to deprecated syntax.
2023-03-20 11:21:55 +01:00
Christoffer Lerno
3beed8a0f1
No exceptions compiling C++
2023-03-20 09:51:57 +01:00
Christoffer Lerno
5851de30ab
Try enabling 17 again.
2023-03-20 09:51:57 +01:00
Christoffer Lerno
5ee0d52ff1
Deprecate :; in $if etc.
2023-03-20 01:03:54 +01:00
Christoffer Lerno
cc87c77af3
Add deprecation notice on use of "private"
2023-03-19 23:50:00 +01:00
Christoffer Lerno
24147a85f7
Allow unary plus.
2023-03-19 22:46:28 +01:00
Christoffer Lerno
954521228e
Make casts explicit when casting to pointer offset. Better localization of error when narrowing fails. New printf formatting based on musl plus %a output.
2023-03-19 21:15:44 +01:00
Christoffer Lerno
9fa634b78b
is_finite / is_nan / is_inf, frexp native.
2023-03-18 21:17:18 +01:00
Christoffer Lerno
48a35b3277
Signbit, tests of frexp.
2023-03-18 19:13:17 +01:00
Christoffer Lerno
a041c53cdd
Add frexp.
2023-03-18 16:54:39 +01:00
Christoffer Lerno
9f068ce84d
Shorter code.
2023-03-18 14:44:35 +01:00
Christoffer Lerno
8b0df0ee11
try? / catch?
2023-03-17 22:49:48 +01:00
Ox512
1b667cbc93
Update the default project template ( #750 )
2023-03-15 19:40:49 +01:00
Christoffer Lerno
7075f834dd
Remove null-casts for anyerr.
2023-03-15 16:28:48 +01:00
Christoffer Lerno
e2b9a35dfe
Add tentative ".ordinal" on faults. Allow anyerr and fault to be initialized with null.
2023-03-15 14:32:00 +01:00
Christoffer Lerno
3cb94a2857
Temporarily disable LLVM 17. Generic module contracts enabled.
2023-03-14 23:25:52 +01:00
Christoffer Lerno
3237f87a09
Added some Win32 declarations.
2023-03-14 11:37:23 +01:00
Christoffer Lerno
1b27264f07
Allow type inference on enum comparisons. Add chdir. Fix bug when command was missing. Allow {} on basic types.
2023-03-13 16:25:03 +01:00
Christoffer Lerno
fb761b0cc5
Added OnStack allocator. Added dirname, basename and extension to path functions.
2023-03-13 11:51:27 +01:00
Christoffer Lerno
4ffeada3c7
Updated stdlib. Prefer file::open. Fix to slice assign with distinct types.
2023-03-12 00:33:16 +01:00
Christoffer Lerno
2607062cb6
Updated Path. Some work towards loading dirs.
2023-03-11 18:32:44 +01:00
Christoffer Lerno
7a2d73c690
mproved Path code.
2023-03-10 18:46:21 +01:00
Christoffer Lerno
d2a16961cf
More refactorings in the stdlib. More Path functions. Updated Win32 format for types. Fix bug with codegen of defer if ... More string functions.
2023-03-09 20:44:27 +01:00
Christoffer Lerno
39dd3e40a6
Remove attribute list from test.
2023-03-08 16:23:12 +01:00
Christoffer Lerno
1480b8f872
Update examples and contracts.
2023-03-08 15:57:42 +01:00
Christoffer Lerno
b94c647ead
Distinct String
2023-03-08 14:32:07 +01:00
Christoffer Lerno
9b81623680
Make string literals default to char[]
2023-03-08 11:24:11 +01:00
Christoffer Lerno
cfba19ab77
Remove deprecated to avoid warnings for VarString. Fix issue casting subarrays to distinct types.
2023-03-08 00:13:48 +01:00
Christoffer Lerno
89de0a70d2
"@ensure" now correctly only runs on non-optional results. Subtypes now merge to a single type. Beginning deprecation of "std::core::str". Refreshed String functions. Consistent use of ".using" parameter. Functions moved to string methods. Tests on more string methods. Fixes to split, rindex_of.
2023-03-08 00:13:48 +01:00
Christoffer Lerno
33cc2d889b
More const modification detection. Grab the version number into CMake.
2023-03-07 14:35:12 +01:00
Christoffer Lerno
ab1c025c05
Fix issue for wasm
2023-03-07 10:12:03 +01:00
Christoffer Lerno
7008dab113
Add primitive and incomplete object printout. First version of json parser.
2023-03-07 09:53:01 +01:00
Christoffer Lerno
300f4d38ab
Addition of object type. Fixes to const union initialization.
2023-03-06 23:58:13 +01:00
Christoffer Lerno
9eee250b10
Add DString init.
2023-03-06 09:12:52 +01:00
Christoffer Lerno
a4231823df
Add DString init.
2023-03-05 23:28:04 +01:00
Christoffer Lerno
d1626ada6f
List no longer uses a temp allocator by default. Incorrect check in the temp allocator removed. Added DString.
2023-03-05 23:14:16 +01:00
Christoffer Lerno
6ac99ed83c
Improve debug info.
2023-03-05 20:50:04 +01:00
Tonis
ff4c35fae1
Added Matrix identity macros and few matrix unit tests ( #742 )
...
* Add matrix identity macros
* Add matrix some matrix unit tests
---------
Co-authored-by: Tonis <tanton@paysure.solutions >
2023-03-05 20:39:55 +01:00
Dmitry Atamanov
549e1b6029
Added std::collections::enummap.
2023-03-04 22:41:22 +01:00
Christoffer Lerno
1035de3b36
Remove all locations when enums are implicitly lowered to integers. Remove the menagerie of flattening functions. Incidentally this also fixes a bunch of not-yet tested errors with distinct types.
2023-03-04 22:14:29 +01:00
Christoffer Lerno
306677300a
Fix of enum alignment / size when based in distinct types.
2023-03-04 01:35:23 +01:00
Christoffer Lerno
f9923de7f9
Remove implicit cast from enum to int. Allow enums to use distinct types as the backing type. enum += 1 returns enum type.
2023-03-04 01:03:57 +01:00
Christoffer Lerno
488472ecbb
Improve enum add/sub.
2023-03-03 17:43:13 +01:00
Christoffer Lerno
ea3b32f68b
Further casting cleanup.
2023-03-03 14:43:32 +01:00
Christoffer Lerno
a2911292d8
Simplify narrowing semantics.
2023-03-02 22:04:15 +01:00
Christoffer Lerno
3449d2ea88
Remove all array pointer decay.
2023-03-02 19:47:24 +01:00
Christoffer Lerno
3372f36e9d
Fix subarray casts to distinct types and constants.
2023-03-02 13:14:11 +01:00
Christoffer Lerno
07e4aab48b
Fix of bool -> float vector cast. Correctly widen C style varargs for distinct types and optionals.
2023-03-02 11:35:05 +01:00
Christoffer Lerno
0dcad6f5cf
Improve and simplify casts.
2023-03-01 22:43:50 +01:00
Christoffer Lerno
0314f9534f
Improve enum checks on enum conversions.
2023-03-01 13:56:36 +01:00
Christoffer Lerno
f8208f946b
Remove "generic" code paths.
2023-03-01 12:01:43 +01:00
Christoffer Lerno
b9dbefbe1b
Fix bug when initializing nested struct / unions. Fix of mult of 2x2 matrix. Cleanup of cast.
2023-02-28 20:43:43 +01:00
Christoffer Lerno
6188a8b5df
Fix bad code in assert
2023-02-28 17:50:01 +01:00
Christoffer Lerno
9db845903e
Cleanup and allow complex array length inference, e.g. "int[*][2][*] a = ..."
2023-02-28 17:37:17 +01:00
Christoffer Lerno
cc19168c7b
Some general cleanup.
2023-02-28 01:15:30 +01:00
Christoffer Lerno
1c83a484da
Print warnings on deprecated.
2023-02-27 18:59:25 +01:00
Christoffer Lerno
bd8bff85d6
Add tracking allocator. Fix substruct issue.
2023-02-27 17:05:27 +01:00
Christoffer Lerno
dd4edfb747
Updated malloc/calloc/realloc/free deprecation of old helper functions. Add checks to prevent incorrect alignment on types when using malloc. Better errors from $assert. Added @deprecated. Fixed issue using named arguments after varargs.
2023-02-27 15:03:27 +01:00
Christoffer Lerno
8ad8af861e
Fix to nested $if analysis.
2023-02-27 01:10:46 +01:00
Christoffer Lerno
feaf8b3b2c
Update HashMap functionality. Fix check when appending to VarString. Fix issue with decls accidentally invalidated during $checked eval. Fold optional when casting slice to pointer.
2023-02-27 00:10:01 +01:00
Christoffer Lerno
10272dbf38
Delay C abi lowering until requested on-demand to prevent circular dependencies.
2023-02-24 22:01:55 +01:00
Christoffer Lerno
2f255ac5c3
Sha1.
2023-02-24 10:49:01 +01:00
Christoffer Lerno
a7ce0f95e6
Refactor allocator locations.
2023-02-24 00:29:24 +01:00
Christoffer Lerno
fc0cad2894
Remove abs from libc. Create abstract random.
2023-02-24 00:00:36 +01:00
Christoffer Lerno
2a6339a25e
Updated native variants of file handling. Fixed $if folding chain.
2023-02-23 18:00:34 +01:00
Christoffer Lerno
f86aa136cb
Updated fopen. ZString.len does not output number of Char32. Add example.
2023-02-23 10:42:36 +01:00
Christoffer Lerno
b175b9318a
Fix conversion if (int x = foo()). Initial stream api. Extended enumset.
2023-02-22 17:06:06 +01:00
Christoffer Lerno
8f5676b488
Add defer catch/try. Fix missing defer invoked on return a > 0 ? Foo.ABC! : 1
2023-02-21 20:10:03 +01:00
Christoffer Lerno
b5a2b5c68a
Added a short project suggestion list.
2023-02-21 15:54:20 +01:00
Christoffer Lerno
afa41f0c10
Updated name mangling.
2023-02-20 17:48:47 +01:00
Christoffer Lerno
b6ff6bae8e
Update version.
2023-02-20 16:02:50 +01:00
Christoffer Lerno
e3416a1c40
Allow @test with modules. Change name mangling for non exports.
2023-02-20 16:02:30 +01:00
Christoffer Lerno
d35d50555e
ipv4/ipv6 parsing and back to string.
2023-02-20 09:31:11 +01:00
Christoffer Lerno
34eac23e23
Fix when comparing const values > 64 bits.
2023-02-20 08:03:36 +01:00
Christoffer Lerno
19963e4e19
Fix attributes for nested bitstructs. Add some functions to std::net
2023-02-19 23:35:02 +01:00
Christoffer Lerno
62fbf4da47
Add simple bitstruct.
2023-02-18 16:59:52 +01:00
Christoffer Lerno
6e8c69cd52
Add & ^ | to bitstructs.
2023-02-18 16:21:30 +01:00
Christoffer Lerno
ea163636d3
Add defaults to compare_exchange, small fix in printf. Disallow obviously wrong code that returns the pointer to a variable on the stack.
2023-02-18 12:21:15 +01:00
Christoffer Lerno
3da9008fdc
$$DATE is fixed.
2023-02-18 00:03:46 +01:00
Christoffer Lerno
9061699adf
Fix of $vasplat when used multiple times.
2023-02-17 20:31:17 +01:00
Christoffer Lerno
d6a1cecb9d
Fix of LLVM codegen for optionals.
2023-02-17 13:45:16 +01:00
Christoffer Lerno
baa2e474b5
Added $$atomic_store and $$atomic_load.
2023-02-17 13:22:12 +01:00
Christoffer Lerno
a0a5c940f1
Add --strip-unused.
2023-02-16 22:11:42 +01:00
Christoffer Lerno
0aa776d61b
Allow @export on modules, to implicitly @export all in the module section. Add expect on error comparisons, expecting them to be false by default. Support @extern on modules.
2023-02-16 13:05:09 +01:00
Christoffer Lerno
c26655a05a
Remove usize/isize completely.
2023-02-16 00:48:37 +01:00
Christoffer Lerno
818396b6f3
Updated module visibility import visibility. Fixes to @local
2023-02-15 09:47:51 +01:00
Dmitry Atamanov
4519eebe4d
Added @likely, @unlikely and @expect macros. ( #727 )
2023-02-15 00:02:01 +01:00
Christoffer Lerno
adc424ba1d
Fixed missing check on &var.myFunction
2023-02-14 23:44:05 +01:00
Christoffer Lerno
b85d521dc1
Fixed missing check on &var.myFunction
2023-02-14 21:56:56 +01:00
Christoffer Lerno
8b099293a3
Fix no-entry. Make printf more strict and also fix distinct printing.
2023-02-14 20:39:15 +01:00
Christoffer Lerno
8d306ce64d
Fix no-entry.
2023-02-14 20:13:22 +01:00
Christoffer Lerno
df77b692d6
Support "typedef"
2023-02-14 16:49:27 +01:00
Christoffer Lerno
b7e19b75d0
Improve error reporting for define and function definition.
2023-02-14 15:49:36 +01:00
Christoffer Lerno
61e26d8188
Fixes to $include
2023-02-14 12:27:17 +01:00
Christoffer Lerno
03cd56e46b
Add @local and fix visibility issues for generic methods.
2023-02-14 12:17:56 +01:00
Christoffer Lerno
8184fba34b
Delay type evaluation further. Current analysis shows that this code should be safe, but there may be some issues lurking.
2023-02-14 09:27:03 +01:00
Christoffer Lerno
3cfef690d3
Support (void)foo for any type.
2023-02-13 13:52:48 +01:00
Christoffer Lerno
5e457be605
Implement more @export / @private improvements. Make @private default… ( #729 )
2023-02-13 08:31:40 +01:00
Christoffer Lerno
3b49b87784
Fix for nolibc (eg wasm). Add multi global declarations. Simplicity wasm export / import. Prevent "extern" functions to have a function body.
2023-02-11 11:16:31 +01:00
Christoffer Lerno
2fa3ae7bc9
Restore CMake settings.
2023-02-11 02:05:37 +01:00
Christoffer Lerno
1548cd06ef
Enable local multi-declarations. Fix of builtin argument checking. Migrate to @noinit.
2023-02-11 02:03:02 +01:00
Christoffer Lerno
18de9a146b
Fix copysign and make floatparse more strict.
2023-02-11 00:41:44 +01:00
Christoffer Lerno
ddd8be0f38
Fix global noinit. Add @noinit. With tests.
2023-02-11 00:10:02 +01:00
Christoffer Lerno
74d868d113
Fix of bug in !floatval codegen. Added float parsing.
2023-02-10 22:17:55 +01:00
Christoffer Lerno
b3f15a867c
Added "clear" to VarString
2023-02-10 08:40:08 +01:00
Christoffer Lerno
0a0cc4b5df
Header printout complete. "@export" added but might get removed.
2023-02-09 23:16:18 +01:00
Christoffer Lerno
f313e90e28
Some work on headers. Fix unsigned negation on consts.
2023-02-09 09:15:51 +01:00
Christoffer Lerno
a6b9405e21
Fix @expect.
2023-02-07 15:45:46 +01:00
Christoffer Lerno
508cc8f29f
Update comment.
2023-02-07 15:40:56 +01:00
Christoffer Lerno
1843870dfd
Fix MSVC
2023-02-07 11:16:35 +01:00
Christoffer Lerno
926dbfc535
Fix "int $f = 1;" and int $f;
2023-02-07 00:22:31 +01:00
Christoffer Lerno
cc189a8166
Support user defined attributes in generic modules. Fix bug with user defined attributes with parameters. Fix bug that would overwrite attributes when parsing user defined attributes.
2023-02-06 23:31:03 +01:00
Christoffer Lerno
c89dbba6d1
Conform to the aarch64 ABI when passing invalid vectors.
2023-02-06 22:54:59 +01:00
Christoffer Lerno
9e4203e267
Fix missing "max type" cases.
2023-02-06 21:53:33 +01:00
Christoffer Lerno
6cef75b608
Removes win x86 target. Add win aarch64. Fixes to jump buffer sizes. Fix returning bool[2] in the SysV ABI. Array comparison now works. Prevent flexible array comparisons. Prevent zero size unions.
2023-02-06 18:09:31 +01:00
Christoffer Lerno
3c4796d65a
Insert nullcheck for & params on the callee side.
2023-02-05 23:18:35 +01:00
Christoffer Lerno
e0252a6d7a
Make it possible to use @deprecated in docs.
2023-02-05 22:13:50 +01:00
Christoffer Lerno
505543e9b4
Remove import of std::array
2023-02-05 20:59:42 +01:00
Christoffer Lerno
86e085e0c0
Move collection types. Improve linked list interface. Update map.destroy => map.free
2023-02-05 20:55:47 +01:00
Christoffer Lerno
4a102698b2
Add tests to math and add info in readme how to contribute.
2023-02-05 14:30:06 +01:00
Christoffer Lerno
5a65a57e42
Catch macro infinite recursion. Fix of tan function.
2023-02-05 00:21:26 +01:00
Christoffer Lerno
38b44a7265
Fix of tan.
2023-02-04 23:32:17 +01:00
Christoffer Lerno
0f7d21330a
Optimize optional return.
2023-02-04 19:48:42 +01:00
Christoffer Lerno
dce171670f
Use printn rather than println. Add string methods for copying.
2023-02-04 19:48:42 +01:00
Christoffer Lerno
6b928c7a3d
Add saturated math and expect macros.
2023-02-03 00:25:29 +01:00
Christoffer Lerno
6407eb47a4
Remove of @extname in stdlib.
2023-02-02 21:53:37 +01:00
Christoffer Lerno
3b3dd334e0
Remove $if in thread
2023-02-02 21:41:57 +01:00
Christoffer Lerno
3b3773663a
Adding sincos / libc tan/tanf.
2023-02-02 19:29:29 +01:00
Christoffer Lerno
0f4d20f168
Fix issue with hex floats with f being assumed to be double. Added cos sincos sincosf pow2 pow2f to nolibc.
2023-02-02 13:20:52 +01:00
Christoffer Lerno
1d8e341572
Wasm allocator is now __heap_base aware. Make builds overridable from the project.
2023-02-01 16:42:45 +01:00
Kenta
f9b6f1da0e
Update trig.c3
...
Add cosf
2023-02-01 16:42:16 +01:00
Christoffer Lerno
6a3219ad43
Make thread allocator take the thread allocator by default for allocating initial memory. Add some int128 methods. Fix attribute parsing.
2023-02-01 14:06:14 +01:00
Christoffer Lerno
f916aa9189
More support for working with win32 types.
2023-01-31 20:54:42 +01:00
Christoffer Lerno
c665a431ad
Make wasm use .wasm for executables.
2023-01-31 19:46:53 +01:00
Christoffer Lerno
4ea81fe636
More riscv tests. Fix missing zero/signext attributes on calls. Fixes and simplification to riscv ABI.
2023-01-31 14:09:32 +01:00
Christoffer Lerno
0afd55425a
More ABI cleanup and fixes to RISC-V ABI + tests for riscv32.
2023-01-30 23:46:06 +01:00
Kenta
dbb759713f
Update build-with-docker.sh
...
Improve the bash script by taking user input straight to a variable with read -p.
Clean the code up.
2023-01-30 23:44:40 +01:00
Kenta
61cc8163f9
Update docker script and dockerfile
...
Using Ubuntu 23 throws an error "groupadd: GID '1000' already exists" when trying to build. Ubuntu 22 works fine.
There should be no difference between building C3 on Ubuntu 22 vs 23.
To avoid issues raised it's best to move to single Ubuntu version that builds the compiler.
2023-01-30 21:47:37 +01:00
Christoffer Lerno
adf84e38d0
Update LLVM versions.
2023-01-30 13:54:28 +01:00
Christoffer Lerno
ae4658933a
Add missing version bump.
2023-01-30 12:39:46 +01:00
Christoffer Lerno
539d733ceb
Remove LLVM 14 support. Simplify ABI lowering.
2023-01-30 12:39:04 +01:00
Christoffer Lerno
124a18a486
Fix bug with enum associated values.
2023-01-29 19:15:13 +01:00
Christoffer Lerno
3046a9f0c2
Fix File.printf
2023-01-29 17:58:17 +01:00
Christoffer Lerno
a77e0bf7b3
Add LLVM 17 to CI.
2023-01-29 14:44:03 +01:00
Christoffer Lerno
84582f86b6
Cleanup.
2023-01-29 14:20:58 +01:00
Christoffer Lerno
3f5fb5da92
Fix of variant type.
2023-01-29 13:59:07 +01:00
Christoffer Lerno
2fb85e5e95
Fix of variant type.
2023-01-29 13:58:57 +01:00
Christoffer Lerno
e604d40fd3
Added $$FILEPATH
2023-01-29 13:26:34 +01:00
Christoffer Lerno
77608e137e
Updated winmain handling
2023-01-29 13:18:43 +01:00
Christoffer Lerno
52d7e58c19
Make Windows use wWinMain always. Support /SUBSYSTEM:WINDOWS
2023-01-29 01:32:35 +01:00
Christoffer Lerno
5ea15eb708
Make Windows use wWinMain always. Support /SUBSYSTEM:WINDOWS
2023-01-29 01:32:35 +01:00
Christoffer Lerno
f89bf9ea2f
Update clamp.
2023-01-28 03:52:07 +01:00
Christoffer Lerno
4ddb9d9fbc
Fix tests.
2023-01-28 03:52:07 +01:00
Christoffer Lerno
1095f098ef
Reduce formatter register formatter register type memory usage.
2023-01-28 01:23:15 +01:00
Christoffer Lerno
9f63f77f22
Update precedence clarification rules for ^|&
2023-01-28 00:54:01 +01:00
Christoffer Lerno
9a08c9d821
Fixes to wasm and function attributes.
2023-01-28 00:37:46 +01:00
Christoffer Lerno
445239b418
Add simple heap allocator and update lambda and #lazy checking.
2023-01-27 14:40:54 +01:00
Christoffer Lerno
03b659373a
Make the quine use "String" rather than char[]
2023-01-26 21:19:16 +01:00
Christoffer Lerno
4561bf5a85
Add quine example.
2023-01-26 21:17:08 +01:00
Christoffer Lerno
6eb65d5b37
Add memory-env option.
2023-01-26 21:16:47 +01:00
Christoffer Lerno
6a73c8e90e
Clean lib before copy.
2023-01-26 16:28:47 +01:00
Christoffer Lerno
5c7d859fdb
Some updates to builtin checking.
2023-01-26 16:24:18 +01:00
Christoffer Lerno
a95710c93f
Add no-entry to project/command line. Add "link-args" to project. Add @wasm and @extern attributes. Added $$wasm_memory_size and $$wasm_memory_grow builtins.
2023-01-26 12:02:09 +01:00
Christoffer Lerno
39801a304d
Improved support for freestanding.
2023-01-25 11:27:57 +01:00
Christoffer Lerno
a22ebbb0ef
Improved support for freestanding.
2023-01-25 11:10:37 +01:00
Christoffer Lerno
f37f779e5a
Fix in utf8to16 conversion.
2023-01-24 14:20:37 +01:00
Christoffer Lerno
b508a43f8f
Add lambdas.
2023-01-24 10:15:23 +01:00
Christoffer Lerno
c9e1e2d763
Replace $$shufflevector with $$swizzle and $$swizzle2. Add builtin swizzle accessors.
2023-01-22 01:12:55 +01:00
Christoffer Lerno
1e18e576c7
Fix int[] -> void* casts.
2023-01-21 20:17:48 +01:00
Christoffer Lerno
5151586450
Updated complex / matrix. Added quaternion math, vectors. Possible to add and mult scalar with vector. Fix where negating a float vector would be lowered incorrectly. Fix where $typeof(x) { ... } would not be valid compound literal. Fix where var would not be recognized as starting a declaration (e.g. in if (var x = ...)
2023-01-21 00:59:33 +01:00
Christoffer Lerno
e09628b664
Added easings. Move of math to own folder.
2023-01-19 22:49:30 +01:00
Christoffer Lerno
92507ee388
More work on TB
2023-01-19 20:32:19 +01:00
Christoffer Lerno
1ab304dc64
Fix of overalignment on deref.
2023-01-19 12:29:17 +01:00
Christoffer Lerno
e284d49dd9
Initial add of tilde backend.
2023-01-19 00:08:31 +01:00
Christoffer Lerno
6da6288ad8
Support roundevenf/roundeven
2023-01-14 15:24:49 +01:00
Dmitry Atamanov
925e4e6e46
Added native option to --x86vec help.
2023-01-14 15:09:22 +01:00
Christoffer Lerno
bd12ef0a53
Add version bump.
2023-01-13 01:10:02 +01:00
Christoffer Lerno
2123e81e8e
Make more of the builtins do promotion from int to double for convenience.
2023-01-13 01:09:27 +01:00
Dmitry Atamanov
50b0958fb6
Add Loong arch deps for LLD >= 16
2023-01-12 18:43:05 +01:00
Christoffer Lerno
026861051a
Make LLVM 15 compile in CI again. ( #699 )
...
* Fixes to LLVM 15 CI
2023-01-12 18:41:51 +01:00
Christoffer Lerno
dc16f65c8e
Change printfln to printfn. Make LLVM 15 tests default.
2023-01-11 18:00:08 +01:00
Christoffer Lerno
3298ff2e15
Fix of typo.
2023-01-11 00:53:57 +01:00
Christoffer Lerno
aded1cb736
Use 15.0.6 on windows. Exclude 14 on linux. Update docker build.
2023-01-11 00:52:43 +01:00
Christoffer Lerno
da65de2d01
Add compare_exchange. Rudimentary threads (subject to change)
2023-01-10 20:46:39 +01:00
Christoffer Lerno
c9e40cfa37
Cast cleanup, removing structural casts.
2023-01-09 00:08:29 +01:00
Christoffer Lerno
43dc2d650c
Use "String" consistently for "char[]" ( #694 )
...
Use "String" consistently for "char[]". Fix win32 return value.
2023-01-07 22:50:33 +01:00
Christoffer Lerno
5b2b4e900f
Add download links.
2023-01-07 15:12:05 +01:00
Christoffer Lerno
6c9de52de7
Revert.
2023-01-07 15:02:52 +01:00
Christoffer Lerno
98f3decc1a
Set release to real and not prerelease.
2023-01-07 14:59:57 +01:00
Christoffer Lerno
c485a89940
Updated README
2023-01-07 02:39:26 +01:00
Christoffer Lerno
73000680e5
Update readme
2023-01-07 02:18:03 +01:00
Christoffer Lerno
009bbeb48f
Using C files now correctly places object files in build folder.
2023-01-07 01:38:44 +01:00
Christoffer Lerno
38be3d57dd
Vendor fetch.
2023-01-06 16:49:45 +01:00
Christoffer Lerno
ad48770977
Updated errno. Socket constants and some functions added. Fix error when a macro returns a void! and that macro is in turn set to a return. Removed too permissive casts to subarrays.
2023-01-06 12:46:58 +01:00
Dmitry Atamanov
8390655d79
Fixes $$get_rounding_mode() for LLVM > 15.
2023-01-05 12:56:18 +01:00
Christoffer Lerno
4330740cf8
Support printing of object files. Issue #687
2023-01-04 23:16:47 +01:00
Christoffer Lerno
4a99190f96
C3L zip support. Version bump.
2023-01-03 22:40:35 +01:00
Christoffer Lerno
f8a505754d
Added arcfour crypto.
2022-12-30 16:34:31 +01:00
Christoffer Lerno
23a78a9ae5
Updated nbodies. Fixed sum/product on floats.
2022-12-30 02:41:17 +01:00
Christoffer Lerno
bf222557fb
Handle missing tests.
2022-12-29 21:13:58 +01:00
Christoffer Lerno
aa33536ab1
Remove test global when not in testing mode.
2022-12-29 20:40:23 +01:00
Christoffer Lerno
7b1fc87566
Bump to 0.4.0
2022-12-29 19:51:00 +01:00
Christoffer Lerno
a6f2eb22a9
Add "native" for AVX features.
2022-12-29 18:40:38 +01:00
Christoffer Lerno
ef7365224f
Added $include.
2022-12-29 16:12:03 +01:00
Christoffer Lerno
f122d290f1
Add macos sdk / min version to pass to the linker.
2022-12-29 01:06:35 +01:00
Christoffer Lerno
90f5c24d4c
Fix parsing @_foo
2022-12-28 16:36:41 +01:00
Christoffer Lerno
bcbcc3100f
Fix of accidentally added typo.
2022-12-28 00:39:21 +01:00
Christoffer Lerno
f6e798c283
Friendlier int parsing and promotion.
2022-12-28 00:37:52 +01:00
Christoffer Lerno
f622b3bd4c
Cleanup of naming change to optional. Fix of builtin optional handling.
2022-12-27 23:55:23 +01:00
Christoffer Lerno
fe54b84aed
Version bump
2022-12-27 14:30:43 +01:00
Christoffer Lerno
f46697bc54
Updated casts ( #684 )
...
Cast code rework. Remove llvm_set_bool and friends.
2022-12-27 14:16:47 +01:00
Christoffer Lerno
e2b4a19c81
Add python overwrite.
2022-12-23 17:03:38 +01:00
Christoffer Lerno
9e77fe7787
Add python-tk
2022-12-23 16:56:26 +01:00
Christoffer Lerno
7223435df6
Update build for mac.
2022-12-23 14:20:09 +01:00
Christoffer Lerno
fe9ace713b
Fix str::concat
2022-12-23 14:06:02 +01:00
Christoffer Lerno
03cdc8e3b1
Add "get_ref" to list.
2022-12-21 15:59:29 +01:00
Christoffer Lerno
352e09970c
Math max/min now take multiple arguments.
2022-12-20 16:45:35 +01:00
Christoffer Lerno
e8a8ac8bc1
Fix bit or / xor / and on bool vectors.
2022-12-20 03:24:24 +01:00
Christoffer Lerno
334c004f1e
Fix of atan2
2022-12-19 13:00:27 +01:00
Christoffer Lerno
aa534e2b3f
Fix to vector comparisons.
2022-12-18 20:58:20 +01:00
Christoffer Lerno
2ee2bc3129
Fix bugs related to distinct types.
2022-12-18 00:21:02 +01:00
Christoffer Lerno
b88e5a8079
Add atan and atan2
2022-12-17 21:29:45 +01:00
Christoffer Lerno
c339261d1e
Added vector dot functions. Comparison now yields bool vector. Cast between vector types.
2022-12-17 01:51:03 +01:00
Christoffer Lerno
8008fb2c18
Do not auto-deref subscripting.
2022-12-15 23:46:26 +01:00
Dmitry Atamanov
10219eccb2
Added compile-test command to help.
2022-12-14 23:04:40 +01:00
Christoffer Lerno
1a510207e8
Update string.c3
2022-12-14 23:03:45 +01:00
Nikos Plugachev
a21236d661
Improved string concat
2022-12-14 23:03:45 +01:00
Nikos Plugachev
a749a4d265
Added String.concat, List.clear
2022-12-14 23:03:45 +01:00
Christoffer Lerno
b5afa98507
Updated vector comparison behaviour and semantics.
2022-12-14 23:02:01 +01:00
Christoffer Lerno
abf0f64ac0
Share method extensions across modules by default. Fix bug in string split.
2022-12-14 13:18:01 +01:00
Christoffer Lerno
dcf0b4c580
Fix an issue with pointer debug info creation. Improve generated parameterized name. Version bump.
2022-12-13 19:20:14 +01:00
Christoffer Lerno
a9ed514fe5
Fix bug in defer from macros. Ensure debug location on panic functions. Add getcwd.
2022-12-13 07:50:41 +01:00
Dmitry Atamanov
8b0d409695
Add inlined memcpy and memset builtins and macros. ( #668 )
2022-12-12 11:45:01 +01:00
Christoffer Lerno
50d2a04c48
Default to threads = cpus(). Correct multithreaded benchmark with threads.
2022-12-11 23:35:02 +01:00
Christoffer Lerno
1864c69f31
Fixes to inc/dec vector element. Improvements to unit tests. Updated task threading. Single threaded by default due to poor LLVM perf.
2022-12-10 04:24:56 +01:00
Christoffer Lerno
af0174f360
Some work on io libs.
2022-12-09 08:45:02 +01:00
Christoffer Lerno
2a4d43d7c7
Fix issue when using ct types as body parameters.
2022-12-09 00:00:33 +01:00
Christoffer Lerno
13cb637cb4
Fix missing early resolution on demand of parameterized types.
2022-12-08 19:48:36 +01:00
Christoffer Lerno
de4bfe470e
Attempt supporting setjmp on MSVC
2022-12-07 22:16:09 +01:00
Christoffer Lerno
eaaa5362a5
Output messages at compile time.
2022-12-07 18:48:55 +01:00
Christoffer Lerno
1ea5625183
CT variables now follow CT scopes. It's now allowed to mutate CT variables in deeper runtime scopes.
2022-12-07 16:32:45 +01:00
Christoffer Lerno
f7659776fc
Fix problem when taking address of method.
2022-12-07 11:58:21 +01:00
Christoffer Lerno
ed99e09c4e
Correctly detect & lowering in the case of &foo[1].b using operator overloading.
2022-12-07 10:53:26 +01:00
Christoffer Lerno
e9181a75e6
Improve errors when a variable fails to properly analyse.
2022-12-06 20:29:07 +01:00
Christoffer Lerno
963b8f28ef
Fix of multiple returns in macros retaining ct values. Correctly require ; after endfor etc.
2022-12-06 20:09:40 +01:00
Christoffer Lerno
5721fcc224
Fix of string function.
2022-12-06 17:48:30 +01:00
Christoffer Lerno
287de8f499
Fix issue with aliasing @-macros.
2022-12-05 17:38:27 +01:00
Christoffer Lerno
44dfeb621d
Fix body arguments: (@foo(;int x) and mismatch on canonical types)
2022-12-05 16:23:00 +01:00
Christoffer Lerno
eb87eb1987
Allow an expression list be an lvalue if the last value is an lvalue. Fix indexing from back for [] overloads.
2022-12-05 15:42:24 +01:00
Christoffer Lerno
c15fb7460c
Add functions for splitting strings.
2022-12-04 23:01:53 +01:00
Christoffer Lerno
927ad2001f
Incorrect check for sqrt.
2022-12-04 01:13:47 +01:00
Christoffer Lerno
7647378e7c
Fix missing check when macro method incorrectly has a raw vararg argument.
2022-12-03 23:07:37 +01:00
Christoffer Lerno
10b0b5f9c7
Fix map.c3
2022-12-03 22:07:04 +01:00
Christoffer Lerno
299ec1814b
Add native string -> int conversions. Fix to getline and add tgetline.
2022-12-01 16:13:52 +01:00
Christoffer Lerno
07700ed2c5
Add str::trim and String::tcopy_str. Version bump.
2022-12-01 13:19:08 +01:00
Christoffer Lerno
0ae586585a
Fix .values .names .elements on "fault" types. Version bump.
2022-11-25 11:11:27 +01:00
Christoffer Lerno
285299dcd5
Some simple stdlib tests.
2022-11-20 18:16:21 +01:00
Dmitry Atamanov
2fefed5bda
Create simple main.c3 by init command
2022-11-19 14:49:50 +01:00
Christoffer Lerno
da1a45f718
Remove iptrdiff and uptrdiff. Bump version to 0.3.100
2022-11-17 23:44:54 +01:00
Dmitry Atamanov
bbef94b0fd
Fix project creation
2022-11-16 21:05:26 +01:00
Christoffer Lerno
c093f16fd0
Fix missing check on foreach indexing.
2022-11-14 15:05:19 +01:00
Dmitry Atamanov
5ff726d8d1
Added $$get_rounding_mode and $$set_rounding_mode builtins. ( #655 )
2022-11-14 13:07:32 +01:00
Christoffer Lerno
49eacb8824
More support for test. Panic function update.
2022-11-14 11:48:12 +01:00
Christoffer Lerno
450113d161
Fix of mac CI build.
2022-11-14 09:58:07 +01:00
Christoffer Lerno
998c56533b
Update test case.
2022-11-14 09:48:34 +01:00
Christoffer Lerno
73619817ba
Update panic function and early work on tests. Optimize ABI lowering.
2022-11-03 19:38:34 +01:00
Christoffer Lerno
70f6ad1b27
Added "values" module.
2022-10-31 14:40:58 +01:00
Dmitry Atamanov
e070bf22ee
Added pow macros to math module.
2022-10-31 14:09:38 +01:00
Dmitry Atamanov
b086c85d9f
Add LLVM 15 to CI
2022-10-31 10:54:32 +01:00
Dmitry Atamanov
66d87b25a3
Added more math macros: cosec, cosech, cosh, cotan, cotanh, hypot, sec, sech, sinh, sqr, sqrt, tan, tanh.
2022-10-30 20:31:32 +01:00
Dmitry Atamanov
d9e81c6035
Fix vector slices assignment
2022-10-30 19:54:14 +01:00
Christoffer Lerno
98ae13c03d
Add exact and overflow builtins.
2022-10-28 01:14:10 +02:00
Christoffer Lerno
d9ea953b5c
Fix $c >>= 2
2022-10-25 10:50:56 +02:00
Christoffer Lerno
4cdfac092b
Add missing \n to program finish on run.
2022-10-24 17:15:51 +02:00
Christoffer Lerno
1ef43cbc13
Remove "directives" folder.
2022-10-24 17:13:24 +02:00
Christoffer Lerno
093bc2089a
Fix to project creation.
2022-10-24 17:11:44 +02:00
Christoffer Lerno
9b5e2b8578
Remove fix for LLVM 16
2022-10-24 16:10:26 +02:00
Christoffer Lerno
2d377ada45
Fix in parameter check.
2022-10-23 23:41:03 +02:00
Christoffer Lerno
02374c6aab
Generic modules also accepts integers and booleans.
2022-10-23 19:16:38 +02:00
Dmitry Atamanov
155c8862c9
Remove duplicates in help
2022-10-22 16:10:15 +02:00
Christoffer Lerno
f73b507ccb
Use project.json instead of .c3p. List project properties. Check project property usage. Change names: lib-dir -> dependency-search-paths, libs -> dependencies, linker-libs -> linked-libraries, linkerlib-dir -> linker-search-paths, csources -> c-sources. Several settings have an xxxx-add, xxxx-override pair for the target, gaining fine grained control over the override.
2022-10-22 15:32:01 +02:00
Christoffer Lerno
26e4662c3b
Project updates.
2022-10-22 01:04:43 +02:00
Christoffer Lerno
ede224662c
Fix of broken bitstruct init #641 . Version bump.
2022-10-21 11:45:34 +02:00
Christoffer Lerno
bd0e8f1ef1
Allow imports anywhere in the module outside of ct statements.
2022-10-20 23:54:36 +02:00
Christoffer Lerno
e6a5f98606
float.min will now give -float.max
2022-10-20 21:54:40 +02:00
Christoffer Lerno
e15dbd4907
Improve conversion functions.
2022-10-20 20:32:33 +02:00
Christoffer Lerno
ae7aa65f35
Add conversion functions for i128
2022-10-20 19:35:29 +02:00
Christoffer Lerno
d13b7ac96a
Enable support for int128 across all platforms.
2022-10-20 18:03:02 +02:00
Christoffer Lerno
03fe2b575d
Chain optionals with optionals using ??. Version bump.
2022-10-20 12:11:24 +02:00
Christoffer Lerno
f86ef8a743
Remove tscoped. Replace str_index_of with "starts_with". Updated copy_zstring/copy. Fixed utf conversion functions. Initial work on "Path". Lexer fix on \\. ABI fix using distinct types. (bool)"" now works correctly. Bug in $if with switches/loops as the first statement fixed. Version bump.
2022-10-20 10:55:14 +02:00
Christoffer Lerno
7d58ce0dcb
Take code from stdin. Version bump.
2022-10-18 19:45:56 +02:00
Christoffer Lerno
f8f249ee2c
Update compilation linux.
2022-10-18 16:39:33 +02:00
Christoffer Lerno
0adb15139f
Fix bug in implicit fmul.
2022-10-18 14:02:20 +02:00
Christoffer Lerno
76ee384a4c
Fix of ternary / elvis where legs are bool or optional.
2022-10-18 14:02:20 +02:00
Christoffer Lerno
b1ed066e55
Fix coerce store / load to properly rely on alloc size like Clang does it. Version bump.
2022-10-15 22:12:52 +02:00
Christoffer Lerno
160659c4e3
Optimize sret / byval. Fixes to types and failables.
2022-10-15 02:45:19 +02:00
Dmitry Atamanov
dfe3128b16
Add --benchmarking and --testing switches. ( #591 )
...
Added `--benchmarking` and `--testing` switches. Update env.c3
2022-10-13 14:25:45 +02:00
Christoffer Lerno
8f269a4f13
Improve text.
2022-10-13 14:05:34 +02:00
Christoffer Lerno
1ae251478b
Fix templates for init.
2022-10-13 14:03:30 +02:00
Christoffer Lerno
effec3a1f6
Fix of bug where missing return wasn't detected.
2022-10-13 13:34:54 +02:00
Christoffer Lerno
4d08fee30e
Add bolt-15 to linux cmake.
2022-10-13 11:25:24 +02:00
Christoffer Lerno
5d9a7ab0a6
Extend "var" to allow type inference on variables.
2022-10-13 09:37:52 +02:00
Christoffer Lerno
5e184f04e7
List now has correct alignment and takes memory allocator initializer. Bugfix of aligned allocations.
2022-10-12 22:35:36 +02:00
Christoffer Lerno
b2b1a3489a
Add hashmap function.
2022-10-12 15:21:40 +02:00
Christoffer Lerno
fc41179636
Minor indention change.
2022-10-12 11:53:49 +02:00
Dmitry Atamanov
959c418e8b
Add a lot of math functions and macros. ( #626 )
2022-10-12 11:52:19 +02:00
Christoffer Lerno
9424bba49f
Version bump. More generous wildcard length matching and conversions.
2022-10-12 11:46:58 +02:00
Christoffer Lerno
314369d069
Version bump, add -O0+ and -O1+, let stdlib override nostdlib
2022-10-10 22:54:22 +02:00
Christoffer Lerno
ec3d77f4bd
Fix for nolibc & linux.
2022-10-10 16:04:48 +02:00
Christoffer Lerno
ab78663f3c
Add usz and isz.
2022-10-10 15:44:03 +02:00
Christoffer Lerno
348495b4c8
Added an initial nolibc
2022-10-10 15:44:03 +02:00
Christoffer Lerno
6523982f14
Clarify source and license on msvc script.
2022-10-10 15:02:36 +02:00
Christoffer Lerno
df8595cd64
Fix of bug where using && on a member ref would result in an assert.
2022-10-10 14:51:52 +02:00
Christoffer Lerno
febd11fa95
Fix of crashing bug with member types. Version bump.
2022-10-10 11:55:46 +02:00
Christoffer Lerno
feba7b8ed2
Rename muladd and fmuladd and insert it at codegen.
2022-10-10 11:14:57 +02:00
Dmitry Atamanov
3624c2a72c
Added $$muladd built-in.
2022-10-10 11:14:57 +02:00
Christoffer Lerno
d5f965e137
Fix test.
2022-10-08 22:10:56 +02:00
Christoffer Lerno
70a429f832
Fix error using compile time var before assignment.
2022-10-08 21:46:56 +02:00
Dmitry Atamanov
7fa129932d
Added $$memmove built-in.
2022-10-08 21:41:11 +02:00
Christoffer Lerno
73ac0b8ea0
Fixed incorrect test.
2022-10-08 14:55:36 +02:00
Christoffer Lerno
407ed5a63d
Fix vector init and float promotion. Fix of 1.0f.
2022-10-08 14:30:17 +02:00
Christoffer Lerno
fa064276bc
Disallow $offsetof / $alignof on types. Version bump.
2022-10-08 12:41:40 +02:00
Christoffer Lerno
c84f82559c
Disallow typeof of member type.
2022-10-07 22:28:30 +02:00
Christoffer Lerno
bb20a38cdb
Updated membersof. "Type.kind" renamed "Type.kindof"
2022-10-07 14:41:10 +02:00
Christoffer Lerno
f010f6a926
Add qnameof, nameof, extnameof to types.
2022-10-06 19:31:52 +02:00
Christoffer Lerno
ec1a5d97c9
Support for memberof/returns/params.
2022-10-06 17:18:16 +02:00
Christoffer Lerno
870e716f59
Missing support for bitstruct ".inner"
2022-10-06 15:23:16 +02:00
Christoffer Lerno
d33ff212a7
Fix double @@ in attribute listing.
2022-10-06 14:55:49 +02:00
Christoffer Lerno
ee533c5500
Update listable type properties.
2022-10-06 14:52:44 +02:00
Christoffer Lerno
a281dbe812
Added $$TIME, $$DATE, $$FUNCTION. Builtin defines listed.
2022-10-06 11:57:59 +02:00
Dmitry Atamanov
1d39fc475f
Added max and min macros to builtin_comparison module.
2022-10-05 23:13:38 +02:00
Dmitry Atamanov
f5a1894876
Add std::ascii module. ( #611 )
...
Added `std::ascii` module.
2022-10-05 23:11:41 +02:00
Christoffer Lerno
db06f99445
"[]=" now works as overload. Improved eval resolution. Added $$FUNCPTR
2022-10-05 22:58:28 +02:00
Christoffer Lerno
05d4ec55f6
Fix of $$FUNC in methods.
2022-10-05 10:17:11 +02:00
Christoffer Lerno
dcfcf460a5
Support LLVM 15 MacOS.
2022-10-05 10:17:11 +02:00
Christoffer Lerno
eb86b83bd7
Prevent ct_eval from returning an rvalue.
2022-10-04 22:41:07 +02:00
Christoffer Lerno
3d844b8722
Fix of printf registration.
2022-10-03 16:01:27 +02:00
Christoffer Lerno
6bd72c2ec4
Improve printf.
2022-10-03 15:42:55 +02:00
Christoffer Lerno
4783946476
Version bump. Updated printf using "Formatter". Fix to initializers.
2022-10-03 13:06:57 +02:00
Christoffer Lerno
9f7ed00f04
Fixes to function pointer conversion.
2022-10-02 00:22:21 +02:00
Christoffer Lerno
f05ffc84d8
Minor fixes.
2022-10-01 22:14:07 +02:00
Christoffer Lerno
55f7046da8
Fix of static init with debug turned on.
2022-10-01 17:53:08 +02:00
Christoffer Lerno
c5b9b6c761
Single module compilation.
2022-09-30 13:56:08 +02:00
Christoffer Lerno
5029dc703e
Updated error message.
2022-09-30 08:44:28 +02:00
Christoffer Lerno
cbb731b42b
Fix alignment on temp allocators.
2022-09-29 22:18:12 +02:00
Christoffer Lerno
258a6ba97a
Bug fixes, addition of hash map implementation. ( #605 )
...
* Simple hash map. Fix of bug preventing cast of typeid. Allow declarations in global "$checks". Fix to non-constant default args. Correctly duplicate macro contracts. Allow typeid to add methods. Fix printing of subarrays. Fix bug when printing a function with a module. Fix bug with initializer and creating local variables. Add the compile-only option to the help.
2022-09-29 20:19:31 +02:00
Christoffer Lerno
e1b5b0b60c
Implement static finalize / initialize. Version bump.
2022-09-28 17:18:20 +02:00
Christoffer Lerno
58647043f4
Fix bug with $$clz, version update.
2022-09-26 11:48:12 +02:00
Christoffer Lerno
379f9e60bf
More checks for $switch
2022-09-25 17:17:56 +02:00
Christoffer Lerno
a4d4c27ca6
General reorganization, set any empty expression statement to nop. Version bump.
2022-09-24 21:22:29 +02:00
Christoffer Lerno
81bea9bad6
Updated untyped lists.
2022-09-24 14:35:58 +02:00
Christoffer Lerno
52f3948026
Cleanup of untyped lists.
2022-09-23 10:47:56 +02:00
Christoffer Lerno
46c182f3d1
Fix of bug in nextcase semantic checking. Cleanup and refactoring.
2022-09-22 16:14:39 +02:00
Christoffer Lerno
cc71b96c38
Rearranging code somewhat.
2022-09-22 00:05:22 +02:00
Christoffer Lerno
ad18d9ba48
Add .hash to integer types. Fixup of make and tmake. Updated map.c3 to become a working example. Fix bug in subarray -> pointer conversion. Search extension methods in std::core. Fix slice <-> slice copy.
2022-09-21 17:26:36 +02:00
Christoffer Lerno
4d5821408d
Add @castable and @convertible builtin macros, removes the need $castable and $convertible
2022-09-20 22:18:00 +02:00
Christoffer Lerno
48ee567f81
Add types::is_indexable.
2022-09-20 18:45:43 +02:00
Christoffer Lerno
321c713687
Fix of $checks.
2022-09-20 18:42:39 +02:00
Christoffer Lerno
be5c82cfa6
Add "$checks". Fix where $y++ could appear inside a runtime scope.
2022-09-20 18:32:36 +02:00
Christoffer Lerno
4fa4b2a631
Refactored builtins. Added reduce operations and powi. Version bump.
2022-09-19 14:58:48 +02:00
Christoffer Lerno
9b14340a57
Added prefetch builtin.
2022-09-18 23:27:42 +02:00
Christoffer Lerno
e7fad16d0f
Added stringify tests and $typefrom. Bump to 0.3.50.
2022-09-18 20:52:25 +02:00
Christoffer Lerno
62e3b8063e
Fix stringify span.
2022-09-18 02:25:22 +02:00
Christoffer Lerno
c7f0f58e82
Fix stringify bug.
2022-09-18 01:26:06 +02:00
Christoffer Lerno
35549c21bc
A brainf**k example.
2022-09-18 01:20:17 +02:00
Christoffer Lerno
6220bda4a3
Use @operator([]), @operator(&[]) and @operator([]=) instead of names.
2022-09-17 23:33:27 +02:00
Christoffer Lerno
81a2474f75
Add methods to basic types. Remove "intvec" and "floatvec" overloads. Update bits and math to use the new functionality. Introduces [<*>] and [<>] types. Bump version to 0.3.47
2022-09-17 22:00:28 +02:00
Christoffer Lerno
28f2247602
Fix of mistake in commit.
2022-09-17 13:17:24 +02:00
Jean-Baptiste Perrier
1541354587
Extending JSON utils ( #574 )
...
* Adding json free, to_str, removing parser dependency from new_object.
* Adding support for BOOL in json_to_str
* Replace NULL check by assert
* Bugfixing json parser
Co-authored-by: Christoffer Lerno <christoffer.lerno@gmail.com >
2022-09-17 12:20:38 +02:00
Christoffer Lerno
a66c0942f8
Adding saturated builtins. Remove LLVM 12 support. Remove old llvm optimizer use.
2022-09-17 12:03:08 +02:00
Dmitry Atamanov
fd9d300b06
Added Int128BE, UInt128BE, Int128LE and UInt128LE.
2022-09-17 01:53:21 +02:00
Dmitry Atamanov
b60862ec7a
Added cpuid, rdtsc and rdtscp.
2022-09-16 23:12:03 +02:00
Christoffer Lerno
c8166f6fdb
Adding $$reverse. Bump to 0.3.45
2022-09-16 14:53:17 +02:00
Christoffer Lerno
4d27150952
Adding $$shufflevector. Bump to 0.3.44
2022-09-16 13:39:03 +02:00
Christoffer Lerno
d4aec525f5
Fixes to asm. Added additional x86 instructions.
2022-09-16 00:41:19 +02:00
Christoffer Lerno
ba9b203c52
Cleanup.
2022-09-15 09:50:46 +02:00
Dmitry Atamanov
7a797d0f28
foreach(_r) for vectors
2022-09-15 00:16:29 +02:00
Christoffer Lerno
755d6f93b7
Extends = to work with macros and allows => alternative. Disallow statements.
2022-09-14 23:30:39 +02:00
Jean-Baptiste Perrier
7c2555bd3b
Remove comments
2022-09-14 23:16:23 +02:00
Jean-Baptiste Perrier
469ec54282
Add single function declaration
2022-09-14 23:16:23 +02:00
Christoffer Lerno
1af41ee394
Fix min/max. Also fix of printf
2022-09-14 12:22:57 +02:00
Christoffer Lerno
fa51402a16
Added x64 instructions.
2022-09-13 22:40:49 +02:00
Christoffer Lerno
0805750f52
Add hlt instruction,
2022-09-13 19:18:42 +02:00
Christoffer Lerno
03c627f646
Fix asm string bug.
2022-09-13 19:15:17 +02:00
Christoffer Lerno
3a09f71830
Added initial intvec/floatvec operator
2022-09-11 22:52:01 +02:00
Jean-Baptiste Perrier
3d110850df
More asm instructions ( #563 )
...
* Add mul + sub asm instructions
* Fix clobbers
2022-09-09 23:42:27 +02:00
Christoffer Lerno
b16e0b377e
In/out checks.
2022-09-09 23:37:03 +02:00
Christoffer Lerno
fa89ea7b79
Add checks on enum conversion in safe mode. Bump to 0.3.38.
2022-09-09 17:18:27 +02:00
Christoffer Lerno
a0a2e27127
$vasplat() implemented. $vacount removed (). Improved dynscope implementation. Version bump to 0.3.37.
2022-09-09 12:19:47 +02:00
Christoffer Lerno
e31967cc65
Fix missing const folding when evaluation nameof.
2022-09-09 11:10:26 +02:00
Christoffer Lerno
58f8e00376
Incorrectly disallowed "inner" on enum. Bump to 0.3.36
2022-09-09 10:59:00 +02:00
Christoffer Lerno
581e2adbf0
Fix bug doing $foreach over a const list.
2022-09-09 10:17:35 +02:00
Christoffer Lerno
e4e1541cd7
Add macro method test update LLVM version for MSVC.
2022-09-08 15:47:52 +02:00
Christoffer Lerno
8eefce235f
Rename $vaarg functions. Bump version to 0.3.35.
2022-09-07 12:32:43 +02:00
Christoffer Lerno
7cb03de16b
Refactored asm code and added some initial aarch64 asm.
2022-09-06 22:53:46 +02:00
Christoffer Lerno
4fbdb79b65
Add some fixes to asm + test case.
2022-09-05 22:19:45 +02:00
Dmitry Atamanov
97de44b424
Added is_vector macro.
2022-09-05 15:12:23 +02:00
Dmitry Atamanov
72c7da404e
Added $$LLVM_VERSION define. ( #552 )
2022-09-05 14:29:12 +02:00
Christoffer Lerno
5adf09dd53
Fix issues with INLINE and MSVC.
2022-09-05 14:28:05 +02:00
Christoffer Lerno
bdc7833b83
Inline asm first checkin.
2022-09-05 13:57:15 +02:00
Christoffer Lerno
1a9a71f4c4
Inline asm first checkin.
2022-09-05 13:29:03 +02:00
Christoffer Lerno
757ca3716e
Remove unused tokens.
2022-08-30 16:25:50 +02:00
Dmitry Atamanov
7a07b8ff13
Add new built-ins ( #551 )
...
* Added new built-ins: $$copysign, $$exp2, $$floor, $$llrint, $$llround, $$lrint, $$lround, $$nearbyint, $$rint, $$round, $$roundeven
* Disable $$llrint, $$llround, $$lrint and $$lround
2022-08-30 09:50:28 +02:00
Dmitry Atamanov
bbc3792e7c
Sort some things alphabetically
2022-08-29 15:17:41 +02:00
Christoffer Lerno
a7110b52eb
Fix missing script on macos.
2022-08-29 14:46:06 +02:00
Dmitry Atamanov
5d15ec23bb
Rename $$fabs to $$abs
2022-08-29 12:51:02 +02:00
Christoffer Lerno
fffb8a1d0c
Update CMake for MSVC. Fix packaging for macos.
2022-08-29 12:47:53 +02:00
Christoffer Lerno
54d6b1a4ec
Fix $$min/$$max for vector.
2022-08-29 10:23:16 +02:00
Christoffer Lerno
bb9c8fb93e
Fix of macro/fn use of operator overloading for foreach.
2022-08-28 23:33:39 +02:00
Christoffer Lerno
b863ae2ec5
Fix of binary literals. Bump version to 0.3.32. Renamed rotate_right and rotate_left to rotl and rotr which are the commonly used names.
2022-08-28 22:40:40 +02:00
Dmitry Atamanov
27a0e12979
Add rotate_left and rotate_right macros
2022-08-28 21:20:54 +02:00
Christoffer Lerno
dabe5769dd
More programs for test.
2022-08-28 20:35:25 +02:00
Christoffer Lerno
e82a7e7918
Allow $$max and $$min to also work on ints.
2022-08-28 19:14:26 +02:00
Christoffer Lerno
73fd9371eb
Exclude LLVM 12 from new optimizer.
2022-08-28 16:51:33 +02:00
Christoffer Lerno
4a296032ab
Add fshl fshr + new optimizer.
2022-08-28 16:22:10 +02:00
Christoffer Lerno
5386b6fe50
Improve error message #543
2022-08-28 01:00:11 +02:00
Christoffer Lerno
c9ae0779e7
Locals lookup is no longer hacked to be used for member search. Fixed bug where you could break out of an expression block using a labelled break. Bump to 0.3.29
2022-08-28 01:00:11 +02:00
Dmitry Atamanov
e33c81f85b
Increase verbosity of asm output
2022-08-27 18:34:55 +02:00
Christoffer Lerno
a4e603442b
Version bump
2022-08-27 02:25:38 +02:00
Christoffer Lerno
6b1370ba76
Support varargs for macros. Bugfix member access. Support macro varargs.
2022-08-27 02:25:08 +02:00
Christoffer Lerno
52bcf4654a
Reduce max params to 127. Hint when using more. Allow function pointers to have default and named parameters. Bump version to 0.3.27
2022-08-25 17:55:25 +02:00
Christoffer Lerno
57e1084734
Improvements to parameter parsing. Update "splat" name. Allow more orderings of named parameters. Allow named args after variant.
2022-08-24 20:06:08 +02:00
Christoffer Lerno
821b6a7ffa
Updated pointer offset handling. Version bump. This fixes variant[2] { &&1, &&2 } init.
2022-08-20 11:43:00 +02:00
Christoffer Lerno
1858600449
Fixes issue where functions could not be found if local and imported names clashed.
2022-08-18 20:03:59 +02:00
Christoffer Lerno
656faa55bf
Add a concat/tconcat function.
2022-08-18 16:57:22 +02:00
Christoffer Lerno
b2a975945a
Fix debug info subarray/variant.
2022-08-18 15:04:12 +02:00
Christoffer Lerno
f6ff3a0756
Update with LLVM 16 compatibility.
2022-08-17 22:29:23 +02:00
Christoffer Lerno
d95e0b4733
General refactoring and fix of compile time folding of pointers.
2022-08-17 21:54:47 +02:00
Christoffer Lerno
fd642e333b
Fix tests.
2022-08-17 17:32:28 +02:00
Christoffer Lerno
377f3eeb2e
Allow const access into arrays and structs.
2022-08-17 17:04:27 +02:00
Christoffer Lerno
08c9400e02
Fix bug with private methods in generic modules.
2022-08-17 11:45:58 +02:00
Christoffer Lerno
afe466d7b3
Added sinf/cosf. Minor refactoring to matrix lib. Added complex type.
2022-08-17 01:07:17 +02:00
Christoffer Lerno
ae51214c47
Added clz, ctz, popcount, bswap, bitreverse.
2022-08-16 21:18:14 +02:00
Dmitry Atamanov
15586b3076
Add foreach_r tests
2022-08-16 16:51:06 +02:00
Christoffer Lerno
9a3e7fd34b
Add the ability to build static libraries. Bump version to 0.3.18
2022-08-16 09:11:02 +02:00
Christoffer Lerno
9a69a13b04
Fixes to or/and with rethrow.
2022-08-15 14:34:18 +02:00
Christoffer Lerno
0a17857737
Update of the msvc_sdk script.
2022-08-15 10:52:33 +02:00
Christoffer Lerno
31d151aa30
Added MSVC download script to prebuilts. Implicitly use msvc_sdk if available. Bump version to 0.3.17
2022-08-14 23:42:18 +02:00
Christoffer Lerno
63d9853bd3
Fixes to bitstruct.
2022-08-14 18:25:47 +02:00
kstrb
b72718ba2a
Update README.md
2022-08-14 17:46:55 +02:00
kstrb
213745fccd
Add batch file
2022-08-14 17:46:55 +02:00
Christoffer Lerno
1a98fa0efe
Update linker args for Linux. Fix problem with int return mains. Bump to 0.3.16
2022-08-13 21:49:47 +02:00
Christoffer Lerno
fc943a98ef
Foreach_r, bump to 0.3.15
2022-08-13 03:04:09 +02:00
Christoffer Lerno
7805fb8d1c
More codegen cleanup.
2022-08-13 00:19:09 +02:00
Christoffer Lerno
d93c7090f6
Adding wrapper functions to a lot of the LLVM calls.
2022-08-12 23:20:35 +02:00
Christoffer Lerno
44df6eb75b
Cleanup.
2022-08-12 18:13:24 +02:00
Christoffer Lerno
5cacc41925
Add global builder / updated codegen.
2022-08-12 01:50:48 +02:00
Christoffer Lerno
571728a42e
Bump version to 0.3.14. Better non-lvalue errors. Dereferenced optional pointers are not lvalues.
2022-08-12 00:33:09 +02:00
Christoffer Lerno
b1c78edc5e
Bump version to 0.3.13. Set codeview flag for Windows debug.
2022-08-11 22:31:26 +02:00
Christoffer Lerno
852c08e5fe
Better handling of foreach lowering.
2022-08-11 21:25:11 +02:00
kstrb
7092a9f825
Use debug libraries when doing a debug build on Windows
2022-08-11 21:15:56 +02:00
Christoffer Lerno
f513b6237f
Improved error messages for foo(void), foo(int!) declarations.
2022-08-11 12:59:55 +02:00
Dmitry Atamanov
48fb342834
Fix typo in asm-out description [skip ci]
2022-08-11 11:35:03 +02:00
Dmitry Atamanov
24e216e034
Use LLVM's tools in CI
2022-08-11 11:30:15 +02:00
Christoffer Lerno
d4c1a08fcd
Rename "PREV" to "NOTE". Bump of version.
2022-08-11 11:17:48 +02:00
Andersama
ac7823cabb
Improve navigation of messages
2022-08-11 11:08:55 +02:00
Christoffer Lerno
af9b99bd5a
Fix macro calls to make CT parameters modifiable.
2022-08-11 11:04:44 +02:00
Christoffer Lerno
90dfc24491
General cleanup and rearranging code.
2022-08-11 02:20:22 +02:00
Christoffer Lerno
aa337049ea
Fix -l and -L build options.
2022-08-10 22:21:29 +02:00
Christoffer Lerno
92b4eeaa35
Update codegen for failable folding. Fixes chained init, e.g. "int! a = b = TestErr.FOO!"
2022-08-10 21:32:29 +02:00
Christoffer Lerno
5ac35a49fd
Minor cleanup. Fix of do { } while(1) loops. Bump to 0.3.9
2022-08-10 16:37:27 +02:00
Christoffer Lerno
7a835418a7
Documented the --nostdlib option.
2022-08-10 14:11:23 +02:00
Christoffer Lerno
1bf3bb51bf
Add asm output option using --emit-asm.
2022-08-10 11:41:40 +02:00
Christoffer Lerno
fd3591c8b7
Temporarily disable LLVM 16
2022-08-10 11:17:13 +02:00
Christoffer Lerno
cfcf5cbc16
Bump to 0.3.7. Fixes issue with bitoperations on booleans.
2022-08-10 11:01:14 +02:00
Christoffer Lerno
9473adbc35
Added $$sysclock() builtin.
2022-08-10 01:24:16 +02:00
Christoffer Lerno
3eee9ddc06
Change exe name to follow the module of the main. Detect missing / multiple main functions.
2022-08-10 01:14:07 +02:00
Christoffer Lerno
ebd7611164
Allow compile time pointer manipulation. Ternary bug fixes.
2022-08-09 12:05:49 +02:00
kstrb
fba4df8f84
Automated releases should be "Pre-release"
2022-08-08 19:58:38 +02:00
Christoffer Lerno
28c7db7414
Updated the readme with precompiled binaries.
2022-08-08 16:54:27 +02:00
Christoffer Lerno
167bb85a7e
Fix uploading linux debug + macos
2022-08-08 15:47:39 +02:00
Christoffer Lerno
29918fd126
Add debug version for windows.
2022-08-08 15:19:54 +02:00
Christoffer Lerno
f881d195b0
Update the release CI.
2022-08-08 15:18:39 +02:00
Christoffer Lerno
ccda6dba40
Change artifact uploads.
2022-08-08 14:42:00 +02:00
kstrb
31d0bb9684
add lib/ to release artifacts, release job should only run on master
2022-08-07 19:03:27 +02:00
kstrb
1c46f7050c
Update CI to upload release artefacts
2022-08-07 17:24:46 +02:00
Christoffer Lerno
878bbed929
Fix bug using $switch. Added mem::equals. Fix to dynamic arena allocator.
2022-08-05 19:00:32 +02:00
Christoffer Lerno
f93c20ca34
$$syscall cleanup.
2022-08-05 12:24:33 +02:00
Christoffer Lerno
9866c7f9e9
Added $$syscall builtin.
2022-08-05 12:01:50 +02:00
Christoffer Lerno
00b880e35e
Nicer plus_minus
2022-08-05 01:01:28 +02:00
Christoffer Lerno
398e19d727
Corrected default alignment on temp alloc. Added str_index_of. Added simple getline. Added a simple calculator. Allow [1..] to create a zero length slice. Added some initial macro contracts. Fix accessing enum functions. Support for @checked. Bump to 0.3.4
2022-08-05 00:42:52 +02:00
Christoffer Lerno
046469843c
@pool on temp usage in File.open(). Add LLVM 15.
2022-08-04 12:56:47 +02:00
Christoffer Lerno
3461f08a53
Consume a byte to make the temp allocator correctly reset large allocs.
2022-08-04 02:46:15 +02:00
Christoffer Lerno
db5816edd6
Fix to temp allocator reset.
2022-08-04 02:34:51 +02:00
Christoffer Lerno
6d2ab0c985
Fix ordering of @builtin. malloc <-> alloc, malloc, calloc, realloc, free builtins.
2022-08-04 01:49:36 +02:00
Christoffer Lerno
f966250185
Allow .names to be used on enum type directly at compile time.
2022-08-03 21:23:49 +02:00
Christoffer Lerno
cc8884d3d1
Allocators separated into aligned and non aligned operations.
2022-08-03 20:53:37 +02:00
Christoffer Lerno
550bca79e9
Updated memory allocator. Fix in printf printing pointers. Added aligned_alloc to libc module. Renamed MemoryArena -> ArenaAllocator. New temp allocator. @pool(), @scoped, @tscoped macros. Bump to 0.3.2.
2022-08-02 14:42:46 +02:00
Christoffer Lerno
272f134e78
Update for LLVM 16
2022-08-01 17:23:23 +02:00
Christoffer Lerno
a109efd14c
Fix bug with ternary failables.
2022-08-01 11:22:58 +02:00
Christoffer Lerno
b48ae91cbb
Better error on Foo::BAR
2022-07-31 10:48:01 +02:00
Christoffer Lerno
14df5c2ed9
0.3.0 mark.
2022-07-30 03:24:36 +02:00