[#14690] singleton-of-singleton is Class in 1.9.0 — Sylvain Joyeux <sylvain.joyeux@...4x.org>
In 1.9.0, the singleton of a singleton is Class, while in 1.8 it was a
[#14696] Inconsistency in rescuability of "return" — Charles Oliver Nutter <charles.nutter@...>
Why can you not rescue return, break, etc when they are within
Gary Wright wrote:
On Jan 3, 2008 12:53 AM, Gary Wright <gwtmp01@mac.com> wrote:
Gary Wright wrote:
On Jan 2, 2008 5:26 PM, Charles Oliver Nutter <charles.nutter@sun.com> wrote:
[#14720] bug reports about 1.9 VM — SASADA Koichi <ko1@...>
Hi,
[#14738] Enumerable#zip Needs Love — James Gray <james@...>
The community has been building a Ruby 1.9 compatibility tip list on
Hello James,
On Jan 4, 2008, at 12:11 AM, Martin Duerst wrote:
Hi,
On Jan 7, 2008, at 8:07 PM, Yukihiro Matsumoto wrote:
Hi,
On Jan 7, 2008, at 11:06 PM, Yukihiro Matsumoto wrote:
Hi,
[#14740] Could someone sanity check a paragraph? — Dave Thomas <dave@...>
In the section on writing C extensions for Ruby, I'm talking about
[#14747] BasicObject.instance_eval — Sam Ruby <rubys@...>
I'm looking at converting some code over from BlankSlate to BasicObject,
On Jan 3, 2008 10:06 PM, Sam Ruby <rubys@intertwingly.net> wrote:
[#14772] Manual Memory Management — Pramukta Kumar <prak@...>
I was thinking it would be nice to be able to free large objects at
On Jan 4, 2008 1:25 PM, Pramukta Kumar <prak@fortiusone.com> wrote:
I would only like to add that RMgick for example provides free method to
Marcin Raczkowski wrote:
On Sat, 5 Jan 2008 15:49:30 +0900, Marcin Raczkowski <mailing.mr@gmail.com> wrote:
Python supports 'del reference', which decrements the reference
Evan Weaver wrote:
On Tue, 8 Jan 2008 14:35:28 +0900, Marcin Raczkowski <mailing.mr@gmail.com> wrote:
[#14811] Re: Experimental PATCH to improve thread performance — Brent Roman <brent@...>
Paul,
[#14813] Changes in block_given? in 1.9 — Tomas Matousek <Tomas.Matousek@...>
The following code output differs between 1.8 and 1.9:
[#14816] Fibers clear thread-specific data? — "Tony Arcieri" <tony@...>
Is this behavior intentional?
On Mon, 7 Jan 2008 09:34:35 +0900, "Tony Arcieri" <tony@clickcaster.com> wrote:
On Jan 7, 2008 1:29 PM, MenTaLguY <mental@rydia.net> wrote:
On Tue, 2008-01-08 at 11:12 +0900, Tony Arcieri wrote:
[#14829] Finding I need explicit "GC.start" in my programs to prevent extreme growth. — Ron Mayer <rm_rails@...>
Short summary:
[#14839] Re: Embedding 1.9 — Dave Thomas <dave@...>
Moved over from ruby-talk...
Dave Thomas wrote:
On Wed, Jan 09, 2008 at 02:04:03AM +0900, Dave Thomas wrote:
[#14845] Some (accidental?) syntax changes 1.8 -> 1.9 — "Florian Frank" <flori@...>
Hello,
[#14871] p returning its argument? — "David A. Black" <dblack@...>
Hi --
On Jan 9, 2008 1:14 AM, David A. Black <dblack@rubypal.com> wrote:
[#14877] Array#count returning an enumerator — "David A. Black" <dblack@...>
Hi --
[#14884] memory leak? — ara howard <ara.t.howard@...>
Hi,
[#14885] Segmentation fault when calling procs — Chris "ク" Heath <chris@...>
Hi,
[#14911] Draft of some pages about encoding in Ruby 1.9 — Dave Thomas <dave@...>
Folks:
Hi,
Hello Dave,
>
Hi,
Hi,
[#14943] Re: Really strange GC behaviour: Was [BUG] memory leak? — ara howard <ara.t.howard@...>
[#14959] 1.9 RI blowing up, not sure where to report it. — "Rick DeNatale" <rick.denatale@...>
It's unclear to me whether or not the tracker on Rubyforge is still
Rick DeNatale wrote:
[#14965] Before I create a ticket — Dave Thomas <dave@...>
Is it reasonable to expect the following to produce differing counts
[#14976] nil encoding as synonym for binary encoding — David Flanagan <david@...>
The following just appeared in the ChangeLog
Hi,
Dave Thomas wrote:
Dave Thomas schrieb:
Hi,
Yukihiro Matsumoto writes:
Hi,
Yukihiro Matsumoto wrote:
Hi,
Yukihiro Matsumoto wrote:
David Flanagan wrote:
[#15044] Build failures 15007-15013 — Sam Ruby <rubys@...>
Just FYI, starting with 15007, I am not able to do a successful build.
[#15050] how to "borrow" the RDoc::RubyParser and HTMLGenerator — Phlip <phlip2005@...>
Core Rubies:
On Jan 13, 2008, at 08:54 AM, Phlip wrote:
Eric Hodel wrote:
On Jan 13, 2008, at 20:35 PM, Phlip wrote:
Eric Hodel wrote:
On Jan 15, 2008, at 18:19 PM, Phlip wrote:
Eric Hodel wrote:
On Jan 16, 2008, at 15:01 PM, Phlip wrote:
Eric Hodel wrote:
On Jan 17, 2008, at 17:57 PM, Phlip wrote:
Eric Hodel wrote:
[#15056] How to use "addr2line" — SASADA Koichi <ko1@...>
Hi,
[#15069] native_mutex_destroy return non-zero: 16 — Sam Ruby <rubys@...>
Yesterday, I got ruby-openid to work with Ruby 1.9, rev 15006
Hi,
[#15083] Why @hash ||= Hash.new in Set#initialize? — "David A. Black" <dblack@...>
Hi --
[#15092] Module/Class definitions cannot take non literal blocks — "Robert Dober" <robert.dober@...>
Hi list
Hi --
On Jan 16, 2008 1:23 PM, David A. Black <dblack@rubypal.com> wrote:
[#15098] Bug in Date::Infinity#<=> — Dirkjan Bussink <d.bussink@...>
Hi all,
[#15102] REXML::Element.write is deprecated. See REXML::Formatters — Phlip <phlip2005@...>
okay, I saw them. Now what?
Phlip wrote:
> Meanwhile try something like the following:
Phlip wrote:
> I guess I'll let Sean take it from here, other than to note that .to_s
[#15131] test/rdoc/test_simple_markup_attribute_manager.rb:2:in `require': no such file to load -- rdoc/markup/simple_markup/inline (LoadError) — Tanaka Akira <akr@...>
test-all failed as follows.
> test-all failed as follows.
[#15143] Build error, revisions 15119-15126 — Sam Ruby <rubys@...>
This change:
[#15147] String initialziation — Marcin Raczkowski <mailing.mr@...>
Mayby strange question but what happens when someone for example types
Marcin Raczkowski pisze:
Gary Wright wrote:
Marcin Raczkowski schrieb:
> What's your use case? Just curious.
[#15155] an example of performance improvements — Martin Duerst <duerst@...>
For those not reading ruby-dev, I just wanted to point to
[#15164] convert rubynode transforms back into source code? — Phlip <phlip2005@...>
Rubiods:
[#15185] Friendlier methods to compare two Time objects — "Jim Cropcho" <jim.cropcho@...>
Hello,
At 05:42 08/01/23, Kornelius Kalnbach wrote:
Hi,
A new thought:
[#15194] Can large scale projects be successful implemented around a dynamic programming language? — Jordi <mumismo@...>
A good article I have found (may have been linked by slashdot, don't know)
On Thu, 24 Jan 2008 23:17:34 +0900, James Gray wrote:
Jay Levitt wrote:
Kurt Stephens wrote:
[#15199] Two build issues — Dave Thomas <dave@...>
1. If the directory pointed to by --prefix is a symbolic link, then
[#15212] case when syntax changed ??? — "Yvon Thoraval" <yvon.thoraval@...>
did the case when syntax changed with 1.9 ???
[#15217] ruby-1.9.0-0 and Tk — "Yvon Thoraval" <yvon.thoraval@...>
I had successfully tested ruby 1.9 (early december 2007) with Tk, but right
[#15234] Gem install error on head — Dave Thomas <dave@...>
I built HEAD into a totally clean destination (so there were no
On 27/01/2008, Dave Thomas <dave@pragprog.com> wrote:
[#15236] Encoding of unicode strings is now ASCII-8BIT? — Sam Ruby <rubys@...>
Before:
[#15238] CI for Ruby core? — Charles Oliver Nutter <charles.nutter@...>
Perhaps it's time to set up a continuous integration server for ruby
Charles Oliver Nutter wrote:
On Jan 27, 2008 4:01 PM, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:
[#15248] Symbol#empty? ? — "David A. Black" <dblack@...>
Hi --
Hi,
[#15257] a new kind of assertion — Phlip <phlip2005@...>
Ruby-core:
On Jan 28, 2008 5:45 AM, Phlip <phlip2005@gmail.com> wrote:
Meinrad Recheis wrote:
+1
Jim Cropcho wrote:
[#15288] Circular dependency: revision 15317 — Sam Ruby <rubys@...>
http://intertwingly.net/projects/ruby19/logs/ruby.html
[#15297] Deletion of element sequence in an Array — Wolfgang Nádasi-Donner <ed.odanow@...>
Hi!
[#15303] Core team, I need your help — "Jonas Pfenniger" <zimbatm@...>
Hi,
[#15308] IRHG - TNODE Documentation? — Charles Thornton <ceo@...>
Is there any documentation on the TNODE
On Wed, Jan 30, 2008 at 03:42:29PM +0900, Charles Thornton wrote:
Ruby 1.9: PATCH: Fixnum#gcd (Reprise)
I'm reposting this as it appears no one except Ryan had any comments. :)
We find this to be very helpful. Its a simple patch but it has big
performance implications.
This could be applied to 1.8, as well.
Kurt Stephens
http://kurtstephens.com
==============================================================
See the attached patch.
Much Love to Ruby,
Kurt Stephens
=======================================================
Date uses Rational heavily, which calls Integer#gcd for every new Rational.
The Integer#gcd method is generic to handle Bignums,
but performs terribly for Fixnum#gcd(Fixnum),
which is probably the most often case.
This hack saved 15% execution time in a large Rails application.
See http://kurtstephens.com/node/34
=======================
# fixnum_gcd_test.rb
require 'benchmark'
require 'rational'
srand(1212398)
args = (0...10000).map do | x |
[ rand(100000), rand(100000) ]
end
# puts args.inspect
Benchmark.bmbm do | bm |
bm.report("Fixnum#gcd") do
100.times do
args.each do | x, y |
x.gcd(y)
end
end
end
end
=======================
> ruby-trunk/ruby fixnum_gcd_test.rb
Rehearsal ----------------------------------------------
Fixnum#gcd 1.160000 0.000000 1.160000 ( 1.191571)
------------------------------------- total: 1.160000sec
user system total real
Fixnum#gcd 1.160000 0.010000 1.170000 ( 1.203422)
> ruby-trunk-orig/ruby fixnum_gcd_test.rb
Rehearsal ----------------------------------------------
Fixnum#gcd 3.980000 0.000000 3.980000 ( 4.089624)
------------------------------------- total: 3.980000sec
user system total real
Fixnum#gcd 3.960000 0.000000 3.960000 ( 4.031807)
Attachments (1)
--- ruby-trunk-orig/numeric.c 2007-12-12 12:58:00.000000000 -0600
+++ ruby-trunk/numeric.c 2007-12-13 11:33:51.000000000 -0600
@@ -2316,10 +2316,85 @@
default:
return rb_num_coerce_bin(x, y);
}
}
+/*
+
+Date uses Rational heavily, which calls Integer#gcd for every new Rational.
+The Integer#gcd method is generic to handle Bignums,
+but performs terribly for Fixnum#gcd(Fixnum),
+which is probably the most often case.
+
+This hack saved 15% execution time in a large Rails application.
+
+See http://kurtstephens.com/node/34
+
+=======================
+# fixnum_gcd_test.rb
+
+require 'benchmark'
+require 'rational'
+
+srand(1212398)
+
+args = (0...10000).map do | x |
+ [ rand(100000), rand(100000) ]
+end
+# puts args.inspect
+
+Benchmark.bmbm do | bm |
+ bm.report("Fixnum#gcd") do
+ 100.times do
+ args.each do | x, y |
+ x.gcd(y)
+ end
+ end
+ end
+end
+
+=======================
+
+ > ruby-trunk/ruby fixnum_gcd_test.rb
+Rehearsal ----------------------------------------------
+Fixnum#gcd 1.160000 0.000000 1.160000 ( 1.191571)
+------------------------------------- total: 1.160000sec
+
+ user system total real
+Fixnum#gcd 1.160000 0.010000 1.170000 ( 1.203422)
+ > ruby-trunk-orig/ruby fixnum_gcd_test.rb
+Rehearsal ----------------------------------------------
+Fixnum#gcd 3.980000 0.000000 3.980000 ( 4.089624)
+------------------------------------- total: 3.980000sec
+
+ user system total real
+Fixnum#gcd 3.960000 0.000000 3.960000 ( 4.031807)
+
+*/
+
+static VALUE
+fix_gcd(int argc, VALUE *argv, VALUE self) {
+ if ( argc != 1 ) {
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for %d)", argc, 1);
+ }
+ if ( FIXNUM_P(argv[0]) ) {
+ /* fprintf(stderr, "Using Fixnum#gcd(Fixnum)\n"); */
+ long a = FIX2LONG(self);
+ long b = FIX2LONG(argv[0]);
+ long min = a < 0 ? - a : a;
+ long max = b < 0 ? - b : b;
+ while ( min > 0 ) {
+ long tmp = min;
+ min = max % min;
+ max = tmp;
+ }
+ return LONG2FIX(max);
+ } else {
+ return rb_call_super(1, argv);
+ }
+}
+
static VALUE
int_pow(long x, unsigned long y)
{
int neg = x < 0;
long z = 1;
@@ -3151,10 +3226,11 @@
rb_define_method(rb_cFixnum, "%", fix_mod, 1);
rb_define_method(rb_cFixnum, "modulo", fix_mod, 1);
rb_define_method(rb_cFixnum, "divmod", fix_divmod, 1);
rb_define_method(rb_cFixnum, "quo", fix_quo, 1);
rb_define_method(rb_cFixnum, "fdiv", fix_quo, 1);
+ rb_define_method(rb_cFixnum, "gcd", (VALUE(*)(ANYARGS)) fix_gcd, -1);
rb_define_method(rb_cFixnum, "**", fix_pow, 1);
rb_define_method(rb_cFixnum, "abs", fix_abs, 0);
rb_define_method(rb_cFixnum, "==", fix_equal, 1);