Commit Graph

521 Commits

Author SHA1 Message Date
gingerBill
b0ee0bb635 Add @(fast_math={...}) + intrinsics.Fast_Math_Flags 2026-05-11 11:55:07 +01:00
gingerBill
8da640da58 Merge pull request #6629 from odin-lang/bill/va_arg
`intrinsics.c_va_*`
2026-04-28 15:32:00 +01:00
gingerBill
162eab5052 Increase matrix maximum element count from 16 to 64, allowing for matrix[8, 8]T 2026-04-28 15:19:06 +01:00
gingerBill
7b97530443 Add intrinsics.c_var_* 2026-04-28 15:00:53 +01:00
gingerBill
6e09ce9a04 intrinsics.to_bits_signed; simd.signbit 2026-04-07 15:25:41 +01:00
Harold Brenes
4f6caf19f0 Ensure checking for proc property equality before checking param assignability 2026-03-23 21:15:12 -04:00
Harold Brenes
147542b5cc Allow pointers to types which have subtype fields at offset 0
to be assignable in proc parameters.

```odin
// Virtual interface
IFoo :: struct {
	foo: proc( self: ^IFoo ),
}

// Implements IFoo interface
Foo :: struct {
	using vt: IFoo,
	name: string,
}

// Implement interface via `Foo`
Foo_Impl :: IFoo {
	// `self` of type `^Foo` (not `^IFoo`) is now accepted as a valid parameter.
	foo = proc( self: ^Foo ) {
		...
	},
}
```
2026-03-23 20:55:44 -04:00
gingerBill
04cb889aed Begin interning ScopeMap strings 2026-03-17 11:04:32 +00:00
gingerBill
d5a78a9cf1 Remove canonical hash shortcut 2026-03-17 09:43:16 +00:00
gingerBill
f7ede8632f Minor changes 2026-03-17 08:10:13 +00:00
gingerBill
36d5a19115 Replace Scope.elements to use a custom hash map ScopeMap
This hash map is robin hood based with a inline slot amount for small scopes
2026-03-16 17:41:58 +00:00
gingerBill
1744f57d01 Use permanent_alloc_item directly rather than through the gb_alloc_item generic interface 2026-03-16 16:03:27 +00:00
gingerBill
c51391f8cb Fix #5129 2026-03-15 17:15:16 +00:00
gingerBill
0e6ea3884d General improves 2026-03-14 16:26:42 +00:00
gingerBill
8e23c58620 Add intrinsics type_fixed_capacity_dynamic_array_len_offset and type_is_fixed_capacity_dynamic_array 2026-03-12 17:39:44 +00:00
gingerBill
a6160770ff Support compound literals for fixed capacity dynamic arrays 2026-03-12 10:03:58 +00:00
gingerBill
f1dbe9c242 [dynamic; N]T proof of concept: fixed capacity dynamic array (akin to small_array.Small_Array(N, T)) 2026-03-11 16:46:33 +00:00
bymehul
763c8d3a42 Fix generic cycle deadlock in struct layout 2026-03-11 03:04:26 +05:30
gingerBill
a936f3fb7d Comment out t->Struct.are_offsets_being_processed.load() 2026-02-02 11:41:33 +00:00
gingerBill
8594deb4e1 Move return true; to after the if check 2026-02-02 11:40:30 +00:00
gingerBill
d086a16f64 Make atomic variant_block_size and tag_size in TypeUnion 2026-02-02 10:52:14 +00:00
gingerBill
07d814d9cf Add struct #simple to force a struct to use simple comparison if all of the fields "nearly simply comparable". 2026-01-29 10:49:26 +00:00
gingerBill
4a7fb46667 Complete is_type_simple_compare switch rules 2026-01-29 09:21:31 +00:00
gingerBill
5f07055ac1 Add #must_tail and "preserve/none" calling convention 2026-01-15 17:28:28 +00:00
Morgan
555081240b missed a semicolon 2025-12-01 16:43:52 +01:00
Morgan
b3ef77e9dd undetected type declaration cycles work-around 2025-12-01 16:24:57 +01:00
gingerBill
593d2e6daa Add #all_or_none 2025-11-05 13:30:40 +00:00
Laytan
c4d1cd6ee5 fixes for 32bit with regards to typeid 2025-11-04 21:37:29 +01:00
gingerBill
99520d82fd Add intrinsics.constant_(floor|truncate|ceil|round) 2025-10-30 08:52:21 +00:00
Jeroen van Rijn
faa9222fef Set minimum #load(file, type) alignment to 16 bytes 2025-10-15 18:04:24 +02:00
Jeroen van Rijn
5dbade87e9 Simple compare is also comparable 2025-10-11 15:43:30 +02:00
Jeroen van Rijn
e6754547ab Fix #5786 2025-10-11 15:17:23 +02:00
Jeroen van Rijn
b3dfd34f2d #5788 2025-10-11 14:57:45 +02:00
Harold Brenes
5af13f5d53 Automatically emit objc_msgSend calls when calling imported or implemented Objective-C methods
- Add intrinsics.objc_super()

