[#30995] [Bug #3523] win32 exception c0000029 on exit using fibers — B Kelly <redmine@...>
Bug #3523: win32 exception c0000029 on exit using fibers
Issue #3523 has been updated by B Kelly.
Issue #3523 has been updated by Usaku NAKAMURA.
Hello,
Hi,
Bill Kelly wrote:
Hi,
Hello,
[#31047] [bug:trunk] psych tests sometimes fail — Tanaka Akira <akr@...>
psych tests sometimes fail.
Issue #3538 has been updated by Aaron Patterson.
[#31053] [Bug #3540] IO.copy_stream fails to detect client disconnect w/sendfile — Eric Wong <redmine@...>
Bug #3540: IO.copy_stream fails to detect client disconnect w/sendfile
2010/7/6 Eric Wong <redmine@ruby-lang.org>:
Tanaka Akira <akr@fsij.org> wrote:
[#31072] Why is the inherited callback invoked at different times for static vs. dynamic subclasses? — Jacob Lauemøller <jacob.lauemoeller@...>
Hi all,
Hi Jacob,
Masaya TARUI wrote:
Hi,
[#31100] [rubysoc] Queue C-extension patch to come — Ricardo Panaggio <panaggio.ricardo@...>
Hello,
On Wed, Jul 07, 2010 at 10:55:58AM +0900, Ricardo Panaggio wrote:
> As this it my first patch to Ruby, I don't know where to begin with.
Sorry for leaving this thread for so long. I've tried to finish the
On Sat, Jul 17, 2010 at 06:55:35AM +0900, Ricardo Panaggio wrote:
NB: I am Ricardo's mentor for this project.
On 17 July 2010 06:00, Caleb Clausen <vikkous@gmail.com> wrote:
On 7/17/10, Benoit Daloze <eregontp@gmail.com> wrote:
I've done this using the existing test of Queue, modifying it a little
Hi,
Hi,
On Sun, Jul 18, 2010 at 09:43:07PM +0900, Benoit Daloze wrote:
Nobu,
Hi,
[#31117] [Bug #3549] Segfault when using god — David Kelso <redmine@...>
Bug #3549: Segfault when using god
[#31138] Why is there no standard way of creating a String from a char *? — Nikolai Weibull <now@...>
Hi!
(2010/07/09 7:04), Nikolai Weibull wrote:
On Fri, Jul 9, 2010 at 06:20, Urabe Shyouhei <shyouhei@ruby-lang.org> wrote:
(2010/07/09 18:28), Nikolai Weibull wrote:
On Fri, Jul 9, 2010 at 11:58, Urabe Shyouhei <shyouhei@ruby-lang.org> wrote:
(2010/07/09 19:22), Nikolai Weibull wrote:
On Fri, Jul 9, 2010 at 15:12, Urabe Shyouhei <shyouhei@ruby-lang.org> wrote:
[#31169] [Bug #3555] segvs since r28570 — Aaron Patterson <redmine@...>
Bug #3555: segvs since r28570
[#31177] [Bug #3556] FileUtils.mkdir_p fails trying to create C: under Windows — Luis Lavena <redmine@...>
Bug #3556: FileUtils.mkdir_p fails trying to create C: under Windows
[#31178] [Bug #3557] Marshal.dump fails for large Arrays of Arrays — Andrew Jankevics <redmine@...>
Bug #3557: Marshal.dump fails for large Arrays of Arrays
[#31186] [Bug #3558] Passing args with rb_block_call — Asher Haig <redmine@...>
Bug #3558: Passing args with rb_block_call
[#31217] [Bug #3562] regression in respond_to? — Aaron Patterson <redmine@...>
Bug #3562: regression in respond_to?
Issue #3562 has been updated by Yusuke Endoh.
[#31234] [Bug #3563] problems with exponentiation, cbrt — Kevin Olbrich <redmine@...>
Bug #3563: problems with exponentiation, cbrt
[#31238] [Bug #3564] 'gem uninstall' doesn't remove executables which were installed with --format-executable option — Kenta Murata <redmine@...>
Bug #3564: 'gem uninstall' doesn't remove executables which were installed with --format-executable option
[#31269] [Bug #3566] memory leak when spawning+joining Threads in a loop — Eric Wong <redmine@...>
Bug #3566: memory leak when spawning+joining Threads in a loop
Hi,
Yusuke ENDOH <mame@tsg.ne.jp> wrote:
Eric Wong <normalperson@yhbt.net> wrote:
Hi,
On Fri, Jul 16, 2010 at 7:42 AM, Yusuke ENDOH <mame@tsg.ne.jp> wrote:
[#31272] [Bug #3466][Open] leak when using Rails and Ruby 1.9.2 — Aaron Patterson <redmine@...>
Issue #3466 has been updated by Aaron Patterson.
[#31336] Bug? Ruby 1.9.2-rc1: instance_eval can't handle a lambda (needs a proc) — Gavin Sinclair <gsinclair@...>
I raised this on ruby-talk ( http://bit.ly/bruL6B ) and Caleb Clausen
[#31349] [Bug #3586] Using Nokogiri-1.4.2 with ruby 1.9.2dev (2010-07-06 revision 28549) and Rails3.beta4 — TJ Koblentz <redmine@...>
Bug #3586: Using Nokogiri-1.4.2 with ruby 1.9.2dev (2010-07-06 revision 28549) and Rails3.beta4
[#31352] --export-all revisited — Roger Pack <rogerdpack2@...>
Hi . Noted that in 1.9.x the "--export-all" parameter has been removed
Hi,
>> However this requires *all* authors who want their gems to compile on
[#31353] [Bug #3587] windows: unable to sleep < 0.015s — Roger Pack <redmine@...>
Bug #3587: windows: unable to sleep < 0.015s
[#31373] [Bug #3462] gem activation fails for native gems — Yusuke Endoh <redmine@...>
Issue #3462 has been updated by Yusuke Endoh.
[#31377] [Bug #3590] RubyGems is Broken — Sora Harakami <redmine@...>
Bug #3590: RubyGems is Broken
[#31385] [Feature #3591] Adding Numeric#divisor? (Have working implementation) — Nick Markwell <redmine@...>
Feature #3591: Adding Numeric#divisor? (Have working implementation)
[#31399] [Backport #3595] Theres no encoding to differentiate a stream of Binary data from an 8-Bit ASCII string — Dreamcat Four <redmine@...>
Backport #3595: Theres no encoding to differentiate a stream of Binary data from an 8-Bit ASCII string
Issue #3595 has been updated by Dreamcat Four.
[#31454] [Bug #3606] Thread.stop and puts fail to work as documented. — Heesob Park <redmine@...>
Bug #3606: Thread.stop and puts fail to work as documented.
[#31459] [Bug #3607] [trunk/r28731] Gem.path has disappeared? — Ollivier Robert <redmine@...>
Bug #3607: [trunk/r28731] Gem.path has disappeared?
Issue #3607 has been updated by Jon Forums.
There are custom changes to rubygems in trunk that are not yet in rubygems master. You can not use rubygems master or any other version of rubygems with 1.9 trunk other than the version that 1.9 trunk ships with.
[#31462] IO.new do not inherit the mode specified in IO.sysopen? — Luis Lavena <luislavena@...>
Hello,
Hi,
[#31484] [Bug #3616] IRB + readline incorrectly counts non-printing characters in prompt — Sung Pae <redmine@...>
Bug #3616: IRB + readline incorrectly counts non-printing characters in prompt
[#31485] [Bug #3617] respond_to?(:gem) is false in 1.9.2-rc2 — Suraj Kurapati <redmine@...>
Bug #3617: respond_to?(:gem) is false in 1.9.2-rc2
[#31559] non-blocking I/O constantly clearing cache in 1.9.2 — Eric Wong <normalperson@...>
Hi all,
[#31567] [Bug #3637] win32ole: Remove definition of NONAMELESSUNION in MinGW — Luis Lavena <redmine@...>
Bug #3637: win32ole: Remove definition of NONAMELESSUNION in MinGW
[ruby-core:31476] [Bug #3589] Converting Bignums to Float for equality checks is wrong
Issue #3589 has been updated by Tomasz Wegrzanowski.
> > Integer 10 means exactly 10, not everything that would end up as 10 if rounded. 10 == 10.2 #=> false
> but 10 == 10.0. 100000000000000000000000 should == 100000000000000000000000.0
> You know, if you think it should not, you have to persuade us.
> # Assigning this to matz because it turned out to be a design matter.
To me 100000000000000000000000.0 means 100000000000000000000000.to_f,
or "floating point number closest to 100000000000000000000000".
This doesn't have to be exactly 100000000000000000000000.
Some arguments follow.
== Argument from other languages ==
This treatment of float equality seem to be unique to Ruby.
Compare with Python:
print(100000000000000000000000 == 100000000000000000000000.0) #=> False
print( 99999999999999991611392 == 100000000000000000000000.0) #=> True
print(Fraction(1,3) == 1.0/3.0) #=> False
print(Fraction(1,4) == 1.0/4.0) #=> True
With Perl it's more complicated, as Perl's standard number type
switches between native int, native float, and decimal the way Ruby switches
between fixint and bigint - so 1000000000000000000.0 in Perl is
decimal, not float and so exact.
Still, it doesn't follow "equal if converts".
This is the same regardless of $x being decimal or float internally.
my $x = 1000000000000000000;
my $a = Math::BigInt->new('1000000000000000000');
my $b = Math::BigInt->new('1000000000000000001');
print($x == $a->numify() ? "equal" : "not"); #=> equal
print($x == $b->numify() ? "equal" : "not"); #=> equal
print($x == $a ? "equal" : "not"); #=> equal
print($x == $b ? "equal" : "not"); #=> not
A counterexample to this would be C, which is quite explicit that
operations involving different numeric types involve implicit conversion.
It doesn't have bignums, but comparing float vs int or
double vs long long will convert and lose precision before comparison.
It also loses precision this way when comparing integers of
different signedness etc. - this mess is a good example of what
we shouldn't do ;-)
== Argument from sort ==
What would you guess this code to print?
# Build array of bignums, add extra floats
big = 10**50
values = (1..10).map{|x| big + x}
values += (1..10).map{ big.to_f }
# Make sure it's sorted
values.shuffle!
values.sort!
# Just cleanup for printing
values.reject!{|x| x.is_a?(Float)}
values.map!{|x| x - big}
p values
If you guessed [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
you'd be wrong most of the time.
sort relies on transitivity of <=>, so if <=>
says big.to_f equals both big+1 and big+7,
it naturally assumes big+1 <=> big+7 will also be 0.
It's not a bug in sort - it's how <=> works for everything
except floats.
== Argument from mathematics ==
Ruby has a few equality-like relations - ==, eql?, equal?.
They differ, but they're all (almost) mathematical equivalence relations.
For all three, these can be expected:
* a == a
* a == b iff b == a
* if a == b and b == c then a == c
I can think of one good exception to a == a -
with things like float NaNs and sql nulls - but these really
are more techniques for handling errors than real values.
I really cannot think of a single case where it would
make sense to make equality either non-symmetric,
or non-transitive.
Similar reasoning applies to <=> - normally it defines
partial order between objects:
* a >= b and b >= a only if a == b
* if a >= b and b >= c then a >= c
Transitivity of equality, and transitivity of partial ordering
seem to be violated only in one case in Ruby - for comparisons
between floats and other numeric types. (and this causes sort
to break).
Can you think of any other type that does something like that?
== Argument from rationals ==
When you have mixed type operations, and one type is bigger,
the most obvious thing to do is simply converting argument
of smaller type to bigger type.
For example you can define pretty much every Rational vs Integer
operation as:
class Rational
def something(x)
x = x.to_r if x.is_a?(Integer)
...
And you can do this for Complex operations
and non-complex arguments etc.
You never do it the other way around -
converting to smaller type.
This would be obviously wrong:
class Integer
def something(x)
x = x.to_i if x.is_a?(Rational)
...
So why, if Rational can represent every floating
point value (except nans/infinities/negative zero that is),
do rational vs float operations downconvert to float,
instead of upconverting to rational?
I can think of no other such case anywhere.
With bignum vs float, neither is strictly wider than other,
but both can be represented as rationals.
This doesn't mean I want bignum + float to return rationals,
downconversion before returning is perfectly fine.
I just want it to be pretty much equivalent to this:
class Integer
def +(x)
if x.is_a?(Float) and x.finite?
return (self.to_r + x.to_r).to_f
...
== Argument from IEEE 754 ==
This .to_r/.to_f above might be puzzling, but look at this.
All basic floating point operations are defined by IEEE 754
standard as mathematically equivalent to this:
def +(x)
return (self.to_real + x.to_real).to_f(rounding_mode)
end
Where .to_real means conversion to actual mathematical
real number with potentially infinite precision, all extra
bits being 0s.
Of course it's not implemented like that - but the result
is guaranteed to be exactly the same as if it was.
== Other inaccuracies ==
I'm not really terribly bothered by that, only by equality
and <=>, but a lot of operations involving floats and other
types downconvert to float too early and lose precision.
puts(Rational(15,11)*11.0 == 15.0) #=> false
puts((Rational(15,11) * 11.0.to_r).to_f == 15.0) # => true
puts(100000000000000000000000 - 100000000000000000000000.0) #=> 0
puts((100000000000000000000000 - 100000000000000000000000.0.to_i).to_f) #=> 8388608.0
Such precision loss never happens for anything that involves
only floats, or only non-floats. And it really wouldn't be
that difficult to avoid it if we cared, but if even I don't,
I doubt others will.
----------------------------------------
http://redmine.ruby-lang.org/issues/show/3589
----------------------------------------
http://redmine.ruby-lang.org