[#81492] [Ruby trunk Feature#13618] [PATCH] auto fiber schedule for rb_wait_for_single_fd and rb_waitpid — normalperson@...

Issue #13618 has been reported by normalperson (Eric Wong).

12 messages 2017/06/01

[ruby-core:81600] Re: [Ruby trunk Feature#13626] Add String#byteslice!

From: Eric Wong <normalperson@...>
Date: 2017-06-07 00:53:15 UTC
List: ruby-core #81600
[email protected] wrote:
> 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?

String#force_encoding is done in-place so it should not be
that slow, the String#<< would be the slow part since it
involves at least one memcpy (worst case is realloc + 2 memcpy)

But I'm not sure why you would want to be setting data to
UTF-8; I guess you got it from some 3rd-party library?

Maybe String#b! could be shorter alias for
force_encoding(Encoding::UTF_8); but yeah, exposing writev via
[Feature #9323] is probably the best option, anyways.



Fwiw, I'm also not convinced String#<< behavior about changing
write_buffer to Encoding::UTF-8 in your above example is good
behavior on Ruby's part...  But I don't know much about human
language encodings, I am just a *nix plumber where a byte is a
byte.

Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next