Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bleadperl v5.25.8-68-g94749a5ed2 breaks MAUKE/Quote-Ref-0.03.tar.gz #15843

Closed
p5pRT opened this issue Jan 27, 2017 · 7 comments
Closed

Bleadperl v5.25.8-68-g94749a5ed2 breaks MAUKE/Quote-Ref-0.03.tar.gz #15843

p5pRT opened this issue Jan 27, 2017 · 7 comments
Labels
BBC Blead Breaks CPAN - changes in blead broke a cpan module(s)

Comments

@p5pRT
Copy link

p5pRT commented Jan 27, 2017

Migrated from rt.perl.org#130655 (status was 'resolved')

Searchable as RT130655$

@p5pRT
Copy link
Author

p5pRT commented Jan 27, 2017

From @andk

bisect


commit 94749a5
Author​: Karl Williamson <khw@​cpan.org>
Date​: Tue Dec 20 13​:41​:58 2016 -0700

  Deprecate non-grapheme string delimiter

diagnostics


Wide character in print at t/03-unicode.t line 12.
# Looks like your test exited with 2 before it could output anything.
t/03-unicode.t ..
Dubious, test returned 2 (wstat 512, 0x200)
Failed 6/6 subtests

perl -V


Summary of my perl5 (revision 5 version 25 subversion 9) configuration​:
  Commit id​: 94749a5
  Platform​:
  osname=linux
  osvers=4.8.0-2-amd64
  archname=x86_64-linux-ld
  uname='linux k93msid 4.8.0-2-amd64 #1 smp debian 4.8.11-1 (2016-12-02) x86_64 gnulinux '
  config_args='-Dprefix=/home/sand/src/perl/repoperls/installed-perls/host/k93msid/v5.25.8-68-g94749a5ed2/2d7c -Dmyhostname=k93msid -Dinstallusrbinperl=n -Uversiononly -Dusedevel -des -Ui_db -Dlibswanted=cl pthread socket inet nsl gdbm dbm malloc dl ld sun m crypt sec util c cposix posix ucb BSD gdbm_compat -Uuseithreads -Duselongdouble -DDEBUGGING=-g'
  hint=recommended
  useposix=true
  d_sigaction=define
  useithreads=undef
  usemultiplicity=undef
  use64bitint=define
  use64bitall=define
  uselongdouble=define
  usemymalloc=n
  bincompat5005=undef
  Compiler​:
  cc='cc'
  ccflags ='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
  optimize='-O2 -g'
  cppflags='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
  ccversion=''
  gccversion='6.2.1 20161124'
  gccosandvers=''
  intsize=4
  longsize=8
  ptrsize=8
  doublesize=8
  byteorder=12345678
  doublekind=3
  d_longlong=define
  longlongsize=8
  d_longdbl=define
  longdblsize=16
  longdblkind=3
  ivtype='long'
  ivsize=8
  nvtype='long double'
  nvsize=16
  Off_t='off_t'
  lseeksize=8
  alignbytes=16
  prototype=define
  Linker and Libraries​:
  ld='cc'
  ldflags =' -fstack-protector-strong -L/usr/local/lib'
  libpth=/usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib
  libs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
  perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
  libc=libc-2.24.so
  so=so
  useshrplib=false
  libperl=libperl.a
  gnulibc_version='2.24'
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs
  dlext=so
  d_dlsymun=undef
  ccdlflags='-Wl,-E'
  cccdlflags='-fPIC'
  lddlflags='-shared -O2 -g -L/usr/local/lib -fstack-protector-strong'

