[#30589] [Bug #3391] Use single exclamation mark instead of double exclamation mark for IRB — Diego Viola <redmine@...>

Bug #3391: Use single exclamation mark instead of double exclamation mark for IRB

10 messages 2010/06/04

[#30672] [Bug #3411] Time.local 1916,5,1 #=> 1916-04-30 23:00:00 +0100 — Benoit Daloze <redmine@...>

Bug #3411: Time.local 1916,5,1 #=> 1916-04-30 23:00:00 +0100

12 messages 2010/06/08

[#30699] [Bug #3419] 1.9.2-preview3 possible bug with Rails 3 active_record sqlite_adapter — Joe Sak <redmine@...>

Bug #3419: 1.9.2-preview3 possible bug with Rails 3 active_record sqlite_adapter

9 messages 2010/06/09

[#30734] [Bug #3428] ri outputs ansi escape sequences even when stdout is not a tty — caleb clausen <redmine@...>

Bug #3428: ri outputs ansi escape sequences even when stdout is not a tty

11 messages 2010/06/11

[#30756] [Feature #3436] Spawn the timer thread lazily — Maximilian Gass <redmine@...>

Feature #3436: Spawn the timer thread lazily

15 messages 2010/06/13
[#32686] [Ruby 1.9-Feature#3436] Spawn the timer thread lazily — Mark Somerville <redmine@...> 2010/10/04

Issue #3436 has been updated by Mark Somerville.

[ruby-core:30966] Re: String#rindex is faster with Regexps than with Strings?

From: Yukihiro Matsumoto <matz@...>
Date: 2010-06-30 05:32:40 UTC
List: ruby-core #30966
Hi,

In message "Re: [ruby-core:30965] Re: String#rindex is faster with Regexps than with Strings?"
    on Wed, 30 Jun 2010 14:13:59 +0900, Kornelius Kalnbach <murphy@rubychan.de> writes:

|Is there some (English...) introduction to Ruby 1.9's string implementation?

It's in the source code ;-)

The structure for Ruby strings is struct RString, which is

  struct RString {
      struct RBasic basic;
      union {
          struct {
              long len;
              char *ptr;
              union {
                  long capa;
                  VALUE shared;
              } aux;
          } heap;
          char ary[RSTRING_EMBED_LEN_MAX + 1];
      } as;
  };

that means:

  * if a string length is shorter than RSTRING_EMBED_LEN_MAX, the
    contents is embedded in the structure

  * if not, the malloc'ed string is referred from ptr, the size is in
    len.

  * but utility macros are available; always access via those macros.
    * RSTRING_LEN() for length.
    * RSTRING_PTR() for the buffer reference.
    * RSTRING_END() for the end of the buffer.

  * basically never modify the buffer, unless you know what you are
    doing.  Even if you do, do not forget to rb_str_modify() before
    actually modifying it, otherwise it would break copy-on-write
    semantics (or even make a security hole).

That's all for now.  Start reading string.c in the distribution.

							matz.

In This Thread

Prev Next