実行ファイルの作成に成功。次はWindowsネイティブアプリを作れることを試す。- SPVM開発日記

SPVMでexeファイルの作成に成功した。共有ライブラリも問題なく読み込めるようになった。

試験環境は、以下のようなコマンドを打って、実行ファイルを作れる。

      perl Makefile.PL
      make && perl -Mblib -- blib/script/spvmcc -I t/default/lib TestCase::MyExe
      env LD_LIBRARY_PATH=spvm_build/exe spvm_build/exe/TestCase__MyExe

ソースコードはこちら。

package TestCase::MyExe {
  use TestCase::Minimal;
  use TestCase::Extension;
  sub main : int ($argv : string[]) {
    my $minimal = new TestCase::Minimal;
    
    $minimal->{x} = 10;
    
    print((string)$minimal->{x} . "\n");
    
    return $minimal->{y};
  }
  
  precompile sub precompile_sub : int () {
    
    return 5;
  }
}

これはSPVMのソースコードなのだけれどspvmccコマンドを使うと、実行ファイルに変換ができる。

SPVMの実行ファイルは、単独のファイルじゃなくって、共有ライブラリが読み込めるのが特徴。

実行ファイルになると何がうれしいか

実行ファイルになると何がうれしいんだろうか?

perlで実行するのと比べて何がうれしい?

それは、ランタイム環境なしで、実行できるということだ。

ランタイム環境がないと何がうれしいか?

ランタイム環境がないと何がうれしいのか?

  1. 単体で配布できること
  2. perlやSPVMのインストールがいらないこと

Webアプリはサーバーで動くけれど、クライアントアプリというのは、クライアントのOS上で動く。そして、商用で開発したい場合に、配布しないといけないので、ライセンスの問題がでてくる。

サーバー上で動くアプリはGPLのライセンスでも、十分だけれど、クライアントへの配布を考えると、ややこしいライセンスの問題を考えたくない。

MITライセンスにしようかな

SPVMで生成された実行ファイルは、Perlソースコードはまったく含まないけれど、SPVMのソースコードは、含んでいる。ということは、「商用利用したいと思ったときに、めんどくさいライセンスの問題に悩まされるかもしれない。」と考えるかもしれない。

だから、SPVMはMITライセンスにしようかなと考えている。

そして、SPVMで生成された実行ファイルは、MITライセンスの下で作成されたものであり、商用利用を含めて自由に利用できますと書こうかな。

サーバーで動くソフトウェアは、GPLでもよいんだけれど、クライアント側で動くソフトウェアでは、GPLはちょっと使いにくいと僕自身は感じている。

でも、僕は、ライセンス詳しくないから、ちょっと調査しないとなぁ。