Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2010-07-26

ABCL/1 ABCL/R2をビルドする

| 23:30 | ABCL/1 ABCL/R2をビルドする - わだばLisperになる を含むブックマーク はてなブックマーク - ABCL/1 ABCL/R2をビルドする - わだばLisperになる

今回のABCLは、JVM上で動くCL処理系ではなくて、LISPベースの並列オブジェクト指向言語の方です。

今日、deliciousから流れてくるLISP関係のものを眺めていて、

というのをみつけました。

中に配布されているソースが書かれているのですが、もしかしてと思って、上のディレクトリを覗いてみると、abcl/1や、abcl/r2のソースがありました!

abcl/fはソースが配布されているのを見たことがあったのですが、abcl/1やabcl/rは配布されていることを知りませんでした。

物は試しということで、早速、ビルドに挑戦。

Makefileもあるのですが、手直ししないと動かないようなので、ターゲットの一つであるKCLの直系のGCLを起動して、処理系からビルド用のファイルを読み込むことにしてみました。

といっても非常に簡単です。(環境は、Ubuntu 10.4 x86_64で試しました。)

abcl/r2の場合

$ mkdir abclr2
$ cd abclr2
$ wget http://venus.is.s.u-tokyo.ac.jp/pub/abclr2/abclr2-dist.tar.Z
$ gzcat abclr2-dist.tar.Z|tar xvf -
$ gcl
GCL (GNU Common Lisp)  2.6.7 CLtL1    Feb 15 2010 17:57:54
Source License: LGPL(gcl,gmp), GPL(unexec,bfd,xgcl)
Binary License:  GPL due to GPL'ed components: (XGCL READLINE BFD UNEXEC)
Modifications of this banner must retain notice of a compatible license
Dedicated to the memory of W. Schelter

Use (help) to get some basic information on how to use GCL.
Temporary directory for compiler files set to /tmp/

>(push :kcl *features*) ;KCLということにする

(:KCL :COMPILER :NUMLIB :SDEBUG :DEFPACKAGE :GNU-LD :XGCL :UNEXEC :BFD
      :NATIVE-RELOC :READLINE :TRUNCATE_USE_C :CLX-LITTLE-ENDIAN :BSD
      :GNU :LINUX :X86_64 :SGC :IEEE-FLOATING-POINT :UNIX :GMP :GCL
      :AKCL :COMMON :KCL)

(load "defabclr2.lsp")

Loading defabclr2.lsp
Loading defsystem.lsp
Finished loading defsystem.lsp
Finished loading defabclr2.lsp
T

>(build-and-dump) ;ビルドして実行可能ファイルを作成

Loading /home/mc/Desktop/abcl/abclr2/src/abclr2.system...
...

とすると、saved_abclr2というものができます。

これを実行すると

$ ./saved_abclr2 

Welcome to ABCL/R2 Gesi version (Jul. 7, 1995, 0.59)

ABCL/R2>[[object (script (=> [:hello] !(print "Hello, World!")))] <== [:hello]]

"Hello, World!" 
"Hello, World!"
ABCL/R2>

abcl/r2が起動できます。

abcl/1のビルド

abcl/1もabcl/r2と同じようにできますが、途中でちょっとひっかかるので、そこは飛します。

>(push :kcl *features*)

(:KCL :COMPILER :NUMLIB :SDEBUG :DEFPACKAGE :GNU-LD :XGCL :UNEXEC :BFD
      :NATIVE-RELOC :READLINE :TRUNCATE_USE_C :CLX-LITTLE-ENDIAN :BSD
      :GNU :LINUX :X86_64 :SGC :IEEE-FLOATING-POINT :UNIX :GMP :GCL
      :AKCL :COMMON :KCL)

>(load "init-abcl")

Loading init-abcl.lsp
ABCL-USER>>  (load "maksys")

Loading maksys.lsp
Finished loading maksys.lsp
t
ABCL-USER>>  (load "defabcl")

