Perl6 のパッケージマネージャ Panda を使っていて projects.json
が壊れた様な動きをしてて、「あー、Perl6 はまだエコシステムとして完成していないなー」とか思っていたのだけど、どうやら違って Panda が使っている JSON パーサ JSON::Fast
の非常にイケてない事が分かった。しかもパンダもパンダで
my $list = try from-json $contents;
try
を付けて呼び出してるので JSON::Fast
が読み込みに失敗していてもエラーが無視されてしまう。よってモジュール名からリポジトリ名を得られずに Panda が寝たままになってしまう。最悪だ、このパンダ野郎!
イラッとしたので
$ panda install git://github.com/tony-o/perl6-json-faster.git
この様にして JSON::Fast よりも 4093% も速く、そして安定している JSON::Faster を入れ
--- Ecosystem.pm.org 2015-09-17 21:42:09.334540500 +0900
+++ Ecosystem.pm 2015-09-17 22:00:38.246420600 +0900
@@ -1,7 +1,7 @@
class Panda::Ecosystem {
use Panda::Project;
use Panda::Common;
- use JSON::Fast;
+ use JSON::Faster;
use Shell::Command;
has $.statefile;
@@ -20,7 +20,7 @@
for $fh.lines -> $line {
my ($mod, $state, $json) = split ' ', $line, 3;
%!states{$mod} = ::("Panda::Project::State::$state");
- %!saved-meta{$mod} = from-json $json;
+ %!saved-meta{$mod} = try from-json $json;
}
$fh.close;
}
Panda を弄ってやったらメチャクチャご機嫌になった。起きろパンダ!