Kahua Release
- Release Note
- Download
- Current Version 1.0.7.3 (2008-05-08)
kahua-web Release
- kahua-webとは
- Release Note
- Download
- Current Version 0.3.1 (2007-06-12)
Security Advisory
Event Log
Documentation
For developers
Site info
Related Site
Release Note for version 0.8
サイトごとの管理をよりシンプルにするための「サイトバンドル」機構の導入と、 オブジェクトデータベースの改善を中心とするリリースです。
以前のバージョンとの相違
- 同一ホスト上で複数のワーキングディレクトリ(サイト)を運用するために、「サイトバンドル」という機構を導入しました。例えば、/var/local/kahua というディレクトリをサイトバンドルとして作成したい時は
% kahua-package create /var/local/kahua
で作成できます。各コマンドに -S /var/local/kahua をつけて起動すれば、このサイトバンドルに対してコマンドを起動することになります。また、環境変数KAHUA_DEFAULT_SITEを/var/local/kahuaを設定すれば、=S /var/local/kahua オプションを省略することもできます。% kahua-spvr -S /var/local/kahua --httpd 8080
- サイトバンドル機構の導入にともない、ユーザ専用モードを廃止しました。
- kahua-adminコマンドのcvsサブコマンドを廃止しました。
- 新しいファイルシステムデータベースとして、efs(Extended File System Database)を追加しました。データベース名として efs:/path/to/db と指定すれば使用できます。
- efsでは、「インデックススロット」をサポートしています。例えば、
(define-class <a-class> (<kahua-persistent-base>) ((a :init-keyword :a :allocation :persistent :index :unique) (b :init-keyword :b :allocation :persistent :index :any))
と定義すると、(make-kahua-collection <a-class> :index (a . "aaa")
とすることで、スロットaに"aaa"を保持しているインスタンスのコレクションが取得できます。 - kahua.persistence.mysql、kahua.persistence.postgresql も、インデックススロットをサポートするための準備として、内部構造を変更しました。まだインデックススロットはサポートしていませんが、次のリリース(0.9)までにはサポートする予定です。
- 旧来のファイルシステムデータベースである kahua.persistence.fs はまだ使えますが、近々に廃止する予定です。kahua-dbutilを使って、以下のようにefsに変換することができます。
% kahua-dbutil upgrade /path/to/db
このコマンドはインプレースで変換を試みるため、必ずバックアップを行ってから変換を行うようにしてください。 - メソッド kahua-instance が追加されました。
(kahua-instance <a-class> id)
で該当するインスタンスを取得できます。idはObject IDを表す整数値で、(kahua-persistent-id obj)で得られる値です。このメソッドは旧来のファイルシステムデータベースではサポートされません。
バグ修正
- kahua-db-syncとkahua-db-rollbackの双方でエラーが発生した場合、トラップできずにワーカが異常終了するバグを修正しました。
- 特定のケースで、永続クラスの再定義においてスロット値が引き継がれないバグを修正しました。
- いくつかのソースファイルにおいて、コーディングシステムを指定するコメントが欠落していたものを修正しました。
- 廃止された kahua.pdf を use していたモジュールが残っていたのを修正しました。
- ワーカが何らかの原因で応答を正しく返さないとき、kahua-httpdやkahua.cgiはステータス404を返していましたが、503を返すように修正しました。
- その他、細かいバグをたくさん修正しました。
動作条件
- Gauche-0.8.8 以降(0.8.8のバグについては後述)
- Gaucheがpthreadをサポートするように構築されていること。
$ gosh -V|grep pthread Gauche scheme interpreter, version 0.8.8 [utf-8,pthreads]
のように表示されればOKです。 - Gauche-0.8.8 には、エラー発生時にメッセージを表示せずに終了してしまうバグがあります。パッチを適用してGaucheをビルドすることを推奨します。
注意事項
- 0.8において、efsで追加されたインデックススロットをサポートするための準備として、RDBMSのテーブル構造を変更しました。
0.7以前のリリースバージョンからアップグレードする場合、必ず0.8に含まれるkahua-dbutilコマンドでデータベースの変換を行ってください。
% /usr/local/kahua/bin/kahua-dbutil fix mysql:kahua:password:db=test ==Start checking: #<<kahua-db-mysql> "mysql:kahua:password:db=test" (active)>== Checking kahua_db_idcount... FIXED Checking kahua_db_classcount... OK Checking ID column and indexes... FIXED Checking removed flags... OK ==Done==
- Linux カーネルバージョン 2.4 系列を使っているシステムでは、
NPTL(Native Posix Thread Library)が組込まれていない libc を使っている場合
(たとえば、2.4 系列カーネルの Debian 3.1 sarge)では正しく動作しません。
2.6系列のカーネルに入れ替えるか、NPTLを組み込んだlibcを使用してください。
NPTLが有効かどうかは getconf コマンドで調べることができます。
% getconf GNU_LIBPTHREAD_VERSION NPTL 0.60