[#26488] Add Standard Deviation Function to Math Module — Daniel Cohen <danielc2017@...>

This patch adds a Standard Deviation function to the Math Module. It takes

25 messages 2009/11/02
[#26489] Re: Add Standard Deviation Function to Math Module — Yukihiro Matsumoto <matz@...> 2009/11/03

Hi,

[#26490] Re: Add Standard Deviation Function to Math Module — Daniel Cohen <danielc2017@...> 2009/11/03

OK,

[#26493] Re: Add Standard Deviation Function to Math Module — Yukihiro Matsumoto <matz@...> 2009/11/03

Hi,

[#26511] Re: Add Standard Deviation Function to Math Module — Yusuke ENDOH <mame@...> 2009/11/03

Hi,

[#26492] HashWithIndifferentAccess to core — Urabe Shyouhei <shyouhei@...>

Hello,

35 messages 2009/11/03
[#26496] Re: HashWithIndifferentAccess to core — Yukihiro Matsumoto <matz@...> 2009/11/03

Hi,

[#26507] Re: HashWithIndifferentAccess to core — Jeremy Kemper <jeremy@...> 2009/11/03

On Tue, Nov 3, 2009 at 6:48 AM, Yukihiro Matsumoto <matz@ruby-lang.org> wro=

[#26514] Re: HashWithIndifferentAccess to core — "Martin J. Dst" <duerst@...> 2009/11/04

Just a thought: What about implementing this with an option on Hash:new,

[#26522] Re: HashWithIndifferentAccess to core — Yusuke ENDOH <mame@...> 2009/11/04

Hi,

[#26555] Re: HashWithIndifferentAccess to core — Yukihiro Matsumoto <matz@...> 2009/11/05

Hi,

[#26584] Re: HashWithIndifferentAccess to core — Yugui <yugui@...> 2009/11/07

2009/11/6 Yukihiro Matsumoto <matz@ruby-lang.org>:

[#26589] Re: HashWithIndifferentAccess to core — Yukihiro Matsumoto <matz@...> 2009/11/07

Hi,

[#26593] Re: HashWithIndifferentAccess to core — Lourens Naud<lourens@...> 2009/11/07

Hi,

[#26523] [Bug #2330] Non systematic segmentation fault with autoload rubyspec — Marc-Andre Lafortune <redmine@...>

Bug #2330: Non systematic segmentation fault with autoload rubyspec

12 messages 2009/11/04

[#26560] [Feature #2340] Removing YAML/Syck — Yui NARUSE <redmine@...>

Feature #2340: Removing YAML/Syck

38 messages 2009/11/06
[#26562] [Feature #2340] Removing YAML/Syck — Yui NARUSE <redmine@...> 2009/11/06

Issue #2340 has been updated by Yui NARUSE.

[#26567] Re: [Feature #2340] Removing YAML/Syck — James Edward Gray II <james@...> 2009/11/06

On Nov 6, 2009, at 4:02 AM, Yui NARUSE wrote:

[#26568] Re: [Feature #2340] Removing YAML/Syck — Jon <jon.forums@...> 2009/11/06

> > Issue #2340 has been updated by Yui NARUSE.

[#26571] Re: [Feature #2340] Removing YAML/Syck — "NARUSE, Yui" <naruse@...> 2009/11/06

Jon wrote:

[#26574] Re: [Feature #2340] Removing YAML/Syck — Aaron Patterson <aaron@...> 2009/11/06

On Sat, Nov 07, 2009 at 12:59:25AM +0900, NARUSE, Yui wrote:

[#26635] [Feature #2348] RBTree Should be Added to the Standard Library — James Gray <redmine@...>

Feature #2348: RBTree Should be Added to the Standard Library

20 messages 2009/11/08
[#28842] [Feature #2348] RBTree Should be Added to the Standard Library — James Gray <redmine@...> 2010/03/21

Issue #2348 has been updated by James Gray.

[#26650] [Feature #2350] Unicode specific functionality on String in 1.9 — Manfred Stienstra <redmine@...>

Feature #2350: Unicode specific functionality on String in 1.9

12 messages 2009/11/09
[#28985] [Feature #2350](Rejected) Unicode specific functionality on String in 1.9 — Yusuke Endoh <redmine@...> 2010/03/25

Issue #2350 has been updated by Yusuke Endoh.

[#28993] Re: [Feature #2350](Rejected) Unicode specific functionality on String in 1.9 — Nikolai Weibull <now@...> 2010/03/25

On Thu, Mar 25, 2010 at 14:45, Yusuke Endoh <redmine@ruby-lang.org> wrote:

[#26704] Maintainer confirmation process done. — "Yugui (Yuki Sonoda)" <yugui@...>

I'm sorry for my closing the maintainer confirmation process so late.

13 messages 2009/11/12

[#26736] [Bug #2365] Matrix: poor handling of coercion errors [patch] — Marc-Andre Lafortune <redmine@...>

Bug #2365: Matrix: poor handling of coercion errors [patch]

12 messages 2009/11/14

[#26772] [Bug #2378] Regression in ParseDate.parsedate('nn-nn') — Vladimir Sizikov <redmine@...>

Bug #2378: Regression in ParseDate.parsedate('nn-nn')

10 messages 2009/11/16

[#26774] Ruby constant lookup — Yehuda Katz <wycats@...>

Over the past six months or so, I have been working with the new Ruby 1.9

22 messages 2009/11/16
[#26775] Re: Ruby constant lookup — Shugo Maeda <shugo@...> 2009/11/17

Hi,

[#26777] Re: Ruby constant lookup — Yehuda Katz <wycats@...> 2009/11/17

Shugo,

[#26778] Re: Ruby constant lookup — Shugo Maeda <shugo@...> 2009/11/17

Hi,

[#26869] Caching #to_s for immutables (and a possible future for constant-folding) — Kurt Stephens <ks@...>

I have a proof-of-concept patch to MRI that caches #to_s values for

16 messages 2009/11/23
[#26936] Re: Caching #to_s for immutables (and a possible future for constant-folding) — Roger Pack <rogerdpack@...> 2009/11/29

> =A0It reduces the number of #to_s Strings created during the MRI test sui=

[#26958] Re: Caching #to_s for immutables (and a possible future for constant-folding) [with patch] — Kurt Stephens <ks@...> 2009/11/30

The attached patch add caching of #to_s results to the main immutable

[#26960] Re: Caching #to_s for immutables (and a possible future for constant-folding) [with patch] — Roger Pack <rogerdpack@...> 2009/11/30

> Yes. =A0The MRI test suite runs at 45 sec with these changes and at 53 se=

[#26963] Re: Caching #to_s for immutables (and a possible future for constant-folding) [with patch] — Kurt Stephens <ks@...> 2009/11/30

I just ran rubyspec against it; ~ 5% time improvement.

[ruby-core:26522] Re: HashWithIndifferentAccess to core

From: Yusuke ENDOH <mame@...>
Date: 2009-11-04 03:50:12 UTC
List: ruby-core #26522
Hi,

2009/11/4 "Martin J. Durst" <duerst@it.aoyama.ac.jp>:
> Just a thought: What about implementing this with an option on Hash:new,
> rather than as a separate class? That at least would solve the problem with
> the class name.

This sounds good if HWIA is really imported.

How about "Hash#compare_as_string_key" following in
"Hash#compare_by_indentity"?


  h = {}
  h.compare_as_string_key

  h[:a] = :foo
  h["b"] = :bar

  p h["a"] #=> :foo
  p h[:b]  #=> :bar
  p h      #=> {:a=>:foo, "b"=>:bar}

  h[1] = 1 #=> neither string nor symbol key in strhash (RuntimeError)
           #   (should it be assumed as "1" by using to_s?)


Here is a patch (I didn't refer the original patch, sorry):


diff --git a/hash.c b/hash.c
index ef8b9a8..e26312c 100644
--- a/hash.c
+++ b/hash.c
@@ -99,6 +99,44 @@ rb_any_hash(VALUE a)
     return (st_index_t)RSHIFT(hnum, 1);
 }

+static int
+rb_strsym_cmp(VALUE a, VALUE b)
+{
+    if (a == b) return 0;
+    switch (TYPE(a)) {
+      case T_SYMBOL:
+	a = rb_id2str(SYM2ID(a));
+      case T_STRING:
+	switch (TYPE(b)) {
+	  case T_SYMBOL:
+	    b = rb_id2str(SYM2ID(b));
+	  case T_STRING:
+	    return rb_str_hash_cmp(a, b);
+	}
+    }
+    rb_raise(rb_eRuntimeError, "not string nor symbol key in strhash");
+}
+
+static st_index_t
+rb_strsym_hash(VALUE a)
+{
+    VALUE hval;
+    st_index_t hnum;
+
+    switch (TYPE(a)) {
+      case T_SYMBOL:
+	a = rb_id2str(SYM2ID(a));
+      case T_STRING:
+	hnum = rb_str_hash(a);
+	break;
+
+      default:
+	rb_raise(rb_eRuntimeError, "neither string nor symbol key in strhash");
+    }
+    hnum <<= 1;
+    return (st_index_t)RSHIFT(hnum, 1);
+}
+
 static const struct st_hash_type objhash = {
     rb_any_cmp,
     rb_any_hash,
@@ -109,6 +147,11 @@ static const struct st_hash_type identhash = {
     st_numhash,
 };

+static const struct st_hash_type strsymhash = {
+    rb_strsym_cmp,
+    rb_strsym_hash,
+};
+
 typedef int st_foreach_func(st_data_t, st_data_t, st_data_t);

 struct foreach_safe_arg {
@@ -1852,6 +1895,40 @@ rb_hash_compare_by_id_p(VALUE hash)
     return Qfalse;
 }

+/*
+ *  call-seq:
+ *    hsh.compare_as_string_key => hsh
+ *
+ *  TBD
+ */
+
+static VALUE
+rb_hash_compare_as_string_key(VALUE hash)
+{
+    rb_hash_modify(hash);
+    RHASH(hash)->ntbl->type = &strsymhash;
+    rb_hash_rehash(hash);
+    return hash;
+}
+
+/*
+ *  call-seq:
+ *    hsh.compare_as_string_key? => true or false
+ *
+ *  TBD
+ */
+
+static VALUE
+rb_hash_compare_as_string_key_p(VALUE hash)
+{
+    if (!RHASH(hash)->ntbl)
+        return Qfalse;
+    if (RHASH(hash)->ntbl->type == &strsymhash) {
+	return Qtrue;
+    }
+    return Qfalse;
+}
+
 static int path_tainted = -1;

 static char **origenviron;
@@ -2715,6 +2792,8 @@ Init_Hash(void)

     rb_define_method(rb_cHash,"compare_by_identity", rb_hash_compare_by_id, 0);
     rb_define_method(rb_cHash,"compare_by_identity?",
rb_hash_compare_by_id_p, 0);
+    rb_define_method(rb_cHash,"compare_as_string_key",
rb_hash_compare_as_string_key, 0);
+    rb_define_method(rb_cHash,"compare_as_string_key?",
rb_hash_compare_as_string_key_p, 0);

     origenviron = environ;
     envtbl = rb_obj_alloc(rb_cObject);

-- 
Yusuke ENDOH <mame@tsg.ne.jp>

In This Thread