gingerBill
d0fb380c20
Support riscv _aq _rl _aqrl suffixes for mnemonics
2026-08-21 01:05:47 +01:00
gingerBill
a86e523053
Allow for inlineable asm calls
2026-08-18 14:57:34 +01:00
gingerBill
fd9ccd7b10
Support segment overrides on asm memory operands
2026-08-18 14:44:24 +01:00
gingerBill
12c89ee2bf
Allow for [base - disp]
2026-08-18 14:11:01 +01:00
gingerBill
c3b2029f64
Support asm template groups
2026-08-17 19:54:21 +01:00
gingerBill
55377f71ef
Support #byte directive for asm templates
2026-08-17 13:21:40 +01:00
gingerBill
d1f561ec88
Correct instruction_size_suffix so that the correct suffix can be selected for the instruction to adhere to AT&T syntax
2026-08-17 12:59:23 +01:00
gingerBill
344e8afa36
#clobber cc -> #clobber flags
2026-08-17 12:10:08 +01:00
gingerBill
cb903df235
#side_effects -> #volatile; Remove dead code
2026-08-13 10:03:00 +01:00
gingerBill
c085a46185
Move #side_effects and #align_stack to the specification list
2026-08-12 23:40:57 +01:00
gingerBill
c80fedc070
Support [base + index<<scale] and [base + index>>scale]; Support syntax for [base]:u8 (not implemented yet)
2026-08-12 09:03:31 +01:00
gingerBill
cee5bd79e0
Fix pinning logic for asm registers
2026-08-10 12:06:28 +01:00
gingerBill
5ac28cdecd
Begin work on semantically type checking asm templates
2026-08-09 18:24:56 +01:00
gingerBill
5e49e6c1a5
Parse asm template
2026-08-09 15:17:57 +01:00
gingerBill
ea00291519
Begin work on -bedrock mode
...
Currently disables 128-bit integers, `map` type, and RTTI
2026-05-02 15:06:01 +01:00
gingerBill
a8c6ea7c8a
Implement a new StringInterner
2026-03-17 09:18:39 +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
gingerBill
8cb7965aa5
for init; x in y {} style loops
2026-02-11 15:33:14 +00:00
gingerBill
2608f92fee
Use std::atomic for Ast.viral_state_flags and Ast_Ident.entity
2026-02-02 10:48:30 +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
59ae82634e
Add preserve/most and preserve/all
2026-01-15 17:52:36 +00:00
gingerBill
5f07055ac1
Add #must_tail and "preserve/none" calling convention
2026-01-15 17:28:28 +00:00
gingerBill
0366cd3304
Add #must_tail (similar syntax to #force_inline
2026-01-15 16:32:52 +00:00
gingerBill
593d2e6daa
Add #all_or_none
2025-11-05 13:30:40 +00: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
ffdfbfe2c2
Begin to support constant array of unions
2025-09-28 20:20:26 +01:00
gingerBill
5ea2e1fe60
Minimize mutex usage when in single threaded mode.
2025-09-10 21:41:52 +01:00
gingerBill
328d893cb5
#unroll(N) for
2025-01-10 12:22:18 +00:00
gingerBill
2efe4c2d68
Add #+feature dynamic-literals
2025-01-05 13:19:10 +00:00
gingerBill
a7d7c92a53
#min_field_align & #max_field_align; deprecate #field_align in favour of #min_field_align
2024-09-30 13:05:28 +01:00
avanspector
43ec2b9253
checker: delay foreign block checking
...
if file scope, otherwise as before
2024-08-26 20:59:16 +02:00
gingerBill
8ba87e01bd
Improve parse_enforce_tabs usage
2024-08-24 13:56:30 +01:00
gingerBill
b6d9a0c32e
Manually implement tail-recursion for parse_if_stmt
2024-08-24 13:16:55 +01:00
gingerBill
a4cc207022
Add a recursion depth limit for #3987 with a consideration to use a switch statement or refactor the code to not use a large if-else chain
2024-08-24 12:59:17 +01:00
gingerBill
a45e05bb18
Remove need for BlockingMutex in Arena
2024-07-15 01:36:54 +01:00
gingerBill
8642d719f0
Imply #no_capture to all variadic parameters
2024-07-14 12:19:47 +01:00
gingerBill
edc793d7c1
Add #no_capture args: ..T to reuse the backing array stack memory
2024-07-14 11:39:05 +01:00
gingerBill
886ee66e7f
Cache files, env, and args
2024-07-09 14:16:56 +01:00
gingerBill
1eb0bc1408
Remove *_test.odin; always compile it for all targets
2024-07-04 14:43:57 +01:00
gingerBill
fa3cae2bb0
Add intrinsics.procedure_of
...
```odin
foo :: proc(x: $T) { fmt.println(x) }
bar :: intrinsics.procedure_of(foo(int(123))) // parameters are never ran at compile time, similar to `size_of`
bar(333) // prints 333
```
2024-06-10 15:02:34 +01:00
gingerBill
a1b8749e74
Delay checking foreign import paths until after global scope is checked
2024-05-28 00:23:23 +01:00
gingerBill
38fffff06a
Begin moving foreign import import paths to be evaluated in the semantic phase rather than parsing.
2024-05-27 23:51:43 +01:00
gingerBill
29e5f94c2a
Add #no_broadcast procedure parameter to disallow automatic array programming broadcasting on procedure arguments
2024-03-21 11:52:48 +00:00
gingerBill
a750fc0ba6
Add #row_major matrix[R, C]T
...
As well as `#column_major matrix[R, C]T` as an alias for just `matrix[R, C]T`.
This is because some libraries require a row_major internal layout but still want to be used with row or major oriented vectors.
2024-03-19 21:05:23 +00:00
gingerBill
3875fb08e8
Fix #3284
2024-03-16 22:12:17 +00:00
gingerBill
54515af8cc
Add field tags to bit_field
2024-02-22 19:41:48 +00:00
gingerBill
5a84a08225
Add general support for bit_fields
2024-02-22 17:24:42 +00:00
gingerBill
a4b8c1ea17
Begin work adding bit_field
2024-02-22 15:55:54 +00:00
gingerBill
68df35b378
Add #field_align(N)
...
It sets the minimum alignment for the fields within a struct. This cannot be used with `#packed`, but can be used with `#align(N)`.
If `#align(N)` is less than `#field_align(N)`, then a warning will be printed.
2024-01-28 17:33:29 +00:00
gingerBill
aff8f06e3c
Add frontend stuff instrumentation tooling
...
//+no-instrumentation
@(no_instrumentation)
@(instrumentation_enter)
@(instrumentation_exit)
2024-01-07 19:56:00 +00:00