Recently in Grants Category
Dave Mitchell writes:
I spent the month mainly fixing issues that were 5.22 blockers.
2:18 [perl #120950] Apparent failure to localize %^H
2:13 [perl #123619] Bleadperl v5.21.6-89-gd648ffc breaks autobox
4:33 [perl #123737] S_no_op: Assertion `s >= oldbp' failed
1:25 [perl #123954] Perl_pp_substcont: Assertion failed
1:21 [perl #123976] [Win32] Unable to build 64-bit blead using gcc-4.8.2
1:21 [perl #124207] Perl_ck_stringify: Assertion `!((((kid)->op_sibling) ?
10:57 [perl #124216] Perl_sv_clear: Assertion
0:37 [perl #124368] Perl_sv_2pv_flags: Assertion ....
2:09 [perl #124385] null ptr deref -> Perl_cv_forget_slab (pad.c:500)
0:20 fix t/uni.parser.t under EBCDIC
10:02 more op_siblings stuff
7:27 process p5p mailbox
5:10 review 5.22 blocker issues
5:34 setjmp corruption with recent clang
3:36 valgrind error in re_op_compile()
59:03 Total (HH::MM)
Tony Cook writes:
Approximately 25 tickets were reviewed or worked on, and 2 patches were applied.
This was a short month since my old grant ran out, and a new grant started.
[perl #123788] was interesting to me because is illustrated how perl tracks which globs (or package) a given @ISA is present in - and how that was broken in this case.
Each @ISA has isa magic. If the @ISA is only present in a single GV, then mg_obj for the magic is a pointer to that GV, if there are multiple GVs then mg_obj is an AV (not an RV pointing to an AV) of GVs. In neither case are the references counted in the GV's reference count.
In the case of the bug, the magic wasn't being updated when the @ISA was removed from the GV, and the GV was then deleted, leaving a dangling pointer in the mg_obj of the @ISA's isa magic. Later when the SV head of the GV was re-used for a PV SV and the original @ISA was modified perl would crash attempting to use it as a GV.
Contribute to Perl and get some $$!
The Grants Committee is accepting grant proposals all the time. We evaluate them every two months and another evaluation period has come.
If you have an idea for doing some Perl work that will benefit the Perl community, consider sending a grant application. The application deadline for this round is 23:59 May 15th UTC. We will publish the received applications, get community feedback and conclude acceptance by May 30th.
The format will be the same as the previous rounds in 2014-2015.
We will confirm the receipt of application within 24 hours.
If you have further questions, please comment here. If your comment does not show up here within 24 hours, the chances are that the spam filter did something bad. Get in touch with me at tpf-grants-secretary at perl-foundation.org.
Thanks goes to the community members who took time to provide feedback on this proposal. I would also like to thank Patrick Michaud and Liz Mattijsen who have agreed to help with the management of this grant.
Dave Mitchell writes:
I spent the month mainly fixing issues reported by the Coverity static code analyser, and fixing assorted bugs that were in the main 5.22 blockers.
Some notable highlights:
Coverity reported an issue related to MEM_WRAP_CHECK(): although it turned out to be harmless, looking at it gave me an idea to make the wrap check be constant-folded at compile time more often, and since this macro (via its use in Newx(), Copy() etc) is used in many places in the source, this meant that the run-time check was eliminated in many places. Indeed the object code shrank by about 8K on my x86_63 build, implying that this happened often.
We have received the following Hague Grant application from Bart Wiegmans. Before we vote on this proposal we would like to have a period of community consultation for 10 days. Please leave feedback in the comments or if you prefer send email with your comments to karen at perlfoundation.org.
Name: Bart Wiegmans
Project Title: Advancing the MoarVM JIT
Implement an advanced code generation algorithm for the MoarVM JIT compiler, leading to more efficient machine code for JIT compiled frames.
Benefits to Perl 6 Development:
This project will enable the MoarVM JIT compiler to generate smaller and more efficient code, producing greater performance and less memory traffic during execution. This will help to make Perl 6 more competitive with other languages. (Speed is generally regarded as a feature).
As a secondary benefit this will decouple the JIT intermediate representation from the MoarVM bytecode and the x64 machine code making it easier for developers to extend or to port the JIT to architectures other than x64, such as ARM.
As an example of the potential speedup I've created the following example demonstrating a 5x speedup on tight numeric code. Although that example is highly artificial it does demonstrate the limits of the current JIT rather well. Note also that the original hot loop uses 22 instructions whereas the new hot loop uses only 7 instructions.