- Emit objc_msgSendSuper2 calls when an objc method call is combined with objc_super(self)

- Fix objc_block return value ABI for large struct returns

- Fix objc_implement method wrappers bad ABI for large struct returns and indirect args

- Simplify parameter forwarding for objc_imlpement methods

- Add intrinsics.objc_instancetype to mimi Objective-C instancetype* returns
  This facilitates returning the correct type on subclasses when calling mehtods
  such as `alloc`, `init`, `retain`, etc.

- Refactor Objective-C class implementations generation so that hierarchies are properly initialized

- Better codegen for context passing with ivar-based autocontext

- Allow @superclass on imported objc-c objects

- Better codegen for block forwarding invoker, arguments are forwarded directly
2025-09-29 20:37:48 -04:00
gingerBill
240b2f1819 Disable #raw_union constants for the time being 2025-09-29 12:54:52 +01:00
gingerBill
10ba956d6a Rudimentary support for some constant struct #raw_union 2025-09-29 10:28:16 +01:00
gingerBill
4877214f34 Add more check_is_operand_compound_lit_constant uses 2025-09-28 23:53:07 +01:00
gingerBill
8be18d9a40 Allow for constant []typeid 2025-09-28 21:47:56 +01:00
gingerBill
ffdfbfe2c2 Begin to support constant array of unions 2025-09-28 20:20:26 +01:00
gingerBill
dfb86db159 Fix absolutely random change between , and newline 2025-09-26 10:50:16 +01:00
gingerBill
01c10f3f5e Use RecursiveMutex to fix a race condition with parapoly records 2025-09-26 10:18:46 +01:00
gingerBill
549edcc0f9 Use a RwMutex instead of BlockingMutex 2025-09-10 21:00:43 +01:00
gingerBill
0476d33a6c Remove global PtrMap<Type *, GenTypesData *> and store on the TypeNamed directly 2025-09-10 20:45:26 +01:00
gingerBill
1e0902677f Multithread min dep set by removing the set itself 2025-09-10 17:29:11 +01:00
Jeroen van Rijn
1d561247f5 Add nullptr checks to more type helpers. 2025-09-09 20:45:32 +02:00
gingerBill
af3184adc9 Change is_utf16 field to encoding and use an enum 2025-08-05 15:12:54 +01:00
gingerBill
eae43f1225 Merge branch 'master' into bill/utf16-strings 2025-08-05 15:07:06 +01:00
gingerBill
accdd7c2af Fix atomics for tuples 2025-08-05 12:31:57 +01:00
gingerBill
7f194080e6 Fix possible race condition with struct offsets 2025-08-05 12:28:18 +01:00
gingerBill
c910b5e583 Add intrinsics.type_is_nearly_simple_compare 2025-08-04 12:13:30 +01:00