はじめに
ServoとはMozillaやサムスンがバックアップしている関数型言語Rustで作成されているHTMLレイアウトエンジンです。
今日は、RustのキラーアプリであるServo Layout Engineをビルドして使ってみます。
関数型言語で作っているのできっと、型安全でセキュリティホールが少ないブラウザになっていくのでしょう。
servoのページ
githubにServoはあります。あらかじめ、Rust0.8がインストールされていましたけど、Rust自体もServoに含まれているようでした。
ビルド
環境は osx mercurial, homebrewです。
まずは、autoconf213.rbとautomakeとかのツールをインストール
brew install https://raw.github.com/Homebrew/homebrew-versions/master/autoconf213.rb
brew install automake libtool pkg-config
clone
git clone https://github.com/mozilla/servo.git
servoのビルド
cd servo
mkdir -p build && cd build
../configure
configureは時間がかかるので寝て待ちましょう。
暇なので、コマンドライン引数の翻訳とかしてみます。
コマンドライン引数
-
-p INTERVAL
プロファイラをオンにし、コンソールINTERVAL
秒ごとに情報をダンプします -
-s SIZE
レンダリングのためのタイルサイズを設定します。デフォルトは512です -
-z
すべてのグラフィック出力を無効にします。JS/レイアウトのテストを実行するのに便利です
キーボードショートカット
-
CTRL-L
新しいURLを参照するためのダイアログを開きます(現在はMacのみ) -
Ctrl - -
ズームアウト -
Ctrl - =
でズーム -
Backspace
ヒストリを戻る -
Shift - Backspace
ヒストリを進む -
ESC
サーボを終了
キーボードショートカットも翻訳してみた。しかしまだなんかやってます。
記事も書き進めてっと、あ、終わった。
終わったら、makeです。servoのページにはmake && make check
と書いてあったのですが、チェックも長そうだから、make check
はやらなくてもいいんじゃないかな。
make
rustのビルドが始まったぞ、、、。長そうだ。2013-10-28のrustを使っているようです。
extracting rust-stage0/lib/libstd-6c65cf4b443341b1-0.9-pre.dylib
とか出てるので、すでに0.9に対応しつつあるのかな?
LLVMのビルドしてるし、大分かかりそうだ。時間も記録しておけば良い気もするけどまぁ、いいや。llvmが終わったら、rustをビルドして、終わったらservoのライブラリを1個ずつビルドして最後にservoのビルドをして完了ってなるんでしょう。たぶん。
実行
もうとりあえず、servoの実行をしてみます。
./servo ../src/test/html/about-mozilla.html
ちゃんと見れますね。他にもテストファイルが沢山あるのである程度描画出来ているっていう段階のようです。
make check
とりあえず、チェックもしておきましょう。
Android のビルド
Android用にビルドも出来るみたいです。やってませんけどandroid-sdkとandroid-ndkがあればビルド出来るようです。
git clone https://github.com/mozilla/servo.git
cd servo
mkdir -p build && cd build
../configure --target-triples=arm-linux-androideabi --android-cross-path=<Android toolchain path> --android-ndk-path=<Android NDK path> --android-sdk-path=<Android SDK path>
make