2015/10/14


C言語に Perl6 を埋め込んで FizzBuzz。

#include <moar.h>
#include <stdio.h>

#define NQP_LIB_DIR PREFIX "/share/nqp/lib"
#define PL6_LIB_DIR PREFIX "/share/perl6/lib"
#define PL6_RUN_DIR PREFIX "/share/perl6/runtime"

int
main(int argc, char* argv[]) {
  char *vm_args[] = {
    "-e",
    "use v6;\n"
    "say (<Fizz>[$_%3]||'')~(<Buzz>[$_%5]||'')||$_ for 1..100;\n"
  };
  const char *lib_path[] = { NQP_LIB_DIR, PL6_LIB_DIR, PL6_RUN_DIR };
  const char *filename = PL6_RUN_DIR "/perl6.moarvm";
  MVMInstance *instance = MVM_vm_create_instance();
  instance->num_clargs = 2;
  instance->raw_clargs = vm_args;
  instance->exec_name = "FizzBuzz";
  instance->prog_name = filename;
  memcpy(instance->lib_path, lib_path, sizeof(lib_path));
  MVM_vm_run_file(instance, filename);
  MVM_vm_exit(instance);
  return 0;
}

Perl5 のやり方と大して変わらないが、やってる事は MoarVM のインスタンスを起動して Perl6 の VM イメージを食わし、VM 起動引数として -e とプログラムを渡す。ビルドには perl6.morevm へのパスが必要になる為、pkg-config でトリックを使う。以下 Makefile。

PREFIX=$(shell pkg-config --variable=prefix moar)

fizzbuzz : fizzbuzz.c
    gcc -o fizzbuzz `pkg-config --cflags moar` \
        -DPREFIX=\"$(PREFIX)\" \
        fizzbuzz.c \
        `pkg-config --libs moar`

これといって何が出来るという訳ではない。

Posted at by



2015/10/07


Perl6 向けに GNTP Growl のモジュールを書いてエコシステムに pull-request しマージされました。

add p6-Growl-GNTP by mattn · Pull Request #67 · perl6/ecosystem · GitHub
https://github.com/perl6/ecosystem/pull/67

暗号化とかやってないのでこれから拡張していきます。

これで晴れて Perl6 CPAN Author となりました。ちなみに Perl5 より敷居が低いのでみんなどんどん書いたらいいです。

Posted at by



2015/09/28


Slack に URL を張り付けた際、サイトのアイコンが表示されるのだけど、それがどうも汚く困っていた。

slack1

ドキュメントを読む限り、Twitter Card と OpenGraph に対応しているらしいが、僕のサイトでも OpenGraph は設定済みだった。

<meta property="og:image" content="http://mattn.kaoriya.net/images/logo.png" />

なぜだー!と思いながら、もしかしたら「一つでも Twitter Card があると Open Graph が無視されるんじゃね?」と思って

<meta name="twitter:image" content="http://mattn.kaoriya.net/images/logo.png" />

試してみたらビンゴだった。

slack2

ちなみに

sonots
tokuhirom

だそうです。

Posted at by