develooper Front page | perl.perl5.porters | Postings from April 2019

[perl #133945] ce6f496d720f6206455628425320badd95b07372 breaks floatformatting under GTK

Thread Previous | Thread Next
From:
James E Keenan via RT
Date:
April 16, 2019 23:29
Subject:
[perl #133945] ce6f496d720f6206455628425320badd95b07372 breaks floatformatting under GTK
Message ID:
rt-4.0.24-4246-1555457335-1806.133945-15-0@perl.org
On Tue, 16 Apr 2019 16:43:42 GMT, public@khwilliamson.com wrote:
> On 4/16/19 7:06 AM, sisyphus wrote:
> >
> > I see that line 6555 of perl.h is presently:
> > #define Perl_strotod(s, e) \
> >
> > I wonder if that was meant to be:
> > #define Perl_strtod(s, e) \
> >
> > (I'll test it.)
> 
> Yes, that's the typo.  But fixing it opens a can of worms.
> Which I believe I have fixed in
> https://perl5.git.perl.org/perl.git/shortlog/refs/heads/smoke-me/khw-
> strtod
> 
> Please check it out.
> >
> > Cheers,
> > Rob
> >
> >
> > On Tue, Apr 16, 2019 at 10:26 PM sisyphus <sisyphus359@gmail.com
> > <mailto:sisyphus359@gmail.com>> wrote:
> >
> > James,
> > Does the following behave as desired ?
> >
> > #####################
> > use warnings;
> > use Inline C => <<'EOC';
> > int foo() {
> > #ifdef Perl_strtod
> >   return 0;
> > #else
> >   return 1;
> > #endif
> > }
> > EOC
> > exit(foo());
> > ####################
> >
> > Cheers,
> > Rob
> >
> > On Tue, Apr 16, 2019 at 9:59 PM James E Keenan <jkeenan@pobox.com
> > <mailto:jkeenan@pobox.com>> wrote:
> >
> > On 4/16/19 4:53 AM, sisyphus wrote:
> >          > Something in the last couple of days has definitely caused
> >          > a
> > reversion
> >          > to use of perl's atof().
> >          >
> >          > This Inline::C script:
> >          > ########################
> >          > use warnings;
> >          > use Inline C => <<'EOC';
> >          > void foo() {
> >          > #ifdef Perl_strtod
> >          >    printf("Perl_strtod defined\n");
> >          > #else
> >          >    printf("Perl_strtod NOT defined\n");
> >          > #endif
> >          > }
> >          > EOC
> >          > foo();
> >          > ########################
> >          >
> >
> > I can confirm this result on Linux.
> >
> > Is there any way your C program could be rewritten such that we
> > get a
> > Perl exit 0 on defined and a Perl exit 1 on NOT defined?  If we had
> > that, then we could plug it into Porting/bisect.pl
> > <http://bisect.pl>.
> >
> >
> >          > reports (on all of my Windows and Linux builds) that
> >          > current
> > blead has
> >          > Perl_strtod NOT defined.
> >          > If Perl_strtod is not defined then I don't think that
> > Perl_strtod can be
> >          > assigning the values - it must surely be perl's atof()
> >          > that's
> > doing the
> >          > assigning.
> >          >
> >          > My -Dusequadmath builds are also afflicted with the issue
> >          > (as
> > they now
> >          > also do not define Perl_strtod). That's not a reversion -
> > this is the
> >          > first time ever that quadmath builds have used perl's
> >          > atof(),
> > and the
> >          > result is not pretty.
> >          >
> >          > Anyway - perhaps it's not your commit that's the culprit.
> >          > It has to be something fairly recent because I built blead
> >          > a
> > couple of
> >          > days ago and it was fine. (My builds do check that
> >          > strtod/strtold/strtoflt128 are being used.)
> >          > I haven't even yet glanced at the current perl source.
> >          > I've
> > instead been
> >          > trying to gauge the scope of the breakage - which is
> > something that took
> >          > me far longer than it ought.
> >          >
> >          > I'll prepare and post that patch to posix.t tonight, and
> >          > try
> > to get my
> >          > head around the perl source tomorrow.
> >          >
> >          > Cheers,
> >          > Rob
> >          >
> >          > On Tue, Apr 16, 2019 at 1:50 PM Karl Williamson
> > <public@khwilliamson.com <mailto:public@khwilliamson.com>
> >          > <mailto:public@khwilliamson.com
> > <mailto:public@khwilliamson.com>>> wrote:
> >          >
> >          >      On 4/15/19 8:39 PM, sisyphus wrote:
> >          >       > Unfortunately this latest commit
> >          >       > (4ac6fab20b8950ee14756c6f2438809c572082cd) gets us
> > back to assigning
> >          >       > values incorrectly. (Perl's test suite will not
> > presently detect
> >          >      this.)
> >          >       > I guess we've now somehow gone back to using
> >          > perl's atof()
> >          >      function for
> >          >       > assignment of floating point values.
> >          >       > At least, it seems that the values being assigned
> >          > are
> > now the
> >          >      same as
> >          >       > the values that perl's atof() assigns.
> >          >
> >          >      I re-inspected the patch and don't see anyway that it
> > could have made
> >          >      this switcheroo.
> >          >       >
> >          >       > A quick check that will catch the problem is to
> >          > run
> > something like:
> >          >       > $ perl -MPOSIX -le 'print "wtf" if
> > POSIX::strtod("8.87359152e-6") !=
> >          >       > 8.87359152e-6;'
> >          >       >
> >          >       > When nvtype is 'double, the value of 8.87359152e-6
> >          > is
> > assigned
> >          >       > incorrectly by perl's atof on a number of
> >          > platforms,
> > including
> >          >      Windows
> >          >       > and Linux - so it's a good value to test.
> >          >       >
> >          >       > Perhaps we should even add that test to the POSIX
> >          > test
> > suite ?
> >          >       > We'd need to test a different value for
> > -Duselongdouble builds -
> >          >      I'll
> >          >       > write a patch for posix.t and submit it later
> >          > today in
> > a separate
> >          >      bug
> >          >       > report.
> >          >
> >          >      That sounds good.
> >          >
> >          >       > That way, if Perl_strtod() is defined but perl's
> > atof() is being
> >          >      used,
> >          >       > we'd find out about it when perl's test suite is
> >          > run.
> >          >       >
> >          >       > Cheers,
> >          >       > Rob
> >          >       >
> >          >       > On Tue, Apr 16, 2019 at 7:53 AM Karl Williamson
> >          > via RT
> >          >       > <perlbug-followup@perl.org
> > <mailto:perlbug-followup@perl.org>
> > <mailto:perlbug-followup@perl.org
> > <mailto:perlbug-followup@perl.org>>
> >          >      <mailto:perlbug-followup@perl.org
> > <mailto:perlbug-followup@perl.org>
> >          >      <mailto:perlbug-followup@perl.org
> > <mailto:perlbug-followup@perl.org>>>> wrote:
> >          >       >
> >          >       >     This should be fixed by
> >          >       >     commit
> >          > 4ac6fab20b8950ee14756c6f2438809c572082cd
> >          >       >       Author: Karl Williamson <khw@cpan.org
> > <mailto:khw@cpan.org> <mailto:khw@cpan.org <mailto:khw@cpan.org>>
> >          >      <mailto:khw@cpan.org <mailto:khw@cpan.org>
> > <mailto:khw@cpan.org <mailto:khw@cpan.org>>>>
> >          >       >       Date:   Mon Apr 15 11:10:31 2019 -0600
> >          >       >
> >          >       >           PATCH: [perl #133945] Perl_strtod
> >          > failures
> >          >       >
> >          >       >           This commit wraps Perl_strtod() in
> >          > macros
> > that cause the
> >          >       >     proper radix
> >          >       >           character to be used.
> >          >       >
> >          >       >     --
> >          >       >     Karl Williamson
> >          >       >
> >          >       >     ---
> >          >       >     via perlbug:  queue: perl5 status: open
> >          >       > https://rt.perl.org/Ticket/Display.html?id=133945
> >          >       >
> >          >
> >

With a perl built in the smoke-me/khw_strtod branch, I run Sisyphus's program and get:

#####
[khw-strtod] 506 $ ./bin/perl -Ilib ~/learn/perl/p5p/133945-strtod.pl 
Perl_strtod NOT defined
#####

Is that the expected result?

Thank you very much.
-- 
James E Keenan (jkeenan@cpan.org)

---
via perlbug:  queue: perl5 status: pending release
https://rt.perl.org/Ticket/Display.html?id=133945

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About