Recently in Perl 6 Development Category

Brrt (Bart Wiegmans) has hit the ground running on his MoarVM JIT Compiler grant.

Here is his interim report:

I wanted to start with floating point support, which has two subtasks:

  • Ensure that DynASM encodes SSE instructions with variadic registers correctly.

  • Ensure that the JIT itself accepts and works with floating point registers.

I finished the first two of those tasks. For some context, x86-64 instruction encoding rules require an extra byte to be prefixed if an instruction uses registers 8-15 (because the original x86 only has 8 registers, addressed with a 3-bit number). So the extra byte prefix adds the 4th byte for up to 3 operands; it needs to be placed in the right place. Well, long story short, I originally extended DynASM to add this byte as needed. But (as I learned) I made a mistake in that which made certain long instruction templates not really work. I fixed that bug and now DynASM (or at least our fork of it) can address all registers correctly.

I then started with adding floating point support to the JIT, and found out that it was somewhat more complicated than anticipated. The reason for that is perhaps a bit ironic - in order to reduce the number of programming errors in JIT templates, I added a fairly strict type checking system to the JIT template processors. And that type checking currently rejects numeric registers. Designwise, this isn't necessarily very complicated, but it is slightly hairy.

He expects to be finished soon with FP support.

Brrt will occasionally update the community on his blog.

MAJ

Original article was published on November 9, 2018

The overview page now shows all data displayed in the previous profiler's page as well as adds a "Start times of threads" chart. "GC" tab has been updated with sub-tabs to customise graphs using different display modes. The routines list now features a "goto" arrow for smooth and easy navigation.

Read more at: Where did I leave my AT-KEYs?

Selection_105.png

"Overview" tab is now functional but in flux. The "Routines" tab has been improved to include sorting functionality for columns, a minimal view in the "Paths" sub tab and a new "Callers" sub tab. An "Allocations" top level tab has also been added. Read more at: Full Screen Ahead!

Selection_081.png

The first public release! Code is now hosted in GitHub. Please see the instructions on how to install and run.

The release features a renewed "Routines" tab. Please read Timo's blog post to know how it compares to the previous profiler: The first public release!.

Timo has developed a shiny new UI for the tool. It displays thread-level garbage collection details:

moarperf_gc_screenshot.png

Read more at: Wow, check out this garbage

Timo is still not completely well. However, he has been able to make good progress:

  1. Optional parametres are now correctly logged

  2. Fixed a crash caused when the profiler is used on multithreaded code

Read more at: No Major Breakthroughs

Jonathan Worthington recently requested an extension of his Perl 6 Performance and Reliability Engineering grant.

I'm pleased to announce that the Board of Directors approved extension of another $10,000. It'll allow him to dedicate another 400 hours to this work. Additional $210 of expense was approved to cover the wire tranfer fee from the past payments and the next payment.

I would like to thank the community members who took time to comment on this grant extension request and our sponsors who made funding the grant possible through our Perl 6 Development Fund.

I also appreciate Jonathan Worthington's continued work.

About TPF

The Perl Foundation - supporting the Perl community since 2000. Find out more at www.perlfoundation.org.

About this Archive

This page is an archive of recent entries in the Perl 6 Development category.

Perl 5 Development is the previous category.

Perl Foundation is the next category.

Find recent content on the main index or look in the archives to find all content.

Pages

OpenID accepted here Learn more about OpenID
Powered by Movable Type 6.2.2