Open p6rt opened 7 years ago
Actually reported as a SO question by brian d foy:
\
my @h [] @h.splice: 0, 0, 1.Seq [] @h[0].VAR.WHAT (Int) @h[0] = 5 Cannot modify an immutable Int (1) in block \
at \ line 1
I got hit by this with: @a.splice: 0, 0, Any xx 2
perl6 -v This is Rakudo version 2017.07 built on MoarVM version 2017.07 implementing Perl 6.c. perl6 -V distro::auth=Apple Computer, Inc. distro::desc=2017-09-09T09:21:56.148447+08:00 distro::is-win=False distro::name=macosx distro::path-sep=: distro::release=16G29 distro::signature= distro::version=10.12.6 kernel::arch=i386 kernel::archname=x86_64-darwin kernel::auth=unknown kernel::bits=64 kernel::desc= kernel::hardware=x86_64 kernel::name=darwin kernel::release=Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64 kernel::signature= kernel::version=16.7.0 moar::ar=ar moar::arflags=rcs moar::arout= moar::asm=.s moar::asmout=-o moar::asmswitch=-S moar::auxclean=@: moar::be=0 moar::bindir=/Applications/Rakudo/bin moar::booltype=_Bool moar::can_unaligned_int32=1 moar::can_unaligned_int64=1 moar::can_unaligned_num64=1 moar::cancgoto=1 moar::canrdtscp=1 moar::cat=cat moar::cc=clang moar::cc_covflags=-fprofile-instr-generate -fcoverage-mapping moar::ccdebugflags=-g3 moar::ccdef=-D moar::ccdefflags=-D_DARWIN_USE_64_BIT_INODE=1 moar::ccinc=-I moar::ccinstflags=-fsanitize=address moar::ccmiscflags=-fno-omit-frame-pointer -fno-optimize-sibling-calls moar::ccoptiflags=-O3 -DNDEBUG moar::ccout=-o moar::ccshared= moar::ccswitch=-c moar::ccwarnflags=-Wno-logical-op-parentheses moar::cflags=-fno-omit-frame-pointer -fno-optimize-sibling-calls -O3 -DNDEBUG -Wno-logical-op-parentheses -D_DARWIN_USE_64_BIT_INODE=1 moar::cincludes= -I3rdparty/libuv/include -I3rdparty/libuv/src -I3rdparty/libatomic_ops/src -I3rdparty/libtommath -I3rdparty/dynasm -I3rdparty/dyncall/dynload -I3rdparty/dyncall/dyncall -I3rdparty/dyncall/dyncallback moar::config=--optimize --prefix=/Applications/Rakudo --make-install moar::cppout=> moar::cppswitch=-E moar::crossconf= moar::dcbclean=$(RM) 3rdparty/dyncall/dyncallback/libdyncallback_s.a moar::dcblib=3rdparty/dyncall/dyncallback/libdyncallback_s.a moar::dcbobjects= moar::dcbrule=@: moar::dcclean=cd 3rdparty/dyncall && $(MAKE) -f Makefile clean moar::dclib=3rdparty/dyncall/dyncall/libdyncall_s.a moar::dcobjects= moar::dcrule=cd 3rdparty/dyncall && ./configure && CC='$(CC)' CFLAGS='-fPIC' $(MAKE) -f Makefile moar::defs[0]=_DARWIN_USE_64_BIT_INODE=1 moar::dlclean=$(RM) 3rdparty/dyncall/dynload/libdynload_s.a moar::dll=lib%s.dylib moar::dllexport=__attribute__ ((visibility ("default"))) moar::dllib=3rdparty/dyncall/dynload/libdynload_s.a moar::dllimport=__attribute__ ((visibility ("default"))) moar::dlllocal=__attribute__ ((visibility ("hidden"))) moar::dlobjects= moar::dlrule=@: moar::dynasmlua=./3rdparty/dynasm/dynasm.lua moar::exe= moar::formatattribute=__attribute__((format(X, Y, Z))) moar::has_pthread_yield=0 moar::havebooltype=1 moar::impinst=libmoar.dylib moar::install= $(MKPATH) $(DESTDIR)$(PREFIX)/include/libuv $(CP) 3rdparty/libuv/include/*.h $(DESTDIR)$(PREFIX)/include/libuv $(MKPATH) $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/armcc $(MKPATH) $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/gcc $(MKPATH) $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/hpc $(MKPATH) $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/ibmc $(MKPATH) $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/icc $(MKPATH) $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/loadstore $(MKPATH) $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/msftc $(MKPATH) $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/sunc $(CP) 3rdparty/libatomic_ops/src/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops $(CP) 3rdparty/libatomic_ops/src/atomic_ops/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops $(CP) 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps $(CP) 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/armcc/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/armcc $(CP) 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/gcc/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/gcc $(CP) 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/hpc/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/hpc $(CP) 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/ibmc/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/ibmc $(CP) 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/icc/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/icc $(CP) 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/loadstore/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/loadstore $(CP) 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/msftc/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/msftc $(CP) 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/sunc/*.h $(DESTDIR)$(PREFIX)/include/libatomic_ops/atomic_ops/sysdeps/sunc $(MKPATH) $(DESTDIR)$(PREFIX)/include/libtommath $(CP) 3rdparty/libtommath/*.h $(DESTDIR)$(PREFIX)/include/libtommath $(MKPATH) $(DESTDIR)$(PREFIX)/include/dyncall $(CP) 3rdparty/dyncall/dynload/*.h $(DESTDIR)$(PREFIX)/include/dyncall $(CP) 3rdparty/dyncall/dyncall/*.h $(DESTDIR)$(PREFIX)/include/dyncall $(CP) 3rdparty/dyncall/dyncallback/*.h $(DESTDIR)$(PREFIX)/include/dyncall moar::jit=$(JIT_POSIX_X64) moar::laoclean=cd 3rdparty/libatomic_ops/src && $(MAKE) distclean moar::laolib=3rdparty/libatomic_ops/src/libatomic_ops.a moar::laoobjects= moar::laorule=cd 3rdparty/libatomic_ops && CC='$(CC)' CFLAGS='$(CFLAGS)' ./configure && cd src && $(MAKE) && cd .. moar::ld=clang moar::ld_covflags=-fprofile-instr-generate -fcoverage-mapping moar::lddebugflags=-g3 moar::lddir=-L moar::ldflags= -O3 -DNDEBUG -Wl,-rpath,"//Applications/Rakudo/lib" moar::ldimp= moar::ldinstflags=-fsanitize=address moar::ldlibs=-lpthread moar::ldmiscflags= moar::ldoptiflags=-O3 -DNDEBUG moar::ldout=-o moar::ldrpath=-Wl,-rpath,"//Applications/Rakudo/lib" moar::ldshared=-dynamiclib moar::ldsys=-l%s moar::ldusr=-l%s moar::lib=lib%s.a moar::libdir=/Applications/Rakudo/lib moar::lua=./3rdparty/dynasm/minilua moar::mainflags=-DMVM_SHARED moar::mainlibs=-L. -lmoar moar::make=make moar::mastdir=/Applications/Rakudo/share/nqp/lib/MAST moar::mkflags= moar::mknoisy=ifneq ($(NOISY), 1)MSG = @echoCMD = @NOOUT = > /dev/nullNOERR = 2> /dev/nullendif moar::moar=libmoar.dylib moar::moardll=libmoar.dylib moar::moarlib=libmoar.a moar::moarshared=-install_name "/Applications/Rakudo/lib/libmoar.dylib" moar::mtclean=$(RM) 3rdparty/tinymt/libtinymt.a 3rdparty/tinymt/*.o moar::mtlib=3rdparty/tinymt/libtinymt.a moar::mtobjects=3rdparty/tinymt/tinymt64.o moar::mtrule=$(AR) $(ARFLAGS) $@ 3rdparty/tinymt/*.o moar::name=moar moar::nativecall_backend=dyncall moar::noreturnattribute=__attribute__((noreturn)) moar::noreturnspecifier= moar::nul=/dev/null moar::obj=.o moar::objflags=-DMVM_BUILD_SHARED moar::os=darwin moar::osname=darwin moar::osvers=14.3.0 moar::perl=/Users/steve/perl5/perlbrew/perls/perl-5.22.0/bin/perl moar::pkgconfig=/usr/bin/pkg-config moar::platform=$(PLATFORM_POSIX) moar::prefix=/Applications/Rakudo moar::ptr_size=8 moar::rm=rm -f moar::sh=/bin/sh moar::shaclean=$(RM) 3rdparty/sha1/libsha1.a 3rdparty/sha1/*.o moar::shaincludedir=3rdparty/sha1 moar::shalib=3rdparty/sha1/libsha1.a moar::shaobjects=3rdparty/sha1/sha1.o moar::sharedlib=libmoar.dylib moar::sharule=$(AR) $(ARFLAGS) $@ 3rdparty/sha1/*.o moar::static_inline=static __inline__ moar::staticlib= moar::thirdpartylibs=3rdparty/dyncall/dyncall/libdyncall_s.a 3rdparty/dyncall/dyncallback/libdyncallback_s.a 3rdparty/dyncall/dynload/libdynload_s.a 3rdparty/libatomic_ops/src/libatomic_ops.a 3rdparty/tinymt/libtinymt.a 3rdparty/sha1/libsha1.a 3rdparty/libtommath/libtommath.a 3rdparty/libuv/libuv.a moar::tomclean=$(RM) 3rdparty/libtommath/libtommath.a 3rdparty/libtommath/*.o moar::tomlib=3rdparty/libtommath/libtommath.a moar::tomobjects=3rdparty/libtommath/bn_error.o 3rdparty/libtommath/bn_fast_mp_invmod.o 3rdparty/libtommath/bn_fast_mp_montgomery_reduce.o 3rdparty/libtommath/bn_fast_s_mp_mul_digs.o 3rdparty/libtommath/bn_fast_s_mp_mul_high_digs.o 3rdparty/libtommath/bn_fast_s_mp_sqr.o 3rdparty/libtommath/bn_mp_2expt.o 3rdparty/libtommath/bn_mp_abs.o 3rdparty/libtommath/bn_mp_add.o 3rdparty/libtommath/bn_mp_add_d.o 3rdparty/libtommath/bn_mp_addmod.o 3rdparty/libtommath/bn_mp_and.o 3rdparty/libtommath/bn_mp_clamp.o 3rdparty/libtommath/bn_mp_clear.o 3rdparty/libtommath/bn_mp_clear_multi.o 3rdparty/libtommath/bn_mp_cmp.o 3rdparty/libtommath/bn_mp_cmp_d.o 3rdparty/libtommath/bn_mp_cmp_mag.o 3rdparty/libtommath/bn_mp_cnt_lsb.o 3rdparty/libtommath/bn_mp_copy.o 3rdparty/libtommath/bn_mp_count_bits.o 3rdparty/libtommath/bn_mp_div.o 3rdparty/libtommath/bn_mp_div_2.o 3rdparty/libtommath/bn_mp_div_2d.o 3rdparty/libtommath/bn_mp_div_3.o 3rdparty/libtommath/bn_mp_div_d.o 3rdparty/libtommath/bn_mp_dr_is_modulus.o 3rdparty/libtommath/bn_mp_dr_reduce.o 3rdparty/libtommath/bn_mp_dr_setup.o 3rdparty/libtommath/bn_mp_exch.o 3rdparty/libtommath/bn_mp_export.o 3rdparty/libtommath/bn_mp_expt_d.o 3rdparty/libtommath/bn_mp_expt_d_ex.o 3rdparty/libtommath/bn_mp_exptmod.o 3rdparty/libtommath/bn_mp_exptmod_fast.o 3rdparty/libtommath/bn_mp_exteuclid.o 3rdparty/libtommath/bn_mp_fread.o 3rdparty/libtommath/bn_mp_fwrite.o 3rdparty/libtommath/bn_mp_gcd.o 3rdparty/libtommath/bn_mp_get_int.o 3rdparty/libtommath/bn_mp_get_long.o 3rdparty/libtommath/bn_mp_get_long_long.o 3rdparty/libtommath/bn_mp_grow.o 3rdparty/libtommath/bn_mp_import.o 3rdparty/libtommath/bn_mp_init.o 3rdparty/libtommath/bn_mp_init_copy.o 3rdparty/libtommath/bn_mp_init_multi.o 3rdparty/libtommath/bn_mp_init_set.o 3rdparty/libtommath/bn_mp_init_set_int.o 3rdparty/libtommath/bn_mp_init_size.o 3rdparty/libtommath/bn_mp_invmod.o 3rdparty/libtommath/bn_mp_invmod_slow.o 3rdparty/libtommath/bn_mp_is_square.o 3rdparty/libtommath/bn_mp_jacobi.o 3rdparty/libtommath/bn_mp_karatsuba_mul.o 3rdparty/libtommath/bn_mp_karatsuba_sqr.o 3rdparty/libtommath/bn_mp_lcm.o 3rdparty/libtommath/bn_mp_lshd.o 3rdparty/libtommath/bn_mp_mod.o 3rdparty/libtommath/bn_mp_mod_2d.o 3rdparty/libtommath/bn_mp_mod_d.o 3rdparty/libtommath/bn_mp_montgomery_calc_normalization.o 3rdparty/libtommath/bn_mp_montgomery_reduce.o 3rdparty/libtommath/bn_mp_montgomery_setup.o 3rdparty/libtommath/bn_mp_mul.o 3rdparty/libtommath/bn_mp_mul_2.o 3rdparty/libtommath/bn_mp_mul_2d.o 3rdparty/libtommath/bn_mp_mul_d.o 3rdparty/libtommath/bn_mp_mulmod.o 3rdparty/libtommath/bn_mp_n_root.o 3rdparty/libtommath/bn_mp_n_root_ex.o 3rdparty/libtommath/bn_mp_neg.o 3rdparty/libtommath/bn_mp_or.o 3rdparty/libtommath/bn_mp_prime_fermat.o 3rdparty/libtommath/bn_mp_prime_is_divisible.o 3rdparty/libtommath/bn_mp_prime_is_prime.o 3rdparty/libtommath/bn_mp_prime_miller_rabin.o 3rdparty/libtommath/bn_mp_prime_next_prime.o 3rdparty/libtommath/bn_mp_prime_rabin_miller_trials.o 3rdparty/libtommath/bn_mp_prime_random_ex.o 3rdparty/libtommath/bn_mp_radix_size.o 3rdparty/libtommath/bn_mp_radix_smap.o 3rdparty/libtommath/bn_mp_rand.o 3rdparty/libtommath/bn_mp_read_radix.o 3rdparty/libtommath/bn_mp_read_signed_bin.o 3rdparty/libtommath/bn_mp_read_unsigned_bin.o 3rdparty/libtommath/bn_mp_reduce.o 3rdparty/libtommath/bn_mp_reduce_2k.o 3rdparty/libtommath/bn_mp_reduce_2k_l.o 3rdparty/libtommath/bn_mp_reduce_2k_setup.o 3rdparty/libtommath/bn_mp_reduce_2k_setup_l.o 3rdparty/libtommath/bn_mp_reduce_is_2k.o 3rdparty/libtommath/bn_mp_reduce_is_2k_l.o 3rdparty/libtommath/bn_mp_reduce_setup.o 3rdparty/libtommath/bn_mp_rshd.o 3rdparty/libtommath/bn_mp_set.o 3rdparty/libtommath/bn_mp_set_int.o 3rdparty/libtommath/bn_mp_set_long.o 3rdparty/libtommath/bn_mp_set_long_long.o 3rdparty/libtommath/bn_mp_shrink.o 3rdparty/libtommath/bn_mp_signed_bin_size.o 3rdparty/libtommath/bn_mp_sqr.o 3rdparty/libtommath/bn_mp_sqrmod.o 3rdparty/libtommath/bn_mp_sqrt.o 3rdparty/libtommath/bn_mp_sqrtmod_prime.o 3rdparty/libtommath/bn_mp_sub.o 3rdparty/libtommath/bn_mp_sub_d.o 3rdparty/libtommath/bn_mp_submod.o 3rdparty/libtommath/bn_mp_to_signed_bin.o 3rdparty/libtommath/bn_mp_to_signed_bin_n.o 3rdparty/libtommath/bn_mp_to_unsigned_bin.o 3rdparty/libtommath/bn_mp_to_unsigned_bin_n.o 3rdparty/libtommath/bn_mp_toom_mul.o 3rdparty/libtommath/bn_mp_toom_sqr.o 3rdparty/libtommath/bn_mp_toradix.o 3rdparty/libtommath/bn_mp_toradix_n.o 3rdparty/libtommath/bn_mp_unsigned_bin_size.o 3rdparty/libtommath/bn_mp_xor.o 3rdparty/libtommath/bn_mp_zero.o 3rdparty/libtommath/bn_prime_tab.o 3rdparty/libtommath/bn_reverse.o 3rdparty/libtommath/bn_s_mp_add.o 3rdparty/libtommath/bn_s_mp_exptmod.o 3rdparty/libtommath/bn_s_mp_mul_digs.o 3rdparty/libtommath/bn_s_mp_mul_high_digs.o 3rdparty/libtommath/bn_s_mp_sqr.o 3rdparty/libtommath/bn_s_mp_sub.o 3rdparty/libtommath/bncore.o moar::tomrule=$(AR) $(ARFLAGS) $@ 3rdparty/libtommath/*.o moar::translate_newline_output=0 moar::usrlibs[0]=pthread moar::uvclean=$(RM) 3rdparty/libuv/libuv.a $(UV_DARWIN) moar::uvlib=3rdparty/libuv/libuv.a moar::uvobjects=$(UV_DARWIN) moar::uvrule=$(AR) $(ARFLAGS) $@ $(UV_DARWIN) moar::version=2017.07 moar::versionmajor=2017 moar::versionminor=07 moar::versionpatch=0 perl6::build-date=2017-07-24T19:31:35Z perl6::codename= perl6::implementation=Rakudo perl6::language_version=6.c perl6::prefix=/Applications/Rakudo perl6::release-number= perl6::version=2017.07 repo::chain=file#/Users/andrewbuchanan/Library/usr/lib/perl6 inst#/Users/andrewbuchanan/.perl6 inst#/Applications/Rakudo/share/perl6/site inst#/Applications/Rakudo/share/perl6/vendor inst#/Applications/Rakudo/share/perl6 CompUnit::Repository::AbsolutePath.new(next-repo => CompUnit::Repository::NQP.new(next-repo => CompUnit::Repository::Perl5.new(next-repo => CompUnit::Repository))) CompUnit::Repository::NQP.new(next-repo => CompUnit::Repository::Perl5.new(next-repo => CompUnit::Repository)) CompUnit::Repository::Perl5.new(next-repo => CompUnit::Repository)
On Fri, 08 Sep 2017 18:37:50 -0700, tomentiruran@gmail.com wrote:
my @h [] @h.splice: 0, 0, 1.Seq [] @h[0].VAR.WHAT (Int) @h[0] = 5 Cannot modify an immutable Int (1) in block \
at \ line 1 I got hit by this with: @a.splice: 0, 0, Any xx 2
Good find.
It's also not specific to `Seq` - it looks like it happens whenever the replacement elements are passed to `splice` as a nested structure rather than as flat arguments:
my @h; @h.splice: 0, 0, 'a'; @h.splice: 1, 0, ('b',);
dd @h; # Array @h = ["a", "b"] say @h[0].VAR.^name; # Scalar say @h[1].VAR.^name; # Str
Conceptually¹⁺², the `splice` routine takes the replacements as a `*@` slurpy, so whether they're passed in nested or flat form should not matter.
But Rakudo currently implements the routine with a `| is raw` signature:
say Array.^find_method("splice").signature; # (Mu $: | is raw)
...and apparently does the parameter flattening manually, in a way that introduces this bug.
Until it is fixed, a work-around is to flatten the replacement elements into the argument list of `splice` using `|`:
@a.splice: 0, 0, |(Any xx 2);
[1] https://docs.perl6.org/routine/splice [2] https://design.perl6.org/S32/Containers.html#splice
The RT System itself - Status changed from 'new' to 'open'
On Sun, 16 Apr 2017 12:56:58 -0700, elizabeth wrote:
Actually reported as a SO question by brian d foy:
http://stackoverflow.com/questions/43437664/how-can-i-get-around-a- slurpy-parameter-in-the-perl-6-signature
\
m: my @a = [1,1],[2,2],[3,3]; dd @a; @a.splice: 0, 2, $[4,4]; dd @a # feels like a bug that the containerization of [4,4] is being ignored \<+camelia> rakudo-moar 188711: OUTPUT: «Array @a = [[1, 1], [2, 2], [3, 3]]Array @a = [4, 4, [3, 3]]» \ lizmat: Yeah, it's because there's a candidate with @new at the end that it binds to, decontainerizing it in the process. \ So it's not actually hitting the slurpy at all \ so you agree it's wrong atm \ The slurpy is **@foo \ So in fact if it *was* hitting the slurpy it would be behaving right :) \ Yeah, it's wrong to discard the itemization \ ok, so we are in agreement \ I wonder if it was untested and then accidentally regressed when splice was optimized by breaking it out into a bunch of candidates \ will file a rakudobug \ Since I seem to recall splice getting at least something of a look during the GLR \ And I can't imagine we settled on "it ignores itemization" :) \ bisectable6: my @a = [1,1],[2,2],[3,3]; @a.splice: 0, 2, $[4,4]; dd @a \<+bisectable6> jnthn, On both starting points (old=2015.12 new=1887114) the exit code is 0 and the output is identical as well \<+bisectable6> jnthn, Output on both points: «Array @a = [4, 4, [3, 3]]» \ Hm, nope \ It's been like that since Christmas \ ok, doesn't make it right, though :-) \ Indeed \ but will wait for the release to look at fixing it \ *nod*
This ticket and RT#132047 may be merged.
Please find an experimental tree at: https://github.com/skids/rakudo/tree/rt131162
commit 998738620d1ca327e1b2d7727b7a0f28b9bce542 Author: skids \bri@​abrij\.org Date: Fri Sep 15 21:01:48 2017 -0400
GLR-ize splice's @replacement argument
Collapse **@ and @ candidates into +@ candidates. This is a spec/doc change. Will need to be reconciled. May need to figure out how to make this 6.d-only (or later) Amazingly, passes all spectests. Fixes RT#131162 and RT#132047 Needs ecosystem-wide testing for fallout
(I also tried **@ and it did not fair very well. There are many specttests that assume single-argument-rule behavior on single arguments.)
splice's prototype never got touched during GLR, if you look at git blame in specs. It just got missed, I guess. Probably not the only one.
If someone who is tooled to do an ecosystem-wide/multiplatform test could try this tree we could get an idea how disruptive it would be.
Figuring out where this sits WRT 6.d, both feature-wise and technically as to how we best replace 6.c's Array candidates or dispatcher.
No performance tests have been done on this. I notice we still keep some core code doing +@ by hand but don't know if that is due to performance or just because they were implemented before we had that slurpy modifier, or due to a needed behavioral quirk.
The RT System itself - Status changed from 'new' to 'open'
Migrated from rt.perl.org#131162 (status was 'open')
Searchable as RT131162$