Commit Graph

6390 Commits

Author SHA1 Message Date
Lucas Perlind 5c117bde6d Add base:sanitizer package 2025-04-24 20:28:32 +10:00
Lucas Perlind ab0b26e876 Add more asan support to the odin runtime and begin sanitizing
allocators

This adds various bindings to the asan runtime which can be used
to poison/unpoison memory handed out by various allocators. This
means we can catch use after free memory bugs when using operations
such as free_all during runtime.

Asan poisoning are added for the follow allocators in mem:
Arena (including temporary arenas)
Scratch
Stack
Small_Stack

Additionally a bug in the stack allocator was fixed to disallow freeing
in the middle of the stack (caught by the asan!).

I plan on adding support for all the allocators in core. This is just
a good starting point and were some of the easiest ones to implement
asan for.
2025-04-24 15:17:51 +10:00
mtarik34b c7f9d2b1b7 Correctly capitalize 'E' for the %E format specifier (#5065) 2025-04-22 02:35:02 +02:00
Jeroen van Rijn 47f889569f Fix float64_range example 2025-04-21 18:37:57 +02:00
Jeroen van Rijn ab5ca087a7 Add comment 2025-04-19 23:44:02 +02:00
Jeroen van Rijn 062a3c2fae Fix parsing of CDATA tags (#5059)
Fixes #5054
2025-04-19 20:25:44 +02:00
Jeroen van Rijn bc86b50392 Replace default_tcp_options with constant (#5056)
Replace `default_tcp_options` with constant
2025-04-19 14:32:59 +02:00
gingerBill 4374685007 Merge pull request #5042 from fusion32/fix-once-do-without-data-contextless
make once_do_without_data_contextless actually contextless
2025-04-18 11:47:10 +01:00
Laytan 2dedb199b8 Merge pull request #5052 from harold-b/hb/fix-ns-dictionary-selectors
Fix 2 selectors in NSDictionary
2025-04-17 21:28:10 +02:00
Harold Brenes 040d8b1d48 Fix 2 selectors in NSDictionary 2025-04-17 15:22:10 -04:00
Jeroen van Rijn 07c59cb4db Early out and propagate nil in create*
If allocation of a `^Thread` failed, `create*` now properly return `nil`,
so you can assert on that instead of calling `thread.destroy` on a null pointer, say.
2025-04-17 17:26:24 +02:00
Jeroen van Rijn 1c655b84e4 Fix #5049
Keep in mind that `thread.create` needs an allocator to be set, as it returns `^Thread`.
2025-04-17 16:53:07 +02:00
Jeroen van Rijn 5a39013339 Let core:container/priority_queue return runtime.Allocator_Error
`init`, `reserve` and `push` now return `runtime.Allocator_Error`.
2025-04-17 14:20:03 +02:00
Laytan 09c8477bd3 Merge pull request #5041 from mtarik34b/remove-redundant-code-in-string-justify
Remove redundant `builder_init()` calls from `strings.left_justify()` and `strings.right_justify()`
2025-04-17 00:01:59 +02:00
fusion32 bd4afafc66 make once_do_without_data_contextless actually contextless 2025-04-16 12:44:00 -03:00
gingerBill 4ec03a2d9b Fix strconv.parse_float related procedures caused by a shifting problem 2025-04-16 13:45:50 +01:00
mtarik34b f4212b60e7 Remove redundant calls to builder_init 2025-04-16 13:16:51 +02:00
gingerBill 3dcc22fa6d Change hashing rules for float-like types to make 0 == -0 2025-04-16 10:52:35 +01:00
Jeroen van Rijn ddedddc16d Get rid of duplicate math.signbit in favor of math.sign_bit 2025-04-15 16:17:02 +02:00
Laytan 11da543f26 net: add ECONNRESET to the error handling of recv 2025-04-14 21:17:22 +02:00
Jeroen van Rijn 0fc141db5d core:mem/tlsf: Add early-out in OOM logic
This implementation doesn't allow for out-of-band allocations to be passed through, as it's not designed to
track those. Nor is it able to signal those allocations then need to be freed on the backing allocator,
as opposed to regular allocations handled for you when you `destroy` the TLSF instance.

So if we're asked for more than we're configured to grow by, we can fail with an OOM error early, without adding a new pool.
2025-04-14 20:40:05 +02:00
Jeroen van Rijn 3d13beb3ec Remove now-implemented TODO 2025-04-14 20:09:55 +02:00
Jeroen van Rijn beee27dec0 Allow core:mem/tlsf to automatically add new pools.
New features:
- If TLSF can't service an allocation made on it, and it's initialized with `new_pool_size` > 0, it will ask the backing allocator for additional memory.

- `estimate_pool_size` can tell you what size your initial (and `new_pool_size`) ought to be if you want to make `count` allocations of `size` and `alignment`, or in its other form, how much backing memory is needed for `count` allocations of `type` and its corresponding size and alignment.
2025-04-14 19:49:55 +02:00
Jeroen van Rijn 66d99c1be3 Merge pull request #5036 from Kelimion/tlsf
Refactor `core:mem/tlsf`, add `free_all` support.
2025-04-14 17:30:46 +02:00
Jeroen van Rijn 7088284ff4 Refactor core:mem/tlsf, add free_all support.
TODO: Allow the TLSF allocator to add additional pools when it would ordinarily OOM
      by calling its backing allocator.
2025-04-14 17:13:27 +02:00
Jeroen van Rijn 9516084e58 Merge pull request #5035 from Sojamann/sync_chan-maintainance
core:sync/chan: maintainance and package clarity
2025-04-13 23:13:07 +02:00
Robin Bergewski 1c6958d443 core:sync/chan: maintainance and package clarity
this deprecates all procedures around 'Raw_Queue' for it to
become package private.
2025-04-13 22:56:40 +02:00
Jeroen van Rijn bb38775fb1 Remove Type_Info_Tuple 2025-04-13 21:51:57 +02:00
jason 4998d4ebd0 Fix linux.dirent_name
Was not searching the first possible byte for 0.
2025-04-13 12:05:39 -04:00
Robin Bergewski 4ec93ffe39 fix indent 2025-04-13 16:40:08 +02:00
Robin Bergewski ec71a5afb1 fix missing imports 2025-04-13 16:33:25 +02:00
Robin Bergewski 19eb53c321 changes due to review 2025-04-13 15:34:14 +02:00
Jeroen van Rijn 0e9cd0fb6a Prepare for tlsf.free_all 2025-04-13 15:20:53 +02:00
Robin Bergewski ca72aba9eb core:sync/chan: add package documentation 2025-04-13 15:07:06 +02:00
Laytan Laats 74a66f7794 os2: fix get_executable_path() on FreeBSD including the nil-terminator 2025-04-12 21:33:44 +02:00
Jeroen van Rijn 41d4ddbc5e Add reflect.length + reflect.capacity support for #simd[N]T 2025-04-11 22:44:02 +02:00
Jeroen van Rijn f4ce84dfb4 Add fix to reflect.typeid_elem 2025-04-11 22:24:19 +02:00
gingerBill 1980ad8851 Merge pull request #4998 from dozn/patch-1
[core:time/timezone] Nanoseconds Not Preserved on Calls to `timezone.datetime_to_tz`
2025-04-10 14:01:25 +01:00
gingerBill 8629e5c958 Keep -vet happy 2025-04-10 11:41:05 +01:00
gingerBill 1f814c33dc Support subtargets in build tags: #build darwin:generic and #build linux:android, darwin:ios 2025-04-10 11:36:03 +01:00
gingerBill 145dac5b75 Merge pull request #5016 from Barinzaya/fix-math-nextafter
Fix `math.nextafter` skipping from 0 to 1
2025-04-08 13:13:51 +01:00
Jeroen van Rijn d77b8aeaa1 Merge pull request #5018 from Barinzaya/fix-fmt-bitset-nonzero-enum
Fix printing of `bit_set[Enum]` when `min(Enum) != 0`
2025-04-07 22:01:19 +02:00
Barinzaya 92ac86ae3c Fixed fmt handling of bit_set[Enum] when min(Enum) != 0.
The lower bound of the `bit_set` was only being applied *after*
searching for a matching enum value, so values wouldn't line up if the
minimum value of the enum wasn't 0.
2025-04-07 15:41:21 -04:00
Jeroen van Rijn 716bd479a9 Disallow .Multiline in iterator. 2025-04-07 21:33:57 +02:00
Barinzaya bffa0eaa58 Fixed math.nextafter procs skipping from 0 to 1. 2025-04-07 13:38:10 -04:00
Jeroen van Rijn 2b26c0b39e Remove now unused field. 2025-04-07 15:02:36 +02:00
Jeroen van Rijn a5e513567b Optimize regex match iterator.
Reuse virtual machine and capture groups between matches.
2025-04-07 14:58:41 +02:00
Jeroen van Rijn c13b68f103 Fix os2/process defer error. 2025-04-07 13:33:21 +02:00
Jeroen van Rijn 3287e1b0f0 Fix HXA defer warning 2025-04-07 13:19:00 +02:00
Jeroen van Rijn 9a2b6c01aa Return loop index in regex iterator. 2025-04-06 21:45:37 +02:00