Click here to load reader
Upload
blackenedgold
View
9.529
Download
0
Embed Size (px)
DESCRIPTION
Shibuya.lispのLisp Meet Up #13での発表資料です
Citation preview
CIMの紹介
Shibuya.lisp/Lisp Meet Up #13κeen(@blackendgold)
自己紹介● Twitter: κeen(@blackenedgold)● Github: KeenS● ブログ: een Happy Hac ing Blogκ の κ● 東大数学科の三年生● 最近までandroidアプリ作るバイトしてた● 就活中!
● Common Lisp, Ruby, Emacs Lispが好き● 最近Real World OCaml読んでる(今15章くらい)
今回作ったもの
CIM – Common Lisp Implementation Manager
CIMとは?
● Rubyのrvm真似して作った● 大きく分けると
– 処理系のインストール/管理のcim– 統一CLIのcl– QuicklispのCLIのql
● …デファクトスタンダードを目指して
きっかけ
● 「shly loadでファイルを実行できる」発言● 自作関数でオプション処理とか付けたりした● Shellyの制約に当たる->独立プロジェクト化● Shell Script勉強したいしShell Scriptで書こう
できること● https://github.com/KeenS/CIM● README読んでね● 主なコマンドは
– cim install sbclでインストール– cim use cclで切り替え– cl file.lispで実行– ql installで(ql:quickload)相当
● Help充実させたのでHelp読んで下さい
できること
● 管理できるのは– SBCL
– CLISP
– ECL
– GCL
– CCL
– ABCL
– Allegro CL
できること
● ql deps –path ./quicklisp myappでquicklisp分離
● cim for sbcl ccl clisp do foo.lispで処理系毎に繰り返し
● clのオプションはrubyっぽくしてある– 割とワンライナーも意識
実装
● cimコマンド群とclはBourne Shell Script
● 800行くらい● qlはCommon Lisp
● 500行くらい● 依存ライブラリなし(Quicklispは使う)● 極力依存を無くす方針
– 「インストール直後のFreeBSDで動く」を目安
実装● 出来る限り汚さない
– 環境変数は2つしかexportしない– 関数とかもexportしない– 尚、rvm …は
● 副産物としてoption-parser– 需要があれば別ライブラリで公開
● …テストしてない– テストってどうやれば良いの?
苦労話● Shell Script難しい
– OSによってコマンドの挙動が違ったり– おもいっきり状態に依存してる– そもそも知識と経験がない
● ビルドが難しい処理系とか– SBCLはビルドもバイナリインストールも難しい
● Quicklispが思いの外貧弱– バージョンを指定してインストールとか出来ないっぽい
今後
● テスト● コアダンプ● syset (rvmのgemset)● quicklispにpull-req?● plugin?
– clコマンドを生かしたい
以上みんな使ってね