julialang v0.4

先週 julia の最新安定バージョンの 0.4 がリリースされたみたいですね。早速ビルドしてみました。Windows を使っているので msys2 を使ってここにあるとおりにビルドしてます。ちょっと前まで master をビルドしようとすると gmp のビルドでこけてたんですけど なんかいつの間にか治ってました。 issue 閉じなくていいのかな。

ビルドはなぜか openblas が cpu の自動認識に失敗したので OPENBLAS_TARGET_ARCH を直接指定してもう一度 make 走らせたらいけました。

make -j 4 OPENBLAS_TARGET_ARCH=HASWELL

こんな感じ。OPENBLAS_TARGET_ARCH に指定できる物は deps/openblas/TargetList.txt に列挙されてます。不思議なのですが openblas 単体でビルドしようとすると問題なく cpu 認識するようです。何が違うんだろうか。

もう一つ、なぜか usr/lib/sys.ji が生成されませんでした。多分これが原因だと思うんですけど、うちの環境だと起動に 5s 前後かかってしまう…。 0.3.11 のときはビルド時に自動的に生成されていたと思うんですけど。地味につらいのでいろいろ考えた結果、よく見ると usr/lib/sys.dll は生成されているようなので、起動時に --precompiled=yes つけるようにすると <1s で起動するようになりました。とりあえず常に --precompiled=yes つけるバッチファイル書いてパス通ったところにおいて満足しています。

@echo off
path\to\julia --precompiled=yes %*

実行オプションに --output-ji とか system image 生成するためのものがあるっぽいんですけどうまくいかない…。

ERROR: could not open file boot.jl

とか言われる。

まだちょっと触っただけですけど、 Incremental code caching とかいう新機能のおかげで package の読み込みがかなり早くなっているのに驚きました。初回使用時にコンパイルのために待つことになるので、いっそのこと Pkg.add() のときにやってくれてもいいかなー、と思いました。コンパイルされたパッケージのイメージファイル (多分、~/.julia/lib/ 以下のファイル) が生成されてしまえば以降は速いですね。多分パッケージをアップデートしたらまた、コンパイルしなおす感じでしょう。一番最初に julia をさわったときは起動の遅さとパッケージ読み込みの遅さ(Gadflyとか)が引っかかっていたので、今回ので解消されてしまいました。いくつかコンパイルできなかったパッケージもあったみたいなので、もしかしたら将来もう少し早くなるのかも。

もともと数値計算を主眼に置いているので、息をするように複素数を扱えて、瞬きをするように行列計算できるうえ、多重ループ書いても速いとか夢みたいな言語なのでひそかに応援してます。