Christoffer Lerno
d7cf8fa9ab
Reduce macro inlining size. Remove non-const atomic ordering.
2026-02-15 00:43:29 +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
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
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
8aaf54e8b1
- Rename @extern to @cname, deprecating the old name #2493 .
2025-10-25 15:55:25 +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
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
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
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
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
bdbe81fedd
Fix libm regression.
2025-08-02 13:22:48 +02:00
Christoffer Lerno
908d705669
Removing use of $assignable and deprecate it.
2025-07-20 20:07:06 +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
a0497e9274
math::overflow_* wrappers incorrectly don't allow distinct integers #2221 .
2025-06-21 13:28:45 +02:00
Christoffer Lerno
496d23e93f
Fix some @require comments.
2025-06-10 01:54:45 +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
6c822e5aa3
Add math::@ceil() compile time ceil function. #2134
2025-05-15 12:46:46 +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
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
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
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
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
2a895ec7be
First 0.7 update, removing all deprecated features.
2025-03-03 00:32:20 +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
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
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
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
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
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
cf03bc0a0a
Formatting fixes
2024-10-14 16:13:51 +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
bf59efd3f4
Fix sincos to be different on Darwin compared to other.
2024-10-09 16:14:24 +02:00
Christoffer Lerno
39d4a97e24
Fix broken sincos function.
2024-10-08 20:34:41 +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
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
05c5eaed48
Add deprecation notice for $and, $or, $concat, $append.
2024-08-10 21:25:13 +02:00
Christoffer Lerno
274e5280cb
Rename muldiv and update tests for LLVM 20
2024-08-09 23:56:26 +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
7f5757d66b
Add .dot to integer vectors.
2024-07-19 11:34:05 +02:00