Elizabeth Mattijsen got carried away trying to devise an API for getrusage. The result is a new set of modules available with use Telemetry . And a helper module for easy activation: snapper . The simplest use case: perl6 -Msnapper yourscript.pl6 . This will start up a separate thread that will take snap shots every 0.1 seconds. Once it is done, it will display a report much like this on STDERR:

Telemetry Report of Process #72908 (2017-11-06T21:26:26Z) Number of Snapshots: 7 Supervisor thread ran the whole time Initial Size: 67676 Kbytes Total Time: 0.58 seconds Total CPU Usage: 0.59 seconds wallclock util% max-rss 105476 13.28 17680 105220 13.27 12 105178 12.73 1024 105149 12.85 152 105141 12.42 4 49525 12.98 12 --------- ------ -------- 575689 12.92 18884 Legend: wallclock Number of microseconds elapsed util% Percentage of CPU utilization (0..100%) max-rss Maximum resident set size (in Kbytes)

Even this hot off the press, Wenzel P. P. Peppmeyer took this new development to actually create a distribution that runs an httpd daemon in your program, so that you can look at usage data of your (long running program) in your browser!

But that’s only the tip of the iceberg: there are also a number of ways to get at system information ad-hoc, such as:

$ perl6 -MTelemetry -e 'say T<wallclock cpu max-rss>' (140878 264269 84756)

Or plan your snap shots and reporting more precisely:

while $working { snap; LAST snap; # do a lot of work } say report(:csv) # output in CSV format

Other features of Telemetry include a Telemetry::Instrument role for creating your own “instruments” for plugging into this framework (with two Instruments already supplied: Telemetry::Instrument::Usage (basically giving all the data of getrusage + wallclock in microseconds) and Telemetry::Instrument::ThreadPool (giving all the data pertaining to actions of the $*SCHEDULER , such as being able to see when new worker threads are started). Exciting times!

LPW Rakudo Perl 6 Presentations

Well, a program as such hasn’t been decided yet, but it looks like the following Rakudo Perl 6 related presentations will be given at the London Perl Workshop on 25 November 2017 at the University of Westminster:

Hope to see you there!

Optimizing Code

Jonathan Worthington published another part of his MoarVM Specializer Improvements series: Optimizing Code. A long read, but if you fancy understanding MoarVM capabilities better, it is highly recommended reading indeed!

Building a Single Page Application with Cro

This seem to have slipped through the cracks the past weeks. Jonathan Worthington describes how to set up a simple Single Page Application using Cro as the backend, and webpack , ES6 , React and Redux as the frontend (no prior knowledge needed). It shows a SPA for a (food/beer) festival where people could leave their tips about what’s hot and what’s not, and being able to see them in real time. It supports:

Submitting new tips (a POST to the backend).

to the backend). Having the latest tips appear live (delivered over a web socket).

Being able to agree to disagree with a tip (also a POST ).

). Being able to see a list of the tips sorted most agreeable to most disagreeable (obtained by a GET ).

A must read if you are looking into building fully interactive web-applications, specifically using all of the asynchronous functionality that Rakudo Perl 6 offers today!

Other Core Developments

Although not strictly a core feature, but in the eyes of yours truly as important to Rakudo Perl 6 as Rails was to Ruby : a new release of Cro (version 0.7.1). New features are: cro web starting a web interface for stubbing, running, tracing & viewing logs from services in development, the router having include/delegate support for composing routes. A large number of issues was fixed, especially in HTTP/2.0 support.

was to : a new release of (version 0.7.1). New features are: starting a web interface for stubbing, running, tracing & viewing logs from services in development, the router having include/delegate support for composing routes. A large number of issues was fixed, especially in support. Brian S. Julin ‘s Pull Request to support the $.^name syntax has been finally merged. I guess it got a bit Warnocked 😦

‘s Pull Request to support the syntax has been finally merged. I guess it got a bit Warnocked 😦 Elizabeth Mattijsen fixed the multi sub foo(:@c is copy) syntax, which apparently was overlooked during the GLR. She also made certain combinations of attribute initializations throw an X::NYI (Not Yet Implemented) exception with a workaround suggestion, rather than silently not initializing.

fixed the syntax, which apparently was overlooked during the GLR. She also made certain combinations of attribute initializations throw an (Not Yet Implemented) exception with a workaround suggestion, rather than silently not initializing. Samantha McVey sped up joining of large strings (like more than 300 graphemes) up to 10x.

sped up joining of large strings (like more than 300 graphemes) up to 10x. Daniel Green implemented an nqp op to quickly create an Int from another Int , but without any mixins. He also sped up various types of interpolation into regular expressions.

implemented an op to quickly create an from another , but without any mixins. He also sped up various types of interpolation into regular expressions. Timo Paulssen improved the “no such attribute” error on a failing nqp::getattr . This has helped yours truly already a lot in the past week!

improved the “no such attribute” error on a failing . This has helped yours truly already a lot in the past week! And many more smaller fixes and improvements!.

Other Blog Posts

Meanwhile on Twitter

Meanwhile on StackOverflow

Meanwhile on perl6-users

Winding down

Not a small Perl 6 Weekly again this week. It’s almost become a dayjob! But a fun one! So keep all the new stuff coming so yours truly can report them again in the next issue of the Perl 6 Weekly. See you then!