Characteristics of this binary (from libperl)​:
  Compile-time options​:
  HAS_TIMES
  PERLIO_LAYERS
  PERL_COPY_ON_WRITE
  PERL_DONT_CREATE_GVSV
  PERL_MALLOC_WRAP
  PERL_OP_PARENT
  PERL_PRESERVE_IVUV
  PERL_USE_DEVEL
  USE_64_BIT_ALL
  USE_64_BIT_INT
  USE_LARGE_FILES
  USE_LOCALE
  USE_LOCALE_COLLATE
  USE_LOCALE_CTYPE
  USE_LOCALE_NUMERIC
  USE_LOCALE_TIME
  USE_LONG_DOUBLE
  USE_PERLIO
  USE_PERL_ATOF
  Built under linux
  Compiled at Dec 24 2016 06​:39​:30
  @​INC​:
  /home/sand/src/perl/repoperls/installed-perls/host/k93msid/v5.25.8-68-g94749a5ed2/2d7c/lib/site_perl/5.25.9/x86_64-linux-ld
  /home/sand/src/perl/repoperls/installed-perls/host/k93msid/v5.25.8-68-g94749a5ed2/2d7c/lib/site_perl/5.25.9
  /home/sand/src/perl/repoperls/installed-perls/host/k93msid/v5.25.8-68-g94749a5ed2/2d7c/lib/5.25.9/x86_64-linux-ld
  /home/sand/src/perl/repoperls/installed-perls/host/k93msid/v5.25.8-68-g94749a5ed2/2d7c/lib/5.25.9
  .

--
andreas

@p5pRT
Copy link
Author

p5pRT commented Jan 27, 2017

From @jkeenan

On Fri, 27 Jan 2017 07​:45​:57 GMT, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

bisect
------
commit 94749a5
Author​: Karl Williamson <khw@​cpan.org>
Date​: Tue Dec 20 13​:41​:58 2016 -0700

Deprecate non-grapheme string delimiter

diagnostics
-----------
Wide character in print at t/03-unicode.t line 12.
# Looks like your test exited with 2 before it could output anything.
t/03-unicode.t ..
Dubious, test returned 2 (wstat 512, 0x200)
Failed 6/6 subtests

This test fails because the author has enabled fatalization of warnings in tests.

#####
  1 use warnings FATAL => 'all';
  2 use strict;
  3 use utf8;
  4
  5 use Test​::More tests => 6;
  6
  7 use Quote​::Ref;
  8
  9 is_deeply qwa∘foo bar baz∘, [qw∘foo bar baz∘];
10 is_deeply qwh∘foo bar baz "∘, {qw∘foo bar baz "∘};
11
12 is_deeply qwa∘foo ∞ ♥ bar∘, [qw∘foo ∞ ♥ bar∘];
13 is_deeply qwh∘foo ∞ ♥ bar∘, {qw∘foo ∞ ♥ bar∘};
...
#####

I suspect that in the coming months we will get many BBC reports for fatalization of warnings. They don't (IMO) really constitute blockers for perl-5.26.0. Rather, they indicate what work CPAN authors/maintainers need to do.

Should we track such tickets in some way to indicate this status?

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

@p5pRT
Copy link
Author

p5pRT commented Jan 27, 2017

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Jan 27, 2017

From @andk

On Fri, 27 Jan 2017 05​:38​:53 -0800, "James E Keenan via RT" <perlbug-followup@​perl.org> said​:

  > On Fri, 27 Jan 2017 07​:45​:57 GMT, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

bisect
------
commit 94749a5
Author​: Karl Williamson <khw@​cpan.org>
Date​: Tue Dec 20 13​:41​:58 2016 -0700

Deprecate non-grapheme string delimiter

diagnostics
-----------
Wide character in print at t/03-unicode.t line 12.
# Looks like your test exited with 2 before it could output anything.
t/03-unicode.t ..
Dubious, test returned 2 (wstat 512, 0x200)
Failed 6/6 subtests

  > This test fails because the author has enabled fatalization of
  > warnings in tests.

