読者です 読者をやめる 読者になる 読者になる

Perl - clessc のバインディング

perl バインディングを書いてみた。

なんとなくできたが

  • 外部の src をどのように build したらいいかよくわからない。 本当は ./configure && make してできた オブジェクトファイルを必要なものだけリンクするようにしたいがどうやればいいかわからず、Moudle::Build の c_source に書いておいた。 -> https://github.com/perl-seis/Seishttps://github.com/goccy/p5-Compiler-Lexer を参考にしてだいたい解決。
  • minlla で minil.toml をかえても、Buidl.PL が更新されない。-> 解決
  • たまにsegment faultする。(これはclessc自体の問題な気が...)

などがよくわかっていない。どなたか教えてください。

#!/usr/bin/env perl
use strict;
use warnings;
use CSS::clessc qw(less_compile);
use CSS::LESSp;
use Benchmark qw(cmpthese);

my $less = <<'...';
.rounded-corners (@radius: 5px) {
  -webkit-border-radius: @radius;
  -moz-border-radius: @radius;
  -ms-border-radius: @radius;
  -o-border-radius: @radius;
  border-radius: @radius;
}
#header {
  .rounded-corners;
}
#footer {
  .rounded-corners(10px);
}
...

cmpthese 0, {
    clessc => sub { less_compile($less);      },
    LESSp  => sub { CSS::LESSp->parse($less); },
};

__END__
Rate  LESSp clessc
LESSp  1375/s     --   -83%
clessc 8005/s   482%     --

CSS::LESSp よりは速い。