On Sat Jan 20 16:54:36 2018, zefram@fysh.org wrote:
Show quoted text> Slaven_Rezic via RT wrote:
> >Can you explain the increase of $array_2_size in the 1st failing test?
>
> Array elements now get created slightly less lazily than they were before.
> In that test, I think the copying of @array is causing $array[1] to be
> created, hence using more space.
>
> The details of the new behaviour haven't been fully nailed down yet.
> The code got edited a second time before 5.27.8 came out, and this
> version has some inconsistent behaviour, so don't be surprised if it
> changes again for 5.27.9. There are two competing approaches for how
> to handle uses of non-existent array elements. One just creates them,
> which takes a small amount of time but only on the first use, takes memory
> for the element which persists with the array, and has a visible side
> effect if you use the discouraged exists($a[$i]). The other approach
> creates a magical placeholder, which takes a bit more time and takes
> that time repeatedly on each use, takes a bit more memory but only for
> the duration of the element usage, and has no side effect on exists().
>
> -zefram
For reference, here is what I got for test failures against v5.27.7-216-ga590bf6 build on Jan 19 2018:
#####
$ ~/testing/blead/bin/prove -I~/testing/blead/lib -vb t/recurse.t
t/recurse.t ..
1..84
ok 1 - 4 pointers are dividable by 4
...
ok 53 - non-zero size for IV
ok 54 - non-zero size for array with 1 element
not ok 55 - gaps in arrays don't allocate scalars
ok 56 - two arrays compare the same (same element count)
ok 57 - two arrays compare the same (element 2)
ok 58 - two arrays compare the same (element 1)
ok 59 - two arrays compare the same (element 0)
not ok 60 - assigning undef to a gap in an array allocates a scalar
ok 61 - two arrays compare the same (same element count)
...
# Failed test 'gaps in arrays don't allocate scalars'
# at t/recurse.t line 240.
# got: '168'
# expected: '144'
# Failed test 'assigning undef to a gap in an array allocates a scalar'
# at t/recurse.t line 251.
# got: '168'
# expected: '192'
# Looks like you failed 2 tests of 84.
Devel::Size: Calculated sizes for compiled regexes are incompatible, and probably always will be
Devel::Size: Calculated sizes for compiled regexes are incompatible, and probably always will be
Devel::Size: Calculated sizes for compiled regexes are incompatible, and probably always will be
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/84 subtests
Test Summary Report
-------------------
t/recurse.t (Wstat: 512 Tests: 84 Failed: 2)
Failed tests: 55, 60
Non-zero exit status: 2
Files=1, Tests=84, 0 wallclock secs ( 0.03 usr 0.02 sys + 0.06 cusr 0.00 csys = 0.11 CPU)
Result: FAIL
#####
Thank you very much.
Jim Keenan