[#27380] [Bug #2553] Fix pthreads slowness by eliminating unnecessary sigprocmask calls — Dan Peterson <redmine@...>

Bug #2553: Fix pthreads slowness by eliminating unnecessary sigprocmask calls

21 messages 2010/01/03

[#27437] [Feature #2561] 1.8.7 Patch reduces time cost of Rational operations by 50%. — Kurt Stephens <redmine@...>

Feature #2561: 1.8.7 Patch reduces time cost of Rational operations by 50%.

9 messages 2010/01/06

[#27447] [Bug #2564] [patch] re-initialize timer_thread_{lock,cond} after fork — Aliaksey Kandratsenka <redmine@...>

Bug #2564: [patch] re-initialize timer_thread_{lock,cond} after fork

18 messages 2010/01/06

[#27545] [Feature #2594] 1.8.7 Patch: Reduce time spent in gc.c is_pointer_to_heap(). — Kurt Stephens <redmine@...>

Feature #2594: 1.8.7 Patch: Reduce time spent in gc.c is_pointer_to_heap().

8 messages 2010/01/11

[#27635] [Bug #2619] Proposed method: Process.fork_supported? — Hongli Lai <redmine@...>

Bug #2619: Proposed method: Process.fork_supported?

45 messages 2010/01/20
[#27643] [Feature #2619] Proposed method: Process.fork_supported? — Luis Lavena <redmine@...> 2010/01/21

Issue #2619 has been updated by Luis Lavena.

[#27678] Re: [Feature #2619] Proposed method: Process.fork_supported? — Yukihiro Matsumoto <matz@...> 2010/01/22

Hi,

[#27684] Re: [Feature #2619] Proposed method: Process.fork_supported? — Charles Oliver Nutter <headius@...> 2010/01/22

On Thu, Jan 21, 2010 at 11:27 PM, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:

[#27708] Re: [Feature #2619] Proposed method: Process.fork_supported? — Yukihiro Matsumoto <matz@...> 2010/01/22

Hi,

[#27646] Re: [Bug #2619] Proposed method: Process.fork_supported? — Tanaka Akira <akr@...> 2010/01/21

2010/1/21 Hongli Lai <redmine@ruby-lang.org>:

[#27652] Re: [Bug #2619] Proposed method: Process.fork_supported? — Hongli Lai <hongli@...99.net> 2010/01/21

On 1/21/10 5:20 AM, Tanaka Akira wrote:

[#27653] Re: [Bug #2619] Proposed method: Process.fork_supported? — Tanaka Akira <akr@...> 2010/01/21

2010/1/21 Hongli Lai <hongli@plan99.net>:

[#27662] Re: [Bug #2619] Proposed method: Process.fork_supported? — Vladimir Sizikov <vsizikov@...> 2010/01/21

On Thu, Jan 21, 2010 at 10:53 AM, Tanaka Akira <akr@fsij.org> wrote:

[#27698] [Bug #2629] ConditionVariable#wait(mutex, timeout) should return whether the condition was signalled, not the waited time — Hongli Lai <redmine@...>

Bug #2629: ConditionVariable#wait(mutex, timeout) should return whether the condition was signalled, not the waited time

8 messages 2010/01/22

[#27722] [Feature #2635] Unbundle rdoc — Yui NARUSE <redmine@...>

Feature #2635: Unbundle rdoc

14 messages 2010/01/23

[#27757] [Bug #2638] ruby-1.9.1-p37[68] build on aix5.3 with gcc-4.2 failed to run for me because it ignores where libgcc is located. — Joel Soete <redmine@...>

Bug #2638: ruby-1.9.1-p37[68] build on aix5.3 with gcc-4.2 failed to run for me because it ignores where libgcc is located.

10 messages 2010/01/24

[#27778] [Bug #2641] Seg fault running miniruby during ruby build on Haiku — Alexander von Gluck <redmine@...>

Bug #2641: Seg fault running miniruby during ruby build on Haiku

10 messages 2010/01/25

[#27791] [Bug #2644] memory over-allocation with regexp — Greg Hazel <redmine@...>

Bug #2644: memory over-allocation with regexp

12 messages 2010/01/25

[#27794] [Bug #2647] Lack of testing for String#split — Hugh Sasse <redmine@...>

Bug #2647: Lack of testing for String#split

14 messages 2010/01/25

[#27912] [Bug #2669] mkmf find_executable doesn't find .bat files — Roger Pack <redmine@...>

Bug #2669: mkmf find_executable doesn't find .bat files

11 messages 2010/01/27

[#27930] [Bug:trunk] some behavior changes of lib/csv.rb between 1.8 and 1.9 — Yusuke ENDOH <mame@...>

Hi jeg2, or anyone who knows the implementation of FasterCSV,

15 messages 2010/01/28
[#27931] Re: [Bug:trunk] some behavior changes of lib/csv.rb between 1.8 and 1.9 — James Edward Gray II <james@...> 2010/01/28

On Jan 28, 2010, at 10:51 AM, Yusuke ENDOH wrote:

[ruby-core:27849] Re: [Bug #2656] Inconsistent docs for Zlib.

From: Hugh Sasse <hgs@...>
Date: 2010-01-26 10:15:51 UTC
List: ruby-core #27849
Excuse me following up to myself, but there's a first cut of
the patch below...

On Tue, 26 Jan 2010, Hugh Sasse wrote:

> On Tue, 26 Jan 2010, Yui NARUSE wrote:
> 
> > Issue #2656 has been updated by Yui NARUSE.
> > 
        [...]
> > > Both GzipReader and GzipWriter inherit from GzipFile which:
> > 
> > Yes, so Zlib::GzipWriter.wrap and Zlib::GzipReader are inherited methods
> > of Zlib::GzipFile.wrap.
> > 
> > > This looks to me as if the structure have changed, and maybe GzipFile#wrap
> > > just raised an exception in the past, to create an abstract method. I've
> > > not checked earlier versions to see.  However, for the superclass to 
> > > refer to the subclasses for documentation seems odd.
> > 
> > Those documents are confusing but they are only typo.
> > Things didn't change.
> 
> OK, I thought that was possible, too. 
> > 
> > If you create a patch for Ruby's trunk, I'll merge it.
> > Now this ticket move to Ruby 1.9.
> 
> OK, I'll see what I can do.  Do you just want me to (effectively)
> s/Gzip(Read|Writ)er#wrap/GzipFile#wrap/
> for these cases?  Is that the desired fix?
> > 
> > P.S.
> > We recommend:
> > * a problem is in trunk (unstable trunk/branch), the patch should be for trunk
> > * a problem isn't in trunk but in ruby_1_8 (stable branch), the patch should be for ruby_1_8
> > * a problem is only in release branch, the patch should be for the branch
> > If you test some releases please write them, and we can remember to backport to the release branch.
> 
> OK, I'll explore the structure in a little more detail, then, so I'm
> working on the correct part.  Thank you.

Checked http://www.ruby-lang.org/en/community/ruby-core/#patching-ruby
and I have a checkout of trunk, it seems, in a dir called ruby.

My patch against that is like this at the moment:


Index: ext/zlib/zlib.c
===================================================================
--- ext/zlib/zlib.c	(revision 26420)
+++ ext/zlib/zlib.c	(working copy)
@@ -2420,7 +2420,12 @@
 }
 
 /*
- * See Zlib::GzipReader#wrap and Zlib::GzipWriter#wrap.
+ * Creates a GzipFile object associated with ((|io|)), and
+ * executes the block with the newly created GzipFile object,
+ * just like File::open. The GzipFile object will be closed
+ * automatically after executing the block. If you want to keep
+ * the associated IO object opening, you may call
+ * ((<Zlib::GzipFile#finish>)) method in the block.
  */
 static VALUE
 rb_gzfile_s_wrap(int argc, VALUE *argv, VALUE klass)
@@ -2785,7 +2790,7 @@
  *
  * Opens a file specified by +filename+ for writing gzip compressed data, and
  * returns a GzipWriter object associated with that file.  Further details of
- * this method are found in Zlib::GzipWriter.new and Zlib::GzipWriter#wrap.
+ * this method are found in Zlib::GzipWriter.new and Zlib::GzipFile#wrap.
  */
 static VALUE
 rb_gzwriter_s_open(int argc, VALUE *argv, VALUE klass)
@@ -2985,7 +2990,7 @@
  *
  * Opens a file specified by +filename+ as a gzipped file, and returns a
  * GzipReader object associated with that file.  Further details of this method
- * are in Zlib::GzipReader.new and ZLib::GzipReader.wrap.
+ * are in Zlib::GzipReader.new and ZLib::GzipFile.wrap.
  */
 static VALUE
 rb_gzreader_s_open(int argc, VALUE *argv, VALUE klass)
Index: ext/zlib/doc/zlib.rd
===================================================================
--- ext/zlib/doc/zlib.rd	(revision 26420)
+++ ext/zlib/doc/zlib.rd	(working copy)
@@ -485,7 +485,12 @@
 
 --- Zlib::GzipFile.wrap(args...) {|gz| ... }
 
-    See ((<Zlib::GzipReader.wrap>)) and ((<Zlib::GzipWriter.wrap>)).
+    Creates a GzipFile object associated with ((|io|)), and
+    executes the block with the newly created GzipFile object,
+    just like File::open. The GzipFile object will be closed
+    automatically after executing the block. If you want to keep
+    the associated IO object opening, you may call
+    ((<Zlib::GzipFile#finish>)) method in the block.
 
 --- Zlib::GzipFile.open(args...) {|gz| ... }
 


And this means in the rd document I have left the references in to
GzipReader#wrap and GzipWriter#wrap.  The case for doing that is
that the object passed into the block will not be the superclass of
these, I think, which seems to be what this code is saying:

    VALUE obj = rb_class_new_instance(argc, argv, klass);

    if (rb_block_given_p()) {
          return rb_ensure(rb_yield, obj, gzfile_ensure_close, obj) ;
    }

That is, the GzipReader#wrap will yield a GzipReader, not a GzipFile.
In the rdocs, I've just left the user to figure out the inheritance.

Is that what you had in mind for the right fix, or am I at cross-purposes?

        Thank you,
        Hugh

In This Thread

Prev Next