2019.04 Summer of Code!

JJ Merelo, Makoto Nozaki and Mark Keating want you to think about Perl projects for this year’s Google Summer of Code. Please submit your idea(s) and/or let yourself be known as a potential mentor of a project (Facebook, LinkedIn comments). Having a good project accepted can not only help the student or the project, a student may well become another valued core contributor (such as Bart Wiegmans)!

FOSDEM 2019

This weekend will see yet another FOSDEM in Brussels. Unfortunately, there will not a Perl DevRoom this year. But there will be a Perl booth with free swag and Perl books / Perl Wine and stuffed Camelia’s for sale. So please stop by and say hello to the Camel and the Camelia!

A Picky Caller

Wenzel P. P. Peppmeyer wrote a blog post about how handy it is being able to introspect the signature of a given pointy block, and use that as a condition on how to process the output of the execution of that block.

Apple Patenting

Ralph Mellor expressed his worries in relation to Perl 6 about Apple patenting certain software practices / algorithms.

Submit your Presentation Proposals!

This is the time of the year where you can submit your talk proposal to multiple Perl events, and be accepted by all of them. In chronological order:

Perl 6 and WebKit

Xliff has posted a gist describing some attempts at interfacing Perl 6 with WebKit to create a browser. Complete with screen shots and code. Exciting stuff!

On the dynamic nature of $_

In the past, the $_ variable (aka the topic), has always internally been marked as a dynamic variable. This poses significant issues in optimizing code, so Jonathan Worthington has been working on making $_ purely lexical (which would allow it to be optimized to a local). This broke a number of modules in the ecosystem, that depend on $_ being accessible dynamically (which are now fixed, at least for the coming release).

It however also broke a core feature of rx//. The associated issue presents some ideas and thoughts about how the regression could be fixed now, while also having a path towards the future that would allow better optimizability. Thoughts / suggestions / fixes are welcome!

Other Core Developments

  • Ticket status us past week.
  • Paweł Murias added support for the utf16be encoding on the Javascript and JVM backends.
  • Jonathan Worthington fixed some cases where error reporting would blow up, hiding the original error.
  • Nick Logan fixed a problem with module disambiguation when determining which version of a module to load if no auth information is available.
  • And many other smaller issues were fixed in preparation for the Rakudo 2019.01 Compiler Release.

Questions about Perl 6

Meanwhile on Twitter

Meanwhile on Facebook

Perl 6 in comments

Perl 6 Modules

New Modules:

Updated Modules:

Winding down

It was nice to see so many good Perl 6 things happening at the YAPC::Japan, resulting in quite some tweets! And a nice batch of updated and new modules on CPAN. Alas, no Rakudo Compiler Release just yet, but the number of blockers has gone down. More news about Perl 6 and FOSDEM next week!

Advertisements

2019.03 YouTubed

Derek Banas has posted a really nice introduction of Perl 6 on YouTube (1:20h), described by him as:

This tutorial is a 400 page Perl 6 tutorial condensed down into 1 video. Perl 6 is a get it done fast utility language. I’d say it is the most popular utility language. The newest version ads a ton of tools to the original Perl.

