Optimizing compiler benchmarks (part 1)

Since my goal is to improve the compiler optimizer (staticly with B::CC, but also the perl compiler in op.c) I came to produce these interesting benchmarks.

I took the regex-dna example from "The Computer Language Benchmarks Game" at shootout.alioth.debian.org/

Ooh, pretty!

CPAN Ratings has had a face lift.

Mass-Testing Dancer's Plugins

cross-posted from dams blog

Mass-Testing Dancer's Plugins

So, as I said at YAPC::EU 2012, one thing that remains to be done before Dancer 2 can be released : migrating the plugins, making sure they work with it.

To be able to do that, what's best than an automatic testing facility ?

The goal is to get all Dancer plugins, test them with Dancer1, and Dancer2, and produce a report, to check which one fails and need fixing.

Step 1. Get the list of Dancer plugins.

Easy ! let's use Metacpan. After searching, I finally got a way to get the list of all modules that depend on Dancer. Then filtering out the ones that don't contain "Plugin" will do the trick.

Introducing HTTP::CookieMonster

If you've ever had the pleasure of poking around in your WWW::Mechanize or LWP::UserAgent cookie_jar, you'll know it's not an entirely painless process. It's certainly not impossible, but it feels a bit like jumping through hoops. The cookie_jar functionality in LWP::UserAgent and the modules which inherit from it is provided by HTTP::Cookies. Before I go any further, I'd like to thanks Gisle Aas for HTTP::Cookies, which is a very important bit of code. This isn't a complaint about HTTP::Cookies, but rather an attempt to make it even more accessible.

Before we do anything with cookies, let's make one request to ensure we have some cookies in our cookie_jar.

    use WWW::Mechanize;
    my $mech = WWW::Mechanize->new;
    $mech->get('http://www.nytimes.com');

Recent patches to GraphViz and GraphViz2

Hi Folks

GraphViz V 2.11 adds support for vdx (Visio) output, provided you've patched the underlying Graphviz code first. The patch is presumably downloadable from the Graphviz site. I run Debian so I did not test it, but the user who requested this patch assures me it works perfectly.

GraphViz2 V 2.04 requires Perl V 5.14.2 for utf8 support. Also, the code handling subgraphs was incomplete, and a small but significant set of patches there should now support all expectations for subgraphs.

Sample output for all demo programs. Search that page for 'rank.sub.graph' to see the new demos' output.

Subroutine Signatures - my Plan (v.1)

There has been quite a lot of discussion on p5p about subroutine signatures, so I figured I'd lay out my current vision here with as much details as I can. As more of this gets hashed out on p5p, I expect I'll add notes at the bottom (can I do that?) pointing to a blog entry for Subroutine Signatures - my Plan (v.2), etc.

All of this is what I'm working on, but I don't have a commit bit, so it's not going anywhere without getting thoroughly vetted and blessed first.

I'm posting my code at http://github.com/PeterMartini/perl, in the peter/signatures branch (meant to be kept in tandem with doy/subroutine-signatures).

GOAL:

Part 1:

In the scope of use feature "signatures" (or whatever)

sub foo($bar,$baz) {}
equivalent to sub foo { my ($bar, $baz) = @_; }
sub foo($bar,@baz) {}
equivalent to sub foo { my ($bar, @baz) = @_;}
sub foo($bar,%baz) {}
equivalent to sub foo { my ($bar, %baz) = @_;}

Part 2:

Paris.pm technical meeting

cross-posted from dams blog

Paris.pm technical meeting

( french version below )

The next Paris.pm technical meeting will happen the 25th september 2012, with:

  • Elizabeth Cholet: Firefox automatization with Perl using AnyEvent, Coro and MozRepl modules

Location : 181 avenue Daumesnil, 75012 Paris, France

Google map : google map

If you are interested, and live in Paris, please join us ! If you need more info, ask in the comments.


La prochaine réunion technique de Paris.pm se tiendra mardi 25 septembre 2012, et le programme est :

  • Elizabeth Cholet : l'automatisation de Firefox avec Perl en utilisant AnyEvent, Coro et les modules MozRepl

Adresse : 181 avenue Daumesnil, 75012 Paris

Google map : google map

Si vous êtes intéressé, n'hésitez pas à venir, entrée libre et gratuite. Pour plus d'info, demandez dans les commentaires.

dams.

Testing scripts in your distribution, portably

This is a summary of the things I had to do, to add a simple test case for a script that I added to one of my distributions. It's taken over 2 elapsed days, 3 developer releases, and two sessions on IRC, to get to the end. I'm writing this up (a) so I don't forget, and (b) in case it's useful to someone else, and (c) in case the peanut gallery can point out any further gotchas I've missed.

Some interesting modules xreffed by their subject matter

Hi Folks

Sometimes when scanning the feed of module releases from MetaCPAN, I see a module which I don't have a use for, but which I think I'd better make a note of.

I keep these notes in a TiddlyWiki, and I've just extracted them as a new page
here .

OK. Nothing amazing, but it amuses me....

HTTPS-Everywhere rulesets for Perl sites

HTTPS-Everywhere is a Firefox and Chrome extension brought by the EFF to automatically use https:// URLs instead of http:// if the site supports that. Think about what happens when you type http://github.com instead of https://github.com/ in your address bar.

