Baby Moose Sets Out

Still in re-factor mode here at the Moose-pen.

Yesterday I had quite the success in taking a little more of the logic out of the DAD side side of things now the DAD writes not longer have to check to see if a predicate in a condition or filter has miss-matched parentheses or is missing at least the the default 'and' condition.

Before I move on I want to squish this little warning

Use of uninitialized value in join or string at...
which is really just sloppy programming on my part as this

Swiss Perl Workshop - Damian on Board (Again)

If you are in the area on August 25/26th, perhaps still in Europe after The Perl Conference in Amsterdam, and need another reason to come to the Swiss Perl Workshop, here it is...

Ladies and gentlemen, we are very pleased to announce that Damian Conway will be attending the fourth Swiss Perl Workshop as speaker, participant, and godfather!

Damian is well known for his talks, his modules, and of course his work on both Perl 5 and Perl 6.

You can sign up for the Swiss Perl Workshop here.

As always, thanks to our sponsors:
OETIKER+PARTNER | Perl Careers | GivenGain. If you would also like to sponsor the workshop then please do get in touch and see here for more information.

Virtual Spring Cleaning (part 3 of XX) wherein one release begets another

The ambush of WWW::Mechanize::Chrome shows more fallout before the module itself has been released. The module is one in a long line of browser automation modules I wrote, starting with WWW::Mechanize::Shell, reaching is breakthrough with WWW::Mechanize::Firefox and continuing from WWW::Mechanize::PhantomJS to WWW::Mechanize::Chrome.

Perl Toolchain Summit 2017 - PPI 1.222 has been released - tests, parsing fixes

PPI is a Perl document parser that enables easy analysis and manipulation of Perl source code in a structured manner.

It has been 2.75 years since the last PPI release, v1.218, so we're on a curve of shortening the gaps. ;)

Thanks to the efforts of many contributors to PPI, the support of the people at the Perl Toolchain Summit, the sponsors of the PTS, and specifically Matthew Horsfall (alh) (WOLFSAGE) i have been able to confidently release again after years spent grappling with overwhelming amounts of fixes to untested behavior, often with mutually conflicting results.

Particular thanks goes to the Sponsors for the Perl Toolchain Summit 2017:

Booking.com, ActiveState, cPanel, FastMail, MaxMind, Perl Careers, MongoDB, SureVoIP, Campus Explorer, Bytemark, CAPSiDE, Charlie Gonzalez, Elastic, OpusVL, Perl Services, Procura, XS4ALL, Oetiker+Partner.

Without the support of all of these people and companies this release would not have happened.

The highlights of this release are:

Baby Moose Back with Mama

ts re-factor day again here at the Moose-pen

With all my test passing since yesterday's post I think it is time I spend a little time re factoring before I move onto other things. Now as I said many times before I would like to have whatever is going to the DAD, Driver::DBI in this case, to be as free of logic errors as possible.

In this vain I noticed that when dealing with a where clause and predicates in general there are a two rules that should be enforced before any conditions or filters are passed into a DAD, First any parentheses that is opened must be closed and second two or more predicates must be joined by a condition.

Perl Toolchain Summit 2017 - Day 3

My third day at the Perl Toolchain Summit was primarily spent in trying to make the cpancover server and infrastructure into more of a production-ready system and less of a Devel::Cover playground. The first step in this direction was supposed to be easy - I made a login for the metacpan group with the idea that they could regularly rsync the coverage results for backup purposes. Unfortunately, this lead me down a yak shaving path I wasn't planning on travelling until later.

When setting up cpancover, I decided to take the easy option and chuck all the results into a single directory. I made the filesystem ext4 so I wouldn't have to worry about hitting limits. Unfortunately, the metacpan box doing the rsync is set up on ext3 and won't support more that 32k subdirectories. So I need to fix up the way that results are stored. I knew this would come sooner or later, even if only because I would surely one day get sufficiently tired of typing ls and immediately regretting it.

Yet another BNF: Extended Marpa Scanless InterFace