This can be argued from two sides. C< use warnings FATAL => 'all' > is
not forbidden, the manpage just says, it should be used with care. Under
this premise, the new warning has "the blame".

  > #####
  > 1 use warnings FATAL => 'all';
  > 2 use strict;
  > 3 use utf8;
  > 4
  > 5 use Test​::More tests => 6;
  > 6
  > 7 use Quote​::Ref;
  > 8
  > 9 is_deeply qwa∘foo bar baz∘, [qw∘foo bar baz∘];
  > 10 is_deeply qwh∘foo bar baz "∘, {qw∘foo bar baz "∘};
  > 11
  > 12 is_deeply qwa∘foo ∞ ♥ bar∘, [qw∘foo ∞ ♥ bar∘];
  > 13 is_deeply qwh∘foo ∞ ♥ bar∘, {qw∘foo ∞ ♥ bar∘};
  > ...
  > #####

  > I suspect that in the coming months we will get many BBC reports for
  > fatalization of warnings. They don't (IMO) really constitute
  > blockers for perl-5.26.0. Rather, they indicate what work CPAN
  > authors/maintainers need to do.

  > Should we track such tickets in some way to indicate this status?

I suppose this is a pumpking question. Because whether something is a
blocker is in the end a pumpking decision.

--
andreas

@p5pRT
Copy link
Author

p5pRT commented Jan 31, 2017

From @khwilliamson

This is fixed in blead by 6b9660c
There was an underlying problem beside the fatal warnings all
--
Karl Williamson

@p5pRT p5pRT closed this as completed Jan 31, 2017
@p5pRT
Copy link
Author

p5pRT commented Jan 31, 2017

@khwilliamson - Status changed from 'open' to 'resolved'

@p5pRT
Copy link
Author

p5pRT commented Feb 3, 2017

From @ilmari

"James E Keenan via RT" <perlbug-followup@​perl.org> writes​:

On Fri, 27 Jan 2017 07​:45​:57 GMT, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

bisect
------
commit 94749a5
Author​: Karl Williamson <khw@​cpan.org>
Date​: Tue Dec 20 13​:41​:58 2016 -0700

Deprecate non-grapheme string delimiter

diagnostics
-----------
Wide character in print at t/03-unicode.t line 12.
# Looks like your test exited with 2 before it could output anything.
t/03-unicode.t ..
Dubious, test returned 2 (wstat 512, 0x200)
Failed 6/6 subtests

This test fails because the author has enabled fatalization of warnings in tests.

That's just masking the real error message, which happens to contain a
wide character. If you disable the fatal warnings, you get​:

#####
  1 use warnings;
2 use strict;
3 use utf8;
4
5 use Test​::More tests => 6;
6
7 use Quote​::Ref;
8
9 is_deeply qwa foo bar baz , [qw foo bar baz ];
10 is_deeply qwh foo bar baz " , {qw foo bar baz " };
11
12 is_deeply qwa foo bar , [qw foo bar ];
13 is_deeply qwh foo bar , {qw foo bar };
...
#####

