[#7809] uninit bug in yaml/emitter.c — "Pat Eyler" <rubypate@...>
During our hacking night, we also looked at an UNINIT bug in yaml/emitter.c
[#7813] :!~ not a symbol — noreply@...
Bugs item #4344, was opened at 2006-05-03 17:41
[#7818] (security-related) patch to ALLOC macros to prevent integer overflow bugs — "Dominique Brezinski" <dominique.brezinski@...>
While fixing the integer overflow in rb_ary_fill(), it occurred to me
[#7833] segfault on Proc#call after setting a trace_func — Mauricio Fernandez <mfp@...>
$ cat bug2.rb
[#7843] Possible YAMl bug in 1.8.4 — Damphyr <damphyr@...>
OK, while parsing the td2 data from the ruby-lang website we stumbled on
Its probably a bug. I'm not familiar with the specifics, but Ruby
[#7858] Ruby threads working with native threads — "Francis Cianfrocca" <garbagecat10@...>
I recently wrote a network-event extension for Ruby ("eventmachine" in
[#7865] Strange interactions between Struct and 'pp' — noreply@...
Bugs item #4457, was opened at 2006-05-12 17:13
[#7872] Nonblocking socket-connect — "Francis Cianfrocca" <garbagecat10@...>
All, I needed a nonblocking socket connect for my asynchronous-event
In article <3a94cf510605140559l7baa0205le341dac4f47d424b@mail.gmail.com>,
How about introducing the method Socket#set_nonblocking, or alternatively
Hi,
Well, it's ok then. I'm comfortable adding in the nonblocking
Hi,
How about Socket#nbconnect and Socket#nbaccept?
On 5/15/06, Francis Cianfrocca <garbagecat10@gmail.com> wrote:
In article <1147709691.180288.28647.nullmailer@x31.priv.netlab.jp>,
[#7881] Segfault on x86_64 when built with -O0 in CFLAGS — noreply@...
Bugs item #4491, was opened at 2006-05-16 12:46
[#7882] reproducible bug in DRb on OSX — cremes.devlist@...
I've been tearing my hair out the last few days trying to track down
[#7909] SCRIPT_LINES__ issue when loading a file more than once — Mauricio Fernandez <mfp@...>
SCRIPT_LINES__ is an obscure feature very few people care about, but I happen
On Fri, May 19, 2006 at 06:46:05PM +0900, Mauricio Fernandez wrote:
Hi,
[#7923] Nonblocking accept — "Francis Cianfrocca" <garbagecat10@...>
Thanks to the Matz and colleagues for adding the *_nonblock functions. They
[#7928] set_trace_func: binding has wrong self value for return events — =?ISO-8859-15?Q?Florian_Gro=DF?= <florgro@...>
Moin.
Florian Growrote:
Re: String#nstrip ?
> -----Original Message-----
> From: Joel VanderWerf [mailto:vjoel@path.berkeley.edu]
> Sent: Thursday, May 18, 2006 12:41 PM
> To: ruby-core@ruby-lang.org
> Subject: Re: String#nstrip ?
>
>
> Daniel Berger wrote:
> > Hi all,
> >
> > When using the Win32API package, I often have to resort to
> this idiom
> > to get a string out of a buffer:
> >
> > string.split(0.chr).first
>
> Why won't slice do the trick?
>
> irb(main):001:0> s = "hello\0\0\0\0"
> => "hello\000\000\000\000"
> irb(main):002:0> s[/^.*?(?=\0)/]
> => "hello"
>
> --
> vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407
> -----Original Message-----
> From: ara.t.howard@noaa.gov [mailto:ara.t.howard@noaa.gov]
> Sent: Thursday, May 18, 2006 1:16 PM
> To: ruby-core@ruby-lang.org
> Subject: Re: String#nstrip ?
>
>
> On Fri, 19 May 2006, Daniel Berger wrote:
>
> > Hi all,
> >
> > When using the Win32API package, I often have to resort to
> this idiom
> > to get
> > a string out of a buffer:
> >
> > string.split(0.chr).first
> >
> > The problem is that it's kinda slow. No, I can't use
> String#rstrip or
> > String#gsub because often there's other junk at the end of
> the string that
> > would prevent those methods from working.
> >
> > What about adding a String#nstrip (null strip) method that would
> > return a
> > string up to the first NULL character? Here's a simple
> implementation:
>
> harp:~ > ruby -e' p "42\0\0"[ /^[^\0]*/ ] '
> "42"
>
> harp:~ > ruby -e' p "42"[ /^[^\0]*/ ] '
> "42"
>
> harp:~ > ruby -e' p ""[ /^[^\0]*/ ] '
> ""
Thanks all. My benchmarks show the best solutions at about ~4x faster.
I've included a few other solutions folks have provided.
require 'benchmark'
MAX = 100000
STRING = "hello\0\0\0\0m"
Benchmark.bm do |x|
x.report("String#split"){
MAX.times{ STRING.split("\0").first }
}
# Another attempt by me
x.report("String#index"){
MAX.times{ STRING[0 .. STRING.index(0.chr)-1] }
}
# Hugh Sasse
x.report("String#scan"){
MAX.times{ STRING.scan(/^[^\000]+/).first }
}
# Joel VanderWerf
x.report("String#[regex1]"){
MAX.times{ STRING[/^.*?(?=\0)/] }
}
# Ara Howard
x.report("String#[regex2]"){
MAX.times{ STRING[ /^[^\0]*/ ] }
}
end
String#split 3.174000 0.000000 3.174000 ( 3.355000)
String#index 1.733000 0.000000 1.733000 ( 2.023000)
String#scan 1.141000 0.000000 1.141000 ( 1.212000)
String#[regex1] 0.822000 0.010000 0.832000 ( 0.901000)
String#[regex2] 0.691000 0.000000 0.691000 ( 0.741000)
Not *quite* as fast as the C version, but good enough I suppose.
Ok, nevermind. :)
Dan
This communication is the property of Qwest and may contain confidential or
privileged information. Unauthorized use of this communication is strictly
prohibited and may be unlawful. If you have received this communication
in error, please immediately notify the sender by reply e-mail and destroy
all copies of the communication and any attachments.