summaryrefslogtreecommitdiff
path: root/ext/stringio/stringio.c
AgeCommit message (Collapse)Author
10 days[ruby/stringio] strio_read: preserve buffer encoding on partialJean byroot Boussier
reads (https://github.com/ruby/stringio/pull/95) [[Bug #20418]](https://bugs.ruby-lang.org/issues/20418) Ruby IO#read preserves the encoding on partial read, but change it when reading the whole IO from commit https://github.com/ruby/ruby/commit/0ca7036682da: > * io.c (read_all): should associate default external encoding. > * io.c (io_read): should NOT associate default external encoding. https://github.com/ruby/stringio/commit/073172da31 Co-authored-by: Jean Boussier <jean.boussier@gmail.com>
2024-03-27[ruby/stringio] Extract `readonly_string_p`Nobuyoshi Nakada
https://github.com/ruby/stringio/commit/0da5b725c8
2024-03-28[ruby/stringio] Adjust styles [ci skip]Nobuyoshi Nakada
https://github.com/ruby/stringio/commit/4e8e82fc30
2024-03-28[ruby/stringio] Eagerly defrost chilled stringsÉtienne Barrié
[Feature #20390] https://github.com/ruby/stringio/commit/17ee957f34 Co-authored-by: Jean Boussier <byroot@ruby-lang.org>
2024-03-15[ruby/stringio] NULL StringIO by `StringIO.new(nil)`Nobuyoshi Nakada
https://github.com/ruby/stringio/commit/779f71359d
2024-03-14[ruby/stringio] [DOC] Add missing documentsNobuyoshi Nakada
https://github.com/ruby/stringio/commit/9cc1dfa19c
2024-03-13[ruby/stringio] Define `StringIO::MAX_LENGTH`Nobuyoshi Nakada
https://github.com/ruby/stringio/commit/0205bd1c86
2024-01-18[ruby/stringio] Fix ascii_only? flag in strio_writetomoya ishida
(https://github.com/ruby/stringio/pull/77) Followup of #79 `rb_str_resize()` was changed by https://github.com/ruby/ruby/commit/b0b9f7201acab05c2a3ad92c3043a1f01df3e17f . ```c rb_str_resize(string, shorter) // clear ENC_CODERANGE in some case rb_str_resize(string, longer) // does not clear ENC_CODERANGE anymore ``` ```c // rb_str_resize in string.c if (slen > len && ENC_CODERANGE(str) != ENC_CODERANGE_7BIT) { ENC_CODERANGE_CLEAR(str); } ``` I think this change is based on an assumption that appending null bytes will not change flag `ascii_only?`. `strio_extend()` will make the string longer if needed, and update the flags correctly for appending null bytes. Before `memmove()`, we need to `rb_str_modify()` because updated flags are not updated for `memmove()`. https://github.com/ruby/stringio/commit/b31a538576
2024-01-16[ruby/stringio] Update the coderange after overwriteNobuyoshi Nakada
Fix https://bugs.ruby-lang.org/issues/20185 https://github.com/ruby/stringio/commit/8230552a46
2023-12-25Revert "Rollback to released version numbers of stringio and strscan"Hiroshi SHIBATA
This reverts commit 6a79e53823e328281b9e9eee53cd141af28f8548.
2023-12-16Rollback to released version numbers of stringio and strscanHiroshi SHIBATA
2023-11-28[ruby/stringio] Development of 3.1.1 started.Sutou Kouhei
https://github.com/ruby/stringio/commit/75da93d48f
2023-11-08[ruby/stringio] Development of 3.1.0 started.Sutou Kouhei
https://github.com/ruby/stringio/commit/a2f8ef1a6a
2023-11-08[ruby/stringio] Add missing row separator encoding conversionSutou Kouhei
(https://github.com/ruby/stringio/pull/69) The conversion logic is borrowed from ruby/ruby's io.c: https://github.com/ruby/ruby/blob/40391faeab608665da87a05c686c074f91a5a206/io.c#L4059-L4079 Fix ruby/stringio#68 Reported by IWAMOTO Kouichi. Thanks!!! https://github.com/ruby/stringio/commit/4b170c1a68
2023-11-04[ruby/stringio] Make STRINGIO_VERSION uniformNobuyoshi Nakada
https://github.com/ruby/stringio/commit/4400bf3380
2023-10-05[ruby/stringio] StringIO#pread: handle 0 length like IO#preadJean byroot Boussier
(https://github.com/ruby/stringio/pull/67) Fix: https://github.com/ruby/stringio/issues/66 If length is 0, IO#pread don't even try to read the IO, it simply return the buffer untouched if there is one or a new empty buffer otherwise. It also doesn't validate the offset when length is 0. cc @jdelStrother @kou https://github.com/ruby/stringio/commit/37e9279337 Co-authored-by: Jean Boussier <jean.boussier@gmail.com>
2023-09-22[ruby/stringio] [DOC] Fix linkBurdette Lamar
(https://github.com/ruby/stringio/pull/65) https://github.com/ruby/stringio/commit/e3ea087d04
2023-08-29Development of 3.0.9 started.Sutou Kouhei
2023-08-02Implement StringIO#pread (#56)Jean byroot Boussier
Both for being closer to real IOs and also because it's a convenient API in multithreaded scenarios. Co-authored-by: Jean Boussier <jean.boussier@gmail.com>
2023-06-02[ruby/stringio] Development of 3.0.8 started.Hiroshi SHIBATA
https://github.com/ruby/stringio/commit/1587d3698e
2023-06-01[ruby/stringio] Avoid direct struct usage.Samuel Williams
(https://github.com/ruby/stringio/pull/54) We will eventually want to refactor this, but for now this is compatible enough.
2023-06-01Revert "Hide most of the implementation of `struct rb_io`. (#6511)"NARUSE, Yui
This reverts commit 18e55fc1e1ec20e8f3166e3059e76c885fc9f8f2. fix [Bug #19704] https://bugs.ruby-lang.org/issues/19704 This breaks compatibility for extension libraries. Such changes need a discussion.
2023-05-30Hide most of the implementation of `struct rb_io`. (#6511)Samuel Williams
* Add rb_io_path and rb_io_open_descriptor. * Use rb_io_open_descriptor to create PTY objects * Rename FMODE_PREP -> FMODE_EXTERNAL and expose it FMODE_PREP I believe refers to the concept of a "pre-prepared" file, but FMODE_EXTERNAL is clearer about what the file descriptor represents and aligns with language in the IO::Buffer module. * Ensure that rb_io_open_descriptor closes the FD if it fails If FMODE_EXTERNAL is not set, then it's guaranteed that Ruby will be responsible for closing your file, eventually, if you pass it to rb_io_open_descriptor, even if it raises an exception. * Rename IS_EXTERNAL_FD -> RUBY_IO_EXTERNAL_P * Expose `rb_io_closed_p`. * Add `rb_io_mode` to get IO mode. --------- Co-authored-by: KJ Tsanaktsidis <ktsanaktsidis@zendesk.com> Notes: Merged-By: ioquatix <samuel@codeotaku.com>
2023-05-08[ruby/stringio] Drop support for ruby 2.6 or earlierNobuyoshi Nakada
(https://github.com/ruby/stringio/pull/47) `rb_io_extract_modeenc` has been exported since ruby 2.7.
2023-05-03[ruby/stringio] Update write-barrier at copyingNobuyoshi Nakada
http://ci.rvm.jp/results/trunk-asserts@ruby-sp2-docker/4552803 ``` verify_internal_consistency_reachable_i: WB miss (O->Y) 0x00007f752ddd5550 [3LM ] strio (StringIO)strio -> 0x00007f752d19b7d0 [0 ] T_STRING (String) len: 8, capa: 15 "to_strio" <internal:/tmp/ruby/src/trunk-asserts/lib/rubygems/core_ext/kernel_require.rb>:53: [BUG] gc_verify_internal_consistency: found internal inconsistency. ``` https://github.com/ruby/stringio/commit/2e8ab43cba
2023-04-14[ruby/stringio] Development of 3.0.7 started.Sutou Kouhei
https://github.com/ruby/stringio/commit/5d39880f70
2023-02-28[ruby/stringio] Implement write barrier on StringIOJean Boussier
It only has a single reference set in 3 places which makes it fairly easy to implement. https://github.com/ruby/stringio/commit/009896b973
2023-02-25[ruby/stringio] Remove (newly unneeded) remarks about aliasesBurdetteLamar
https://github.com/ruby/stringio/commit/60bb320477
2023-02-03[ruby/stringio] Development of 3.0.6 started.Nobuyoshi Nakada
https://github.com/ruby/stringio/commit/a7561f447b
2023-02-02[ruby/stringio] Revert "bump up to 3.0.6" [ci skip]Nobuyoshi Nakada
This reverts commit https://github.com/ruby/stringio/commit/325933500b35. It is bumped to 3.0.5 in advance but not released yet. https://github.com/ruby/stringio/commit/af67c36693
2023-02-02[ruby/stringio] bump up to 3.0.6Nobuyoshi Nakada
https://github.com/ruby/stringio/commit/325933500b
2023-01-28[ruby/stringio] [Bug #19389] Fix chomping with longer separatorNobuyoshi Nakada
https://github.com/ruby/stringio/commit/eb322a9716
2022-12-26bump up to 3.0.5Sutou Kouhei
Notes: Merged: https://github.com/ruby/ruby/pull/7025
2022-12-09Merge stringio-3.0.4Hiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/6890
2022-12-08[ruby/stringio] bump up to 3.0.5Sutou Kouhei
https://github.com/ruby/stringio/commit/e62b9d78d3
2022-12-08[ruby/stringio] bump up to 3.0.4Sutou Kouhei
https://github.com/ruby/stringio/commit/5ba853d6ff
2022-12-05[ruby/stringio] Revert "Bump version to 3.0.4"Hiroshi SHIBATA
This reverts commit https://github.com/ruby/stringio/commit/aeb7e1a0bde6. https://github.com/ruby/stringio/commit/003dd0d003
2022-12-05[ruby/stringio] Bump version to 3.0.4Hiroshi SHIBATA
https://github.com/ruby/stringio/commit/aeb7e1a0bd
2022-10-21[ruby/stringio] [DOC] Enhanced RDoc for StringIOBurdette Lamar
(https://github.com/ruby/stringio/pull/36) Treats: - #each_codepoint - #gets - #readline (shows up in doc for module IO::generic_readable, not class StringIO) - #each_line https://github.com/ruby/stringio/commit/659aca7fe5
2022-10-19[ruby/stringio] [DOC] Enhanced RDoc for StringIOBurdette Lamar
(https://github.com/ruby/stringio/pull/35) Treated: - #getc - #getbyte - #ungetc - #ungetbyte - #readchar - #readbyte - #each_char https://github.com/ruby/stringio/commit/6400af8d9f
2022-10-19[ruby/stringio] [DOC] StringIO doc enhancementsBurdette Lamar
(https://github.com/ruby/stringio/pull/33) Treated: - ::new - ::open - #string - #string= - #close - #close_read - #close_write - #closed? - #closed_read? - #closed_write? - #eof? https://github.com/ruby/stringio/commit/be9b64d739
2022-10-19[DOC] Fix rdoc-refNobuyoshi Nakada
2022-10-18[DOC] Enhanced RDoc for StringIO (#34)Burdette Lamar
Treated: - #lineno - #lineno= - #binmode - #reopen - #pos - #pos= - #rewind - #seek - #sync - #each_byte
2022-07-01[ruby/stringio] Fix the result of `StringIO#truncate` so compatible with `File`Nobuyoshi Nakada
https://github.com/ruby/stringio/commit/16847fea32
2022-05-30[ruby/stringio] Fix extracting encoding names in the fallback codeNobuyoshi Nakada
https://github.com/ruby/stringio/commit/0fe2e0c1e5
2022-05-30[ruby/stringio] Accept external and internal encodings pairNobuyoshi Nakada
Fix https://github.com/ruby/stringio/pull/16 https://github.com/ruby/stringio/commit/c8a69e80d2
2022-05-30[ruby/stringio] Fix handling of chomp with paragraph separatorJeremy Evans
Try to mirror IO behavior, where chomp takes out the entire paragraph separators between entries, but does not chomp a single line separator at the end of the string. Partially Fixes [Bug #18768] https://github.com/ruby/stringio/commit/a83ddbb7f0
2022-05-30[ruby/stringio] Update ext/stringio/stringio.cJeremy Evans
https://github.com/ruby/stringio/commit/1edc88587e Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
2022-05-30[ruby/stringio] Ignore chomp keyword for nil separatorJeremy Evans
nil separator means no separator at all, so nothing should be chomped. Partial fix for Ruby [Bug #18770] https://github.com/ruby/stringio/commit/feaa2ec631
2022-05-30[ruby/stringio] Fix each with multiple character string and chompJeremy Evans
Previously, this could result in an infinite loop. Always update the e pointer in this case, setting w when chomping so the chomped data is not included in the output. Fixes [Bug #18769] https://github.com/ruby/stringio/commit/4bf64d5130