Loading defabcl.lsp
Finished loading defabcl.lsp
t
ABCL-USER>>  (maksys 'abcl1)
Loading file   declare.o...... start address -T 0x10bbfe0 done.
ABCL-USER>>  (abcl::enable-debug)
ABCL-USER>>  (abcl::gbc-message-on)
ABCL-USER>>  ; (si:catch-bad-signals);飛ばす
ABCL-USER>>  (setq si:*indent-formatted-output* nil)
ABCL-USER>>  (defun system:top-level nil (abcl::abcl-top-level))
ABCL-USER>>  (if abcl::*distribution* (setq si::*break-enable* nil))
ABCL-USER>>  (gbc t)
ABCL-USER>>  (si:save-system "saved_abcl1")

まだ、マニュアルをちょっと眺めただけですが、abcl面白そうです!

2010-01-21

ABCLをソースからビルドするためのメモ ant編

| 01:36 | ABCLをソースからビルドするためのメモ ant編 - わだばLisperになる を含むブックマーク はてなブックマーク - ABCLをソースからビルドするためのメモ ant編 - わだばLisperになる

ちょっと前のことになりますが、なにかのきっかけでABCLがちょっと盛り上がり、このブログにABCLのビルド方法で検索して辿り着いている方が増えていたようでした。

それらのエントリーは、

なのですが、これを書いた当時、自分はJavaのantを全く知らなかったため、SBCL等でビルドするという方法を書いておりました。

しかし、antだと

$ tar xvf /usr/local/abcl/abcl-src-0.18.1.tar.gz
$ cd abcl-src-0.18.1
$ ant abcl
$ ./abcl
Armed Bear Common Lisp 0.18.1
Java 1.6.0_16 Sun Microsystems Inc.
Java HotSpot(TM) 64-Bit Server VM
Low-level initialization completed in 0.339 seconds.
Startup completed in 0.992 seconds.
Type ":help" for a list of available commands.
CL-USER(1):

これだけの手順で、abclが生成されるのです…。

SBCLを使ってのビルドがややこしくて、ABCLのビルドに挫折していた方がいたとしたら、ごめんなさい…。

2009-04-05

ABCLをソースからビルドするためのメモ

| 19:17 | ABCLをソースからビルドするためのメモ - わだばLisperになる を含むブックマーク はてなブックマーク - ABCLをソースからビルドするためのメモ - わだばLisperになる

※antを使う方法が一番楽なようです

----

今日、ABCLの0.14.0がリリースされたようです。

リリース頻度が随分高くなっているように思えるのですが、やはり同じJVM上で動くClojureに負けてられないということなのでしょうか(*'-')

それはさておき、毎回ソースからビルドするたびに手順を忘れるのでメモ

$ cd ABCLのソースディレクトリ

customizations.lispを作成

(in-package "BUILD-ABCL")

;; Standard compiler options.
(setq *javac-options* "-g")
(setq *jikes-options* "+D -g")

;; *PLATFORM* will be either :WINDOWS, :DARWIN, :LINUX, or :UNKNOWN.
(case *platform*
  (:windows
   (setq *jdk*           "C:\\Program Files\\Java\\jdk1.5.0_11\\")
   #+(or) (setq *java-compiler* "jikes")
   )
  (:darwin
   (setq *jdk*           "/usr/")
   (setq *java-compiler* "jikes")
   #+(or) (setq *jar*    "jar"))
  ((:linux :unknown)
   (setq *jdk*           "/usr/lib/jvm/java-1.5.0-sun/") ;; jdkの場所
   (setq *jar*           "jar")))

他のCL処理系でビルド

echo "(load \"build-abcl.lisp\")(build-abcl:build-abcl :full t :clean t)"|sbcl

2008-01-07

ABCL 0.0.10をインストールしてみる

| 17:31 | ABCL 0.0.10をインストールしてみる - わだばLisperになる を含むブックマーク はてなブックマーク - ABCL 0.0.10をインストールしてみる - わだばLisperになる

※antを使う方法が一番楽なようです

----

私は、割とOSや処理系のインスコ厨です。

特に使う目的もない処理系をインストールして、それで満足して終了、ということを繰り返しているのですが、今回は、ABCLをインストールしてみることにしました。

ABCLはJavaVM上で動くCommon Lispの処理系です。

に詳しい解説があります。

私のインストールポリシーとしては、

  1. /usr/local/abcl/0.0.10以下にファイルを置く

ということ位です。

必要なもの

  1. とりあえず、JDKが必要です。ubuntu 7.10 x86_64には、sun-java5-jdkがあるので、パッケージで導入しました。
  2. Common Lisp処理系。コンパイルするのに必要になります。今回はSBCLを使用しました。

インストール

  1. READMEを読んで、customizations.lispを設定します。
(case *platform*
  (:windows
   (setq *jdk*           "C:\\Program Files\\Java\\jdk1.5.0_11\\")
   #+(or) (setq *java-compiler* "jikes")
   )
  (:darwin
   (setq *jdk*           "/usr/")
   (setq *java-compiler* "jikes")
   #+(or) (setq *jar*    "jar"))
  ((:linux :unknown)
   (setq *jdk*           "/usr/lib/jvm/java-1.5.0-sun/")
   (setq *jar*           "jar")))
  1. ホストの処理系でbuild-abcl.lispをロードします。
(load "build-abcl.lisp")
  1. ホストの処理系でコンパイル開始
(build-abcl:build-abcl :clean t :full t)

しばし待つとabclという起動の為のスクリプトが生成されるので、これで完了です。

なんとなく分かったこと

  • ASDFは組み込みで、(require :asdf)で使えます。
  • SLIMEに対応している。
  • CL-PPCRE、ITERATE等、それなりに動くパッケージはある。

分からないこと

  • UTF-8でSLIMEと通信できない模様。ただ、処理系はUTF-8なので、日本語が表示できないというわけではない様子。
  • イメージのダンプとかできるんだろうか。とりあえずは、初期化ファイルを作って、swankまで起動させて、SLIMEと通信して使用してみています。起動は、
/usr/local/abcl/0.0.10/abcl --load init-abcl.lisp

Armed Bear Common Lisp 0.0.10 (built Mon Jan 7 2008 16:27:15 --900)
Java 1.5.0_13 Sun Microsystems Inc.
Java HotSpot(TM) 64-Bit Server VM
Control-C handler installed.
Low-level initialization completed in 0.398 seconds.
Startup completed in 1.822 seconds.
〜〜
;; Swank started at port: 4013.
Type ":help" for a list of available commands.
CL-USER(1)

といった感じ。