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 1.0.7.3
Mac OS X 10.5.x(Leopard) 上で正常に動かなかった問題を解決した安定版リリースです。
バグ修正
- Peerによってすでに閉じられたソケットに対して shutdown(2) を発行した場合エラーになるOSにおいて、ワーカプロセスが正常に接続を切れない問題を修正しました。この問題のために、Mac OS X 10.5.x(Leopard) では、make check のいくつかが刺さる、もしくはエラーになっていました。
- いくつかのテストスクリプトにおいて子プロセスの終了ステータスを正しく扱っていなかったために、テストスクリプト終了時にエラーを起こしていた問題を修正しました。
動作条件
- Gauche-0.8.13 以降(最新のリリースの使用を推奨します)。
- Gaucheがpthreadをサポートするように構築されていること。
$ gosh -V|grep pthread Gauche scheme interpreter, version 0.8.13 [utf-8,pthreads]
のように表示されればOKです。 - OSがLinuxの場合は、NPTL(Native POSIX Thread Libnrary)が有効であること。
% getconf GNU_LIBPTHREAD_VERSION NPTL 0.60
このように表示されればOKです。
注意事項
- 0.8において、efsで追加されたインデックススロットをサポートするための準備として、RDBMSのテーブル構造を変更しました。
0.7以前のリリースバージョンからアップグレードする場合、必ずこのバージョンのKahuaに含まれる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==
Release Note for version 1.0.7.2
「プログラミングGauche」出版記念の安定版です。
以前のバージョンとの相違
- Gauche 0.8.13 において、標準出力が端末以外につながっている時のデフォルトバッファリングモードが変更されたことに対応しました。
- kahua.elにおいて、*kahua-shell* モードのバッファが表示されていない時、kahua-shellにて評価された結果をミニバッファに表示するようになりました。この機能は、Kiyoka Nishiyamaさんによって実装されました。
- HTTPのSet-Cookieレスポンスヘッダにおいて、デフォルトではDomain、Port属性を指定しなくなりました。
バグ修正
- タグ関数に sup:、sup/、big:、big/ が欠けていたのを追加しました。
- Naoki Koguroさんによって指摘されたたくさんのtypoを修正しました。
- localhostのようにリクエストホスト名に.が含まれない場合、Webブラウザが受け入れないようなCookieを発行することがあった問題を修正しました。この問題は、当初 Kristof Bastiaensen さんによって報告され、その後 Shiro Kawai さんにより詳しく指摘をいただきました。
既知のバグ
Mac OS Xの最新版である 10.5.x (Leopard) では、現状のKahuaは正常に動作しません。
動作条件
- Gauche-0.8.13 以降(最新のリリースの使用を推奨します)。
- Gaucheがpthreadをサポートするように構築されていること。
$ gosh -V|grep pthread Gauche scheme interpreter, version 0.8.13 [utf-8,pthreads]
のように表示されればOKです。 - OSがLinuxの場合は、NPTL(Native POSIX Thread Libnrary)が有効であること。
% getconf GNU_LIBPTHREAD_VERSION NPTL 0.60
このように表示されればOKです。
注意事項
- 0.8において、efsで追加されたインデックススロットをサポートするための準備として、RDBMSのテーブル構造を変更しました。
0.7以前のリリースバージョンからアップグレードする場合、必ずこのバージョンのKahuaに含まれる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==
Release Note for version 1.0.7.1
安定版です。小さなバグ修正を行いました。
以前のバージョンとの相違
Gauche-0.8.12での動作確認を行った以外、特に変更はありません。
バグ修正
- gauche-package generateで生成したアプリケーションをmake installでインストールしようとするとエラーになる問題を修正しました。ただし、これは生成済みのアプリケーションにおけるMakefile.inの不具合を修正するものではありません。生成済みのアプリケーションでmake installできない不具合がある場合は、
$(KAHUA_INSTALL) $(KAHUACONFIG) -t script --no-overwrite $(LOCALSCRIPTFILES)
Makefile.inからこの行を削除して再度 ./configure && make && make install を実行してみて下さい。この不具合はkahua-devにおいてkiyokaさんから報告されました。感謝します。
動作条件
- Gauche-0.8.11 以降(最新のリリースの使用を推奨します)。
- Gaucheがpthreadをサポートするように構築されていること。
$ gosh -V|grep pthread Gauche scheme interpreter, version 0.8.12 [utf-8,pthreads]
のように表示されればOKです。 - OSがLinuxの場合は、NPTL(Native POSIX Thread Libnrary)が有効であること。
% getconf GNU_LIBPTHREAD_VERSION NPTL 0.60
このように表示されればOKです。
注意事項
- 0.8において、efsで追加されたインデックススロットをサポートするための準備として、RDBMSのテーブル構造を変更しました。
0.7以前のリリースバージョンからアップグレードする場合、必ずこのバージョンのKahuaに含まれる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==
Release Note for version 1.0.7
安定版です。バグフィックスと仕様上詰めの甘かった部分を修正しました。
以前のバージョンとの相違
- 無効な継続リンクを叩いたとき、HTTPステータスとして404を返すようになりました。またメッセージもよりわかりやすいものに変更されています。
- デフォルトのエラーハンドラが呼び出されたとき、HTTPステータスとして500を返すようになりました。
- パスやURLを組み立てる処理を大幅に整理しました。アドホックに組み立てていたコードをすて、原則として内部APIを用いるように書き換えました。詳細についてはChangeLogを参照して下さい。
- グローバルセッションキーを保持するCookieの扱いをRFC2965により準拠するようにしました。これに合わせて、kahua.confでCookieの有効範囲を設定する :session-domain という項目が追加されました。:site、:bridge、:workerのいずれかの値が設定できます。デフォルトは:siteで、これまでと同様に同一サイト内でグローバルセッションが共有されます。
- XMLドキュメントを返す際のContent-Typeとして、text/xmlのかわりにapplication/xmlを使うようになりました。
- kahua:xml-template->sxml に渡す置換要素として、() や #f を渡せるようになりました。いずれも empty を渡したのと同様に扱われます。
バグ修正
- エラーハンドラ内でスタックトレース出力に二重にエスケープ処理を行っていたのを修正しました。
- パラメータkahua-default-error-handlerが陽に設定されていないとき、予期せぬエラーが発生することがあったのを修正しました。
- kahua.elをEmacs 21で使用すると不具合があったのを修正しました。
- 他にも細かいtypoやバグを修正しました。
動作条件
- Gauche-0.8.11 以降(最新のリリースの使用を推奨します)。
- Gaucheがpthreadをサポートするように構築されていること。
$ gosh -V|grep pthread Gauche scheme interpreter, version 0.8.11 [utf-8,pthreads]
のように表示されればOKです。 - OSがLinuxの場合は、NPTL(Native POSIX Thread Libnrary)が有効であること。
% getconf GNU_LIBPTHREAD_VERSION NPTL 0.60
このように表示されればOKです。
注意事項
- 0.8において、efsで追加されたインデックススロットをサポートするための準備として、RDBMSのテーブル構造を変更しました。
0.7以前のリリースバージョンからアップグレードする場合、必ずこのバージョンのKahuaに含まれる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==
Release Note for version 1.0.6
安定版です。バグフィックスとサンプルアプリケーションの更新を行いました。
以前のバージョンとの相違
- configureが、オプション--with-fastcgi-ext をサポートしました。--with-fastcgi-ext=fcgiなどとすることで、FastCGIスクリプトの拡張子を指定できます。デフォルト値は従来通りfcgです。
- 手続き with-kahua-userとwith-kahua-local-userを追加しました。前者はサイト全体のログインユーザを一時的に変更し、後者はワーカローカルのコンテキストにおいて一時的にログインユーザを変更します。
- 手続き kahua-user? を追加しました。<kahua-user> のインスタンスかどうかを調べるのではなく、実際の認証に使用されている <kahua-user> のサブクラスのインスタンスかどうかを調べます。
- 手続きrun-evalが、session-stateを保持したコンテキストの下で実行されるようになりました。これにより、例えば kahua-shell で式を評価する際、簡単にログイン状態をシミュレートできるようになりました。
- 手続き kahua-self-uri と kahua-self-uri-full のコードと挙動を整理し、引数なしで呼び出した場合は常に返す値を #\/ で終端するようになりました。
- このリリースの直前から、ソースリポジトリをCVSからSubversionに変更しました。
バグ修正
- BSD makeを使った場合にVERSIONが正常に設定されない不具合を修正しました。
- 他にも細かいtypoやバグを修正しました。
動作条件
- Gauche-0.8.9 以降(最新のリリースの使用を推奨します)。
- Gaucheがpthreadをサポートするように構築されていること。
$ gosh -V|grep pthread Gauche scheme interpreter, version 0.8.10 [utf-8,pthreads]
のように表示されればOKです。 - OSがLinuxの場合は、NPTL(Native POSIX Thread Libnrary)が有効であること。
% getconf GNU_LIBPTHREAD_VERSION NPTL 0.60
このように表示されればOKです。
注意事項
- 0.8において、efsで追加されたインデックススロットをサポートするための準備として、RDBMSのテーブル構造を変更しました。
0.7以前のリリースバージョンからアップグレードする場合、必ずこのバージョンのKahuaに含まれる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==
Release Note for version 1.0.5
安定版です。バグフィックスとサンプルアプリケーションの更新を行いました。
以前のバージョンとの相違
- サンプルアプリケーション(examplesディレクトリ)を大幅に更新しました。使用するテクニックを現在のKahuaの機能に合わせ、ソースコードの文字エンコーディングをUTF-8化し、一部のアプリケーションを英語化しました。
- kahua-spvr、kahua-httpd、kahua-keyservに-t(--threads)コマンドラインオプションを追加し、スレッドプールの大きさを指定できるようにしました。併せて、kahua.confファイルにおいて、:spvr-concurrency、:httpd-concurrency、:keyserv-conccurrencyオプションでも同じ指定ができるようになりました。
- ログインユーザがinactiveに変更された時、そのユーザが直ちにログアウトされるようになりました。
- kahua-user del に -p(preserve) コマンドラインオプションを追加しました。ユーザを削除するのではなく、inactiveに状態を変更します。
バグ修正
- 1.0.4で施したバグフィックスの影響で、kahua-dbutilが efsdb をcheckしたりfixしたりできなくなっていたのを修正しました。
- id-cache(およびkey-cache)とindex-cacheとの間に不整合が生じることがあったのを修正しました。併せて、他のワーカでインデックス値が変更された際にも他のワーカがそれを正しく検知できるようになりました。
動作条件
- Gauche-0.8.9 以降(最新のリリースの使用を推奨します)。
- Gaucheがpthreadをサポートするように構築されていること。
$ gosh -V|grep pthread Gauche scheme interpreter, version 0.8.9 [utf-8,pthreads]
のように表示されればOKです。 - OSがLinuxの場合は、NPTL(Native POSIX Thread Libnrary)が有効であること。
% getconf GNU_LIBPTHREAD_VERSION NPTL 0.60
このように表示されればOKです。
注意事項
- 0.8において、efsで追加されたインデックススロットをサポートするための準備として、RDBMSのテーブル構造を変更しました。
0.7以前のリリースバージョンからアップグレードする場合、必ずこのバージョンのKahuaに含まれる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==
Release Note for version 1.0.4
安定版です。バグフィックスと些細な機能追加のみです。
以前のバージョンとの相違
- Kahuaのアプリケーションユーザ(<kahua-user>のインスタンス)を管理するためのコマンドラインツール kahua-user を追加しました。
- kahua-dbutilが-c kahua.confオプションと-S /path/to/site オプションをサポートしました。
バグ修正
- kahua-write-static-file が安全でない方法でファイルを更新していたのを修正しました。
- kahua-dbutilが、0.7以前のKahuaが作ったMySQL/PostgreSQL上のデータベースの整合性をチェックできずに終了してしまう問題を修正しました。
- with-workerがワーカプロセスにリクエストを送信した後ポートをフラッシュしていなかった問題を修正しました。
- kahua.cgi/fcgやkahua-httpdから渡ってきたx-kahua-remote-addrコンテキスト変数が、アプリケーション実行コンテキストに渡されていなかった問題を修正しました。
- kahua.elのrun-kahuaおよびrun-kahua-shellが、Emacs 21では動作しなかった問題を修正しました。
動作条件
- Gauche-0.8.9 以降(最新のリリースの使用を推奨します)。
- Gaucheがpthreadをサポートするように構築されていること。
$ gosh -V|grep pthread Gauche scheme interpreter, version 0.8.9 [utf-8,pthreads]
のように表示されればOKです。 - OSがLinuxの場合は、NPTL(Native POSIX Thread Libnrary)が有効であること。
% getconf GNU_LIBPTHREAD_VERSION NPTL 0.60
このように表示されればOKです。
注意事項
- 0.8において、efsで追加されたインデックススロットをサポートするための準備として、RDBMSのテーブル構造を変更しました。
0.7以前のリリースバージョンからアップグレードする場合、必ずこのバージョンのKahuaに含まれる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==
Release Note for version 1.0.3
安定版です。バグフィックスと若干の機能強化を行いました。
以前のバージョンとの相違
- kahua.elに、Kahua APIのいくつかのキーワードに対してfont-lockやインデント設定を追加しました。
- kahua.elのカスタマイズ変数kahua-site-bundleの初期値をnilとしました。この値がnilの時、kahua-adminやkahua-shellに-Sオプションを渡さずに起動するようになります。
- COOKIE値がメタ変数HTTP_COOKIEとしてワーカに渡るようになりました。手続きkahua-cookie-refで参照できます。
- kahua.cgi.inとkahua-httpdが、X-Forwarded-Forヘッダを認識するようになりました。メタ変数HTTP_X_FORWARDED_FORとして渡ってくるだけでなく、フィールド値の最左にあるアドレスをメタ変数x-kahua-remote-addrに設定するようになります。なお、メタ変数REMOTE_ADDRについては、これまで同様、接続しているsocketのpeerのアドレスが設定されます。
- インストールされているGaucheのバージョン、スレッドサポートの種類、LinuxにおけるNPTLの有無をconfigureスクリプトがチェックするようになりました。
バグ修正
- キーワード:pass-through代わりに、間違ってシンボルpass-throughを使っていた部分を修正しました。
- スロットオプションに :index :any が指定されている永続オブジェクトの、そのスロットに対するメモリキャッシュが壊れる不具合を修正しました。
- 数値実体参照ノード(&, &: &/)が間違った書式で数値実体参照を生成してしまっていた不具合を修正しました。
- その他細かいバグ修正。
動作条件
- Gauche-0.8.9 以降を推奨(0.8.8でも動きます)
- Gaucheがpthreadをサポートするように構築されていること。
$ gosh -V|grep pthread Gauche scheme interpreter, version 0.8.9 [utf-8,pthreads]
のように表示されればOKです。 - Gauche-0.8.8 には、大きなバグがいくつか存在するので、0.8.9以降の使用を推奨します。
- このバージョンから、configureスクリプトがチェックするようになりました。
注意事項
- 0.8において、efsで追加されたインデックススロットをサポートするための準備として、RDBMSのテーブル構造を変更しました。
0.7以前のリリースバージョンからアップグレードする場合、必ず運用しようとする(新しい)バージョンのKahuaに含まれる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==
- NPTL(Native Posix Thread Library)が有効になっていないGNU/Linuxシステム
(たとえば、2.4 系列カーネルの Debian 3.1 sarge)では、Kahuaは動作しません。
2.6系列のカーネルに入れ替えるか、NPTLを組み込んだlibcを使用してください。
NPTLが有効になっているかどうかは、getconf コマンドで調べることができます。
% getconf GNU_LIBPTHREAD_VERSION NPTL 0.60
なお、このバージョンからconfigureスクリプトがこのチェックを行うようになりました。
Release Note for version 1.0.2
バグフィックスと若干の機能強化を加えた安定版のリリースです。
以前のバージョンとの相違
- kahua-package generate によって生成されるアプリケーションのスケルトンに、 起動/終了用のスクリプト(<proj>-start, <proj>-stop)と、インプレースで実行する際の 設定ファイル(<proj>.conf)が含まれなくなりました。
- EmacsのKahuaモードにおいて、run-kahuaやrun-kahua-shellを実行する際に、kahua-adminやkahua-shellが使用するサイトバンドルを聞くようにしました。また、kahua-shell同様にkahua-adminもssh経由でリモート実行できるようになりました。
バグ修正
- Gauche CVS HEADで実行するとエラーや警告の対象となるキーワード引数を修正しました。
- HTTPクライアントがリクエスト送付後直ちにソケットを閉じた場合、kahua-httpdがハングアップしてしまう不具合を修正しました。
- スケルトンに含まれるファイルにおいて、Kahuaのリポジトリにチェックインする際にCVSのキーワード置換が行われてしまっていたのを行われないようにしました。
- スケルトンのMakefile.inがただしくmake cleanできていなかったのを修正しました。
- kahua-serverがモジュールをリロードするとメモリキャッシュがおかしくなるのを回避するため、モジュールリロード直後にメモリキャッシュをクリアするようにしました。
- その他細かいバグ修正。
動作条件
- Gauche-0.8.9 以降を推奨(0.8.8でも動きます)
- Gaucheがpthreadをサポートするように構築されていること。
$ gosh -V|grep pthread Gauche scheme interpreter, version 0.8.9 [utf-8,pthreads]
のように表示されればOKです。 - Gauche-0.8.8 には、大きなバグがいくつか存在するので、0.8.9以降の使用を推奨します。
注意事項
- 0.8において、efsで追加されたインデックススロットをサポートするための準備として、RDBMSのテーブル構造を変更しました。
0.7以前のリリースバージョンからアップグレードする場合、必ず運用しようとする(新しい)バージョンのKahuaに含まれる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==
- NPTL(Native Posix Thread Library)が有効になっていないGNU/Linuxシステム
(たとえば、2.4 系列カーネルの Debian 3.1 sarge)では、Kahuaは動作しません。
2.6系列のカーネルに入れ替えるか、NPTLを組み込んだlibcを使用してください。
NPTLが有効になっているかどうかは、getconf コマンドで調べることができます。
% getconf GNU_LIBPTHREAD_VERSION NPTL 0.60
Release Note for version 1.0.1
バグフィックスと若干の機能強化を加えた安定版のリリースです。
以前のバージョンとの相違
- テンプレートから高階タグを生成するxml-template->node/を追加しました。
- 永続オブジェクトの書き出し書式をインデックス値として使用する形式と揃えました。これにより、永続スロットに設定可能な値であればインデックスとして使用できるようになります。
バグ修正
- text/ 高階タグ関数に複数の引数を渡した時、逆順に展開されてしまうバグを修正しました。
- リクエストのディスパッチ先となるべきワーカが存在しない場合、500(Internal Server Error)を返していましたが、404(Not Found)を返すように修正しました。
- サンプルのlambdabooksをサイトバンドルにインストールする際、初期データベースを間違ったパスに生成していたのを修正しました。
- その他、細かいドキュメントの不具合を修正しました。
動作条件
- Gauche-0.8.9 以降を推奨(0.8.8でも動きます)
- Gaucheがpthreadをサポートするように構築されていること。
$ gosh -V|grep pthread Gauche scheme interpreter, version 0.8.9 [utf-8,pthreads]
のように表示されればOKです。 - Gauche-0.8.8 には、大きなバグがいくつか存在するので、0.8.9以降の使用を推奨します。
注意事項
- 0.8において、efsで追加されたインデックススロットをサポートするための準備として、RDBMSのテーブル構造を変更しました。
0.7以前のリリースバージョンからアップグレードする場合、必ず運用しようとする(新しい)バージョンのKahuaに含まれる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
Release Note for version 1.0
Kahua 初の安定版です。
以前のバージョンとの相違
- configureオプションで--with-staticdirオプションを指定しない場合のデフォルト値が/var/wwwから、$(localstatedir)/kahua/static 、つまりワーキングディレクトリ内のstaticというディレクトリに変更されました。
- 部分ページテンプレートをサポートしました。つまり、ページ全体ではなく、一部分をXMLテンプレートを使って生成できます。
- 利便性のために、手続き kahua-login, kahua-logout, kahua-authorized?, kahua-user-add-role!, kahua-user-drop-role! を追加しました。
- マクロ define-basic-element, define-elements をexportしました。タグシンボルが異なるだけの単純なタグ関数を簡単に定義できます。
- 手続き kahua-indexable-object? を追加しました。あるオブジェクトがインデックススロット値として使用可能かどうかを調べます。
- kahua-installでテンプレートファイルをインストールできるようになりました。
- サンプルコードをサイトバンドルにインストールしやすくなりました。
- EmacsのKahuaモードに、kahua-site-bundleカスタマイズ変数を追加しました。kahua-shell、kahua-adminをEmacs内で起動する時に接続するサイトバンドルを指定することができます。
- 各Kahuaコマンドに-c conf-fileや-S /path/to/siteオプションが指定された場合は、環境変数KAHUA_DEFAULT_SITEよりも優先されるようになりました。
- kahua-packageで生成するスケルトンアプリケーションがサイトバンドルやページテンプレートに対応しました。
- その他、ドキュメントを大幅に更新しました。
バグ修正
- script/style要素の中身を実体参照にエスケープしなくなりました。ただし、scriptやCSSの中で文字列リテラル中に </ というシーケンスが現れた場合は、これを <\/ とエスケープします。
- kahua-httpdがリクエスト中のクエリ文字列を二重にuri-decodeしていた不具合を修正しました。
- kahua-package generateで、--creator、--emailオプションが正しく扱われていなかった不具合を修正しました。
- その他、細かいバグフィックス。
動作条件
- 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以前のリリースバージョンからアップグレードする場合、必ず運用しようとする(新しい)バージョンのKahuaに含まれる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
Release Note for version 0.9.1
マイナーバグフィックスためのリリースです。
以前のバージョンとの相違
機能的には0.9と同一です。
バグ修正
- タグのcontentや属性値に'(シングルクォート)が含まれる際、0.9では実体参照 ' に置き換えていました。しかし、Internet Explorer (IE) 6.0 SP2 はXHTMLに含まれる ' を解釈できないため、これを ' に置き換えるように修正しました。
動作条件
- 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以前のリリースバージョンからアップグレードする場合、必ず運用しようとする(新しい)バージョンのKahuaに含まれる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
Release Note for version 0.9
初の安定版となる1.0リリースに向けた、準備のためのリリースです。
以前のバージョンとの相違
- シンプルなページテンプレートシステムを実装しました。
- kahua.persistence.mysql、kahua.persistence.postgresql において、インデックススロットをサポートしました。
- 旧来のファイルシステムデータベースである kahua.persistence.fs を廃止しました。
これまで使用していたfsdbは、下記のようにefsdbに変換し、efsdbとして使用してください。
% kahua-dbutil upgrade /path/to/db
このコマンドはインプレースで変換を試みるため、必ずバックアップを行ってから変換を行うようにしてください。 - efsdbがデフォルトのデータベース形式となりました。efs: をつけなくても、パス名を指定すればefsdbとして使用します。
- 単純タグ関数、高階タグ関数、SXMLにおいて、コンテントとして含まれる#fは単純に無視されるようになりました。
- obj->stringメソッドが廃止されました。HTMLドキュメントに出力するオブジェクトの表現形式を変更するには、x->stringを使用してください。
- マクロ when: unless:、when/ unless/ を追加しました。それぞれ条件を満たしたとき(あるいは満たさなかったとき)にはbody部分を返し、そうでない場合は空要素に展開されます。特定の条件時にのみ出現するタグを実現するのに利用できます。
バグ修正
- タグ関数において、属性値が正しくエスケープ(<>&'"を実体参照に置き換え)されないことがあったのを修正しました。
- Kahuaオブジェクトデータベースのメモリキャッシュの扱いを修正しました。
- テストスクリプトの一部がcvsコマンドの存在を前提としていたのを修正しました。
動作条件
- 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以前のリリースバージョンからアップグレードする場合、必ず運用しようとする(新しい)バージョンのKahuaに含まれる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
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
Release Note for version 0.7
今後の機能強化に向けた内部構造の変更/整理とバグ修正を中心としたリリースです。 このバージョンにはセキュリティフィックスが含まれており、アップグレードすることを推奨します。
セキュリティフィックス
- 同一のスーパバイザ配下で稼働し、別のユーザデータベースを使って認証を行う アプリケーション間で、ログインセッションが共有されてしまう(あるユーザ名であるアプリケーションにログインすると、同じユーザ名で他のアプリケーションにもログインしていることになってしまう)という、セキュリティ上の問題を修正しました。この問題の詳細については、セキュリティアドバイザリを参照してください。
以前のバージョンとの相違
- configureオプションに--with-kahua-user、--with-kahua-group、--with-cgi-userを追加しました。これを使うことで、root権限でインストールする際、作成されるファイルやディレクトリのオーナー/グループが適切に設定されるようになります。
- kahua-check-transaction! は廃止されました。定義としては残っていますが、Kahuaの動作に影響は与えません。
- ワーカはリクエスト毎にデータベースに接続するのではなく、起動時に接続してそのまま接続を保持するようになりました。また、リクエスト処理前に接続が生きていることを確認し、接続が途絶えていた場合は再接続します。
- Kahuaオブジェクトデータベースにおいて、オブジェクトを擬似的に削除できるようになりました。これにともない、RDBMSにおけるテーブル定義が変更になっています。以前のバージョンのKahuaで作成されたデータベースをこのバージョン以降のKahuaで使うためには、kahua-dbutilによる変換が必要です。
- 上記のセキュリティフィックスにともない、kahua-current-user と kahua-current-user-name の挙動が変更になりました。詳細はkahua.serverモジュールのドキュメントを参照してください。
バグ修正
- fsdbにおいて、キー値が同じ新しいオブジェクトを作成すると、黙って同じキー値を持つ既存のオブジェクトを上書きしてしまうバグを修正しました。
- 細かいバグをたくさん修正しました。
その他、大幅にコードを整理しました。
動作条件
- Gauche-0.8.7 以降(0.8.8リリースまではCVS HEADの使用を推奨します)
- Gaucheがpthreadをサポートするように構築されていること。
$ gosh -V|grep pthread Gauche scheme interpreter, version 0.8.7 [utf-8,pthreads]
のように表示されればOKです。
注意事項
- 0.7においてオブジェクトの削除を実現するためにRDBMS上でのテーブル定義を変更しました。
0.6以前のリリースバージョンからアップグレードする場合、必ず0.7に含まれるkahua-dbutilコマンドでデータベースの変換を行ってください。fsdbの場合は変換の必要はありません。
% /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...OK Checking kahua_db_classcount...FIXED ==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
Release Note for version 0.6
今後の機能強化に向けた内部構造の変更/整理とバグ修正を中心としたリリースです。
以前のバージョンとの相違
- ファイルシステムDBはデータの文字エンコーディングを保持するようになりました。 データベースディレクトリの中の%%character-encodingというファイルに保存されます。 以前のバージョンで作られたデータベースをこのバージョンのKahuaで開くと、 実行しているGaucheの内部エンコーディングをこのファイルに書き出します。 以降は実行しているGaucheの内部エンコーディングを変更しても、 このデータベースを正常に使い続けることができます。
- kahua.cgi/kahua.fcgがkahua.confを参照するようになりました。 従って、kahua.cgi/kahua.fcgの実行権限で kahua.conf が読める必要があります。
バグ修正
- デフォルトワーカ機能を復活しました。リクエストURIでワーカが明示的に指定されていない場合、 app-serversの中で :run-by-default が1以上に設定された最初のワーカにディスパッチされます。
- ファイルシステムDB作成時に存在したレースコンディションを解消しました。
- ワーカ内で発生したエラーの処理を整理しました。 エラー発生時にはクライアントに対して相応のHTTPステータスを返します。
- 高階タグ関数のレンダリングをほんの少しだけ効率化しました。
- 処理速度の遅いマシンでユニットテスト実行する際、処理が間に合わずエラーになる問題を (一部)解消しました。
- FastCGIブリッジ使用時、JSONデータやCSSデータをワーカから受け取る際にエラーになる 問題を解消しました。
- いくつかのHTTPステータスメッセージをRFC2616に準拠させました。
- kahua.cgi/kahua.fcg においてSERVER_NAMEにポート番号が含まれている場合、 絶対URIを計算する際に不正なURIになっていたのを修正しました。 lighttpdを標準ポート以外で運用しているとこの現象に遭遇していました。
- MySQL/PostgreSQLをデータベースとして使用する際のロックをある程度最適化しました。
その他、大幅にコードを整理しました。
動作条件
- Gauche-0.8.7 以降(0.8.8リリースまではCVS HEADの使用を推奨します)
- Gaucheがpthreadをサポートするように構築されていること。
$ gosh -V|grep pthread Gauche scheme interpreter, version 0.8.7 [utf-8,pthreads]
のように表示されればOK。
注意事項
- 0.5以降、RDBMSへの管理情報の格納方法が変更されています。
0.4.1以前からアップグレードしたら、必ず新たに追加された 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...OK Checking kahua_db_classcount...FIXED ==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
Release Note for version 0.5.1
バグ修正
- make-kahua-collectionが生成直後の(ストレージに保存される前の)インスタンスを含めてコレクションを作るようになりました。
- クリーンインストール時に skel ディレクトリをコピーできずにエラーになる問題を修正しました。
- make uninstall時にKahuaのスクリプトが置かれたディレクトリを問答無用で削除していたのを修正しました。
- kahua-httpdの挙動をよりHTTP/1.1(RFC2616)に近づけました(まだまだですが)。
動作条件
- Gauche-0.8.7 以降(ただし、CVS HEADの使用を推奨します)
- Gaucheがpthreadをサポートするように構築されていること。
$ gosh -V|grep pthread Gauche scheme interpreter, version 0.8.7 [utf-8,pthreads]
のように表示されればOK。
注意事項
- 0.5では、0.4.1以前とRDBMSへの管理情報の格納方法が変更されています。
0.5に入れ換え後、必ず新たに追加された 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...OK Checking kahua_db_classcount...FIXED ==Done==
- Linux カーネルバージョン 2.4 系列を使っているシステムでは、 NPTL(Native Posix Thread Library)が組込まれていない libc を使っている場合 (たとえば、2.4 系列カーネルの Debian 3.1 sarge)では正しく動作しません。 2.6系列のカーネルに入れ替えるか、NPTLを組み込んだlibcを使用してください。
Release Note for version 0.5
以前のバージョンとの相違
全体として、モジュール構成に大きな変更が加わっています。 特にデータベースの管理情報の格納方法が変更されているので、 0.4.1以前からアップグレードする際は必ず「注意事項」を読んでデータベースの変換を行ってください。
- kahua-spvrとkahua-keyservをスレッドプール化しました。
- kahua-spvrに含まれていた簡易HTTPd機能を単独のスクリプトkahua-httpdに切り出しました。
kahua-httpdもスレッドプール化されています。また、kahua-spvrからkahua-httpdを起動することも、
単独で起動することもできます。
# kahua-httpd --runas www:kahua -p 80
などとすれば、特権ポートをlisten(2)した後指定のユーザ/グループに権限を落とすことができます。 - 同一タイプのワーカーを複数起動することによって、負荷分散をはかることができるようになりました。
- kahua.persistenceモジュールをkahua.persistence、kahua.persistence.fs、kahua.persistence.dbi、 kahua.persistence.mysql、kahua.persistence.postgresqlに分割しました。
- [重要] MySQLやPostgreSQLへのデータベースの格納方法に変更を加えました。既存のデータベースを使い続けるには、
% kahua-dbutil fix mysql:kahua:password:db=kahuadb
などとして変換してやる必要があります。 - インストール先ディレクトリのいくつかが変更されました。例えば、
% ./configure --prefix=/usr/local/kahua
としてビルドした場合、0.4.1以前のバージョンでは/usr/local/kahua/bin/kahua /usr/local/kahua/sbin/kahua /usr/local/kahua/libexec/kahua /usr/local/kahua/share/info/kahua /usr/local/kahua/share/man/kahua
にインストールされていたファイルは、それぞれ/usr/local/kahua/bin /usr/local/kahua/sbin /usr/local/kahua/libexec /usr/local/kahua/share/info /usr/local/kahua/share/man
にインストールされます。 - アプリケーションのテンプレート生成などを行うkahua-packageコマンドが追加されました。
- Kahuaのconfig情報を取得するためのkahua-configコマンドが追加されました。
- <kahua-persistent-base>を継承するクラスを定義する際、スロットオプションに:final #tを渡すことで そのクラスのサブクラスが当該スロットをオーバーライドすることを禁止できるようになりました。
- セッションに明示的にデータを保存するために、関数kahua-local-session-ref/kahua-local-session-set!、 マクロdefine-session-object、述語kahua-sendable-object?が追加されました。
- app-serversファイルに :profiler <出力先パスのベース名> を指定することで、ワーカのプロファイリングを
行えるようになりました。
:profile /tmp/hoge
と指定すると、/tmp/hoge.<worker ID>に各ワーカのプロファイリング結果が、100リクエスト処理するごとに 出力されます。 - app-serversファイルに :default-database-name <データベース名> を指定することで、デフォルトで使用する データベースを変更できるようになりました。
- kahua-spvrから各ワーカへのping機能を廃止しました。代わりに子プロセスの終了ステータスを監視する形で 自動リスタート機能を再実装しています。
- make-kahua-collectionが :predicate キーワード引数と、:keys キーワード引数を取れるようになりました。 これにより、あらかじめ絞り込んだ形で<kahua-collection>を取得できます。
バグ修正
- 複数プロセス間で同一のデータベースにアクセスした際、一貫性を破壊する可能性のあった不具合を修正しました。
- 他の永続オブジェクトを参照するスロットが正常に実体化できないことがあった不具合を修正しました。
- MySQLやPostgreSQLをバックエンドにした際、接続時の文字エンコーディングを正しく設定するようにしました。
- kahua-spvrの子プロセスの管理を大幅に向上しました。
- JSON形式のデータを得る際、Content-Typeを正しく設定するようにしました。
- その他たくさんのバグを修正しました。
動作条件
- Gauche-0.8.7 以降(ただし、CVS HEADの使用を推奨します)
- Gaucheがpthreadをサポートするように構築されていること。
$ gosh -V|grep pthread Gauche scheme interpreter, version 0.8.7 [utf-8,pthreads]
のように表示されればOK。
注意事項
- 0.5では、0.4.1以前とRDBMSへの管理情報の格納方法が変更されています。
0.5に入れ換え後、必ず新たに追加された 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...OK Checking kahua_db_classcount...FIXED ==Done==
- Linux カーネルバージョン 2.4 系列を使っているシステムでは、 NPTL(Native Posix Thread Library)が組込まれていない libc を使っている場合 (たとえば、2.4 系列カーネルの Debian 3.1 sarge)では正しく動作しません。 2.6系列のカーネルに入れ替えるか、NPTLを組み込んだlibcを使用してください。
Release Note for version 0.4.1
以前のバージョンとの相違
- kahua-add-userがオプショナル引数をとるようになった。ユーザ定義した<kahua-user>のサブクラス独自のスロットを初期化する場合に使用できる。
- node-set/ タグを追加。
- kahua.test.xmlモジュールに!excludeパターンディレクティブを追加。
- kahua.serverモジュールにkahua-call-with-current-contextを追加。
- kahua.server側が落ちている場合には、kahua.cgiが「503 Service Temporary Unavailable」ステータスを返すようになった。
- kahua.cgiにリクエストURL短縮のための仕組みを追加(Zope3類似)。
- Emacs環境において、kahua-admin、kahua-shellのパスやkahua-admin、kahua-shellとのプロセス間通信で使用するcoding-systemをカスタマイズできるようになった。
バグ修正
- regist-entry-methodにあった副作用のバグを修正。
- src/Makefile.in、cgi/Makefile.in、cgi/fix-shebang.shにおいて、KAHUA_STATICDIRの置換処理が抜けていたのを追加。
- Mac OS Xにおいて、ルートスレッドのシグナルマスクが変更されてしまう問題を回避するために、定期的にシグナルマスクを設定し直すようにした。
- kahua-server、kahua-spvr、kahua-keyserverの待ち受けソケットのバックログをSOMAXCONNに設定。
- kahua-spvrの細かいバグ修正とコード整理。
- 高負荷時にGCが間に合わずファイルディスクリプタを使い切る恐れがあるため、unlock-db内でロックファイルを明示的に閉じるようにした。
動作条件
- Gauche-0.8.7 以降
- Gaucheがpthreadをサポートするように構築されていること。
$ gosh -V|grep pthread Gauche scheme interpreter, version 0.8.7 [utf-8,pthreads]
のように表示されればOK。
注意事項
Linux カーネルバージョン 2.4 系列を使っているシステムでは、NPTL(Native Posix Thread Library)が組込まれていない libc を使っているシステム(たとえば、2.4 系列カーネルの Debian 3.1 sarge)では正しく動作しません。2.6系列のカーネルに入れ替えるか、NPTLを組み込んだlibcを使用してください。
Release Note for version 0.4
以前のバージョンとの相違
- ページエントリー関連 API を改良.(kahua-dev:01234)
- <kahua-user>クラスを継承して使えるように改良. (kahua-dev:01236)
- CSSレンダリングインタープリタ追加. (kahua-dev:01238)
- サーバ起動直後に実行するフック機構追加. (kahua-dev:01238)
- レンダリング結果の静的書き出し機能追加. (kahua-dev:01238)
- JSONインタープリタ追加.(kahua-dev:01247)
- Conditional Comments for Internet Explorerを生成するwith-ieエレメントを追加
バグ対応
- id-counter 周辺の不具合に対応(thanks > Tatsuya BIZEN). (kahua-dev:01248)
- kahua-spvrをマルチスレッド化し,0.3.5以前のものにあったデッドロックする不具合に対応
- DBIデータベースで巨大なデータを扱えない不具合に対応
- kahua-serializable-object?がシリアライズ可能なドットに対して#fを返してしまう不都合に対応
動作条件
- Gauche-0.8.6 以降が必要
- Gauche が pthread サポートするように構築されているいること.
$ gosh -V | grep pthreads
とやったときにバージョン情報などが表示されれば pthread サポートするよ うにコンパイルされています.
注意事項
kahuua-spvrのマルチスレッド化にともない,基盤となる Gauche が Posix 準 拠のスレッドライブラリに対応するようにコンパイルされている必要がありま す.ただし,Linux ではカーネルバージョン 2.4 系列を使っているシステム で NPTL(Native Posix Thread Library)が組込まれていないlibcライブラリを 使っているシステム(たとえば,2.4 系列カーネルの Debian 3.1 sarge)では 正しく動作しません
Release Note for version 0.3.5
以前のバージョンとの相違
注意事項
- このリリースからGauche-0.8.6以降にのみ対応。Gauche-0.8.5以前ではmake checkに失敗する。
全体
- sendmailプラグインでメール本文のエンコーディングを正しく変換できない不都合を解消
- emacs/kahua-shell.el への ssh -t option追加 (kahua-dev:01171)参照
- emacs用のモードとしてkahua-modeを追加
- kahua-shellで改行が正しく行なわれないバグを修正
- ./configure に --kahua-staticdirオプションを追加
kahua.server
- defin-entry・entry-lambdaへの:multi-value-keyword(:mvkeyword)キーワード導入 (kahua-dev:01182)参照
- kahua-current-entry-nameを追加 現在のエントリ名を取得できるようになった
kahua.persistent
- 未束縛なスロットを持つ永続オブジェクトを扱えるようになった
- トランザクション処理中にエラーが発生した場合はトランザクションをロールバックするようになった
- 永続オブジェクトの初期化を行うpersistent-initializeメソッドを追加
- 永続クラスと他のメタクラスを同時に使用した場合にcompute-get-n-setが呼ばれない不都合を修正
- kahua-serializable-object?が空リストに対して#fを返してしまうバグを修正
- RDBMSデータベースを使用した場合に永続オブジェクトのidが重複してしまうバグを修正
- DBI/DBD 0.2.1に対応
kahua.test
- レスポンスヘッダのテストを支持するためにheader->sxml ,test/send&pickを追加
- make-match&pickでURLからパラメータを抽出してワーカへ保存するようなった
- set-gsidを追加 任意の永続セッション指定できるようになった
kahua.elem
- node-setをネストして使用した場合にnode-setが残ってしまうバグを修正
既知の不具合
- 同じページに連続してアクセスがあるとkahua-spvrでデッドロックが発生することがある
Release Note for version 0.3.4
以前のバージョンとの相違
- kahua.serverにkahua-meta-refを追加
x-kahua-metavaliablesから環境変数を取得 - kahua.userにkahua-user-password-change-forceを追加
旧パスワードがなくても強制的にパスワード変更 - SQL文のエスケープにdbi-escape-sqlを使用
永続オブジェクトの保存先にRDBMSを使用する場合にDBI/DBD 0.1.6以降が必要 - kahua.persistenceでkahua_db_classesテーブル、kahua_*テーブルに主キーを追加
既知の不具合
- 同じページに連続してアクセスがあるとkahua-spvrでデッドロックが発生することがある
Release Note for version 0.3.3
- FastCGI対応
configureに--with-fastcgiオプションが追加され、 FastCGI対応のkahua.fcgを生成できるようになった。 - kahua-add-hook!/kahua-delete-hook!の追加
Kahuaアプリケーションのリクエスト処理前後に呼ばれる フック関数を追加/削除できるようになった。 - SXML要素で属性値に#fが与えられたとき属性を省略する
- kahua-spvrがpidファイルを生成するようになった
- いくつかのバグフィックス
Release Note for version 0.3.2
以前のバージョンとの相違
- session キーに関する bug を fix しました.Kahua-0.3.1 以前のものは,このバグのために,新しい Gauche-0.8.4 では動作しませんでした.
- 永続オブジェクトキャッシュ機構を実験的に導入しました.詳しくは ML での (kahua-dev:00870) からの議論を参照してください.
Release Note for version 0.3.1
以前のバージョンとの相違
- Gauche 0.8.3 以降が必要.
- kahua-spvr の httpd モードが,IPv4,IPv6 両方に対応.
- kahua-admin がコマンドラインから直接コマンドを受け付られるようにも なりました. kahua-admin restart kahua-web など.
- version コマンド追加. kahua-admin version とすると Kahuaのバージョンを表示.
- ログのデフォルトプレフィクスに西暦年が入るようにしました
Release Note for version 0.3
以前のバージョンとの相違
- make installする以前に展開した場所(in-place)で kahua-spvr 起動可能
- kahua-spvr に自前のHTTPd機能追加
- 複数の値をひとつの名前にもたせた場合に対応するAPI kahua-context-ref* を追加
- rss発行機能追加
- kahua.persistence用のquery-languageプラグイン追加
1,2 に対応する kahua-spvr のオプションについては doc/Scripts/kahua-spvr.ja を参照してください。
MLでの議論は、 1、2 については、 (kahua-dev:00798)からのスレッドを、 3については、(kahua-dev:00778)からのスレッドを 4については、(kahua-dev:00773)からのスレッドを、5については(kahua-dev:00755)からのスレッド参照してください。
Release Note for version 0.2.8
- Makefile の依存関係、clean のターゲットの改善
以下の不具合の ad hoc な回避(将来回避法を改善する予定)
- Gauche 0.8.1 で kahua-shell および user exclusive mode のテストがスタックしてしまうのを回避。詳細は以下の記事参照。(kahua-dev:00749)(kahua-dev:00750)(kahua-dev:00751)
- 作成したSXMLの属性値文字列にアポストロフィが含まれているとき、出力された、XMLあるいはHTMLの属性値文字列が二重引用符でクウォートされない不具合の回避。(kahua-dev:00748)参照。
Release Note for version 0.2.7
- make を繰り返すと kahua-server および kahua-keyserv のシェルスクリプトが おかしくなってしまうバグを修正しました
- process 間の通信につかう UNIX ドメインソケットのパーミッションを変更しました
- kahua.cgi のログファイルのためのディレクトリを変更しました
- configure のオプション --with-cgilogdir で kahua.cgi のログファイルを置く ディレクトリを指定できるようにしました
Release Note for version 0.2.6
- make-kahua-collection が :subclass キーワードで #t を指定すると サブクラスも検索するようになり、サブクラスのインスタンスも集められる ようになりました。詳しくは、kahua-dev メイリングリストに投稿された 記事 (kanua-dev:00652) (kanua-dev:00655) (kanua-dev:00657) (kanua-dev:00660) (kanua-dev:00661) (kanua-dev:00662) を参照してください。
- session-state-ref、session-state-all-key、ref-object という API を 追加しました。動機などについては、kahua-dev メイリングリストに投稿 された記事 (kanua-dev:00653) (kanua-dev:00656) (kanua-dev:00663) を参照してください。
- Gauche 0.8 では、kahua-server のテストでエラーが出るのを修正しました。
Release Note for version 0.2.5
- パラメータ kahua-app-args を追加
- app-servers の :arguments で指定した引数リストを、アプリケーションプログラム *.kahua から参照できるようになりました。
- kahua-current-user-name を追加
- <kahua-user> オブジェクトではなく、カレントユーザ名だけをとりだすことができます。非登録ユーザにログインを許すようなアプリケーションを書く場合に便利です。
Release Note for version 0.2.4
a/cont および form/cont が、属性リスト も見るように修正しました。
(a/cont (@ (target "foo")) (@@ (cont ...)) ...)
のように属性リストをつかって、target の指定ができるようになりました。
frame 関連の要素(frameset および frame) を追加しました。 また、frame/cont が加わっています。
frame/cont については、とりあえず、以下からはじまるML のスレッドをごらん下さい。 http://www.kahua.org/mlarchive/kahua-dev/msg00625.html
Release Note for version 0.2.3.1
test/Makefile.in の変更をcommitしわすれました。 変更されたものを梱包してあります。
Release Note for version 0.2.3
test パートを変更しました。以下の不具合を解消しました。
- BSD 系で env -u が利用できないことに起因して、make check が中断してしまう。
- 一部のOSでのGaucheでは、Unix ドメインソケットにたいして、file-type が、 'fifo を返すため、make check で一部のテストが失敗する。
Release Note for version 0.2.2
gosh の内部エンコーディングが euc-jp 以外の場合に make check が途中で こけるという不具合を解消しました。
不具合の原因は、ソースコード中にある 日本語のリテラル文字列でした。現在のバージョンでは、この不具合を make 時にソースコードを gosh の内部エンコードに変換することで解消しています。
ただし、kahua.pdf のライブラリについては、euc-jp を仮定していますので、 それ以外の内部エンコーディングをもつ gosh では日本語は正しく扱えません。
また、PDF ライブラリは将来、Kahua とは独立したライブラリにする予定です。
Release Note for version 0.2.1
Kahua-0.2.1 の特徴
- Kahua は汎用アプリケーションサーバkahua-server上でアプリケーションサービスを提供するための開発実行環境です。
- Kahua は kahua-server、ユーティリティモジュール、ユーティリティスクリプト、管理スクリプト、および、CGIスクリプト(HTTPサーバとkahua-serverとを接続する)を含みます。
- Kahua を使うと継続渡しスタイル(CPS)で簡単にWeb Applicationを書くことができます。
0.2 以前との相違
- インストールされるディレクトリがデフォルトでは、$prefix/(bin|etc|lib|libexec|share|var|tmp)/kahua/ になるよう変更
- コマンド kahua-admin、kahua-install、kahua-keyserv、kahua-server、kahua-spvr が Scheme スクリプトから、それぞれの Schemeスクリプトを呼ぶ Shell スクリプトへ変更
N.B.
- 現在のKahua 0.x.y バージョン系列のリリースは安定版リリースではありません。 今後、APIの変更などが行われる可能性があります。