Factor/FAQ/Factor のインストール

Factor をダウンロードしてインストールする方法は?

最も簡単なのは、バイナリを利用する方法です。GIT リポジトリから取得したソースをコンパイルする方法もあります。

イメージとは何ですか? なぜ Factor はイメージを使うのですか?

イメージとは、Factor が実行されていないときに、Factor がすべてのコードとデータを格納するのに使うファイルです。Factor の実行可能ファイルとダイナミックリンクライブラリは、Factor についてごく少量のことしか知りません。具体的には、仮想マシン、プリミティブ、およびイメージの構造しか知りません。ライブラリ全体はイメージに含まれています。これはブートストラッププロセス中にロードされたものです。イメージは、コードがロードされた後のメモリのマップです。Smalltalk とは異なり、Factor のコードはイメージではなく常にファイルで配布されます。

ブートストラップとは何ですか? なぜブートストラップ用のブートイメージが必要なのですか?

一般に、ブートストラップとは、自己ホスト型のコンパイラ (self-hosted compiler) 、すなわちコンパイル対象のプログラミング言語で記述されたコンパイラをコンパイルするプロセスのことをいいます。Factor は完全には自己ホスト型ではありませんが、コンパイラやパーサなど、多くの重要な部分 (ただし仮想マシンやプリミティブは除く) が Factor で記述されているために、ブートストラッププロセスを使っています。何年も前になりますが、かつては Java で記述された Factor インタープリタおよびコンパイラがあり、現在使っている Factor コードを実行し、イメージを作成するために、この Factor インタープリタおよびコンパイラが使われていました。現在は、ブートイメージを使っています。ブートイメージとは、フルイメージを作成するプロセスを起動するのに十分な知識を持った一種のミニイメージのことです。

どうすればブートイメージを作成できますか?

make-image ワードを使って、"x86.32" make-image のようにします。これで現在のディレクトリにファイル boot.x86.32.image が作成されます。このファイルは、フルブートイメージです。アーキテクチャを指定するのに必要な文字列のリストについては、リスナーで make-image help を実行してください。ブートイメージを作成できない場合は、Factor ウェブサイトからブートイメージをダウンロードすることもできます。

ブートストラップを試みたのですが、out of memory エラーが発生します。

次のようなエラーが発生する場合があります。

Loading P" factor.image"
*** Data heap resized to 196104192 bytes
*** Data GC (2 minor, 10 cards)
*** Data heap resized to 630124544 bytes
*** Data GC (0 minor, 0 cards)
P" factor.image":1

 ^
Word not found in current vocabulary search path
no-word-name "\u00000c"

Factor 実行可能ファイルに渡しているブートイメージ名が間違っています。正しくは、-i= パラメータを使ってイメージ名を渡す必要があります。たとえば、./factor -i=boot.x86.32.image のように指定します。

Linux の X11 で UI を動作させるには、どのライブラリが必要ですか?

libc、Freetype、X11、および OpenGL の最新の開発パッケージをインストールする必要があります。Debian 派生の Linux ディストリビューション (Ubuntu など) では、次のコマンドを実行します。

sudo apt-get install libc6-dev libpango1.0-dev libx11-dev libgl1-mesa-dev

Cygwin 上で Factor をコンパイルしようとしたのですが、Boost に関するエラーが発生してコンパイルできません。この問題はどうすれば解決できますか?

Factor を GCC 3.x でコンパイルするには boost::unordered_map が必要です。GCC 4.x でコンパイルする場合には std::tr1::unordered_map が使われ、この std::tr1::unordered_map が GCC 4.x に含まれています。Cygwin にデフォルトで付属する GCC は GCC 3.4.4 で、これには std::tr1 がないため、Factor は代わりに Boost を使います。したがって、Cygwin では Boost をダウンロードし、ヘッダファイルを /usr/lib/gcc/i686-pc-mingw32/3.4.4/include/c++/ に置く必要があります。Cygwin に付属する Boost のバージョンは古いので、Boost は Cygwin のインストーラではなく、ユーザーが自分でダウンロードしてインストールする必要があります。

Factor は、iPhone のような ARM ベースのコンピュータで動作しますか?

いいえ。かつては動作していましたが、ARM 系への移植は今はもうメンテナンスされていません。実用レベルでの ARM への移植を行うには、Factor がクロスコンパイルをサポートする必要があり、メモリ消費を抑えるための手直しも必要になります。どちらも簡単ではなく、実際の ARM コンパイラバックエンド自体を開発するよりも、多くの作業と時間が必要になるでしょう。時間とリソースが限られているため、ARM ベースのコンピュータで Factor を実行することに何らかの商業的価値が生じない限り、ARM への移植が復活することはおそらくないでしょう。

This revision created on Thu, 21 May 2009 05:52:31 by slava