Граф коммитов

56 Коммитов

Автор SHA1 Сообщение Дата
Samuel Williams 648870b5c5
Support `IO#pread` / `IO#pwrite` using fiber scheduler. (#7594)
* Skip test if non-blocking file IO is not supported.
2023-03-31 00:48:55 +13:00
Samuel Williams 466aa8010f
Fix incorrect usage of `rb_fiber_scheduler_io_(p)(read|write)`. (#7593) 2023-03-25 18:36:27 +13:00
Kasumi Hanazuki 09295ea796
IO::Buffer#resize: Free internal buffer if new size is zero (#7569)
`#resize(0)` on an IO::Buffer with internal buffer allocated will
result in calling `realloc(data->base, 0)`. The behavior of `realloc`
with size = 0 is implementation-defined (glibc frees the object
and returns NULL, while BSDs return an inaccessible object). And
thus such usage is deprecated in standard C (upcoming C23 will make it
UB).

To avoid this problem, just `free`s the memory when the new size is zero.
2023-03-25 12:12:23 +13:00
John Bampton 2f7270c681
Fix spelling (#7389) 2023-02-27 09:56:06 -08:00
Nobuyoshi Nakada ef00c6da88
Adjust `else` style to be consistent in each files [ci skip] 2023-02-26 13:20:43 +09:00
Samuel Williams d0031db9b3
Prefer RB_NUM2LONG for string length. (#7379) 2023-02-25 23:04:10 +13:00
Samuel Williams 57bc3f2f46
Add `IO::Buffer.string` for efficient string creation. (#7364) 2023-02-25 18:40:26 +13:00
Nobuyoshi Nakada 3b567eb491
[Bug #19459] Remove unnecessary always-true checks (#7362)
`length` is a required argument for `IO::Buffer#read` and
`IO::Buffer#write` methods, and `argc` is already checked with
`rb_check_arity`.  Also fix the call-seq of `IO::Buffer#read`.
2023-02-23 18:40:13 +13:00
Victor Shepelev c3c116f6a6
[DOC] Document new methods of IO::Buffer and Fiber::Scheduler (#7016)
Co-authored-by: Samuel Williams <samuel.williams@oriontransfer.co.nz>
2022-12-24 11:48:58 +13:00
Samuel Williams 11ad9a42d7
Fix missing handling of offset argument in `IO::Buffer` `pread` and `pwrite`. (#7012) 2022-12-24 07:52:10 +13:00
Nobuyoshi Nakada f28e79caaa
Use consistent style [ci skip] 2022-12-02 23:46:21 +09:00
Yudai Takada 29e6d97517
Fix typos (#6775)
* s/Innteger/Integer/

* s/diretory/directory/

* s/Bufer/Buffer/

* s/defalt/default/

* s/covearge/coverage/
2022-11-20 21:07:18 -08:00
S-H-GAMELINKS 1f4f6c9832 Using UNDEF_P macro 2022-11-16 18:58:33 +09:00
Yusuke Nakamura 5344618cb7 [DOC] Fix IO::Buffer#slice rdoc position
Before this change, rdoc shows empty in 'slice' method section
2022-11-03 14:40:17 -04:00
Nobuyoshi Nakada 287eac5e8e Fix format specifiers for `size_t` 2022-10-26 18:57:26 +09:00
Samuel Williams fc3137ef54
Add support for anonymous shared IO buffers. (#6580) 2022-10-19 18:53:38 +13:00
Samuel Williams ced1d17280
Improvements to IO::Buffer implementation and documentation. (#6525) 2022-10-12 12:59:05 +13:00
Samuel Williams 411d0eec11
Update `IO::Buffer` read/write to use rb_thread_io_blocking_region. (#6438) 2022-09-26 19:37:28 +13:00
Samuel Williams 025b8701c0
Add several new methods for getting and setting buffer contents. (#6434) 2022-09-26 18:06:12 +13:00
Nobuyoshi Nakada e2ccb316b4 [Bug #5317] Use `rb_off_t` instead of `off_t`
Get rid of the conflict with system-provided small `off_t`.
2022-09-08 23:01:07 +09:00
Nobuyoshi Nakada f42230ff22
Adjust styles [ci skip] 2022-07-27 18:42:27 +09:00
Nobuyoshi Nakada 8b9d4b2ce6
Append semicolons [ci skip] 2022-07-27 18:25:29 +09:00
Nobuyoshi Nakada 852ac26e83
Make indents and newlines consistent [ci skip] 2022-07-27 17:45:21 +09:00
Shannon Skipper 2b4a1ad584 Fix a variable name typo in the docs 2022-06-25 11:29:08 +12:00
Nobuyoshi Nakada b180ffa622
Fix warnings by old gcc
* Use PRIxSIZE instead of "z"
* Fix sign-compare warning
* Suppress unused-but-set-variable warning
2022-06-23 22:52:45 +09:00
Samuel Williams cea34bd808
Add basic binary operators (and, or, xor, not) to `IO::Buffer`. (#5893) 2022-05-09 17:19:01 +12:00
Kazuhiro NISHIYAMA dc9a13abee
Fix rdoc of IO::Buffer [ci skip] 2022-05-09 09:09:29 +09:00
Samuel Williams ef525b012a
Explicit handling of frozen strings in `IO::Buffer#for`. (#5892) 2022-05-09 11:03:04 +12:00
Yuta Saito ae51f304d2 io_buffer.c: use mremap based resizing only when mremap available
some libc implementations (e.g. wasi-libc) define MREMAP_MAYMOVE, but
don't have mremap itself, so guard the use of mremap by HAVE_MREMAP
2022-01-07 02:13:19 +09:00
Samuel Williams 03d97cc966
Remove UTF-8 from documentation. 2022-01-02 21:47:50 +13:00
Victor Shepelev e7c2d5cc02
[DOC] Adjust IO::Buffer docs (#5374) 2022-01-02 21:43:01 +13:00
Kazuhiro NISHIYAMA 04f07713d1
Fix typos [ci skip] 2021-12-25 10:33:49 +09:00
Samuel Williams bed920f073
Add fiber scheduler hooks for `pread`/`pwrite`, and add support to `IO::Buffer`. 2021-12-23 12:20:09 +13:00
Samuel Williams e30920354f
Extended interface for IO::Buffer & documentation. 2021-12-22 10:57:34 +13:00
Samuel Williams 617687df09 Rename IMMUTABLE to READONLY. 2021-12-21 12:25:42 +13:00
Samuel Williams 9fbf94ff04 Improve interface for get/set/copy. 2021-12-21 12:25:42 +13:00
Samuel Williams 2de5dc539b Fix handling of clear with offset and without length. 2021-12-21 12:25:42 +13:00
Samuel Williams c86bcd434d Mark non-private mapped files as external. 2021-12-21 12:25:42 +13:00
Samuel Williams da46b8d8e5 Default `IO::Buffer#get_string` to use BINARY encoding. 2021-12-21 12:25:42 +13:00
Samuel Williams 71bbc40ffa Rename `to_str` -> `get_string` and add support for encodings. 2021-12-21 12:25:42 +13:00
Samuel Williams 49166fc74a Improved exception usage/classes. 2021-12-21 12:25:42 +13:00
Samuel Williams 71bf5cef75 Fix handling of frozens strings. 2021-12-21 12:25:42 +13:00
Samuel Williams 9de5c4ec76 Fix mapping invalid non-file object. 2021-12-21 12:25:42 +13:00
Samuel Williams 56811617ab Improve IO::Buffer resize and introduce ownership transfer. 2021-12-20 00:17:17 +13:00
Samuel Williams f3e30b26c5 Default size for IO::Buffer. 2021-12-19 12:25:38 +13:00
Samuel Williams 235f523a88 Fix spelling of DECLAIR_TYPE. 2021-12-19 00:19:55 +13:00
Nobuyoshi Nakada d2cb4cc073
Adjust format 2021-11-21 16:16:03 +09:00
Samuel Williams 5190926e40 Validate string type when constructing IO::Buffer for string mapping. 2021-11-17 10:39:54 +13:00
Samuel Williams a19a657514 Fix 32-bit conversions in IO::Buffer implementation. 2021-11-17 10:39:41 +13:00
Samuel Williams c833ece5f7 Rework implementation of `IO::Buffer.for(string)` to use string locking. 2021-11-12 16:46:08 +13:00