Commit Graph

14557 Commits

Author SHA1 Message Date
Jeroen van Rijn
3adade2639 Add .rdi RadDbg files to .gitignore 2025-05-09 19:42:54 +02:00
gingerBill
8a225a6887 Place RTTI into its own section .odin-rtti 2025-05-09 11:07:53 +01:00
gingerBill
23aff08556 Merge pull request #5117 from bogwi/bug/5024
Bug/5024
2025-05-09 08:35:16 +01:00
gingerBill
10d8332394 Merge pull request #5135 from Lperlind/asan-ci-tests
Enable asan for windows and ubuntu CI tests
2025-05-09 08:35:06 +01:00
Lucas Perlind
11d2a9c867 Enable asan for windows and ubuntu CI tests
Other platforms either do not support asan at all or they
fail to link with the asan runtime.
2025-05-09 15:39:39 +10:00
gingerBill
edbe7aa06e Merge pull request #5091 from Badaxis/badaxis/windows-scancodes
Adding windows keyboard scan codes
2025-05-08 16:33:14 +01:00
gingerBill
4a4294c2af Merge pull request #5095 from Lperlind/temp-collisions
os2: Resolve temp allocator collisions
2025-05-08 15:11:51 +01:00
gingerBill
204c6f514a Remove use of do 2025-05-08 14:03:17 +01:00
gingerBill
0ce8373528 Formatting Fix 2025-05-08 13:23:22 +01:00
gingerBill
d7fc3d1770 Merge pull request #5121 from Badaxis/badaxis/xaudio2
XAudio2 Implementation
2025-05-08 13:11:51 +01:00
gingerBill
92df892f25 Merge pull request #5064 from harold-b/hb/objc-classes
Add support for Objective-C class implementation
2025-05-08 12:58:33 +01:00
Lucas Perlind
f5b947ea73 Fix linux 2025-05-08 17:45:29 +10:00
Lucas Perlind
14c5096b81 Improve assert information 2025-05-08 17:41:03 +10:00
Lucas Perlind
9f2d008a8a Remove TEMP_ALLOCATOR_GUARD wrapper 2025-05-08 17:41:03 +10:00
Lucas Perlind
5292a7f4f3 Fix posix 2025-05-08 17:41:03 +10:00
Lucas Perlind
1bea59ee68 Fix linux 2025-05-08 17:41:03 +10:00
Lucas Perlind
190960e103 fix -vet 2025-05-08 17:41:03 +10:00
Lucas Perlind
b9db1dd3e0 os2: Resolve temp allocator collisions 2025-05-08 17:41:01 +10:00
gingerBill
4a709086a4 Merge pull request #5131 from laytan/fix-builder-dispose
fix disposing builder when not created
2025-05-07 14:03:42 +01:00
Laytan Laats
ad4866653a fix disposing builder when not created
Fixes #5128

p->builder is created in lb_begin_procedure_body, but that isn't called
if there is no body, and we were still calling dispose at that point.

Moved it into lb_end_procedure_body to match.
2025-05-07 14:39:51 +02:00
gingerBill
90a30a145a Merge pull request #5122 from Lperlind/asan-allocators
Add asan support for various allocators and stack unpoisoning
2025-05-07 10:21:16 +01:00
Lucas Perlind
46e0c7ad74 Cleanup 2025-05-07 11:30:58 +10:00
Laytan
7c1a9f1e7a Merge pull request #5127 from laytan/fix-process-windows-handles-handling
Fix process windows handles handling
2025-05-06 22:31:54 +02:00
laytan
9b218a2922 don't need to hang on to the null handle 2025-05-06 19:42:52 +02:00
Laytan
bf5206968a close null_handle 2025-05-06 20:57:26 +02:00
Laytan
2bce446d08 ifs wrong way around 2025-05-06 20:47:51 +02:00
Laytan
814a500e83 Windows was defaulting to the std handles of the current process, which is wrong 2025-05-06 20:43:02 +02:00
gingerBill
0cf5b5984d Merge pull request #5108 from Barinzaya/core-simd-indices-redadd-redmul
Alternate `reduce_add`/`reduce_mul` intrinsics
2025-05-06 15:46:49 +01:00
gingerBill
e074518983 Merge pull request #5124 from Barinzaya/core-simd-bmi-intrinsics
BMI/BMI2 Intrinsics
2025-05-06 15:29:34 +01:00
Jeroen van Rijn
8097b59e30 Also allow comparing SOA pointers against each other
This compares the data pointer *and* the index.

```odin
package scratch

import "core:fmt"

Foo :: struct {a, b: int}

main :: proc() {
    a := new(#soa[dynamic]Foo)
    a^ = make(#soa[dynamic]Foo, 12, 12)

    b := new(#soa[dynamic]Foo)
    b^ = make(#soa[dynamic]Foo, 12, 12)

    fmt.printfln("&a[0]: %p, &b[0]: %p, Same: %v", &a[0], &b[0], &a[0] == &b[0]) // Same: false
    fmt.printfln("&a[0]: %p, &b[0]: %p, Same: %v", &a[0], &b[1], &a[0] == &b[1]) // Same: false
    fmt.printfln("&a[0]: %p, &b[0]: %p, Same: %v", &a[0], &b[2], &a[0] == &b[2]) // Same: false

    fmt.printfln("&a[0]: %p, &a[1]: %p, Same: %v", &a[0], &a[1], &a[0] == &a[1]) // Same: false
    fmt.printfln("&a[1]: %p, &a[2]: %p, Same: %v", &a[1], &a[2], &a[1] == &a[2]) // Same: false
    fmt.printfln("&a[2]: %p, &a[3]: %p, Same: %v", &a[2], &a[3], &a[2] == &a[3]) // Same: false

    fmt.printfln("&a[0]: %p, &a[0]: %p, Same: %v", &a[0], &a[0], &a[0] == &a[0]) // Same: true
    fmt.printfln("&a[1]: %p, &a[1]: %p, Same: %v", &a[1], &a[1], &a[1] == &a[1]) // Same: true
    fmt.printfln("&a[2]: %p, &a[2]: %p, Same: %v", &a[2], &a[2], &a[2] == &a[2]) // Same: true
}
```
2025-05-06 15:10:08 +02:00
Laytan
e228ef221b Merge pull request #5125 from brian-hmn/fix-set-env
[core:os/os2] Fix: Correct value cloning in os2._set_env for POSIX
2025-05-06 12:24:17 +02:00
Jeroen van Rijn
9a8cc2d1e7 Merge pull request #5123 from bogwi/bug/5104
Bug/5104
2025-05-06 11:57:04 +02:00
Brian
27edbc5a76 Fix: Correct value cloning in os2._set_env for POSIX
The _set_env procedure in core/os/os2/env_posix.odin was
incorrectly cloning the 'key' argument for 'cval' instead of
the 'value' argument. This resulted in set_env effectively
setting the environment variable's value to its own key.