This post is to introduce another BNF, namely MarpaX::ESLIF - as the name suggests, it is largely inspired by Marpa::R2's BNF, and aim to extend the later.

The intent was to provide the following features:
  • native regular expression
  • This is done using a built-in version of PCRE2.
  • support of syntactic exception
  • externalized data reader in a streaming compatible architecture
  • unlimited number of sub-grammars

Although it looks like Marpa's BNF, it is not fully backward compatible with it! I invite readers to read the Introduction, that is covering the architecture and the main features, as well as its BNF.

The inner implementation is an XS proxy to a complete C library built on top of Marpa::R2's core engine, namely c-marpaESLIF.

This could have never exist without remarkable Marpa library, copyrighted by Jeffrey, that I applaud here for his fantastic work that deserve a wide audience IMHO.

The Perl Toolchain Summit 2017 + Perl Events Instagram Feed

I'm shortly going to drive back to Switzerland after attending the Perl Toolchain Summit in Lyon. I was mostly here on photo duties, but between taking photos did manage to file a bug against Time::HiRes, which seems to be down to some unexpected behaviour in File::Spec::Unix after testing the RC of 5.26 against our stack.

I also managed to provide a little help to the metacpan developers by getting to the bottom of an issue upgrading the VM for use with vagrant. As usual it was down to "I updated vagrant/virtualbox and it broke" kind of regressions. I'd already spent the last week upgrading our vagrant build scripts at work, so this turned out to be fresh in my mind and therefore reasonably straightforward. You can now build the up to date metacpan dev environment in a few minutes, win!

Baby Moose Starts Yet Again

Well is bug squish day here in the Moost-Pen

Yesterday I manged to get my test to fail properly I guess today I better start looking at fixing the code that is breaking starting with my update;

I left print warn on and in my output I am getting this

DBD::DBM::db prepare failed: Couldn't parse at C:/Dwimperl/perl/site/lib/DBI/DBD/SqlEngine.pm line 340
 [for Statement "UPDATE user SET address = ?"] at 
and a little playing about with a small test script I discovered that I have to add in a 'where' clause to make an update work. I first have to change my test a little;

Perl5 to Java compiler - first release

This is the first release of the Perl5 to Java compiler.

https://github.com/fglock/Perlito/releases

In the github page there is a link to the "jar" file and the lib directories for JVM-specific Perl modules.

The "perlito5.jar" file provides a perl-like command line:

java -jar perlito5.jar -I src5/lib -e ' print "hello, World!\n" '

Note that you don't need to compile a Java file. Perlito5 now compiles the Perl code to JVM bytecode in memory and executes it. Also eval-string is executed as JVM bytecode - there is no interpreter.

Perlito5 is an implementation of the Perl5 language. It is work-in-progress. It provides an impressive coverage of Perl features, but it will not run most existing Perl programs due to platform differences.

More details in the GitHub Perlito5-Java page: https://github.com/fglock/Perlito/blob/master/README-perlito5-Java.md

Viewing Your Module Permissions on MetaCPAN

We're currently at the Perl Toolchain Summit in Lyon, working hard on improving MetaCPAN. One feature which we went live with yesterday is a view on CPAN module permissions. This means that you can now easily see which modules any CPAN author has permission to upload.

Read the full post.

Perl Toolchain Summit 2017 - Day 2

My first day at the Perl Toolchain Summit (PTS) was largely spent coding, or dealing with pull requests, tickets, and releasing. The second day had far less of that sort of stuff, and a lot more of the sort of stuff that it's much harder to do away from the summit.

But it started off with a new pull request from Todd Rinaldo resurrecting a closed RT ticket. There is a whole class of problems Devel::Cover has to deal with which stem from the program being exercised changing the environment as it runs. The most obvious, perhaps, is changing directory, which is also something I looked at again yesterday. But this time it has to do with dropping permissions during the run. Todd and I had a discussion about it and, with the principles in place we'll deal with the technical matters in the coming days.

Baby Moose All in a Row

It is getting all my Baby Moose in a row day here in the Moose-Pen

So after yesterday's major TARFU with five tests failing and worse three tests reporting false positives I think a good review is needed.

