[#29911] [Bug #3231] Digest Does Not Build — Charlie Savage <redmine@...>
Bug #3231: Digest Does Not Build
[#29920] [Feature #3232] Loops (while/until) should return last statement value if any, like if/unless — Benoit Daloze <redmine@...>
Feature #3232: Loops (while/until) should return last statement value if any, like if/unless
Hi,
On 2 May 2010 01:56, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
Hi,
On 2 May 2010 15:24:52 UTC+2, Nobuyoshi Nakada <nobu@ruby-lang.org> wrote:
[#29953] [Bug #3241] gem update --system Segmentation fault — Benedikt Eickhoff <redmine@...>
Bug #3241: gem update --system Segmentation fault
Hi,
On Mon, May 03, 2010 at 08:55:14PM +0900, Yusuke ENDOH wrote:
[#29993] [Feature:trunk] thread-local yamler — Nobuyoshi Nakada <nobu@...>
Hi,
[#29997] years in Time.utc — Xavier Noria <fxn@...>
Does anyone have a precise statement about the years supported by
On Tue, May 4, 2010 at 8:05 AM, Xavier Noria <fxn@hashref.com> wrote:
Hi,
Hi,
[#30002] 1.9.1 lib dirs? — Roger Pack <rogerdpack2@...>
Hi all.
On Tue, May 4, 2010 at 3:00 PM, Roger Pack <rogerdpack2@gmail.com> wrote:
[#30010] [Bug #3248] extension 'tk' is finding tclConfig.sh and tkConfig.sh incorrectly — Luis Lavena <redmine@...>
Bug #3248: extension 'tk' is finding tclConfig.sh and tkConfig.sh incorrectly
Issue #3248 has been updated by Luis Lavena.
[#30023] [Bug #3250] [BUG] Segmentation fault — Diogo Almeida <redmine@...>
Bug #3250: [BUG] Segmentation fault
[#30070] [Bug #3255] Trunk fail to build without explicit ./configure options (yaml.h not found) — Benoit Daloze <redmine@...>
Bug #3255: Trunk fail to build without explicit ./configure options (yaml.h not found)
Hi,
[#30094] suggestion: switch default name for BINARY encoding — Roger Pack <rogerdpack2@...>
Situation:
(2010/05/08 7:50), Roger Pack wrote:
[#30145] [Bug #3273] Float string conversion — Marc-Andre Lafortune <redmine@...>
Bug #3273: Float string conversion
[#30154] [Bug #3275] incompatibility of testrb — Yusuke Endoh <redmine@...>
Bug #3275: incompatibility of testrb
[#30175] [Problem] DATA and __END__ in a loaded rb file — Charles Cui <zheng.cuizh@...>
how to get global constant DATA in file <a.rb>,if a.rb is loaded by b.rb.
[#30182] [Bug #3281] fail to build fiddle on Debian/lenny by default — Yusuke Endoh <redmine@...>
Bug #3281: fail to build fiddle on Debian/lenny by default
2010/5/12 Yusuke Endoh <redmine@ruby-lang.org>:
On Wed, May 12, 2010 at 11:26:44PM +0900, Tanaka Akira wrote:
2010/5/14 Aaron Patterson <aaron@tenderlovemaking.com>:
[#30226] [Bug #3288] Segmentation fault - activesupport-3.0.0.beta3/lib/active_support/callbacks.rb:88 — Szymon Jeż <redmine@...>
Bug #3288: Segmentation fault - activesupport-3.0.0.beta3/lib/active_support/callbacks.rb:88
Issue #3288 has been updated by Szymon Je甜.
[#30249] [Bug #3299] revision.h rule in common.mk is broken for MSVC — Romulo Ceccon <redmine@...>
Bug #3299: revision.h rule in common.mk is broken for MSVC
[#30290] [Bug #3309] net/http calls leak memory and file handles in windows — Pete Higgins <redmine@...>
Bug #3309: net/http calls leak memory and file handles in windows
[#30315] [Bug #3320] emacs ruby-mode.el font-lock fails on symboled string ending with ? — Zev Blut <redmine@...>
Bug #3320: emacs ruby-mode.el font-lock fails on symboled string ending with ?
[#30323] [Feature #3322] Simple Patch to make ruby copy-on-write-friendly — Daniel DeLorme <redmine@...>
Feature #3322: Simple Patch to make ruby copy-on-write-friendly
[#30358] tk doesn't startup well in doze — Roger Pack <rogerdpack2@...>
Currently with 1.9.x and tk 8.5,the following occurs
From: Roger Pack <rogerdpack2@gmail.com>
> Does it occur with RubyTk-Kit version (it based on latest tcltklib.c)?
[#30401] [Bug #3336] Memory leak in IO.select() on Windows — HD Moore <redmine@...>
Bug #3336: Memory leak in IO.select() on Windows
[#30406] [Bug #3337] MS-DOS device names are identified as readable_real — HD Moore <redmine@...>
Bug #3337: MS-DOS device names are identified as readable_real
[#30434] [Feature #3346] __DIR__ revisted — Thomas Sawyer <redmine@...>
Feature #3346: __DIR__ revisted
[#30449] [Bug #3350] Protected methods & documentation — Marc-Andre Lafortune <redmine@...>
Bug #3350: Protected methods & documentation
[#30451] [Bug #3352] Delegates: protected methods — Marc-Andre Lafortune <redmine@...>
Bug #3352: Delegates: protected methods
[#30513] [Bug #3365] floats revisited (see bug 1841) — Roberto Tomás Collins McCarthy <redmine@...>
Bug #3365: floats revisited (see bug 1841)
[ruby-core:30039] Re: [Bug #3212] ConditionVariable may become inconsistent for interrupted threads
On 5/5/10, Yusuke ENDOH <mame@tsg.ne.jp> wrote:
> I think so, honestly.
> We need contribution from those who are familiar with multi-thread
> programing.
I have some familiarity with threads from my real-time programming
days. I'm willing to try to help out where and when I can.
AFAICT, Silvain's proposed fix is mostly correct. I've made a couple
of minor revisions below: the rescue clause should read 'rescue
Exception' to ensure the cleanup happens on all exceptions, and I've
added a raise at the end so the exception will be re-raised rather
than having a normal return. Silvain, (or Yusuke, or anyone) please do
correct me if either of these is wrong.
def wait(mutex)
t = Thread.current
@waiters_mutex.synchronize do
@waiters.push(t)
end
mutex.sleep
rescue Exception
@waiters_mutex.synchronize do
@waiters.delete(t)
end
raise
end
<WARNING: rant on thread api design coming>
It looks to me like real, actual semaphores would not have had this
problem at all.
I've so far been just skimming this particular issue, tho, because
it's about condition variables which I understand but poorly and have
philosophical objections to. Every time someone uses a condition
variable, I think, "Why make it so complicated? Why not just use a
semaphore?" (I can see that there is a use case for condvars in order
to prevent a thread from holding a lock while it is waiting on some
asynchronous event.... but most event waits do not fall neatly into
this pattern. )
The problem with condvars is they're so hard to use. You need 3
separate data structures to use a condvar: the mutex that surrounds
it, the condvar itself, and a flag variable to store the condvar's
state. Those 3 have to be combined in the right way, or you end up
with a hard to find bug. All that is fine if you actually need to wait
while holding a lock. When you don't it's klunky and error-prone. With
a semaphore, its all right in the semaphore, that's all you need. No
mutex, no separate flag. You can just #give and #take the semaphore
with a dirt-simple api.
Of course, the problem with "just use a semaphore" in ruby is that
there ARE NO semaphores in ruby. That's because ruby slavishly copies
the pthreads API... which was written by a bunch of old unix hands
who, like Yusuke, were not all that "familiar with multi-thread
programing". So they slavishly copied what they read in the
literature, which gave them only a partial view of the problem. (At
least, that's my (distinctly unhumble) take on the situation.)
I am convinced, however, that semaphores can be provided by MRI, both
under the current regime of the giant interpreter lock and in the
future when we have truly parallel threads. I can explain in detail if
anyone wants to hear.
</OK, you were warned it was a rant>
Am I the only one who likes semaphores? Silvain, I'm particularly
interested in hearing your opinion. Would a semaphore have suited your
purposes as well as a condvar does?