[#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:27756] Re: [Bug #2619] Proposed method: Process.fork_supported?

From: Vladimir Sizikov <vsizikov@...>
Date: 2010-01-24 10:35:17 UTC
List: ruby-core #27756
Hi,

On Sun, Jan 24, 2010 at 5:00 AM, Tanaka Akira <akr@fsij.org> wrote:
> 2010/1/22 Tanaka Akira <akr@fsij.org>:
>
>> FFI cannot test function availability?
>
> It seems attach_function in FFI raises FFI::NotFoundError if the specified
> function is not found.
>
> I don't understand why the detection is not reliable enough.

One of the reasons you've mentioned earlier: ENOSYS on POSIX systems
and E_NOTIMPL/ERROR_CALL_NOT_IMPLEMENTED on Windows. So the mere
presence of the method is not a guarantee that it will actually work
on particular system.

Second, MRI behavior treats in such special way only C-level methods,
while all the Ruby-level methods that raise NotImplementedError are
treated differently. So the users of the API need to know this
low-level/implementation detail in order to understand which method
could be checked with respond_to? and which couldn't.

Third, libffi itself is not supported on all platforms/architectures
where JRuby runs. For those cases we can't use it.
And, in some cases/environments the use of native support in JRuby is
prohibited and we can't use it.

Less important, but still worth mentioning:

Also, not all not-implemented features depend on underlying platform,
some are just can't be implemented sanely on JRuby, that's yet another
special case to handle.

JRuby uses jnr-posix 3rd party library (Java Native Runtime - POSIX),
it doesn't provide the capability to check which method is implemented
and which is not. Not to mention that there is a feature to map posix
method names to local platform method names at *runtime*, which
further complicates the matters, since until you call the method, you
don't know which native method will be actually called. And in some
cases one POSIX-like method is implemented via multiple calls on
particular platfrom (specifically, Windows).

Not to mention that loading FFI (esp. at startup) is costly and we try
to delay it if we can, but with this approach to respond_to? the
method call of respond_to? will cause the loading of FFI. Plus we have
to specialize respond_to? implementations for those classes that could
have "not implemented" methods, this is also not ideal for JVM
performance. And we'd pay some performance penalty for runtime system
capabilities introspection, keeping the lists of "not-implemented"
methods, doing special cases in respond_to?.

So, as you see, this whole thing is just a special case on top of
special case on top of another one. Pretty ugly, and still can't be
100% reliable, and is not really fully documented. While the original
behavior was simple and straightforward: iff there is a method
defined, than respond_to? returns true. This is natural approach in
object-oriented environments, no platform or implementation
capabilities should play a role here.

In those really important cases where is important/critical to
introspect platfrom/API/impl capabilities, there should be a
stand-alone API, and hijacking the base OO instruments for that is not
appropriate, in my opinion.

Thanks,
  --Vladimir

In This Thread