253 Commits
Author SHA1 Message Date
Hiroshi SHIBATA 573c182128 Lock released version of stringio-3.1.2 2024-12-13 10:05:55 +09:00
Nobuyoshi Nakadaandgit 348a534153 [ruby/stringio] Copy from the relocated string
When ungetting the string same as the same buffer string, extending
the buffer can move the pointer in the argument.  Reported by manun
Manu (manun) at https://hackerone.com/reports/2805165.

https://github.com/ruby/stringio/commit/95c1194832
2024-11-05 05:01:03 +00:00
Nobuyoshi Nakadaandgit 484ea00d2e [ruby/stringio] An empty string should be converted to empty in any encoding
https://github.com/ruby/stringio/commit/ef03f9368d
2024-10-26 13:20:34 +00:00
Nobuyoshi Nakadaandgit f513863c81 [ruby/stringio] Unreachable after an invalid argument exception
https://github.com/ruby/stringio/commit/a2aab4721c
2024-10-26 12:55:45 +00:00
Nobuyoshi Nakadaandgit 393c5df008 [ruby/stringio] Remove SafeStringValue
In Ruby 2.7 and later, it is the same as `StringValue`.

https://github.com/ruby/stringio/commit/561ea67ea8
2024-10-26 12:55:45 +00:00
Hiroshi SHIBATA 32f134bb85 Added pre-release suffix for development version of default gems
https://github.com/ruby/stringio/issues/81
2024-08-31 14:22:17 +09:00
Sutou Kouheiandgit 205da89680 [ruby/stringio] Development of 3.1.2 started.
https://github.com/ruby/stringio/commit/9ad5551160
2024-06-13 09:48:38 +00:00
Jean Boussierandgit 15501e13d7 [ruby/stringio] Remove special handling of chilled strings
[Feature #20205]

Followup: https://github.com/ruby/stringio/pull/94

They no longer need to be special cases. If StringIO end up
mutating a chilled string, a warning will be emitted.

https://github.com/ruby/stringio/commit/dc62d65449
2024-05-30 15:11:48 +00:00
75154dec73 [ruby/stringio] strio_read: preserve buffer encoding on partial
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 <[email protected]>
2024-04-17 01:29:18 +00:00
Nobuyoshi Nakadaandgit 51e6becd39 [ruby/stringio] Extract readonly_string_p
https://github.com/ruby/stringio/commit/0da5b725c8
2024-03-27 17:41:38 +00:00
Nobuyoshi Nakada 06563d78a1 [ruby/stringio] Adjust styles [ci skip]
https://github.com/ruby/stringio/commit/4e8e82fc30
2024-03-28 02:27:20 +09:00
0f5ab4ad52 [ruby/stringio] Eagerly defrost chilled strings
[Feature #20390]

https://github.com/ruby/stringio/commit/17ee957f34

Co-authored-by: Jean Boussier <[email protected]>
2024-03-28 02:27:19 +09:00
Nobuyoshi Nakadaandgit a1ced60692 [ruby/stringio] NULL StringIO by StringIO.new(nil)
https://github.com/ruby/stringio/commit/779f71359d
2024-03-15 04:34:14 +00:00
Nobuyoshi Nakadaandgit c913f3347c [ruby/stringio] [DOC] Add missing documents
https://github.com/ruby/stringio/commit/9cc1dfa19c
2024-03-14 04:30:28 +00:00
Nobuyoshi Nakadaandgit 3f8ef7ff7c [ruby/stringio] Define StringIO::MAX_LENGTH
https://github.com/ruby/stringio/commit/0205bd1c86
2024-03-13 13:20:23 +00:00
tomoya ishidaandgit fd1bafc11f [ruby/stringio] Fix ascii_only? flag in strio_write
(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-18 03:42:21 +00:00
Nobuyoshi Nakadaandgit 6283ae8d36 [ruby/stringio] Update the coderange after overwrite
Fix https://bugs.ruby-lang.org/issues/20185

https://github.com/ruby/stringio/commit/8230552a46
2024-01-16 15:06:22 +00:00
Hiroshi SHIBATA f54369830f Revert "Rollback to released version numbers of stringio and strscan"
This reverts commit 6a79e53823.
2023-12-25 21:12:49 +09:00
Hiroshi SHIBATA 6a79e53823 Rollback to released version numbers of stringio and strscan 2023-12-16 12:00:59 +08:00
Sutou Kouheiandgit def416899d [ruby/stringio] Development of 3.1.1 started.
https://github.com/ruby/stringio/commit/75da93d48f
2023-11-28 01:38:41 +00:00
Sutou Kouheiandgit 8cd6c65af1 [ruby/stringio] Development of 3.1.0 started.
https://github.com/ruby/stringio/commit/a2f8ef1a6a
2023-11-08 07:04:15 +00:00
Sutou Kouheiandgit 7ed37388fb [ruby/stringio] Add missing row separator encoding conversion
(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-08 00:46:17 +00:00
Nobuyoshi Nakada 79d0879536 [ruby/stringio] Make STRINGIO_VERSION uniform
https://github.com/ruby/stringio/commit/4400bf3380
2023-11-04 19:28:49 +09:00
f087f2c74c [ruby/stringio] StringIO#pread: handle 0 length like IO#pread
(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 <[email protected]>
2023-10-05 07:44:08 +00:00
Burdette Lamarandgit 02022cef53 [ruby/stringio] [DOC] Fix link
(https://github.com/ruby/stringio/pull/65)

https://github.com/ruby/stringio/commit/e3ea087d04
2023-09-22 14:17:07 +00:00
Sutou KouheiandHiroshi SHIBATA 5ed42c9800 Development of 3.0.9 started. 2023-08-29 18:15:05 +09:00
fd8dd71996 Implement StringIO#pread (#56)
Both for being closer to real IOs and also because it's a convenient API
in multithreaded scenarios.

Co-authored-by: Jean Boussier <[email protected]>
2023-08-02 18:18:17 +09:00
Hiroshi SHIBATAandgit c32a30ec09 [ruby/stringio] Development of 3.0.8 started.
https://github.com/ruby/stringio/commit/1587d3698e
2023-06-02 08:20:38 +00:00
Samuel Williamsandgit d5a5333168 [ruby/stringio] Avoid direct struct usage.
(https://github.com/ruby/stringio/pull/54)

We will eventually want to refactor this, but for now this is compatible
enough.
2023-06-01 11:41:19 +00:00
NARUSE, Yui 85dcc4866d Revert "Hide most of the implementation of struct rb_io. (#6511)"
This reverts commit 18e55fc1e1.

fix [Bug #19704]
https://bugs.ruby-lang.org/issues/19704
This breaks compatibility for extension libraries. Such changes
need a discussion.
2023-06-01 08:43:22 +09:00
18e55fc1e1 Hide most of the implementation of struct rb_io. (#6511)
* 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 <[email protected]>
2023-05-30 10:02:40 +09:00
Nobuyoshi Nakadaandgit 6987ec45b1 [ruby/stringio] Drop support for ruby 2.6 or earlier
(https://github.com/ruby/stringio/pull/47)

`rb_io_extract_modeenc` has been exported since ruby 2.7.
2023-05-08 07:21:21 +00:00
Nobuyoshi Nakadaandgit 409a13e9ea [ruby/stringio] Update write-barrier at copying
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-05-03 05:38:27 +00:00
Sutou Kouheiandgit 67743d5823 [ruby/stringio] Development of 3.0.7 started.
https://github.com/ruby/stringio/commit/5d39880f70
2023-04-14 06:38:51 +00:00
Jean Boussierandgit 71dae78b89 [ruby/stringio] Implement write barrier on StringIO
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-28 03:07:10 +00:00
BurdetteLamarandgit d3ee9e590c [ruby/stringio] Remove (newly unneeded) remarks about aliases
https://github.com/ruby/stringio/commit/60bb320477
2023-02-25 08:38:19 +00:00
Nobuyoshi Nakadaandgit cbd5de4f88 [ruby/stringio] Development of 3.0.6 started.
https://github.com/ruby/stringio/commit/a7561f447b
2023-02-03 07:49:31 +00:00
Nobuyoshi Nakadaandgit 89d9547800 [ruby/stringio] Revert "bump up to 3.0.6" [ci skip]
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 12:44:53 +00:00
Nobuyoshi Nakadaandgit 8087ba736e [ruby/stringio] bump up to 3.0.6
https://github.com/ruby/stringio/commit/325933500b
2023-02-02 04:44:38 +00:00
Nobuyoshi Nakadaandgit 21dced8b01 [ruby/stringio] [Bug #19389] Fix chomping with longer separator
https://github.com/ruby/stringio/commit/eb322a9716
2023-01-28 13:00:08 +00:00
Sutou KouheiandHiroshi SHIBATA 10c9ce9d4c bump up to 3.0.5 2022-12-26 15:09:21 +09:00
Hiroshi SHIBATA 7d04cddfef Merge stringio-3.0.4 2022-12-09 16:36:22 +09:00
Sutou Kouheiandgit 8bbf4e5d8d [ruby/stringio] bump up to 3.0.5
https://github.com/ruby/stringio/commit/e62b9d78d3
2022-12-08 20:58:53 +00:00
Sutou Kouheiandgit b9d055d760 [ruby/stringio] bump up to 3.0.4
https://github.com/ruby/stringio/commit/5ba853d6ff
2022-12-08 05:12:15 +00:00
Hiroshi SHIBATAandgit faafb7b740 [ruby/stringio] Revert "Bump version to 3.0.4"
This reverts commit https://github.com/ruby/stringio/commit/aeb7e1a0bde6.

https://github.com/ruby/stringio/commit/003dd0d003
2022-12-05 08:03:29 +00:00
Hiroshi SHIBATAandgit 95e272baf8 [ruby/stringio] Bump version to 3.0.4
https://github.com/ruby/stringio/commit/aeb7e1a0bd
2022-12-05 08:02:25 +00:00
Burdette Lamarandgit 35e03a44b8 [ruby/stringio] [DOC] Enhanced RDoc for StringIO
(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-21 14:12:45 +00:00
Burdette Lamarandgit c32180d5ce [ruby/stringio] [DOC] Enhanced RDoc for StringIO
(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 15:33:08 +00:00
Burdette LamarandNobuyoshi Nakada 18b96d8a82 [ruby/stringio] [DOC] StringIO doc enhancements
(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 09:12:18 +09:00
Nobuyoshi Nakada 01d56b99bf [DOC] Fix rdoc-ref 2022-10-19 08:52:29 +09:00