gingerBill
ecedcbc0bf
Add @(futex=.Wait) and @(futex=.Wake) with intrinsics.Futex_Operation, so the atomic analysis checks futex words, and use relaxed ordering for Atomic_Cond's counter
2026-10-07 23:18:02 +01:00
gingerBill
711f08a641
Make is_type_lock_free follow what each target lowers without library calls, and reject atomics on types which are not lock-free
2026-10-07 21:58:32 +01:00
gingerBill
403738e5cd
Merge pull request #7802 from odin-lang/bill/compiler-improvements-2026-10
...
Flow-based Escape Analysis of Stack Memory + Show where parapoly procedures and records were instantiated in errors within them
2026-10-07 21:19:06 +01:00
gingerBill
30f80e1079
Align matrices to their largest power-of-two column/row stride, capped at 16; pad fixed capacity dynamic arrays of over-aligned elements to their full size
2026-10-07 15:40:59 +01:00
gingerBill
edeca40dd6
Skip the escape analysis for an executable's entry point, suggest clearing stores, and add type_zero_value_string
2026-10-07 13:41:32 +01:00
gingerBill
bcf0ac7b21
Match polymorphic procedure specializations by parameter names at every depth so they no longer depend on which call site is checked first
2026-10-05 12:28:46 +01:00
gingerBill
5adc9426a1
Mark the min dep set's entities with no declaration without walking them, skip the type info lock for types already added, and split the walk into tasks sooner
2026-10-05 00:52:07 +01:00
gingerBill
6679c120f9
Wait for a polymorphic struct's fields before reading them in the subtype and comparison checks
2026-10-04 18:34:52 +01:00
gingerBill
29106aaa1e
Cache type layouts and union constantability, build nested constants once, create debug files lazily
2026-10-03 01:26:01 +01:00
gingerBill
3a45aaa539
Merge branch 'master' of https://github.com/odin-lang/Odin
2026-10-02 23:40:30 +01:00
gingerBill
a7ded94e52
Begin the costliest modules first in each backend stage; run function passes in parallel with -debug; spread the instances of oversized modules over further modules; trim comments
2026-10-02 23:15:43 +01:00
gingerBill
1d3f982b50
Allow intrinsics.procedure_of on procedures without results or requiring a context; treat a specialized procedure's type as concrete
2026-10-02 17:10:03 +01:00
gingerBill
a7f840408e
Wait for the variants of a polymorphic union's instance before computing its size, alignment or tag, as it is found before they are checked, and laying out a struct containing it would otherwise treat it as empty
2026-10-02 17:01:44 +01:00
gingerBill
161f6e30e6
Merge pull request #7701 from odin-lang/bill/multithread-global-decls
...
Multithread The Entire Semantic Checker
2026-10-02 14:17:23 +01:00
gingerBill
3b6a32398b
Merge pull request #7692 from corleypc/must-tail-disallow-odincc
...
Disallows the Odin calling convention with #must_tail
2026-10-02 11:38:27 +01:00
gingerBill
c494c7a503
Check global entity groups in parallel
...
* CAS-claimed entities, cycle-safe waits for entities and records, lazy entities without lazy_mutex
* Build union type names only on error, take the error block only to report proc group overload errors
2026-10-01 23:17:34 +01:00
gingerBill
5f579a1a10
Fix numerous race conditions: clone polymorphic defaults per call, evaluate foreign import attributes after collection, own dependencies for record instances, sorted Objective-C emission, no debug line for anonymous records
2026-10-01 21:55:25 +01:00
gingerBill
73c3a96de1
Make global checking state thread-safe: read-only global scopes, per-group untyped and #soa, deferred link-name checks, fresh contexts for on-demand globals
2026-10-01 21:07:41 +01:00
Jeroen van Rijn
f251830001
Merge pull request #7685 from odin-lang/bill/parapoly-improvements
...
Complete Parapoly Rewrite + Race condition fixes
2026-10-01 05:31:24 -07:00
Mihail Moskov
016414cc88
disallows odin cc with #must_tail
2026-10-01 15:09:24 +03:00
gingerBill
9205bf3bb4
Fix comparison with #sparse
2026-10-01 01:42:25 +01:00
gingerBill
47ffc56d1a
Handle anonymous parapoly unions better
2026-09-30 19:44:23 +01:00
gingerBill
3b9ef40fae
Clean up comments and add more wait signal guards for union variants
2026-09-30 15:53:31 +01:00
gingerBill
3b366c9e29
Begin work on handling the wait signals correctly for union variants throughout
2026-09-30 15:32:49 +01:00
Louis Novy
3f60ed743e
Fix casts between nested arrays of the same depth
2026-09-30 08:24:58 -04:00
Jeroen van Rijn
b5deedf69f
Fix #7581
2026-09-17 02:40:33 +02:00
gingerBill
a934751be1
Merge pull request #7435 from kalsprite/asm_group_empty_params
...
Delete dead code that crashed the checker on an asm template group with no parameters
2026-08-26 08:40:20 +01:00
kalsprite
3d4fcd3612
merge master
2026-08-25 23:07:38 -07:00
kalsprite
915fc97b5f
add missing int 128le
2026-08-25 22:46:30 -07:00
kalsprite
7bf266ef93
string_split_iterator fix
2026-08-24 17:32:30 -07:00
kalsprite
366c33e5af
Delete dead code that crashed the checker on an asm template group with no parameters
2026-08-23 23:17:55 -07:00
korvahkh
02246ac6fd
Implement fixes for constant unions
...
Note that with this commit, casting through
multiply-nested unions is forbidden, e.g.
```
U :: union {int, V}
V :: union {bool}
x: U = true
```
does not compile.
(Previously the compiler would simply crash)
This is to avoid situations where adding variants
can lead to unexpected changes in the value.
For example if `U` is changed to have a `bool`
variant of its own:
```
U :: union {int, bool, V}
```
Then `x: U = true` would equal
`U(true)` instead of `U(V(true))`.
Single-variant unions are exempt, primarily to
improve the ergonomics of `Maybe` in cases like:
```
x: Maybe(union{int, bool}) = 1
```
Fix #6100
Fix #6699
Fix #6895
Fix #6896
Fix #6897
Fix #7036
Fix #7083
Fix #7091
2026-08-19 20:12:56 -05:00
kalsprite
389416c3ef
a self-referential hangs the compiler
2026-08-19 13:27:49 -07:00
gingerBill
645b57be9f
Merge pull request #7327 from kalsprite/abi_conformance
...
ABI Conformance Harness + Fixes
2026-08-17 16:28:01 +02:00
kalsprite
38e053b96c
i386: cap cmplx / quaternion alignment; abi test: cover a narrow member in front of complex
2026-08-14 23:02:04 -07:00
kalsprite
b25497ecd5
matrix, vector align
2026-08-13 20:20:00 -07:00
kalsprite
e621a924f5
darwin align(16) max
2026-08-13 00:04:19 -07:00
kalsprite
8470c6eda2
i386 64-bit scalar alignment
2026-08-12 23:08:26 -07:00
kalsprite
939802e713
fix bitfield intrinsic
2026-08-12 19:23:41 -07:00
gingerBill
c629f923b3
Merge pull request #7307 from kalsprite/endian_partition
...
types: make the three endianness predicates partition
2026-08-12 13:21:37 +02:00
gingerBill
eb9c7d471a
Merge pull request #7296 from kalsprite/comparable_unspecialized
...
type_is_comparable: false for an unspecialized polymorphic record
2026-08-12 13:20:28 +02:00
kalsprite
586f87c0e1
apply max field align
2026-08-11 23:15:29 -07:00
kalsprite
613067a677
make endiant types partition
2026-08-11 20:13:47 -07:00
kalsprite
fef29f0f42
reject unspec poly
2026-08-11 18:59:37 -07:00
gingerBill
9914a57fc7
Add intrinsics.soa_copy_from_slice and use it within _append_soa_elems replacing the old handwritten unrolled approach
2026-08-03 14:41:04 +01:00
Isabella Basso
0843def5f5
types: allow fixed-capacity arrays in constant unions
...
Fixes : #7089
2026-07-19 18:34:48 -03:00
gingerBill
448a71f432
Support q.xyz on quaternion*
2026-07-02 12:27:03 +01:00
gingerBill
45eed87309
Allow #no_alias on any pointer-like type
2026-07-01 01:21:49 +01:00
misomosi
c8aa151a66
Add more constant type cases
2026-06-29 22:46:17 -04:00
gingerBill
6e65b5e4bc
Allow for more "constantable" union values
2026-06-29 00:55:07 +01:00