ilmari@​garkbit​:~/.cpanm/work/1485526294.17204/Quote-Ref-0.03$ prove -bv t/03-unicode.t
t/03-unicode.t ..
1..6
Wide character in print at t/03-unicode.t line 12.
Unrecognized character \x{2665}; marked by <-- HERE after [qw foo <-- HERE near column 39 at t/03-unicode.t line 12.
# Looks like your test exited with 2 before it could output anything.
Dubious, test returned 2 (wstat 512, 0x200)
Failed 6/6 subtests

This reduces to the following​:

$ perl5.25.9 -CS -Mutf8 -wE 'say qw bar '
Unrecognized character \x{2665}; marked by <-- HERE after qw foo <-- HERE near column 14 at -e line 1.

Which is a regression​:

$ perl5.25.8 -CS -Mutf8 -wE 'say qw foo bar '
foo bar

In fact it seems like if the opening delimiter is above U+100, any
closing delimiter in the same U+x000 range matches, until we get to
U+10000, above which even cross-range delimiters match.

  #!/usr/bin/env perl

  use utf8;
  use strict;
  use warnings;
  use open qw(​:std :utf8);
  use experimental qw(regex_sets);
  use feature qw(unicode_eval);

  my @​delims = map {
  my $s = $_ * 0x1000;
  my $e = $s + 0xfff;
  # Get the first two accepatble delimiters in this block
  my ($o, $c) = grep /(?[ \p{Assigned} & !(
  \p{Letter} | \p{Number} | \p{Space} |
  \p{Nonspacing_Mark} | \p{Spacing_Mark} | \p{Format} |
  \p{Private_Use}
  ) ])/x,
  map chr, $s..$e;
  defined $o && defined $c
  ? ($o, $c)
  : ();
  } 0..0xff;

  splice @​delims, 2, 0, "\N{U+2C2}", "\N{U+2F5}"; # between U+100 and U+1000

  print "perl $]\n";
  for my $i (0..$#delims-1) {
  my ($o, $c) = @​delims[$i, $i+1];

  my $ok = eval "my \$x = q${o}foo${c}" ? "not ok" : "ok ";
  warn "$@​" if $ok eq "ok" and $@​ !~ /string terminator/;
  printf "$ok - U+%04X U+%04X\n", ord $o, ord $c;
  }

On perl 5.25.9, we get the following failures​:

perl 5.025009
ok - U+0000 U+0001
ok - U+0001 U+02C2
not ok - U+02C2 U+02F5
ok - U+02F5 U+104A
not ok - U+104A U+104B
ok - U+104B U+2010
not ok - U+2010 U+2011
ok - U+2011 U+3001
not ok - U+3001 U+3002
ok - U+3002 U+4DC0
not ok - U+4DC0 U+4DC1
ok - U+4DC1 U+A490
not ok - U+A490 U+A491
ok - U+A491 U+D800
not ok - U+D800 U+D801
ok - U+D801 U+FB29
not ok - U+FB29 U+FBB2
ok - U+FBB2 U+10100
not ok - U+10100 U+10101
not ok - U+10101 U+11047
not ok - U+11047 U+11048
not ok - U+11048 U+12470
not ok - U+12470 U+12471
not ok - U+12471 U+16A6E
not ok - U+16A6E U+16A6F
not ok - U+16A6F U+1BC9C
not ok - U+1BC9C U+1BC9F
not ok - U+1BC9F U+1D000
not ok - U+1D000 U+1D001
not ok - U+1D001 U+1E95E
not ok - U+1E95E U+1E95F
not ok - U+1E95F U+1F000
not ok - U+1F000 U+1F001

While on perl 5.25.8 all is good​:

$ ~/tmp/delimwtf.pl
ok - U+0000 U+0001
ok - U+0001 U+02C2
ok - U+02C2 U+02F5
ok - U+02F5 U+104A
ok - U+104A U+104B
ok - U+104B U+2010
ok - U+2010 U+2011
ok - U+2011 U+3001
ok - U+3001 U+3002
ok - U+3002 U+4DC0
ok - U+4DC0 U+4DC1
ok - U+4DC1 U+A490
ok - U+A490 U+A491
ok - U+A491 U+D800
ok - U+D800 U+D801
ok - U+D801 U+FB29
ok - U+FB29 U+FBB2
ok - U+FBB2 U+10100
ok - U+10100 U+10101
ok - U+10101 U+11047
ok - U+11047 U+11048
ok - U+11048 U+12470
ok - U+12470 U+12471
ok - U+12471 U+16A6E
ok - U+16A6E U+16A6F
ok - U+16A6F U+1BC9C
ok - U+1BC9C U+1BC9F
ok - U+1BC9F U+1D000
ok - U+1D000 U+1D001
ok - U+1D001 U+1E95E
ok - U+1E95E U+1E95F
ok - U+1E95F U+1F000
ok - U+1F000 U+1F001

--
- Twitter seems more influential [than blogs] in the 'gets reported in
  the mainstream press' sense at least. - Matt McLeod
- That'd be because the content of a tweet is easier to condense down
  to a mainstream media article. - Calle Dybedahl

@p5pRT p5pRT added BBC Blead Breaks CPAN - changes in blead broke a cpan module(s) Severity Low labels Oct 19, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BBC Blead Breaks CPAN - changes in blead broke a cpan module(s)
Projects
None yet
Development

No branches or pull requests

1 participant