CIM - Common Lisp Implementation Managerを作りました

10,523 views

Published on

Shibuya.lispのLisp Meet Up #13での発表資料です

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
10,523
On SlideShare
0
From Embeds
0
Number of Embeds
9,308
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

CIM - Common Lisp Implementation Managerを作りました

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

×