(Twitter announcement. ryn1x, Diego S. Costa and ɥɐɹʇıɟ pɐɯɯɐɥnɯ liked it on Twitter so far. There were also some Reddit comments.

PerlCon 2019

The website for the European Perl Conference (7-9 August 2019 in Riga, Latvia, formerly known as YAPC::Europe and The Perl Conference in Riga) is now live. With information about the venue, ticket pricing and a Call for Participation. So start making your plans to just attend, or maybe even give a Perl 6 related presentation!

A new DB interface

Curt Tilmes has applied the database interface that he had written in the past for DB::Pg to two other well known databases: SQLite and MySQL. In his announcement he shows that, unlike DBIish, the new modules are thread safe. Good stuff!

Portable profiles

Alexey Melezhik shows how portable profiles with Tomtit can be used to easily automate repeating tasks. More good stuff!

About types and polymorphism

Bart Wiegmans has published a short post about what he is up to the coming weeks on the expression JIT and how support for floating point operators forces a rethink about the design of the JIT. Good stuff to come!

New CPAN notifier bot

Patrick Spek has made a new CPAN notifier bot on the #perl6 IRC channel that will notify whenever there is a new upload of a Perl 6 CPAN module. It’s been pretty busy lately 🙂

Sparrow moves to Perl 6

Alexey Melezhik also announced that the Sparrow core code and core plugins will be migrated to Perl 6 in the coming months (Reddit comments). And so it begins.

Graphs on Fire!

Timo Paulssen reports on his work on the profiler in a fiery post about icicle graphs and how you will be able to use them to target those parts of your code that are the hottest and would benefit the most from optimizing (Reddit comments). Really cool stuff.

Grant Extension

Makoto Nozaki is pleased to announce that Jonathan Worthington‘s request for a grant extension has been approved, albeit only for the first half for now due to lack of funding. Which should be a cue for everyone to donate!

Core Developments

  • Ticket status of past week.
  • Timo Paulssen fixed a name collision between MoarVM and a new version of libtommath.
  • Jonathan Worthington added a new tool for debugging spesh guards, and solved a problem in which spesh guards were being added repeatedly when they shouldn’t. And he fixed an issue with line number annotations that would disappear in some occasions and he fixed several recently introduced issues related to the use of $_ in some situations.
  • Stefan Seifert fixed a race condition in the garbage collection of CStruct STables.
  • Elizabeth Mattijsen made the other QuantHashes also parameterizable (aka Bag / BagHash / Mix and MixHash).
  • Paweł Murias continued his work to allow running the spectest in precompilation mode.
  • And many, many other smaller fixes and improvements in preparation of the 2019.01 Rakudo compiler release.

Questions about Perl 6

Meanwhile on Twitter

Perl 6 in comments

Perl  Modules

New modules:

Updated modules:

Winding down

Although in many ways this felt as a quiet week, plenty of stuff is going on, on stage and behind the scenes. It’s good to see so many Perl modules get an update: the mere fact of an update of a module can make people aware of its existence. Good stuff.

That’s it for this week. Yours truly hopes she didn’t forget to mention too much stuff. See you next week!

2019.02 Is it Spring?

For Jonathan Stowe it is already spring. In a spring cleanup, he updated so many modules to CPAN that the numbers are simply staggering. Thanks, Jonathan, for all these goodies: XDG::BaseDirectory, Igo, AccessorFacade, Audio::PortMIDI, App::ModuleSnap, Attribute::Lazy, Acme::Insult::Lala, Audio::Silan, Audio::Convert::Samplerate, Linux::Fuser, Linux::Cpuinfo, Audio::Encode::LameMP3, Audio::Fingerprint::Chromaprint, CheckSocket, Log::Syslog::Native, Crypt::Libcrypt and Util::Bitfield. It’s good to see all of these modules receive the love they deserve!

Grant Extension Request

Jonathan Worthington has requested an extension to his Perl 6 Performance and Reliability Engineering grant. Please feel free to leave your comments with this request, unless you’re already done that, of course.

brrt’s Resolutions

Bart Wiegmans looked back on the past year, and looks forward in his blog post titled “New years post“.

Additional getting things done

Alexey Melezhik added examples of (non-)exported functions and how to make replacements in strings to his Getting Things Done tutorial.

Cheerleading

bobthecimmerian started a discussion on Reddit about Perl 6 cheerleading. I think everybody agrees the potential is there!

A different look

ogniloud proposed a different look for the perl6.org website.

Iterating past the finish

Wenzel P. P. Peppmeyer published a blog post about his attempts to augment the Cool class, and the interesting dragons he encountered on his journey (Reddit comments).

Decompressing Zelda 3 GFX

Sylvain Colinet describes how he used Perl 6 grammars and actions as a decompression algorithm. Definitely one of the more interesting uses of grammars yours truly has seen so far.

Core Developments

  • Ticket status of last week.
  • Apart from working on the next big iteration of performance enhancements, Jonathan Worthington also made it possible to define your own CONTROL type exceptions. He also reduced the overhead of each NativeCall (by about 10%) and supplied some patches for DBIish, making some operations about 10x as fast.
  • Paweł Murias implemented native support for localtime() on all backends.
  • Elizabeth Mattijsen added the necessary glue code to make the Parameter and Signature types first class citizens and fixed some HLL meta-programming issues caused by lack of decontainerization. She also made Set and SetHash parameterizable, so you can limit the types of values acceptable to the Set(Hash).
  • Daniel Green fixed a runaway memory leak that occurred when a return signature of a Callable was Nil and that Callable was repeatedly called in a tight loop.
  • Nick Logan fixed some path issues with $*PROGRAM and $*EXECUTABLE.
  • And many other smaller fixes and improvements.

Questions about Perl 6

Meanwhile on Twitter

Meanwhile on perl6-users

Perl 6 in comments

Perl 6 modules

New modules:

Updated modules:

Winding down

A relative quiet week, also on account of last week’s Perl 6 Weekly being late, and this one being early. See you next week for your regular dose of Perl 6 news!

2019.01 Wishes for 2019

After enjoying the fireworks in his hometown and looking back on his grant work in December, Jonathan Worthington looks forward to 2019 giving an overview of features to appear in Perl 6 and MoarVM. Such as Partial Escape Analysis, decreasing compilation and startup time, and more concurrency safety. As well as getting Cro to 1.0 and getting the community version of the Comma IDE out. Looks like it’s going to be a busy year for Jonathan again (Reddit comments).

Rakudo on Javascript

Paweł Murias has written an update on the Javascript backend. He describes his work that is specific for the Javascript backend, and the stuff he’s done that is more generally useful, such as pre-compiling scripts before execution. Generally, and more specifically when doing a spectest, to shake out the last bugs with regards to precompilation.

Leapt seconds

Brian Duggan explains the support for leap seconds in Perl 6. And the intricacies when working with DateTime and Instant objects, taking leap seconds into account.

Tomtit profiles

Alexey Melezhik introduces Tomtit profiles, sets of predefined tasks that you can have Tomtit run for you. Interesting stuff if you’re really lazy!

Introducing p6env

Shoichi Kaji-san introduces a new tool for managing different versions of Rakudo Perl 6 called p6env. If you know how plenv works, you’re all set!

Squashathon results

Last Saturday saw yet another squashathon, this time focused on open issues that needed testing. And the winner is Ben Davies! (activity log).

Zoffix

Careful Rakudo Perl 6 observers may have noticed that Zoffix‘s Twitter feed has been very quiet since his tweet about awaiting Larry’s ruling with regards to the way the alias “Raku” should be used. His last tweet announced that he will no longer be involved in Perl 6 at all. On the #perl6 IRC channel, Zoffix worded it as “the project’s direction and management style doesn’t match my goals and I’ll be happier elsewhere“.

This is really sad news. Zoffix has meant a lot for the Perl 6 effort: just by looking at the sheer number of commits in the Rakudo repo, should give one an idea on how much he has done in the past 3 years. And that’s without taking into account all of the other things he’s done for Perl 6.

Zoffix, thank you for all of the work you have done! I can only hope that Larry will be able to share his views on the alias question soon and in a way that will make Zoffix come back to Perl 6.

Ticket updates

Aleks-Daniel Jakimenko-Aleksejev has made a nice overview page of current and past updates on the status of Rakudo tickets. In it, you can for instance see that people created 1254 new issues in 2018. By that metric, one can see that there’s still a lot of work to be done. But also that a lot of people are actually using Rakudo Perl 6!

Core Developments

  • Timo Paulssen fixed a performance problem on simple code blocks not getting specialized.
  • Samantha McVey made sure that the MoarVM tarball can be extracted on AIX.
  • Paweł Murias continued refining code on the Javascript backend, as described in his blog post.
  • Daniel Green performed some micro-optimizations in the code generating NFA‘s, making some cases of grammar parsing about 5% faster.
  • Jonathan Worthington merged a lot of his work regarding the lowering of $_ of the past months. This allows for much more aggressive optimizations in the near future. An immediately visible optimization is that no allocation for $_ will be done anymore for loops of the form for ^10 { ... } if $_ is not used inside the loop.
  • Elizabeth Mattijsen performed many local optimizations, such as comparing Rat‘s (4x to 15x as fast), creation of Instant (5x) and Duration objects(4x as fast), use of Map/Hash.sort (11x as fast), Buf.gist (2.5x as fast), unival (2x as fast).
  • And many other smaller fixes, improvements and additions.

Questions about Perl 6

Meanwhile on Twitter

Meanwhile on Facebook

Meanwhile on perl6-users

Perl 6 in comments

Perl 6 modules

New modules:

Updated modules:

Winding Down

A week with very mixed feelings. Joy in seeing a new year start and the anticipation of good things about to happen in 2019. An example of which are five new Perl 6 modules on CPAN, of which at least one has the potential of becoming a killer application feature of Perl 6.

Mixed feelings because of the sadness of seeing a core team member deciding on not wanting to wait any longer for guidance. Being an optimist at heart, yours truly hopes to be able to report soon that Zoffix has come back to the project that is clearly close to his heart.

So see you next week for more Perl 6 news!

2018.53 Goodbye PerlJam

This week saw the peaceful passing of Jonathan “Scott” Duff (aka perlpilot and PerlJam) at the much too early age of 47. Scott has been heavily involved with Perl 6 since at least the days of Pugs (as far as yours truly has been able to trace back).

Although he would have described his contributions to Perl 6 as small, they have been important in that they helped others to build further at the very early stages of Perl 6. Perhaps more importantly, from at least 2005 until last summer (when he became too ill), Scott has participated almost daily in discussions on the #perl6 IRC channel in the kind and supporting way that people who know him, appreciated him for.

He will be sorely missed. Scott: thanks for all the fish!

Scott on Facebook (Facebook users only) and the go fund me campaign of his family: all donations will be appreciated.

This year’s final Advent posts

Too late for last week’s Perl 6 Weekly:

Getting things done

An interaction about the use of grep and map on the #perl6 IRC channel made Alexey Melezhik realize that it would be handy to have such an example be made more accessible. He even has a little movie to show what that would look like.

Calling subs and typing

Elizabeth Mattijsen had the 9th article about migrating from Perl 5 to Perl 6 published on opensource.com: Calling subs and typing in Perl 6 (Reddit comments).

Squashathon time again

Next Saturday will see yet another Community Squashathon, this time focused on testing. And as usual, “Saturday” will be interpreted as “Saturday anywhere on Earth”, so it will be more like 47 hours worth of fixing, documenting and adding tests. Please join us in making sure we get Perl 6 even better tested than it already is!

Core Developments

Two weeks of core developments this time, as promised last week:

  • Nicolas Georges fixed an issue with utf-16 encoding with regards to null-bytes.
  • Timo Paulssen worked a lot on optimizations in MoarVM. He also made Carray[] about 2x as fast.
  • Stefan Seifert fixed various segfaults in MoarVM, as well as spending a lot of time finding a pesky issue (with a 3 char fix) when building MoarVM on big endian systems. And he removed all of the old MAST writing infrastructure, which is no longer needed.
  • Paweł Murias implemented all of the new read/write functionalities on Blob / Buf and added support for num32 and num64 on the Javascript backend.
  • Elizabeth Mattijsen added blob8.read-bits/read-ubits and buf8.write-bits/write-ubits methods to read/write any sequence of bits in buffers.
  • Nick Logan added a cache for distributions for the CompUnit::Repository::FileSystem backend, making the use of -I less sensitive to potentially large directories.
  • And many other smaller bug fixes and improvements.

Questions about Perl 6

Meanwhile on Twitter

Meanwhile on Facebook

Meanwhile on perl6-users

Perl 6 in comments

Perl 6 modules

Updated modules:

Winding Down

A week with very mixed feelings. Be careful with any fireworks if you’re celebrating the New Year! Yours truly hopes to see you all and well reading the next Perl 6 Weekly!

2018.52 Three Years Later

It was only 3 years ago that the first official release of Perl 6 saw the light of day. Today, we are 36 compiler releases on, with the latest one, the 2018.12 release coming out a few days ago. Again done by Samantha McVey and Aleks-Daniel Jakimenko-Aleksejev, with Claudio Ramirez again taking immediate care of the Linux packages. It all seems so normal. And that’s a good thing! Although some applause is always appreciated!

Prepare Your Presentations!

Both the German Perl Workshop (6-8 March 2019) and the DC-Baltimore Perl Workshop (6 April 2019) have announced their Call For Presentations. The CFP for the German Perl Workshop ends on 20 January, and the CFP for the DC-Baltimore Perl Workshop ends on 31 January. What better time to contemplate your Perl 6 Presentations for 2019 than the Holiday Season? Or even better, prepare them?

Tomtit!

Alexey Melezhik has written two blog posts about his latest product Tomtit: One Tomtit to make it and Automation of Perl 6 development workflow through the Tomtit task runner. A great new alternative to source code management and build automation! (Reddit comments).

Manage PostgreSQL Version (strings)

Luca Ferrari has written a nice blog post about a Perl 6 class to manage PostgreSQL Version strings in a Perl 6 program. A nice example of a small utility class. Too bad it isn’t in the ecosystem or on CPAN yet 😦

A new tool for language compilers

Andrew Shitov has had his presentation using grammars to design and implement a programming language accepted in the Minimalistic Languages track at the next FOSDEM (2/3 february 2019). Congratulations! (/r/perl6, /r/ProgrammingLanguages comments).

Tis the Time of Year

The final set of general Advent Posts:

And the one-line Advent Posts by Andrew Shitov:

If you’re more fluent in Chinese, you can also read all of Andrew Shitov‘s one-liner Advent Posts in Chinese, thanks to 0条评论 (Reddit comments).

Questions about Perl 6

Meanwhile on Twitter

Meanwhile on Facebook

Meanwhile on perl6-users

Perl 6 in comments

Perl 6 Modules

New Modules:

Update modules:

Winding Down

Since not a lot has happened in the past week apart from the work done on getting the 2018.12 Rakudo compiler release out of the door, yours truly will keep the other core developments for the next Perl 6 Weekly, scheduled next Sunday. See you then!

2018.51 Principally Designed

Ralph Mellor started an interesting discussion about the principles people have adopted for the design of their programming language. Recommended reading. And he initiated an at least equally interesting discussion on /r/ProgrammingLanguages about Jonathan Worthington‘s article titled: Racing to writeness to wrongness leads. As if there wasn’t already good stuff to read in this time of year!

Tis the Time of Year

Another batch of regular Advent posts:

And another batch of one-liner Advent posts by Andrew Shitov:

Improve Perl 6 Networking Support

Ben Davies has submitted a request for a grant to improve the networking support of Perl 6. Comments welcome!

last / LAST on whenever

A feature sometimes felt sorely missed: Timo Paulssen implemented the last statement (and the LAST phaser) on whenever blocks. This now gives a more idiomatic way to get out of the implicit loop in a whenever block.

Byte-oriented read/write methods

Using the nqp:: functions that Stefan Seifert has implemented using Jonathan Worthington’s design from a few months ago, Elizabeth Mattijsen has implemented the associated functions in Perl 6:
blob8.read-int8/16/32/64/128 for reading signed integers, blob8.read-uint8/16/32/64/128 for reading unsigned integers and blob8.read-num32/64 for reading IEEE floating point values (full documentation).

And of course there are also counterparts for writing: buf8.write-int8/16/32/64/128 for writing signed integers, buf8.write-uint8/16/32/64/128 for writing unsigned integers, and buf8.write-num32/64 for writing IEEE floating point values (full documentation).

All of these methods take a byte offset as the first parameter, and an optional endianness parameter for the last parameter. To indicate endianness, the Endian enum has been created: it has three possible values: NativeEndian (the endianness of the system Perl 6 is running on), LittleEndian and BigEndian. The default for the last parameter is NativeEndian. The write-... methods take a second parameter as the value to set.

Finally, the Kernel class now has a endian class method that indicates the endianness of the system on which Perl 6 is executing.

Other Core Developments

  • Ticket status of past week.
  • Ben Davies had his Pull Request implementing native descriptor access on sockets finally merged.
  • Stefan Seifert fixed several issues related to writing binary data on big-endian systems, which affected pre-compilation on those systems.
  • Jonathan Worthington has been very busy: he fixed some issues related to garbage collection and JITting and made failure to join a thread no longer a panic, but a normal exception. And he fixed a pesky issue that caused memory corruption if a type was being augmented with an additional attribute. And fixed a memory leak for long running processes such as with cro. And he improved the performance of simple regular expressions.
  • Paweł Murias fixed various issues on the Javascript backend.
  • Nick Logan fixed an issue with $*EXECUTABLE if Rakudo was invoked with a relative path.
  • And many more smaller fixes and improvements.

Questions about Perl 6

Meanwhile on Twitter

Meanwhile on Facebook

Perl 6 in comments

Perl 6 Modules

New Modules:

Updated Modules:

Winding Down

With lots of nice stuff to read, yours truly hopes you will have time enough to prepare for the holiday season.

In the coming weeks, the Perl 6 Weekly will most likely already be published on Sunday night (CET) rather than on Monday: publishing in the evening of the 24th and the 31st of December is not only in conflict with the schedule of yours truly, but probably also with most of the readers of the Perl 6 Weekly.