テクノロジー 注目度 85

femtolisp:軽量で堅牢なScheme風のLisp実装

開発者は、1000行以内のC言語で最も高速なLispインタプリタを作成しようと試みたことから、femtolispプロジェクトを開始しました。その過程で、最小限のコードで強力な機能を追加できるかどうかを試すようになり、独自のCコードと他人のコードをベースにした標準ライブラリを収集しました。femtolispは150KBのサイズで、ベクター、文字列、gensyms、backquote、例外処理、循環構造の印刷・読み込み、可読性の高い値出力、prettyprinting、ハッシュテーブル、Cデータ型の直接使用など多くの機能を提供しています。また、Schemeと互換性があり、R6RSの一部機能もサポートしています。femtolispは、バイトコードコンパイラとVMを使用し、コンパイラ自体がfemtolispで書かれています。この言語は高速であり、ネイティブコンパイルされていないScheme実装の中でも最も速い方です。これは、filterやfor-eachなどの多くのプリミティブがCではなく言語自身で記述されているにもかかわらず達成されています。


背景

femtolispは、開発者が高速なLispインタプリタを作成しようと試みたことから始まったプロジェクトです。当初の目標は1000行以内のC言語で実装することでしたが、機能を追加し続けるうちに、独自の標準ライブラリを構築するなど、規模が拡大していきました。

重要用語解説

Scheme: Lispの一種であり、femtolispはSchemeと互換性があります。[重要性:高]。[具体例:R6RS(Schemeの仕様)]

backquote: Lispにおけるマクロ構文の一つで、コードを生成したり変更したりするのに使用されます。[重要性:高]。[具体例:femtolispでは、backquoteを使用してコードを簡潔化できます。]

gensyms: Lispにおいて、シンボルを動的に作成するための機能です。[重要性:中]。[具体例:femtolispでは、gensymsを使用して、プログラム中に使用するシンボルの数を増やすことができます。]

R6RS: Schemeの仕様の一つで、femtolispは一部のR6RS機能をサポートしています。[重要性:中]。[具体例:R6RSは、Lisp言語の標準化を目指したものです。]

バイトコードコンパイラ: プログラムを機械語に翻訳する前に、中間言語であるバイトコードに変換するコンパイラの形式です。[重要性:高]。[具体例:femtolispでは、バイトコードコンパイラを使用して、高速な実行を実現しています。]

今後の影響

femtolispは、軽量で堅牢なScheme風のLisp実装として、開発者や研究者に新たな選択肢を提供します。その高速性と機能の豊富さは、特定のタスクやアプリケーションに適した言語として注目を集める可能性があります。