|
| |
| 登場時期 | 1988年 |
|---|---|
| 設計者 | Alexander Burger |
| 最新リリース | 24.3 / 2024年3月30日 |
| 型付け | duck, dynamic, strong |
| 方言 | Ersatz PicoLisp, miniPicoLisp |
| プラットフォーム | POSIX |
| ライセンス | MIT |
| ウェブサイト |
picolisp |
| 拡張子 | .l |
| 関連言語 | Lisp |
PicoLisp とは、プログラミング言語であり、LISP方言の一種である。 Linuxをはじめとする多くのPOSIXに準拠したオペレーティングシステムで動作する。その最も際立った特徴は、シンプルさとミニマリズムであり、 すべてが「セル(cell)」という内部データによって構成されている。 言語レベルでは、プログラマは数値、シンボル、リストの3つのデータ型を利用できる。しかし、これらもセルによって表現され、末尾のビットによって区別される。MITライセンスのもとで提供されているフリーかつオープンソースのソフトウェアである。
関数は、任意の型及び任意の数の引数を受け取ることができる。 マクロが必要になるのは稀なケースであり、それらはquote関数によって実装される。 PicoLispは、他のLISP方言のようなlambda関数は持っておらず、これは、quote関数が、引数の最初のcar(先頭要素)だけでなく、すべての引数をそのまま返すように変更されているからである。
PicoLispの特筆すべき機能は、CRUDの機能を標準で備えていることが挙げられる。 永続性シンボルは 第一級オブジェクトであり、アクセス時には自動的にデータベースから読み込まれ、変更時には書き込まれる。 アプリケーションは実体と関係によるクラス階層によって記述される(実体関連モデル)。
その他の機能としては、Prologエンジン、データベースエンジンおよびデータベースクエリ、分散データベース、C言語関数のインライン化とネイティブC関数呼び出し、子プロセス管理、プロセス間通信、ウェブブラウザ上のグラフィカルユーザーインターフェース、国際化と地域化などが挙げられる。
PicoLispは、初期のMacLisp、Interlisp、Portable Standard Lispから影響を受けている。 かつてはDOSやSCO Unixに移植されていたが、1993年からは主にLinux上で使用されている。 1990年代半ばには、データベース機能が追加された[要出典]。
最初のバージョンはC言語とアセンブリ言語によって実装されていたが、 1999年、最初からのC言語のみでの書き直しが完了した。2002年、GNU General Public License (GNU GPL)の下で公開され、2010年、MIT/X11ライセンスに変更された。
2009年、64bit版がリリースされた。これは汎用アセンブリによって新しく書き直されたものだが、その汎用アセンブリ自体もPicoLispによって実装されている。このバージョンからはコルーチンのサポートが追加された。
2010年12月、 JVM上で動くJavaによるErsatz PicoLispがリリースされた。
2014年9月、開発者のAlexander Burger氏は、 PicoLispのメーニングリスト上で、「PilMCU」プロジェクトを発表した。 George Orais氏と合同で、PicoLispをベアメタルで動作させるという試みである。
2015年7月、Burger氏は組み込みのアプリケーションを対象とする、PilMCUの変更に基づく最小限のPilOS - The PicoLisp Operating Systemのプロトタイプを発表した。 標準的な x86-64 PC 上で動作し、BIOSから直接起動する。C言語標準ライブラリのようなネイティブ環境が存在しないためネイティブ関数呼び出し機能は除かれるが、それ以外の64bit PicoLispの全機能を備えている。原理的にはそれ自体がオペレーティングシステムとして動作する。
2016年夏、PicoLispのみでアプリを開発できる、汎用Androidモバイルアプリケーション、PilBox(PicoLisp Box)の開発が開始された。 2026年現在も開発が継続されている。
2021年、PicoLispはLLVMを使い再実装され、pil21としてリリースされた。 LLVM-IRに変換されるソース言語自体も、PicoLispの構文によって書かれている。