[#65451] [ruby-trunk - Feature #10333] [PATCH 3/1] optimize: "yoda literal" == string — ko1@...

Issue #10333 has been updated by Koichi Sasada.

9 messages 2014/10/07

[ruby-core:65927] Re: [CommonRuby - Feature #8848] Syntax for binary strings

From: Eric Wong <normalperson@...>
Date: 2014-10-27 18:33:43 UTC
List: ruby-core #65927
duerst@it.aoyama.ac.jp wrote:
> One reason for this efficiency. String#b creates a duplicate object,
> which is not at all necessary for the frequent use case of String
> literals.

Avoiding one allocation is easy to add to [Feature #10423]
(which avoids string literal allocations for many methods)

> Another reason is encoding validity. To be able to e.g. create a
> "\xFF" binary string, with String#b in an UTF-8 source context, it is
> necessary to allow "\xFF" (temporarily at least) as an (actually
> invalid) UTF-8 string. This may be difficult for some implementations,
> and isn't desirable in general.

We can even go farther than #10423 and move the evaluation of
"string literal".{b,encode,force_encoding} to compile time.

The downside is compatibility with people who wish to override one of
those methods, but doubt anybody overrides those...
There's no new (and strange looking, IMHO) syntax to learn,
it looks like a normal method call, and the optimization would be
usable with existing code.

In This Thread