[#27380] [Bug #2553] Fix pthreads slowness by eliminating unnecessary sigprocmask calls — Dan Peterson <redmine@...>
Bug #2553: Fix pthreads slowness by eliminating unnecessary sigprocmask calls
Issue #2553 has been updated by Andre Nathan.
2010/7/10 Andre Nathan <redmine@ruby-lang.org>:
[#27388] [Bug #2554] Net::FTP should not use MSG_OOB — Hongli Lai <redmine@...>
Bug #2554: Net::FTP should not use MSG_OOB
[#27393] Re: compressed pointers? — Roger Pack <rogerdpack2@...>
Martin wrote:
[#27420] closing of the stderr pipe not detected - issue in 1.9.1? — Robert Klemme <shortcutter@...>
Hi,
2010/1/5 Robert Klemme <shortcutter@googlemail.com>:
2010/1/5 Tanaka Akira <akr@fsij.org>:
[#27425] [Bug #2559] IO#write raises Errno::EINVAL instead of expected Errno::EPIPE — Hongli Lai <redmine@...>
Bug #2559: IO#write raises Errno::EINVAL instead of expected Errno::EPIPE
[#27429] [Bug #2560] IO.read not always closes the file — Vladimir Sizikov <redmine@...>
Bug #2560: IO.read not always closes the file
[#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%.
[#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
[#27448] [Feature:trunk] adding hooks for better tracing — Yugui <yugui@...>
Hi,
[#27504] C can't instantiate over existing classes? — Roger Pack <rogerdpack2@...>
Is this expected? [1.9.1]
[#27522] require behavior in 1.9 with respect to loading files with different extensions — Dirkjan Bussink <d.bussink@...>
Hi,
Hi,
[#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().
Issue #2594 has been updated by Kurt Stephens.
[#27551] [Bug #2595] Add crc32_combine and adler32_combine to zlib API — Aaron Patterson <redmine@...>
Bug #2595: Add crc32_combine and adler32_combine to zlib API
Hi Aaron,
On Tue, Jan 19, 2010 at 10:22:25AM +0900, NAKAMURA, Hiroshi wrote:
[#27625] [Bug #2616] unable to trap in doze — Roger Pack <redmine@...>
Bug #2616: unable to trap in doze
[#27635] [Bug #2619] Proposed method: Process.fork_supported? — Hongli Lai <redmine@...>
Bug #2619: Proposed method: Process.fork_supported?
Issue #2619 has been updated by Luis Lavena.
Hi,
On Thu, Jan 21, 2010 at 11:27 PM, Yukihiro Matsumoto <matz@ruby-lang.org> w=
Hi,
On Fri, Jan 22, 2010 at 1:25 PM, Yukihiro Matsumoto <matz@ruby-lang.org> wr=
On Fri, Jan 22, 2010 at 9:06 PM, Charles Oliver Nutter
2010/1/21 Hongli Lai <redmine@ruby-lang.org>:
On 1/21/10 5:20 AM, Tanaka Akira wrote:
2010/1/21 Hongli Lai <hongli@plan99.net>:
On Thu, Jan 21, 2010 at 10:53 AM, Tanaka Akira <akr@fsij.org> wrote:
On Thu, Jan 21, 2010 at 12:49 PM, Vladimir Sizikov <vsizikov@gmail.com> wrote:
On 1/21/10 8:09 PM, Charles Oliver Nutter wrote:
2010/1/22 Vladimir Sizikov <vsizikov@gmail.com>:
On Thu, Jan 21, 2010 at 9:43 PM, Tanaka Akira <akr@fsij.org> wrote:
2010/1/22 Charles Oliver Nutter <headius@headius.com>:
Hi,
>> I propose a method Process.fork_supported? which returns whether fork is supported on the current platform. See attached patch.
On 1/25/10 3:46 PM, Roger Pack wrote:
[#27656] A patch to rdoc — Tetsu Soh <tetsu.soh.dev@...>
Hello everyone,
[#27670] able to re-require $0 — Roger Pack <rogerdpack2@...>
Currently with 1.9.x you cannot "re-require" a file, even if you pass
Hi,
Hi,
Hi,
[#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
[#27701] [Feature #2631] Allow IO#reopen to take a block — Daniel Berger <redmine@...>
Feature #2631: Allow IO#reopen to take a block
[#27722] [Feature #2635] Unbundle rdoc — Yui NARUSE <redmine@...>
Feature #2635: Unbundle rdoc
Hi,
Issue #2635 has been updated by Yui NARUSE.
[#27748] [Bug #2636] Incorrect UTF-16 string length — Vincent Isambart <redmine@...>
Bug #2636: Incorrect UTF-16 string length
2010/1/24 Vincent Isambart <redmine@ruby-lang.org>:
What needs to be fixed here is the data, nothing else:
[#27753] [Bug #2637] unable to select for < 0.1s in windows — Roger Pack <redmine@...>
Bug #2637: unable to select for < 0.1s in windows
[#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.
[#27790] [Feature #2643] test/unit redefinition check of test_* method — Yusuke Endoh <redmine@...>
Feature #2643: test/unit redefinition check of test_* method
[#27791] [Bug #2644] memory over-allocation with regexp — Greg Hazel <redmine@...>
Bug #2644: memory over-allocation with regexp
Issue #2644 has been updated by Greg Hazel.
[#27794] [Bug #2647] Lack of testing for String#split — Hugh Sasse <redmine@...>
Bug #2647: Lack of testing for String#split
[#27828] [Bug #2656] Inconsistent docs for Zlib. — Hugh Sasse <redmine@...>
Bug #2656: Inconsistent docs for Zlib. [ruby-core:27692]
[#27902] Ruby 1.8.7, rb_define_method and ArgumentError: wrong number of arguments (0 for 1) — Gerardo Santana Gez Garrido <gerardo.santana@...>
I have the following method defined in a C extension:
On 1/27/10 8:55 AM, "Gerardo Santana G=F3mez Garrido"
On Wed, Jan 27, 2010 at 11:18 AM, Eero Saynatkari
[#27912] [Bug #2669] mkmf find_executable doesn't find .bat files — Roger Pack <redmine@...>
Bug #2669: mkmf find_executable doesn't find .bat files
Issue #2669 has been updated by Luis Lavena.
[#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,
On Jan 28, 2010, at 10:51 AM, Yusuke ENDOH wrote:
On Jan 28, 2010, at 11:13 AM, James Edward Gray II wrote:
Hi,
On Jan 31, 2010, at 4:40 AM, Yusuke ENDOH wrote:
Hi jeg2,
[#27961] RCR: allow {select, collect, map} to accept symbol argument — Roger Pack <rogerdpack2@...>
Background.
This reply registers the suggestion by Roger to the redmine.
[ruby-core:27543] Re: better GC?
Free beer wouldn't be bad, either ;-) I agree that the overhead would be unacceptable, based on the points you = raised. For true production-level code, performance would be = unacceptable. However, maybe another thing to consider is to work up a simple method = for GC experimentation so that anyone who wanted to try out a new GC = approach could do so without having to get into the guts of everything; = if such a GC ended up being useful it could then be incorporated with = the 'native' build that did not use the 'experimentation hooks'. In other words, what I am suggesting is a 'pluggable' GC architecture = for the purposes of accelerating development of proposed = changes/additions to the language in a more 'agile' manner. Then if a = particular GC were accepted it would be mind-melded into the = production-level code without the hooks so performance is as good as it = can get. This kind of approach might serve well with other aspects of language = development, but the GC issue is by far the biggest in terms of = performance considerations. GC issues killed java credibility for years, = for example, so the faster the growing pains are gotten out of the way, = the better, I would offer. e On Jan 11, 2010, at 10:22 AM, Rick DeNatale wrote: > On Mon, Jan 11, 2010 at 9:42 AM, Erik Scheirer <e@illume.org> wrote: >> I think a pluggable/loadable GC scheme, as long as its really simple = to use, is perfect. >=20 > So would be a lasting world peace! >=20 >> There would be some overhead created by making it pluggable, though, = but in the scheme of things it would be well worth the small amount of = cpu cycles lost. >=20 > I just can't see the feasibility of this. Any good GC involves > careful interaction between the parts of the system which mutate > memory and those which manage it. Getting a highly performant GC > almost always involves careful coordinated design of things like: >=20 > The low-level layout of objects. > The division of memory into various collections of objects (e.g. in a > GC scheme the old objects and the new object live in different spaces, > sometimes the new space moves each time a minor GC happens. > Efficient detection of whether an object is old or new. > For a GC requiring a 'write-barrier', efficient implementation of that > write barrier. > ... >=20 > And to really get the most out of a GC, some of the low level > decisions can be platform and processor specific. >=20 > There are cascading design decisions to be be made. For example, lets > say we're making a generation scavenging GC. We need to capture > enough information as the mutator (the program) runs so that we can > find any new objects which are referenced by an old object. This is > the reason for the write barrier. So there are several issues: >=20 > How do we detect a store of a reference to a new object into an > old object with the lowest overhead. > How do we remember a store into an old object with the lowest = overhead. > ... >=20 > There are several strategies for detecting old vs new objects, each > with it's own tradeoffs, for example: > A flag bit in the object header > Address range checking to see which space it's in, or not in. > On some platforms and processors, one might make use of the virtual > memory hardware and access privileges to detect such stores, but this > is highly non-portable and may or may not outperform other approaches. >=20 > Flag bits need to be maintained properly, and are expensive, see = below. > Address range checking is more common, and goes back to the > interactions with the overall design of the "VM". >=20 > And what about how to remember the old objects which need to be > considered during a new object GC. >=20 > We could perhaps make a linked or set of "remembered" objects, but > this is expensive both in terms of space and speed. >=20 > Most GCs use some form of "card marking" where old space is broken up > in to 'cards' containing a range of memory. Cards are similar to > pages in a virtual memory system, and may or may not be the same in a > particular GC implementation. In such a scheme when a new object > reference is stored in an old object, the fact that has happened is > stored as a change to the card in which the old object resides. The > most obvious way to do this is to have a data structure somewhere > which has a bit for each card. >=20 > But on most processors setting individual bits is expensive involving > fetching, masking, and re-storing a larger datatype. >=20 > The Self guys recognized this and found that for the processors they > were working on using a byte rather than a bit for the mark, was much > better overall despite requiring eight times the space for the marks. >=20 > http://www.cs.ucsb.edu/~urs/oocsb/papers/write-barrier.pdf >=20 > And these are just some of the variations once one has chosen a > particular GC algorithm or perhaps one of a family of GC algorithms. >=20 > Now I know that LLVM attempts to do something like this, >=20 > http://llvm.org/docs/GarbageCollection.html >=20 > but it apparently hasn't been all that successful: >=20 > = http://lhc-compiler.blogspot.com/2009/01/why-llvm-probably-wont-replace-c.= html >=20 >=20 > The problem is that LLVM defines the interface between the mutator and > the GC "framework" in terms of C functions and function callbacks, > e.g. for the write-barrier, whereas a really efficient GC implements > the write barrier(and other GC bookkeeping tasks) in a few machine > instructions. >=20 >=20 > I fear that a pluggable GC would only let you play around with pretty > poorly performing GC alternatives. >=20 > --=20 > Rick DeNatale >=20 > Blog: http://talklikeaduck.denhaven2.com/ > Twitter: http://twitter.com/RickDeNatale > WWR: http://www.workingwithrails.com/person/9021-rick-denatale > LinkedIn: http://www.linkedin.com/in/rickdenatale >=20 >=20