Feoramund
2f1228baa0
Add tests for Bit_Array
2024-09-03 17:23:42 -04:00
Feoramund
c3bd94a27e
Change Bit_Array.max_index to length
...
This will allow correct iteration of empty `bit_array`s.
2024-09-03 16:56:02 -04:00
Feoramund
d86e56089a
Fix iteration of biased Bit_Array
2024-09-03 15:34:38 -04:00
Feoramund
b8f8cb9582
Add bit_array.shrink
2024-09-03 13:33:15 -04:00
Feoramund
001b2b9d8f
Let bit_array.create make zero-length arrays
2024-09-03 13:33:11 -04:00
Feoramund
806c87d71d
Check for zero-length slices in slice.equal
2024-09-03 02:48:26 -04:00
Feoramund
309953e0f2
Return false if Small_Array can't append multiple elements
...
Fixes #4177
2024-09-03 01:14:17 -04:00
Feoramund
f6f2c67f37
Add time.time_to_datetime
2024-09-03 00:55:09 -04:00
Feoramund
9871ad5fc8
Remove extra format item at end of context error message
2024-09-01 17:50:50 -04:00
Feoramund and Laytan
7fa2e56cd9
Add io tests for bufio streams
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
24a53c246f
Make sure seek succeeds in io.Limited_Reader test setup
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
b11fa90ed2
Test empty slice usage in io procs
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
f453054aff
Return 0, nil in all io cases where an empty slice is provided
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
ef99373c31
Fix pread and pwrite on os2 Windows
...
The previous code was jumping ahead by the specified offset, instead of
getting the current offset.
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
1cd5cbb0e4
Test io unexpected pointer movement
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
56f232e5fc
Report invalid whence & offset on os2 Windows
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
de1432b315
Fix Windows infinite recursion with os2._flush
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
e7d6e2d163
Add documentation to os2.close
...
Make it explicit that using a stream after closing is like a
use-after-free bug.
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
8b40be50b9
Update core:io tests
...
- Relax return value requirements on errors. Only the error is checked,
as there are multiple conflicting return styles throughout the `os`
API.
Some return the error along with `0`, `-1`, or another value. This can
be smoothed out later.
- Test `os2` files now.
- No longer test streams after closing; this is considered similar to a
use-after-free in `os2`.
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
6798d15ecb
Check int(abs) instead to avoid overflows
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
6aedb2695a
Report Invalid_Whence on some os platforms
...
- Move `Seek`-related checks into OS-specific files for granularity.
Platforms:
- Darwin
- FreeBSD
- Haiku
- Linux
- NetBSD
- OpenBSD
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
0243647e15
Add missing flush functionality to os platforms
...
Platforms:
- FreeBSD
- Haiku
- Linux
- NetBSD
- OpenBSD
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
3ec4db212b
Report Invalid_Whence in os2 Linux seek
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
7683c1f4bb
Report Invalid_Whence in os2 POSIX seek
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
ef2cd9d97f
Copy missing errors in os2._get_platform_error from posix to linux
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
5b9e9fb822
Add test suite for core:io
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
741ccd7ff5
Zero n on error in _file_stream_proc
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
eb92a2df71
Fix indentation
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
d60f404bb4
Fix OpenBSD implementations of read_at and write_at
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
6c4806835c
Fix indentation
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
e1555e04ad
Fix Haiku implementations of read_at and write_at
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
7061032db6
Fix NetBSD implementations of read_at and write_at
...
These procedures must not modify the underlying file pointer.
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
861d892ffe
Make Windows pread and pwrite conform to POSIX
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
5c8c63ae04
Fix FreeBSD implementations of read_at and write_at
...
These procedures must not modify the underlying file pointer.
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
1ced76cdd1
Fix broken cases of Seek usage in _file_stream_proc
...
Handles `EINVAL`, among other fixes.
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
e83b982afe
Measure bytes.Buffer size by length instead of capacity
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
7c6cc81041
Add Seek behavior to bytes.Buffer
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
521e47ffee
Don't invalidate prev_rune if Reader seek failed
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
8251f4d7d0
Return .EOF in bytes.buffer_read_at instead
...
This is consistent with the other stream `read` procs
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
da49f7eb4e
Make bytes.reader_init return an io.Stream
...
Makes the API like the other stream `init` procs.
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
d66486c17e
Make io.Section_Reader set base too
...
This should fix seeking from `.Start`, getting the `size`, and
`read_at`.
Also make the API consistent with the other `*_init` procs in
`util.odin` by returning the `io.Reader`.
2024-08-28 19:53:20 +02:00
Feoramund and Laytan
981a2e1a00
Add missing io.Stream_Mode responses
2024-08-28 19:53:19 +02:00
Feoramund
1f04f541cf
Fix -vet and -strict-style failures in tests
2024-08-26 16:20:08 -04:00
Feoramund
d43c6e39f6
Fix #4151
...
The `core:mem` procs were calling the wrong `runtime` procs for their
number of arguments.
2024-08-26 13:23:04 -04:00
Feoramund
9fac03b84c
Fix use-after-free in thread.Pool
2024-08-26 06:39:05 -04:00
Feoramund
49606ec3ea
Use thread_local_cleaner API in os2
2024-08-26 06:01:59 -04:00
Feoramund
d338642dc4
Add API for freeing thread_local state
2024-08-26 06:01:59 -04:00
Feoramund
95d1c29c2a
Free the arenas allocated in test_core_runtime
...
Found by using `-sanitize:address`.
2024-08-26 05:45:24 -04:00
Feoramund
c424c94030
Fix inline transmutation of [16]i8 to i128
...
Forbids LLVM from generating SSE aligned loads on unaligned data.
2024-08-26 04:48:31 -04:00
Feoramund
0fa24ac3c4
Remove deprecated log procs from core:testing
2024-08-18 21:30:32 -04:00
Feoramund
b49b80bdf9
Add test for count_digits_of_base
2024-08-18 20:14:14 -04:00
Feoramund
2906f2aa7e
Add core:math.count_digits_of_base
2024-08-18 20:14:14 -04:00
Feoramund
a07878be71
Check if file open-mode is O_CREATE on Darwin before forcing chmod
...
Fixes #4087
2024-08-16 14:08:55 -04:00
Feoramund
3a32250b80
Add .gitignore for tests directory
2024-08-12 15:16:52 -04:00
Feoramund
0af025d056
Add explicit copyright info to core:testing
2024-08-12 14:16:22 -04:00
Feoramund
f42a22369e
Fix wrong define name in test runner log messages
2024-08-11 23:01:28 -04:00
Feoramund
675add4d90
Optionally treat memory failures as errors in the test runner
...
Enable with `-define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true`.
2024-08-11 22:59:20 -04:00
Feoramund
cf8f6afeff
Use intrinsics.reverse_bits in core:compress/zlib
2024-08-10 15:29:44 -04:00
Feoramund
afbdc78f85
Fix .gitignore
...
- Remove all-encompassing `benchmark`
- Add exception for `core:simd/x86`
2024-08-10 15:16:12 -04:00
Feoramund
4f816aabb3
Use SIMD_SCAN_WIDTH constant in core:bytes test
2024-08-10 13:54:12 -04:00
Feoramund
9d2b4b2f03
Simplify core:bytes test
2024-08-10 08:13:22 -04:00
Feoramund
5d5addd48f
Set SIMD_SCAN_WIDTH based on size_of(uintptr)
2024-08-10 07:43:14 -04:00
Feoramund
c69fa87d53
Merge core:simd/util into core:bytes
2024-08-10 07:17:03 -04:00
Feoramund
e7e7fe766a
Add test for misaligned data to core:simd/util suite
2024-08-09 18:54:04 -04:00
Feoramund
0d29cc3375
Use for x in y construct for bytes iteration
...
This cannot be applied to the `strings` version, as that would cause a
rune-by-rune iteration, not a byte-by-byte one.
2024-08-09 18:54:04 -04:00
Feoramund
c8a62ee4ec
Make simd_util index procs contextless where applicable
2024-08-09 18:54:04 -04:00
Feoramund
12dd0cb72a
Simplify and make simd_util cross-platform
...
This new algorithm uses a Scalar->Vector->Scalar iteration loop which
requires no masking off of any incomplete data chunks.
Also, the width was reduced to 32 bytes instead of 64, as I found this
to be about as fast as the previous 64-byte x86 version.
2024-08-09 18:54:04 -04:00
Feoramund
793811b219
Add simd_util to examples/all
2024-08-06 15:19:05 -04:00
Feoramund
0418d27bdf
Add benchmarks for vectorized index_* procs
2024-08-06 15:19:05 -04:00
Feoramund
28c98c2e7a
Add tests for vectorized index_* procs
2024-08-06 15:19:05 -04:00
Feoramund
f66fcd9acb
Use vectorized index_* procs in core
2024-08-06 15:19:05 -04:00
Feoramund
8deeb40e5d
Add vectorized index_byte and last_index_byte
2024-08-06 15:19:01 -04:00
Feoramund
e27a424f4d
Swap reduce_any and reduce_all
...
`llvm.vector.reduce.or` will return true if any lane is true.
`llvm.vector.reduce.and` will return true if all lanes are true.
2024-08-06 14:50:34 -04:00
Feoramund
7a367c9c08
Fix documented names of a few SIMD procedures
2024-08-06 14:49:56 -04:00
Feoramund
4c0ab09c9a
Handle EPIPE in Darwin core:net
2024-08-05 13:15:08 -04:00
Feoramund
6cc7f3b451
Add FreeBSD Accept_Error.Would_Block alias
2024-08-05 13:00:44 -04:00
Feoramund
3512d7c672
Move Darwin MSG_NOSIGNAL to core:os
2024-08-05 12:49:12 -04:00
Feoramund
eba0774bf3
Prevent SIGPIPE on Darwin when writing to a closed core:net socket
...
Mimics behavior found on Linux implementation.
2024-08-05 12:23:09 -04:00
Feoramund
d0d4f19097
Remove debug line from test
2024-08-05 03:50:41 -04:00
Feoramund
8f5b838a07
Review manual for loops in core:text/regex
2024-08-05 03:49:29 -04:00
Feoramund
ba0581ae79
Give FreeBSD access to core:net in core:flags
2024-08-05 03:05:50 -04:00
Feoramund
d9404d928c
Add copyright info to core:sys/freebsd
2024-08-05 03:05:50 -04:00
Feoramund
fe754af13d
Add new contribution notes to core:net
2024-08-05 03:05:49 -04:00
Feoramund
61e770d943
Clean up some FreeBSD core:net code
2024-08-05 03:05:43 -04:00
Feoramund
2b63684ccf
Fix integer socket option values for FreeBSD
2024-08-05 02:14:41 -04:00
Feoramund
5ece6980eb
Make EINVAL generic in FreeBSD Socket_Option_Error
...
The documentation for `setsockopt(2)` mentioned accept filters for
`EINVAL`, but I've found that it can arise for any manner of invalid
values for setting socket options.
We'll just have to leave this as a generic error.
2024-08-05 02:14:27 -04:00
Feoramund
42a2297d31
Add core:net tests specifically for FreeBSD
2024-08-05 02:08:48 -04:00
Feoramund
8de48d81ea
Use common name for ENOBUFS
2024-08-05 00:30:39 -04:00
Feoramund
32fb1fb61c
Add missing ECONNRESET TCP_Send_Error
...
This was not specifically documented in `send(2)`.
2024-08-05 00:30:39 -04:00
Feoramund
05c50561ae
Set NOSIGPIPE on all core:net FreeBSD sockets
2024-08-05 00:30:39 -04:00
Feoramund
46455dd0a6
Add more socket options for FreeBSD core:net
2024-08-05 00:30:24 -04:00
Feoramund
3f9ddfe029
Clarify what umtx is
2024-08-04 22:24:55 -04:00
Feoramund
14858309f0
Add explicit license info to core:text/regex
2024-08-04 19:18:16 -04:00
Feoramund
e17fc8272b
Document rationale behind RegEx shorthand classes
2024-08-04 19:12:46 -04:00
Feoramund
dde42f0ebc
Add more documentation for core:text/regex API
2024-08-04 18:56:29 -04:00
Feoramund
ca7e46d56f
Add explicit test case for Capture pos
2024-08-04 18:56:29 -04:00
Feoramund
743480b1a4
Use regex.destroy for test captures
2024-08-04 18:56:29 -04:00
Feoramund
1ccb0b2558
Remove unused code
2024-08-04 18:56:29 -04:00
Feoramund
babdc432e9
Move Flag_To_Letter to core:text/regex/common
2024-08-04 18:56:25 -04:00
Feoramund
d3a51e208d
Hide Regular_Expression values
...
We don't directly support printing these.
To prevent future issues being raised about the pattern being missing if
someone tries to print one, hide everything.
2024-08-04 18:40:27 -04:00