Commit Graph
577 Commits
Author SHA1 Message Date
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