プログラミング言語SML#解説 4.0.0版
3 SML#の概要

3.4 謝辞

2003年にスタートしたSML#開発の過程では,以下を含む色々な ご指導やご協力を頂きました. ここに謝意を表します.

3.4.1 プロジェクトファンディング

SML#言語の研究開発は,2003年から5年間の文部科学省リーディ ングプロジェクトe-Society基盤ソフトウェアの総合開発「高い生産性をもつ高 信頼ソフトウェア作成技術の開発」 (http://www.tkl.iis.u-tokyo.ac.jp/e-society/index.html) の一つの課題 「プログラムの自動解析に基づく高信頼ソフトウェアシステム構築技術」(究代 表者:大堀 淳)としてスタートをきることができました. このプロジェクトの主要な目標がSML#言語コンパイラの開発で した. SML#は開発ソースの総量が30万行を超える大規模シ ステムです. このプロジェクトの支援がなければ,SML#の開発は困難であっ たと思われます. 文部科学省,e-Societyの領域代表の片山卓也先生,および関係各位に 深謝いたします. この大型プロジェクトに加え,SML#の理論や実装方式の研究開 発には,複数の科学研究費補助金によるサポートを受けています.

3.4.2 SML#が使用しているソフトウエア

SML#言語は,第1.0版以降は,SML#自身でコンパ イルし開発を行なっていますが,それ以前は,Standard ML of New Jerseyおよ びMLtonのStandard MLコンパイラを使って開発を行いました.

SML#は前節(3.3)の開発チー ムによって開発されたソフトウェアです. ソースコードの殆どをスクラッチから開発しましたが,一部に以下のコー ドを利用しています.

内容 SML#ソース上の位置 ソース
ML-Yacc src/ml-yacc Standard ML of New Jersey 110.73
ML-Lex src/ml-lex Standard ML of New Jersey 110.73
ML-Lpt src/ml-lpt Standard ML of New Jersey 110.99
SML/NJ Library src/smlnj-lib Standard ML of New Jersey 110.99
TextIO, BinIO, OS, Date, Timer src/smlnj Standard ML of New Jersey 110.73
浮動小数点/ 文字列変換関数 src/runtime/netlib the Netlib

これらソースは,いずれもSML#ライセンスと整合性あるライセ ンスで配布されているオープンソースソフトウェアです. 「SML#ソース上の位置」およびソースパッケージのトップレベル にそれぞれのライセンスが添付されています.

3.4.3 研究開発協力者

SML#言語の開発にあたっては,多くの人々からの指導を受けま した. 過去現在の開発チーム(第(3.3)節)以外で特に 貢献のあった方々は以下の通りです.

  • 篠埜功氏. 大堀と共に,関数フュージョン機能を持つ新たしいインラインの理論お よびその実験的な実装を行いました. この機能は実験的な実装がありますが,まだ十分な完成度が得られてお らずSML#4.0.0版に組み込まれていませんが,将来取り入れたいと 考えています.

  • 大友聡顕氏. 大堀,上野と共に,オブジェクトを動かさないGCの研究開発に携わり, 初期の実験的な実装を行い,この方式が有望であることを確認しました. この成果は,現在のオブジェクトを動かさないGCの方式の開発と実装の 契機となったものです.

これらの方々以外にも,SML#は,大堀等との共同で行なった様々 な型理論やコンパイル方式の基礎研究を基に設計されています. 現在のSML#言語に直接生かされている出版された基礎研究成果 には以下のものが含まれます.

  • レコード多相性の理論[8, 9]

  • データベースの型推論[10]

  • データベース言語(Machiavelli)[11, 1]

  • ランク1多相性の型理論[15]

  • MLのunboxed意味論[13]

  • MLにおける自然なデータ表現[7]

  • 軽量の関数融合[12].

  • オブジェクトを動かさないGC[16]

  • SQLの統合方式[14]

  • JSONサポート[17]

  • 並行GC[18]

それ以外にも多くの共同研究者から色々な機会に示唆や助言を頂いてお り,それらは1989年にまで遡りますが,それらの方々の列挙は割愛させてい ただきます.