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
9f55a74d2e
Remove use of find_len and len_from_list. Rename lenof to lengthof
2025-09-06 18:35:03 +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
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
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
cb17cfff7d
Deprecation of @assignable_to
2025-08-26 13:21:42 +02:00
Christoffer Lerno
908d705669
Removing use of $assignable and deprecate it.
2025-07-20 20:07:06 +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
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
8b49e6c14d
Rename def to alias.
2025-03-13 11:22:27 +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
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
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
Christoffer Lerno
222bfb158b
Remove deprecated functions.
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
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
8c58b31bbd
Remove <[]> experimental generic syntax.
2025-02-13 12:53:46 +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
2f7d18bfb8
Quicksort and insertsort incorrectly allowing arrays and vectors by value. #1845 .
2025-01-15 13:31:29 +01:00
Christoffer Lerno
dad97fc2d9
Improved #foo resolution inside of the compiler.
...
Deprecation of several `&` macros.
2025-01-08 12:55:20 +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
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
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
a665978b64
Fixing some whitespace issues.
2024-10-08 19:38:31 +02:00
Christoffer Lerno
1b5472cc94
Add paramsof.
2024-09-15 23:43:09 +02:00
Christoffer Lerno
05c5eaed48
Add deprecation notice for $and, $or, $concat, $append.
2024-08-10 21:25:13 +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
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
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
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
326fc501e2
Simplified @is_comparer
2024-07-02 00:36:05 +02:00
Christoffer Lerno
3a7bc4d253
Return the typekind "FUNC" for a function pointer.
2024-06-20 20:47:24 +02: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
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
Dmitry Atamanov
fcb4bc0781
Reimplement QuickSort (non-recursive modification).
2023-08-22 14:48:12 +02:00
Christoffer Lerno
499c82b089
Updated indentation to C3 standard.
2023-07-26 14:01:24 +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
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
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
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
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
4f7b42cdc4
New generic syntax and ad hoc invocation.
2023-07-06 23:43:36 +02:00
Christoffer Lerno
daa952d990
Update quicksort.
2023-07-04 21:03:48 +02:00