DELAEMON BLOG

Live as if you were to die tomorrow. Learn as if you were to live forever.

hhvm install on OSX 10.8 (UNSUPPORTED)

OSXは正式にはサポートされてない
http://docs.hhvm.com/manual/en/install.macosx.php
jit対応してないから速さは体感できないけど、機能試したり開発はできる。
ローカルで開発したくてOSXにしたけど、UbuntuとかDebianでやる方がよさげ。

ここ見てインストール
https://github.com/facebook/hhvm/wiki/Building-and-installing-HHVM-on-OSX-10.8

1時間以上かかる。何回か途中でこけるけど、再実行で先に進む。

brew update
brew upgrade
brew tap homebrew/dupes
brew tap homebrew/versions
brew tap mcuadros/homebrew-hhvm
brew install hhvm --HEAD

エラーで止まる。

--HEADは現在使用不能。3.1.0の変更に追従出来ていない。
https://github.com/mcuadros/homebrew-hhvm/issues/87

とりあえず動かしたいので最新じゃなくていい。

brew install hhvm

確認

hhvm --version
HipHop VM 3.0.1 (rel)
Compiler: heads/master-0-g6ea18c3ef056ff8b863a56f8ec4940b7b320f351
Repo schema: e69de29bb2d1d6434b8b29ae775ad8c2e48c5391


型エラーになるか動かしてみる。
sample.hh

<?hh

// Hack functions are annotated with types.
function my_negation(bool $x): bool {
  return !$x;
}

// and return with the type 'int'.
function add_one(bool $x): int {
// function add_one(int $x): int { // success
  return $x+1;
}

print(add_one(1));
hhvm sample.hh
Fatal error: Argument 1 passed to add_one() must be an instance of bool, int given in /path/sample.hh on line 11

phpでも動くよ。
sample.php

<?php
function add_one(int $x): int {
  return $x+1;
}

print(add_one(1));
hhvm sample.php

Fatal error: Syntax only allowed with -v Eval.EnableHipHopSyntax=true in /Users/dela/Documents/develop/hhvm/sample.php on line 2

オプション付ければね。

hhvm -v Eval.EnableHipHopSyntax=true sample.php
2

混合もOK。
sample.php

<?php
function add_one(int $x): int {
  return $x+1;
}

$list = [1,10,100];
$r = array_map('add_one', $list);
var_dump($r);
hhvm -v Eval.EnableHipHopSyntax=true sample.php
array(3) {
  [0]=>
  int(2)
  [1]=>
  int(11)
  [2]=>
  int(101)
}

OSXでも試すくらいは出来る。
でも試すだけならtutorialある。
http://hacklang.org/tutorial

お疲れさまでした。