This commit corrects the typo to use the 'value' argument.
2025-05-06 17:45:06 +08:00
Barinzaya
41bf1ab6dd Added BMI and BMI2 intrinsics.
The BMI ones mostly aren't particularly interesting--they're mostly
trivially representable in-language--but PDEP and PEXT from BMI2 could
be.
2025-05-06 01:44:10 -04:00
Lucas Perlind
fd05f55691 Fix wasi_wasm 2025-05-06 15:23:44 +10:00
bogwi
904a64a45e Add support for SoaPointer nil comparison in lb_emit_comp_against_nil 2025-05-06 14:21:18 +09:00
Lucas Perlind
83bc2d3c4a Add asan support for various allocators 2025-05-06 14:55:50 +10:00
Jeroen van Rijn
8032db3484 Fix CreateDibSection binding 2025-05-05 23:23:39 +02:00
Barinzaya
dd5b7852ce Added alternate reduce-add/reduce-mul intrinsics.
The new reduce_add/reduce_mul procs perform the corresponding arithmetic
reduction in different orders than sequential order. These alternative
orders can often offer better SIMD hardware utilization.

Two different orders are added: pair-wise (operating on pairs of
adjacent elements) or bisection-wise (operating element-wise on the
first and last N/2 elements of the vector).
2025-05-05 16:38:45 -04:00
Barinzaya
9814370659 Merge branch 'master' into core-simd-indices-redadd-redmul 2025-05-05 16:37:02 -04:00
Vincent Billet
b34a490c02 Corrections, +XAPO 2025-05-05 22:14:20 +02:00
Jeroen van Rijn
2224911aca Fix type_union_tag_offset when all members are zero sized 2025-05-05 18:09:54 +02:00
bogwi
3c0ba5bb55 CHECK 4 done
The original errors:
1. `5024.odin(127:15) Error: Invalid use of a polymorphic type 'List($T)' in variable declaration`
2. `5024.odin(129:17) Error: Cannot determine polymorphic type from parameter: 'invalid type' to 'List($T)'`
Are gone. We now have a single, different error:
`5024.odin(124:28) Error: Unspecialized polymorphic types are not allowed in procedure parameters, got List($T)`

This error points directly to the `list : List($T)` parameter within the `List_Filter` procedure definition. This seems much more relevant to the actual problem (the interaction between the generic `List_Filter` and the concrete `default_filter`) than the original error about the variable declaration.

While this new error message might not be exactly pinpointing the default parameter issue, it correctly identifies the problematic procedure definition (`List_Filter`) as the source of the error, rather than the variable declaration (`my_list`). This seems like a step in the right direction for improving the error reporting for this kind of scenario.
2025-05-05 22:39:03 +09:00
Harold Brenes
14e25c0f2a Fix lb_get_objc_type_encoding missing matrix and simdvec encodings and minor fixes. 2025-05-05 09:07:50 -04:00
gingerBill
c4719e75fd Add simd.indices and docs 2025-05-05 11:43:19 +01:00
gingerBill
36945079f8 Add intrinsics.simd_indices 2025-05-05 11:41:54 +01:00
gingerBill
bc2a4dfe9d Merge pull request #5110 from omark96/feat/get_window_thread_process_id
win/sys: Add GetWindowThreadProcessId
2025-05-05 10:17:29 +01:00
bogwi
af6b763449 CHECK 3 done
Enhance support for polymorphic procedures in type checking

1. In src/check_type.cpp, added special handling for polymorphic procedures used as default parameter values. We now allow a polymorphic procedure to be used as a default parameter value, even when its type parameters can't be immediately determined.

2. In src/check_expr.cpp, we modified the check_is_assignable_to_with_score function to handle the special case of assigning a polymorphic procedure as a default parameter. The function now allows a polymorphic procedure to be assigned to a concrete procedure type in this specific context.
2025-05-05 17:53:32 +09:00
bogwi
af0e067a12 CHECK 2 done
Add support for handling generic types in LLVM backend

- Updated `lb_type_internal` to return a pointer type for unspecialized generics.
- Modified `write_type_to_canonical_string` to handle specialized generics without panicking.
- Enhanced `default_type` to return the default type of specialized generics when applicable.
2025-05-05 16:58:14 +09:00
bogwi
ee8aeea381 CHECK 1 done
Fix panic in LLVM backend when using generic procedure with default arguments

- Fixed panic in `llvm_backend_proc.cpp` when using unspecialized polymorphic procedures as defaults.
- Ensured correct type inference when generic procedures are used as default parameters.
2025-05-05 16:50:40 +09:00