From: samuel@... Date: 2017-06-03T22:49:14+00:00 Subject: [ruby-core:81566] [Ruby trunk Feature#13626] Add String#byteslice! Issue #13626 has been updated by ioquatix (Samuel Williams). Thanks for that idea. If that's the case, when appending to the write buffer: ~~~ write_buffer = String.new.b unicode_string = "\u1234".force_encoding("UTF-8") write_buffer << unicode_string write_buffer.encoding # Changed from ASCII-8BIT to Encoding:UTF-8 ~~~ The only way I can think to fix this is to run +force_encoding+ on the write buffer after every append but this seems hugely inefficient. Ideas? ---------------------------------------- Feature #13626: Add String#byteslice! https://bugs.ruby-lang.org/issues/13626#change-65268 * Author: ioquatix (Samuel Williams) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- 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: