2014.41 & .42: APW, GLR progress, Perl 6 IDE, …

Hey everyone!

I’m sorry I’ve kept you waiting instead of reporting directly after the APW! At least you didn’t miss actual code being worked on for the GLR. There was a whole lot of discussion, though. I had the privilege to watch and listen and occasionally speak up. These people surely know their stuff! Patrick Michaud has written a post on his blog that summarizes the decisions made and things found out.

I also announced that discussions would happen about what ought to be in Perl 6.0.0 and what should wait a bit still. That hasn’t been done intensively at the APW, but that’s not too worrysome. The rough consensus is that we’ll have NFG (Normalized Form Graphemes, see S99), NSA (Native and Shaped Arrays) and the GLR (Great List Refactor™).

So, let me talk a bit about the APW. Aside from very pleasant socializing, there were of course a whole bunch of Talks. I had planned to present the thing I’m cheekishly calling RoR, but I ended up not writing a single line of Code for that project so far, so instead I started doing a little bit of Game Development. You can find the result on my github repository “gtk_cairo_shooter”. I was quite (pleasantly) surprised when I noticed the performance wasn’t actually terrible. After all, Rakudo Perl 6 is supposedly crazy slow, right? Turns out it’s fast enough, even if you spend about half the time of each frame rendering vector graphics entirely in software …

My second lightning talk was about a little “live coding” tool – very similar to jnthn’s “code golf assistant” – that lets you play with cairo. The code can be found in the same repository that also has my little game.

Of course there were other great talks there as well. It’s a safe bet to say that jnthn’s talk was among the best, but nine’s talk about Inline::Perl5 certainly astounded a whole bunch of people! Instead of going on to list all the talks, I’ll just recommend you wait for the recordings to become available and watch them by yourself. The speakers are certainly better at giving their talk than I am!

During the Hackathon, there was lots of discussion, hacking everywhere, people trying out Rakudo Perl 6 for the first time ever or for the first time in years. Unfortunately I was quite exhausted, so I didn’t end up talking to many of the other attendees 😦

One person I did talk to was Tim Bunce, who complained (constructively!) about the quality and amount of documentation we have, as well as the fact that it’s very easy to stumble upon very outdated content via search engines etc. Better “on-ramps” are certainly high on our “most wanted” list for the near future …

After all this talk about APW, I’m realizing you’re following the weekly because it’s a somewhat succint summary of what’s been worked on a weekly basis. So here’s the usual assortment of Perl 6 improvements in bullet point form:

  • lizmat has improved deprecation messages by supplying a “since version $foo” aspect and at the same time deprecated a whole bunch of things (even though for the 2014.10 release these deprecations have been temporarily un-done again). Among others, she removed the ability of IO::Handle to represent an unopened file in this commit (somehow I’ve got the feeling I’ve talked about this one already…)
  • The already deprecated KeySet and KeyBag classes as well as the ucfirst sub and method have been kicked out of Rakudo as well as the .delete and .exists methods on Arrays, Hashes, Sets, …
  • moritz improved the worst-case speed of escaping strings in json by making the Str.trans method a whole bunch more efficient. On a string that’s just ten thousand newlines, the run time went from 13.5s to 4.9s after the first commit out of three.
  • FROGGS fixed parsing version literals that have a more-than-one-digit long major version number. This bug had been chilling out in our RT since Dec 2012…
  • b2gills fixed a bug with the enum constructor – that I stumbled upon when building the Cairo module – where giving an element in the enum a value by using a pair constructor with a quoted name wouldn’t set the counter for the next entries in the enum.
  • atroxaper added a –git-depth option to all the git clone commands in rakudo’s and nqp’s build systems. Especially the nqp repository is pretty darn huge due to all the old stage0 blobs we have in there…
  • brrt and me added some more operations to the JIT, as I’ve longed for higher “jitted percentage” in my shooter game thingie. Among them are savecapture, usecapture, getobjsc, and neg_n (by brrt) as well as sin, cos, tan, asin, acos, atan, atan2, time_n, nativecallinvoke (not as good as it could become, though!), pow_n and sqrt_n (by me). That day, I learned, that the jit C call emitter has to put floating point arguments into different registers than regular registers, causing my trigonometry ops to blow up quite spectacularly …
  • FROGGS worked with an OpenSuSE developer to improve the packagability of MoarVM.
  • jnthn vastly improved performance and correctness of the does and but operator with regards to roles and access to a metaobject’s methods. He also implemented a method “lookup” for metaobjects that will find a method for you that you can use for introspection (rather than invocation).
  • peschwa made the flipflop operator do a smartmatch against $_ instead of just calling .Bool.
  • After I found out that Bool.roll is about 10x slower than 2.rand.Int.Bool, lizmat went ahead and gave pretty much all picks and rolls a nice little overhaul that improves performance across the board. Nice!
  • lizmat also created a “new-from-absolute-path” constructor for internal use that ought to make path-juggling functions a nice bit faster, as well.
  • the “more” method on Supplies has been renamed to “emit” and the “winner” keyword has been renamed to “earliest”.
  • moritz and mouq did quite a bit of work on doc.perl6.org; Thanks, you rock!
  • tony-o started a project called “pandapack”. It currently does almost nothing, but I suppose we can already get excited about what it *may* do in the future 🙂
  • ugexe built an example .travis.yml that uses rakudobrew to compile a fresh rakudo and test your module.
  • Jnthn put his OO::Monitors and OO::Actors module up on the ecosystem – these are the modules he gave a talk about at the APW.
  • paul cochrane added PerlMongers::Hannover (inspired by Lynn Root’s pyladies lightning talk at EP2014) as his very first Perl 6 module. Welcome aboard! 🙂

Two more things worth pointing out that don’t quite fit into the bullet list format:

masak has been writing a whole bunch of posts about macros. These are meant to be kind of a “request for comments”, so feel free to point out things you find wrong/lacking/unsound/…

azawawi has been working steadily on improving Farabi6, a web-based IDE for Perl 6. The newest design is inspired by the way the IPython notebook handles code “blobs”. I kind of like it and I’m very eager to see what Farabi6 is going to look like in one or two month’s time and I’m hoping I can get a few patches in as well. I’m thinking it’d be a pretty lovely thing to have in Rakudo::Star! Here’s a screenshot for you:

A screenshot of the Farabi 6 in-browser IDE.

 

Even though this post is already quite a bit longer than the usual ones, I still feel like I’ve forgotten something :\

Ah well, it won’t be the end of the world!

See you around! 🙂

One thought on “2014.41 & .42: APW, GLR progress, Perl 6 IDE, …

  1. The topmost item on my PERL6 wishlist is Rakudo Star port on PaaS( particularly, Qt Cloud Services Managed Application Runtime buildpack, Redhat OpenShift Online Cartridge, IBM BlueMix buildpack). As Perlito works with browser side, PERL6 grammar based solution can compensate greatly for greedy vendors shipping dated XSLT specification to trap us into their preferred expensive solutions. I am cool with learning the web stack and stuff, but getting enough things done to build substantial portfolio is imho, much higher priority. My personal long-term selection is XSLT, PERL6, C++, wxWidgets, tinyAVR. Realizing being good developer to me has been like being the hammer that sees everything to be nails. I’ve had considerable introspection before deciding these to be the tools for me. Also I got to start playing with PERL too recently to bother starting from PERL5. So it’d be great to see Rakudo PaaS availability so I can enrich the same skill more opposed to going down the kitchen sink.

Got something to note?