The first thing I am going to clean up is the false positive test like this one;

I can't install perl-5.26.0-RC1 in CentOS 5.11

I try new perl in Cent OS 5.

But I can't install perl-5.26.0-RC1 in CentOS 5.11.

sv.c:(.text+0xe11): undefined reference to `Perl_fp_class_denorm'

Maybe this is similar with the following ticket.

https://www.nntp.perl.org/group/perl.perl5.porters/2016/09/msg239982.html

More information

The Toolchain Summit is only possible with support from our sponsors

The Perl Toolchain Summit (PTS) started yesterday (Thursday 11th May) in Lyon, France. 35 dedicated toolchain developers have assembled for four days of intensive discussions and co-working. Not only does a lot get done in these four days, but we send everyone home with longer todo lists, fired up to keep working on them.

The developers come from around the world, and we're only available to do this with the generous support of all of our sponsors. You've seen individual posts for our Platinum and Gold sponsors, but in this post we'd like to tell you about our other sponsors. If you get the chance, please thank them: all Perl developers benefit from this summit.

Turning Hooks off in App::GitHooks

CPAN Pull Request Challenge selected App::GitHooks for me in February. As usually, I started by browsing the issues, and my attention was drawn to Tim Bunce’s request to add a way to skip given hooks.

Baby Moose Takes a Break

Its find a flaw here in the Moose-Pen

Well today did start out well and I began work on expanding Driver::DBI a little when I just wanted to check to see if that DBD::DBM driver of mine could do a little more that what I played with in '10_crud_basic.t' and I go it to take this SQL;

SELECT username as name,address, addresses.street FROM users join addresses on users.address = addresses.id
after adding in the 'addresses' table and a few rows. I thought that was a little odd as DBD::DBM is suppose to use DBI::SQL::Nano so to figure out what SHQ driver I was using I added this into some of code;

print $dbh->{sql_handler}
and that printed out

Converting glob patterns to efficient regexes in Perl and JavaScript

In Glob Matching Can Be Simple And Fast Too Russ Cox benchmarked several glob implementations by matching the string a100 against the pattern (a*)nb. (Here exponentiation refers to string repetition, as in 'a' x 100 matched against ('a*' x $n) . 'b' in Perl syntax.) What he found was that some implementations returned results instantly whereas others got extremely slow as soon as n grew past 5, taking seconds, minutes and even hours to finish.

This problem is caused by excessive backtracking. It's possible to implement globbing without nested backtracking (and the linked article explains a simple algorithm to do so), but a naive recursive implementation will suffer from this issue. It affects some shells, FTP servers, and programming languages, including Perl: File::Glob uses code from BSD libc (which is affected, unlike glibc). A patch was written and the next File::Glob release will include a fixed algorithm.

Ref::Util updates: Pure-Perl now available!

During our first day at the Perl Toolchain Summit (PTS-2017), Aaron Crane and I just released Ref::Util 0.200 and Ref::Util::XS, which constitute the next planned major release of Ref::Util. Yup, it now has Pure-Perl and optional XS. Read on.

Perl Toolchain Summit 2017 - Day 1

This year the Perl QA Hackathon has been rebranded as the Perl Toolchain Summit on the advice of the marketing team. This is the tenth year that the event has been held and, after missing the first few due to scheduling conflicts with my (then young) children's birthdays, I suppose I have now become something of a regular. This year the event is being held in sunny^W rainy Lyon - a shortish train and car (thanks Lee) ride for me.

The Perl Toolchain Summit (hereafter PTS) has become the most important Perl event of the year for me. It's a chance to get together in one room (two actually) as many of the people as possible who work on the Perl infrastructure. This is not the perl core, but the entire toolchain that fits around the core - primarily focussed on CPAN, the archive of Perl modules. CPAN was one of the first such archives, and the infrastructure around it - especially with regard to CPAN Testers and the MetaCPAN architecture, is generally regarded as without peer.

About blogs.perl.org

blogs.perl.org is a common blogging platform for the Perl community. Written in Perl with a graphic design donated by Six Apart, Ltd.