So I added rulesets for PAUSE, BitCard and MetaCPAN.

Design considerations for Alien::Base

Anyone who has been following my progress on Alien::Base knows that in the past few months I have been struggling to nail down the final problem, namely Mac’s library name problem. The short story is, on Mac, the library has the full path to the module baked into the library during compilation. My problem is that I don’t tell it the correct path during compilation. Why?

The comma operator

Beginners are often startled by the following Perl behavior, and I admit this is one side of Perl that is not really attractive (anymore? or ever?):

$a = 6, 1, 1, 1, 7; say $a; # 6
$a = (6, 1, 1, 1, 7); say $a; # 7
@a = (6, 1, 1, 1, 7); $a = @a; say $a; # 5

Why such seemingly inconsistent and strange behavior?

Deep Cloning

I've been using Storable's dclone for years, but there's a module on CPAN called Clone that is said to be much faster. However, it doesn't seem to work.

Parsing on your new hyper-quantum computer

If you want to build a ship, don't drum up the men to gather wood, divide the work and give orders. Instead, teach them to yearn for the vast and endless sea. -- Antoine de Saint-Exupery

[ This is cross-posted from the new home of the Ocean of Awareness blog. ]

Imagine that, the day the new machine arrives, you are maintaining a parser. Your parser is the current state of the art -- hand-written recursive descent.

The new computer will replace your staid old von Neumann box is not just a quantum computer. It's fully non-deterministic. You can superposition any time you'd like, and then "unsuperposition" to restart. And when superpositioning, you can can examine all the possibilities, not just one.

How would you rewrite your recursive descent logic to take advantage of this new hyper-quantum computer? Actually, this is exactly the same question that Marpa poses to you today. Because for all classes of grammar in practical use, including the LL(k) grammars parseable by recursive descent, Marpa is efficient non-determinism.

Perl interface to LDTP testing library

Gabor Szabo realized that it's very easy to dare me to do things and then making them available for Perl. I'm somewhat like Marty in Back to the Future - "I am not chicken!"

So, now we have LDTP. However, it needs your help. What is LDTP you ask? Good question!

Why Perl Needs Screencasts

gorilla_small.pngAfter our recent launch of a free perl hosting for dancer and other frameworks (feel free to try it out at http://1.ai or see it live in this retro page at http://hulk.1.ai/perl) I was thinking on how programmers choose one or another language to create web apps. I am not talking just about more experienced programmers that would certainly stick with what they know already - but beginners, students, the new geeks.

Fast datetimes in MongoDB

One of the most common complaints about the Perl MongoDB driver is that it tries to be a little too clever. In the current production release of MongoDB.pm (version 0.46.2 as of this writing), all datetime values retrieved by a query are automatically instantiated as DateTime objects.

The next release of MongoDB.pm will fix this problem, allowing for nearly tenfold speed increases under some circumstances. The details are available on my blog here: Fast datetimes In MongoDB.

Daily #perl6 summary now built in to irclog software

One of the best ways to connect to the Perl 6 community is to join the hub of its activity, the freenode IRC channel #perl6. Another great approach is to read the daily log for that hub. To start with the full log for today, visit today's log of the freenode IRC channel #perl6.

The original driver for this blog was publishing short(ish) "summaries" of that looong log. Since starting it a few weeks ago things have been experimental, erratic, rapidly evolving. Today things settled nicely.

From today forward, to see a "summary" (subset) of any day's log, just visit that day's log page and click the "summary" link that appears near the top, typically near Camelia. (Or, to save a click, here's a direct link to yesterday's summary.)

Q. Why is the summary blank?

A. Because neither you nor I have yet added some lines to the summary for the day you're viewing.

Q. How do I add lines to the summary for the day I'm viewing?

A. Make sure you are viewing the full log. Click the "Enable summary mode" link (below the words "All times shown according to UTC."). Click the checkbox of the line(s) you want to add. Click the "Save summary changes" link. Drink a beer.

Q. Does that mean no more #perl6 summaries at this blog?

A. Good question.

Q. Are you going to bring back the organized breakdown such as was done for 26 #perl6 summaries for 2012-09-02 or the earlier weekly summaries?

A. Do you think I should?

YAPC::Europe 2013 in Kiev, week minus 48

This week we publish an interview with one of the YAPC::Europe 2013 organisers, that was recorded for the recent Yet Another Perl Podcast on 13 September.


Dear listeners, this is the second issue of the second season of Yet Another Perl Podcast, the podcast about Perl in Russian. Here today are myself, Alexander aka Afiskon Alexeev, Dmitry Degtyarev and our today's guest, Perl's rock star Vyacheslav vti Tikhanovskiy. This issue is basically a chat with him.

-- What does it mean, a non-religious developer, as it is stated on your blog?

-- Before answering this question, let me say that a rock star is an exaggeration. As for the non-religious, there're two meanings here. First, I'm non-religious literary, second, Perl is not a religion for me, I can easily use any other programming language or any utilities, be it in Perl or not.

-- But you still think of yourself as of Perl developer, right?

-- Mostly yes, that's right. It is mainly Perl, but as I said, it is possible to go outside.

Using Catalyst::Plugin::AutoCRUD: Tutorial with Examples for Newbies

  • Introduction
  • Don't Blink!
  • As Simple As That!
  • What Next?

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.