Commit Graph
100 Commits
Author SHA1 Message Date
FeoramundandLaytan 7fa2e56cd9 Add io tests for bufio streams 2024-08-28 19:53:20 +02:00
FeoramundandLaytan 24a53c246f Make sure seek succeeds in io.Limited_Reader test setup 2024-08-28 19:53:20 +02:00
FeoramundandLaytan b11fa90ed2 Test empty slice usage in io procs 2024-08-28 19:53:20 +02:00
FeoramundandLaytan f453054aff Return 0, nil in all io cases where an empty slice is provided 2024-08-28 19:53:20 +02:00
FeoramundandLaytan 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
FeoramundandLaytan 1cd5cbb0e4 Test io unexpected pointer movement 2024-08-28 19:53:20 +02:00
FeoramundandLaytan 56f232e5fc Report invalid whence & offset on os2 Windows 2024-08-28 19:53:20 +02:00
FeoramundandLaytan de1432b315 Fix Windows infinite recursion with os2._flush 2024-08-28 19:53:20 +02:00
FeoramundandLaytan 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
FeoramundandLaytan 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
FeoramundandLaytan 6798d15ecb Check int(abs) instead to avoid overflows 2024-08-28 19:53:20 +02:00
FeoramundandLaytan 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
FeoramundandLaytan 0243647e15 Add missing flush functionality to os platforms
Platforms:
- FreeBSD
- Haiku
- Linux
- NetBSD
- OpenBSD
2024-08-28 19:53:20 +02:00
FeoramundandLaytan 3ec4db212b Report Invalid_Whence in os2 Linux seek 2024-08-28 19:53:20 +02:00
FeoramundandLaytan 7683c1f4bb Report Invalid_Whence in os2 POSIX seek 2024-08-28 19:53:20 +02:00
FeoramundandLaytan ef2cd9d97f Copy missing errors in os2._get_platform_error from posix to linux 2024-08-28 19:53:20 +02:00
FeoramundandLaytan 5b9e9fb822 Add test suite for core:io 2024-08-28 19:53:20 +02:00
FeoramundandLaytan 741ccd7ff5 Zero n on error in _file_stream_proc 2024-08-28 19:53:20 +02:00
FeoramundandLaytan eb92a2df71 Fix indentation 2024-08-28 19:53:20 +02:00
FeoramundandLaytan d60f404bb4 Fix OpenBSD implementations of read_at and write_at 2024-08-28 19:53:20 +02:00
FeoramundandLaytan 6c4806835c Fix indentation 2024-08-28 19:53:20 +02:00
FeoramundandLaytan e1555e04ad Fix Haiku implementations of read_at and write_at 2024-08-28 19:53:20 +02:00
FeoramundandLaytan 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
FeoramundandLaytan 861d892ffe Make Windows pread and pwrite conform to POSIX 2024-08-28 19:53:20 +02:00
FeoramundandLaytan 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
FeoramundandLaytan 1ced76cdd1 Fix broken cases of Seek usage in _file_stream_proc
Handles `EINVAL`, among other fixes.
2024-08-28 19:53:20 +02:00
FeoramundandLaytan e83b982afe Measure bytes.Buffer size by length instead of capacity 2024-08-28 19:53:20 +02:00
FeoramundandLaytan 7c6cc81041 Add Seek behavior to bytes.Buffer 2024-08-28 19:53:20 +02:00
FeoramundandLaytan 521e47ffee Don't invalidate prev_rune if Reader seek failed 2024-08-28 19:53:20 +02:00
FeoramundandLaytan 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
FeoramundandLaytan 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
FeoramundandLaytan 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
FeoramundandLaytan 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
Feoramund cd8272557f Test that a RegEx Capture pos corresponds to its groups 2024-08-04 18:33:36 -04:00
Feoramund 6252712363 Add missing features to regex package documentation 2024-08-04 13:21:13 -04:00
Feoramund 90f1f7fbdf Use unaligned_store in regex too 2024-07-24 16:48:49 -04:00
Feoramund ff492e615c Use unaligned_load for regex virtual machine
This should hopefully avoid any issues with loading operands greater
than 8 bits on alignment-sensitive platforms.
2024-07-24 16:27:20 -04:00
Feoramund 042f6de478 Remove printing facilities for Regular_Expression
The `original_pattern` introduced a tenuous dependency to the expression
value as a whole, and after some consideration, I decided that it would
be better for the developer to manage their own pattern strings.

In the event you need to print the text representation of a pattern,
it's usually better that you manage the memory of it as well.
2024-07-24 16:27:20 -04:00
Feoramund c52a8a5f86 Allow configuring of MAX_CAPTURE_GROUPS for n > 10 2024-07-24 16:27:08 -04:00
Feoramund 16b644ad79 Use slice.zero instead 2024-07-24 15:23:20 -04:00
Feoramund e8537a3134 Add test cases for unclosed classes and repetition
Simplified error checking while I was at it, too.
2024-07-24 15:21:41 -04:00
Feoramund e642be8550 Fix handling of unclosed regex classes and repetitions 2024-07-24 15:17:37 -04:00