From: "byroot (Jean Boussier)" Date: 2022-08-23T15:32:33+00:00 Subject: [ruby-core:109647] [Ruby master Feature#13626] Add String#byteslice! Issue #13626 has been updated by byroot (Jean Boussier). The PR is here in case someone feels like reviewing: https://github.com/ruby/ruby/pull/6275 As for the recently raised concerns, I don't really have any strong opinion. I implemented this on @ioquatix 's demand, I personally believe that given Ruby's String implementation, calling `slice!` (or byteslice!) on a buffer is terrible for performance (cf https://github.com/ruby/net-protocol/pull/14). That said, it's always very awkward to see code that mix `bytesize`, `byteslice` and `slice!`, every time I see some, I think I found a bug until I audit and figure that the string in indeed `Encoding::BINARY`. So for that alone I'm in favor of this method. ---------------------------------------- Feature #13626: Add String#byteslice! https://bugs.ruby-lang.org/issues/13626#change-98870 * Author: ioquatix (Samuel Williams) * Status: Open * Priority: Normal ---------------------------------------- It's a common pattern in IO buffering, to read a part of a string while leaving the remainder. ~~~ # Consume only part of the read buffer: result = @read_buffer.byteslice(0, size) @read_buffer = @read_buffer.byteslice(size, @read_buffer.bytesize) ~~~ It would be nice if this code could be simplified to: ~~~ result = @read_buffer.byteslice!(size) ~~~ Additionally, this allows a significantly improved implementation by the interpreter. -- https://bugs.ruby-lang.org/ Unsubscribe: