2004-08-22  Topia  <topia@clovery.jp>

	* HACKING:
	  - ModuleManager/*_blacklist, Multicast/attach_for_client,
	    remark/IRCMessage/always-use-colon-on-last-param,
	    Hook の使い方を追加。

	* tiarra:
	(shutdown):
	  - runloop->terminate を使った shutdown を行うようにした。
	  - runloop->terminate が失敗した時のために、2度以上 shutdown が
	    呼ばれれば強制終了する。

	* doc-src/conf-main.tdoc, main/Configuration.pm:
	  - general/messages/quit/netconf-changed-{re,dis}connect を追加。

	* main/IrcIO.pm:
	(disconnect):
	  - runloop->unregister_receive_socket を呼ぶ。

	* main/IRCMessage.pm:
	(serialize):
	  - remark/always-use-colon-on-last-param 追加。最後のパラメータの
	    シリアライズ時に必ずコロンを使うようにする。
	    主にクライアント対策用。

	* main/ModuleManager.pm:
	(add_to_blacklist, remove_from_blacklist, check_blacklist, _set_blacklist):
	  - blacklist の実装。
	(_clear_module_cache, get_modules):
	  - blacklist を除いた、使用可能モジュールのキャッシュを作る。
	(terminate):
	  - mod_timestamp にあるモジュールも destruct/_unload する。
	(check_timestamp_update):
	  - 共通ルーチンとしてメソッドにした。
	(update_modules):
	  - blacklist 関連処理と、設定は変更されていないがアップデート
	    されていて、前回ロード失敗しているモジュールの再試行を追加した。
	(reload_modules_if_modified, _unload):
	  - blacklist 関連処理の追加。

	* main/Multicast.pm:
	(_NOTICE_from_server):
	  - 追加。 MODE で代用していると、メッセージとして global nick
	    のみが送られてきたときに、改変してしまう。
	($server_sent):
	  - NOTICE と PRIVMSG を _NOTICE_from_server へ変更。
	(attach_for_client):
	  - 追加。multi-server-mode のときのみ attach する。

	* main/RunLoop.pm:
	  - set-current-nick フックを追加した。
	(_new):
	  - 一時変数として $conf を追加して見やすくする。
	  - terminated_networks, terminating を追加。
	(network):
	  - networks, disconnected_networks, terminated_networks の各
	    ジャンルを順に検索して、最初に見つかったものとジャンル名を返す。
	(set_current_nick):
	  - set-current-nick フックを呼ぶようにした。
	(_conf, _conf_{general,networks,messages}):
	  - Configuration::shared_conf->... の短縮形として追加。
	(_cleanup_closed_link):
	  - unregister_receive_socket を使うようにした。
	  - state として reconnecting/terminating/finalizing を受け入れる。
	(_action_{part_and_join,message_for_each}):
	  - Multicast::attach_for_client を使うようにした。
	(update_networks):
	  - ->_conf* を使うようにした。
	  - state として reconnecting/finalizing を使う。
	(terminate_server):
	  - 追加。 quit し、 conf 変更がない限り自動再接続しない。
	  - state として terminating を使う。
	(reconnect_server):
	  - 何らかのジャンルにあるネットワークを再接続する。
	(disconnect_server):
	  - セレクタからの削除は IO->disconnect に任せる。
	(close_client):
	  - ERROR を送信してクライアントを切断する。
	({,un}install_socket):
	  - ->{,un}register_receive_socket を使うようにした。
	({,un}register_receive_socket):
	  - 追加。 ->{receive_selector}->{add,remove} を呼ぶだけ。
	(run):
	  - ->_conf* を使うようにした。
	  - ->{,un}register_receive_socket を使うようにした。
	  - 終了処理中はクライアントからの接続を受けても即切断する。
	  - 終了処理を追加。また、 400 回以上ループを回ったら強制終了する。
	(terminate):
	  - 全てのサーバ・クライアントを切断する。
	  - 終了処理フラグを立てる。
	(apply_filters):
	  - エラーメッセージを表示するときに、再帰を防ぐために一時的に
	    ブラックリストに入れる。
	  - 処理がまわってきているということはブラックリストにないという
	    ことなので、そのまま解除しても大丈夫なはず。
	(_apply_filters):
	  - バージョン管理もしているし、いらないコメントを削除する。
	(notify_msg):
	  - ->_conf* を使うようにした。

	* main/TiarraDoc.pm:
	(_makeconf):
	  - 空行のときはインデントしないようにした。

	* main/Configuration/Preprocessor.pm:
	  - 解説コメントが間違っているので訂正。

	* main/IrcIO/Client.pm:
	(new):
	  - runloop->register_receive_socket を呼ぶようにした。
	(username, client_host):
	  - 追加。プロパティ取得専用。
	(do_namreply):
	  - ->inform_joinning_channels の中の names 関連処理だけ分けた。
	(inform_joinning_channels):
	  - ->do_namreply を使うようにした。

	* main/IrcIO/Server.pm:
	  - RunLoop 用の ->state を追加。
	(connect):
	  - runloop->register_receive_socket を呼ぶようにした。
	(quit):
	  - quit メッセージを送信する。

	* module/Skelton.pm:
	(message_io_hook):
	  - 過去から現在進行へ修正。

	* module/Auto/Utils.pm:
	(sendto_channel_closure):
	  - Multicast::attach_for_client を使うようにした。

	* module/Client/Cache.pm:
	  - network が存在しないのはあまり特別な事態ではなくなったので、
	    debug 時でさえも表示しないようにした。

	* module/Client/Eval.pm:
	  - 無意味なリスト生成をやめて、配列をそのまま使うようにした。

	* module/Client/Rehash.pm:
	  - 追加。 nick と names による rehash を行う。

	* module/Log/Channel.pm:
	  - Log::Writer フレームワークを使うようにした。
	  - always-flush 設定を追加。
	  - 現在、 dir の都合によりプロトコルを混ぜることはできません。

	* module/Log/Writer.pm:
	  - 追加。ログ記録に必要なメソッド(reserve, flush)に限った
	    マルチプロトコル対応可能なフレームワーク。

	* module/Log/Writer/Base.pm:
	  - Log::Writer のプロトコルプラグインのベースクラス。

	* module/Log/Writer/File.pm:
	  - Log::Writer の File プロトコルプラグイン。
	  - fallback として動作するため、プロトコルを省略したときも
	    (そして他の fallback によってハンドルされなかったときも)
	    このプロトコルで処理する。
	  - ないディレクトリは勝手に作るので注意。

	* module/System/Error.pm:
	  - 追加。 ERROR メッセージをクライアントに送る前に NOTICE に埋め込む。
	  - デフォルトオンです。機構的に以前からの conf は救済できません(^^;;

	* module/System/Shutdown.pm:
	  - シャットダウンメッセージを受け入れるようにした。

	* module/System/NotifyIcon/Win32.pm:
	  - iconfile と hide-console-on-load 設定を追加。
	  - 他の雑多な機能は 128 文字対応が全然動いてくれない上に、
	    実装自体も全然進んでいないので見送りです。

	* module/Tools/FileCache.pm:
	  - use Carp を追加。
	  - shared で __PACKAGE__ を使うようにした。

	* module/Tools/FileCache/EachFile.pm:
	  - ->{add,del}_refcount を ->{add_ref,release} に変更。
	    内部 API だから影響はないはず。

2004-07-29  Topia  <topia@clovery.jp>

	* main/ModuleManager.pm:
	  - ->notify_error(...) を ->notify_error->(...) と間違えていた
	    ので修正。
	(reload_modules_if_modified):
	  - USED に対してメッセージは出しても実際にはリロードして
	    いなかったので修正。
	(_unload):
	  - 自分でシンボルテーブルをクリアする代わりに、 Symbol::delete_package を
	    使うようにした。ただしサブパッケージは退避している。

	* main/Timer.pm:
	(reset):
	  - 追加。現在の時刻を元に fire_time を設定しなおす。

	* main/Module/Use.pm:
	(import):
	  - @USE にそのまま設定する代わりに push をするようにした。

	* module/Client/Eval.pm:
	  - いくつか関数を追加。
	    (conf, module_manager, module, shutdown, reload)

	* module/System/NotifyIcon/Win32.pm:
	  - 追加。タスクバーの通知領域にアイコンを表示し、コンソールの
	    表示・非表示、 conf リロード、終了などができる。

2004-07-24  Topia  <topia@clovery.jp>

	* HACKING:
	  - Auto::Utils::sendto_channel_closure の説明を追加。
	  - remark の説明をいくつか追加。
	  - Emacs で自動的に text-mode になるようにした。
	    (Local variables)

	* Makefile:
	  - 間違っているコメントを削除した(etags/update もするし)。
	  - ターゲット名を clean に変えた。
	  - clean の一行目だけでも sh で通るようにした。

	* main/ControlPort.pm:
	  - SelfLoader が動作しない例の一つだった。修正もれ。
	    コメントアウトして対処した。

	* module/Auto/Utils.pm:
	  - いくつか説明コメントを修正。
	(sendto_channel_closure):
	  - $sender が省略されれば自分で調査して送信する。
	    ($sendto, $command) だけで呼べるようになった。
	  - シングルサーバモード時の処理をしていなかったので修正。

2004-07-09  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* module/Auto/Reply.pm,
	  module/User/ServerOper.pm,
	  module/User/Vanish.pm:
	typoの訂正。動作に変更は無い。

2004-07-08  Topia  <topia@clovery.jp>

	* main/Configuration.pm:
	  - include されたファイルの更新も感知するようにした。

	* main/Mask.pm:
	(_split):
	  - $mask が未定義の時に warning がでるのを防止した。

	* main/ModuleManager.pm:
	(reload_modules_if_modified):
	  - エラー通知に notify_error を使うようにした。

	* main/ReloadTrigger.pm:
	  - Configuration::Hook/reloaded について追記。

	* main/Timer.pm:
	  - notify_error の発行対象にしているパッケージの間違いを修正。

	* main/Configuration/Preprocessor.pm:
	  - ->included_files を追加。

	* main/IrcIO/Client.pm:
	(_receive_while_logging_in):
	  - $network が未定義(未接続)の時にエラーがでていたので修正。
	(inform_joinning_channels):
	  - 固定チャンネルの mask は一致した分を全部飲み込むように変更。
	    #*@ircnet,#*@ircnet:* のようなことが出来るようになるはず。

	* module/System/Reload.pm:
	  - conf-reloaded-notify を追加。

2004-06-19  Topia  <topia@clovery.jp>

	* doc-src/conf-main.tdoc:
	  - ./tiarra --make-password のことを書き加えた。

	* main/Timer.pm:
	  - code 中で die が起こっても abort しないようにした。

	* module/Channel/Mode/Oper/Grant.pm:
	  - $myself が undef でないかチェックするようにした。

	* module/Client/Cotton.pm:
	  - 追加。いくつかの Cotton の不具合を回避する(予定)。
	  - 今は network rejoin 時の自動 part を無視する。

	* module/Client/Eval.pm:
	  - runloop に括弧を付け(て関数形式に認識させ)るのを
	    忘れていたので修正。

	* module/Client/GetVersion.pm:
	  - 追加。クライアントの接続時に CTCP Version を発行して
	    クライアントのバージョンを取得する。

2004-06-09  Topia  <topia@clovery.jp>

	* main/IrcIO/Server.pm:
	(_receive_while_logging_in):
	  - PING に対応した。
	  - RPL_WELCOME / NOTICE / PRIVMSG 以外で無視することになった場合、
	    警告を出す。

2004-06-04  Topia  <topia@clovery.jp>

	* main/IRCMessage.pm:
	  - MAX_PARAMS(= 14) 定数を追加した。
	(params):
	  - 呼び出し時に未定義なら強制的に初期化するようにした。
	(n_params):
	  - params を使用するようにした。
	(_parse):
	  - $this->push を使用するようにした。
	(length, push, pop):
	  - 追加した。

	* main/IrcIO/Client.pm:
	(_receive_while_logging_in):
	  - シングルサーバモード時にサーバから RPL_ISUPPORT が提供されていれば、
	    それを送信するようにした。

	* module/Client/Cache.pm:
	  - MODE キャッシュ、 WHO キャッシュともに、取得中フラグに有効期限を
	    つけるようにした。デフォルトで 5 分、 conf では指定できない。
	  - 念のため RPL_ENDOFWHO もハンドリング。

	* module/Client/Eval.pm:
	  - メッセージを再構築して、 : をつけなくても良いようにした。
	    もちろん ::shutdown を実行するには /eval :::shutdown と
	    しなければならない(笑)。
	  - $err を初期化して warning が出ないようにした。
	(network, runloop):
	  - eval 内部からよく使いそうなものを function 化した。

	* module/System/Raw.pm:
	  - 配列の最後の要素は (n_params - 1) なので修正して warning が
	    でないようにした。

2004-06-04  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/Unicode/Japanese.pm:
	Unicode::Japanese 0.22に更新。

2004-05-26  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/Unicode/Japanese.pm:
	Unicode::Japanese 0.21に更新。

2004-05-09  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/IrcIO.pm (receive):
	サーバーやクライアントから空行を送られた場合に、エラーが出る問題を修正。

2004-05-09  Topia  <topia@clovery.jp>

	* main/Multicast.pm:
	(nick_p):
	  - 省略可能な nicklen を引数に追加した。
	(channel_p):
	  - 省略可能な chantypes を引数に追加した。

	* main/IrcIO/Server.pm:
	  - isupport を remark からインスタンス変数に変更した。
	(nick_p, channel_p):
	  - 追加した。 ISUPPORT として NICKLEN, CHANTYPES が指定されていた
	    場合にそれを使って検査する。
	(_set_to_next_nick):
	  - 簡略化した。

2004-05-08  Topia  <topia@clovery.jp>

	* HACKING:
	  - typo を修正した。
	  - IrcIO::Server->remark に isupport と uid を追加した。
	  - ChannelInfo->remark に creation-time を追加した。

	* main/Multicast.pm:
	  - $server_sent, $client_sent: RPL_CREATIONTIME へ対応した。
	  - $client_sent: admin コマンドを追加した。

	* main/NumericReply.pm:
	  - RPL_BOUNCE を RPL_REDIR に変更。 RPL_BOUNCE はエイリアスとして
	    そのまま残すようにした。
	  - RPL_CREATIONTIME を追加した。
	  - RPL_TOPICWHOTIME を RPL_TOPIC_WHO_TIME に変更した。
	    RPL_TOPICWHOTIME はエイリアスとしてそのまま残すようにした。
	  - irc2.11 なものをいくつか追加した。
	    + RPL_HELLO(020)
	    + RPL_YOURID(042)
	    + RPL_SAVENICK(043)
	    + RPL_REOPLIST(344)
	    + RPL_ENDOFREOPLIST(345)

	* main/IrcIO/Server.pm:
	  - RPL_{CREATIONTIME,ISUPPORT,YOURID} に対応した。
	(_receive_while_logging_in):
	  - RPL_HELLO 対策を追加した。
	(modify_nick):
	  - 第二引数で nicklen を指定できるようにした。
	(_set_to_next_nick):
	  - ISUPPORT に NICKLEN が含まれていれば、それを使うようにした。

	* module/Client/Cache.pm:
	(_send_mode_cache):
	  - creation-time が存在すれば、それも返すようにした。

2004-04-18  Topia  <topia@clovery.jp>

	* HACKING:
	  - BulletinBoard と remark についてを追記。
	  - こまかい修正。

	* main/IrcIO/Client.pm, module/Client/Cache.pm:
	  - __PACKAGE__ がダブルクォートの中では展開されないことを
	    忘れていたので修正。

	* module/Channel/Rejoin.pm:
	  - 自分自身がいないチャンネル(そもそもふつうはこんなことには
	    ならないのだが)の rejoin 判定時に error が起きるのを修正。

2004-04-18  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/ControlPort.pm (ControlPort::Session::main):
	誤字修正。 NOTIFT => NOTIFY

2004-04-07  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/IrcIO/Server.pm (new):
	$this->{channels}のキーを、小文字に変換しておく。

	大文字小文字に一貫性の無いチャンネル名をクライアントに送る、
	EFnetやFreenet(IRC)のようなircdに接続していると、しばしば
	Tiarraは混乱する。この問題を回避するため、チャンネル名同士の
	比較は一旦小文字に変換した上で行うようにする。

	(channel):
	大文字小文字を無視してチャンネルを探索するように変更。
	$server->channel($name)のようにしてChannelInfoを得ている
	場合には、何ら変更は必要無い。

	チャンネル名 => ChannelInfoのハッシュを返す、$server->channels
	を使っている場合は、そのキーが小文字に変換されている事に注意しなければ
	ならない。

	* main/Multicast.pm (lc, uc): 追加
	IRC方式で大文字と小文字の変換を行う。IRC方式とは、[]\がそれぞれ{}|の
	大文字であると定義されている方式である。

	* main/Mask.pm (compile): 追加
	マスクからコンパイル済み正規表現を生成する部分を、独立した関数にした。
	大量のマッチングを高速に行う場合は、Mask::の関数を何度も呼ぶ代わりに
	マスクを一度だけコンパイルする事を考えた方が良い。
	Mask.pm内でコンパイル済みマスクはキャッシュしているが、それでも速度は違う。


2004-04-01  Topia  <topia@clovery.jp>

	* module/Client/Cache.pm:
	  - single-server-mode 時の不具合をいろいろ修正。
	  - mode/who に共通な一部のコードを関数リファレンスの形でまとめた。

2004-04-01  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* tiarra:
	confファイルが読み込まれる前に::printmsgを実行するとdieする問題を回避。
	そのような場合には、文字コード変換を行わない。

2004-03-27  Topia  <topia@clovery.jp>

	* tiarra:
	  - quiet モード時に STDIN を閉じないと握りっぱなしになって
	    (sshd が落ちないなどの)不具合が発生するようなので閉じる。
	  - STDERR を何かにリダイレクトするのは、とりあえずは保留。

2004-03-27  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/LinedINETSocket.pm (recvbuf):
	追加。通信終了後に改行が付かなかった行の内容を取り出すために使う。

	* main/RunLoop.pm (run):
	select前フックは、タイマーの次回発動時刻を計算する前に呼ぶ。
	フック内でタイマーの状態を変更しても問題を起こさないため。

	* main/Timer.pm (time_to_fire):
	引数を指定した場合、タイマーの発動時刻を変更できるように。

	* module/Tools/HTTPClient.pm:
	追加。
	HTTP/1.0専用のhttpクライアント。手抜き。

2004-03-19  Topia  <topia@clovery.jp>

	* main/IrcIO.pm, main/LinedINETSocket.pm:
	  - IO::Handle 1.21 において、 LEN が存在しないと croak がでる bug
	    の回避。

	* main/ModuleManager.pm:
	  - モジュールの destruct を呼ぶ際に、 $show_msg でなく
	    RunLoop->shared_loop->notify_error を使うように。

	* main/IrcIO/Client.pm:
	(inform_joinning_channels):
	  - フックの引数を変更。
	  - フックコール中にエラーが発生しても
	    最低限すべてのチャンネル情報だけは送信するように。

	* module/Client/Cache.pm:
	  - IrcIO::Client::Hook/channel-info を使用して、
	    知っているチャンネルモードを強制的に先行して送るようにした。

	* module/Log/Recent.pm:
	(IrcIO::Client::Hook/channel-info):
	  - 引数変更に同期。
	  - クライアントオプション no-recent-logs をみるようにした。

2004-03-13  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/Hook.pm (Hook::call, HookTarget::call_hooks):
	フック関数に引数を渡せるように変更。

	* main/RunLoop.pm:
	Hook.pmで一般化したためにコメントアウトしてあったフック関連のコードを削除。

	* main/IrcIO/Client.pm (inform_joinning_channels):
	チャンネル情報一つ転送される度に呼ばれるフック channel-info を定義。
	このフックには引数としてIrcIO::Client自身とチャンネル名が渡される。
	フッククラスは同ファイルで定義されるIrcIO::Client::Hook。

	* module/Log/Recent/pm:
	クライアントに送られるチャンネルと同じ順番でログも送るように変更。
	この動作はIrcIO::Clientのフックを利用している。

	* main/RunLoop.pm (run):
	Tiarra暴走検出のコードにバグがあったので修正。
	0秒selectに2秒以上の間隔が開いた場合にはカウンタをリセットする意図があったと思うが
	2秒*以下*の間隔でリセットしていた。
	ついでなので警告の閾値も300まで引き上げ。

2004-03-09  Topia  <topia@clovery.jp>

	* module/Client/Cache.pm:
	  - destruct において、呼ぶメソッドを勘違いしていたのを修正。

2004-03-08  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* module/Unicode/Japanese.pm:
	UniJP 0.20に置換え。

2004-03-07  Topia  <topia@clovery.jp>

	* tiarra:
	  - untaint を行うようにした。

	* main/Configuration.pm:
	  - 呼び出す関数名を間違えていた bug を修正。

	* main/Mask.pm:
	  - untaint を行うようにした。

	* main/Multicast.pm:
	  - ERR_NOTONCHANNEL, ERR_NOSUCHCHANNEL を *_sent に追加。

	* main/IrcIO/Server.pm:
	  - nick 変更の prefix category を nick::system にした。
	  - _START_WHOIS_REPLY を呼ぶときに defined check をしてない bug
	    を修正。

	* module/Client/Cache.pm:
	  - destruct を追加。
	  - ChannelInfo につける remark にパッケージ名をつけて、
	    他のモジュールとかぶらないようにした。

	* module/Client/Eval.pm:
	  - untaint を行うようにした。
	  - 複数行の出力をちゃんと処理するようにした。

2004-02-23  Topia  <topia@clovery.jp>

	* module/Debug/RawLog.pm:
	  - 追加。生の IRC メッセージ(のようなもの?)を ::printmsg を使って
	    表示する。

	* main/IrcIO/Client.pm:
	  - RunLoop を Runloop と typo していたのを修正。

	* main/IrcIO/Server.pm:
	(_received_after_logged_in, _set_to_next_nick):
	  - sysmsg_prefix を使うようにした。
	(_RPL_CHANNELMODEIS):
	  - 存在しないチャンネルが対象だったときにエラーがでるという
	    どうしようもないミスを修正。

	* main/RunLoop.pm:
	(_multi_server_mode_changed):
	  - sysmsg_prefix を使うようにした。

	* makedoc:
	  - sample.conf を出力するようにした。
	  - 全体にわたってモジュール名のソートを行うようにした。
	  - block 構文への暫定対応。
	  - #key:value という *コメント* をきちんと認識していなかったのを fix
	  - グループ名に説明が定義されていなかったときに警告を出すようにした。

	* tiarra:
	  - --enable-debug 時にも、 couldn't connect 関連のメッセージなら
	    スタックトレースを省略するようにした。

	* sample.conf:
	  - TiarraDoc を使用するようになった。

	* doc/module-toc.html, doc/module/*.html:
	  - regen.

	* doc-src/conf-main.tdoc:
	  - general/omit-sysmsg-prefix-when-possible 削除。
	  - general/sysmsg-prefix-use-masks ブロック追加。
	  - 書かれていなかった networks/multi-server-mode の解説を
	    sample.conf から持ってきて追加。
	  - typo したままだった networks/channel-network-separator の
	    コメントを sample.conf に従って修正。
	  - ircnet/host を irc.nara.wide.ad.jp に変更。
	    いまは停止しているのだが、復活を願うということで。

	* doc-src/module-group.tdoc:
	  - Channel の最後が typo していたのを修正。
	  - Client, CTCP, Debug を追加。
	    とはいえ Debug はまだ cvs repo. には存在していないが…。

	* doc-src/sample.conf.in:
	  - RCS Tag 'Id' を追加。

	* main/Configuration.pm:
	  - general/omit-sysmsg-prefix-when-possible のデフォルト値を消して、
	    general/sysmsg-prefix-use-masks のデフォルトブロックを追加。
	(_complete_table_with_defaults):
	  - _complete_{table,block}_with_defaults に分割。
	(_complete_table_with_defaults):
	  - Block を使った実装に変更。
	  - Configuration::Block->table の追加が必須。
	(_complete_block_with_defaults):
	  - block(hash_ref) と array_ref のデフォルト値に対応。

	* main/ModuleManager.pm:
	(update_modules):
	  - %loaded_mods に古いモジュールが無かった場合は無視するようにした。
	(_unload):
	  - デバッグモード時でも、同じモジュールからの 11 以上の export は表示しない。

	* main/Multicast.pm:
	  - $server_sent, $client_sent: NumericReply 化。
	    ERR_TOOMANYCHANNELS と RPL_WHOISCHANNELS を追加。
	(_NJOIN_from_server, _RPL_NAMREPLY):
	  - /[@+]/ が変数展開されているようなので /[\@+]/ に変更。
	(_WHOIS_from_client):
	  - RunLoop->shared_loop->sysmsg_prefix を使用するようにした。
	(_{attach,detach}_RPL_WHOISCHANNELS):
	  - 追加。 WHOIS で表示されるチャンネル名に network をつける。

	* main/RunLoop.pm:
	  - sysmsg_prefix を追加。
	(_action_one_message, _action_message_for_each, notify_msg):
	  - RunLoop->shared_loop->sysmsg_prefix を使用するようにした。

	* main/TiarraDoc.pm:
	(_makeconf):
	  - block への暫定対応。

	* main/Configuration/Block.pm:
	  - ->table を追加。
	(eval_code):
	  - original の typo を修正。

	* main/IrcIO/Client.pm:
	  - RunLoop->shared_loop->sysmsg_prefix を使用するようにした。
	(inform_joinning_channels):
	  - 暫定的に networks/fixed-channels ブロックに channel の mask を
	    書くことで、送信順を指定できるようにしたが、 conf エントリ名が
	    気に入らないため、名前が決まるまでは sample.conf に
	    書かないことにする。

	* main/IrcIO/Server.pm:
	  - ->server_hostname を追加。 RPL_WELCOME(001) で送られてきた
	    サーバ名を保持する。
	  - サーバで nick 変更が起こったときに、以前の nick も表示するようにした。

	* module/Auto/Reply.pm:
	  - 返答時に mask をチェックするようにした。

	* module/Channel/Freeze.pm:
	  - RunLoop->shared_loop->sysmsg_prefix を使用するようにした。
	  - 不要になった use Configuration; を削除。

	* module/Client/Cache.pm:
	  - RunLoop->shared_loop->sysmsg_prefix を使用するようにした。
	  - WHO キャッシュ送信時において、 Multicast::global_to_local を
	    使って nick を変換していなかった bug を修正。
	  - 不要になった use Configuration; を削除。

	* module/Client/Eval.pm:
	  - RunLoop->shared_loop->sysmsg_prefix を使用するようにした。
	  - 無用な remark('fill-prefix-when-sending-to-client') をなくした。

	* module/Log/Recent.pm:
	  - no-recent-logs クライアントオプションを追加。
	  - RunLoop->shared_loop->sysmsg_prefix を使用するようにした。
	  - 不要になった use Configuration; を削除。

	* module/System/Pong.pm:
	  - NumericReply 化。 ERR_NOORIGIN を返せるようにした。
	  - PING もここで破棄するようにした。
	(message_arrived):
	  - $sender->server_hostname を使用して正確なホスト名に返す。

	* module/System/Raw.pm:
	  - RunLoop->shared_loop->sysmsg_prefix を使用するようにした。
	  - NumericReply 化。 NOTICE の代わりに ERR_NEEDMOREPARAMS を返す。
	  - 不要になった use Configuration; を削除。

	* module/User/Ignore.pm:
	  - sample conf の mask に例示用ドメインを使用するようにした。

	* module/Auto/Alias.pm, module/Auto/Answer.pm,
	module/Auto/ChannelWithoutOper.pm, module/Auto/Joined.pm,
	module/Auto/MesMail.pm, module/Auto/Oper.pm,
	module/Auto/Random.pm, module/Auto/Reply.pm,
	module/Auto/Response.pm, module/CTCP/*.pm,
	module/Channel/*.pm, module/Channel/Join/Invite.pm,
	module/Channel/Join/Kicked.pm, module/Channel/Mode/*.pm,
	module/Channel/Mode/Oper/Grant.pm, module/Log/Recent.pm,
	module/System/Macro.pm, module/System/Pong.pm,
	module/System/Raw.pm, module/System/RemoteControl.pm,
	module/System/Shutdown.pm, module/User/Filter.pm,
	module/User/ServerOper.pm, module/User/Vanish.pm,
	module/User/Away/Client.pm, module/User/Away/Nick.pm,
	module/User/Nick/Detached.pm:
	  - TiarraDoc 化。 sample.conf から取ってきて一部まずいところは
	    変更している。

2004-02-21  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* module/Channel/Freeze.pm:
	freezeコマンドの引数は、これまでは完全なチャンネル名であったが、
	これはマスクに変更。その時にJOINしている全てのチャンネルの中から
	マスクに一致した全てのチャンネルを凍結する。

	* sample.conf, doc-src/conf-main.tdoc:
	設定 general/omit-sysmsg-prefix-when-possible 追加。
	これが1である時、sysmsg-prefixはチャンネルに対してのメッセージ
	でなければ省略する。デフォルトは1。

	* main/Configuration.pm:
	general/omit-sysmsg-prefix-when-possible のデフォルト値を追加。

	* main/Multicast.pm, main/RunLoop.pm,
	  main/IrcIO/Client.pm, module/Channel/Freeze.pm,
	  main/Log/Recent.pm, module/System/Raw.pm:
	omit-sysmsg-prefix-when-possibleを反映。

2004-02-15  Topia  <topia@clovery.jp>

	* module/Client/Cache.pm:
	  - message_io_hook を追加。サーバとの通信を監視して、
	    MODE や WHO を発行(して返答をもらっている)途中かどうかを
	    記憶しておくように。
	  - message_io_hook で記憶した情報を使って、
	    (ほかのクライアントなどによって)サーバに情報を問い合わせている
	    途中の時も、メッセージを破棄するようにした。
	    2つ以上のクライアントが同時につながったときに効果が出るはず。
	    テストには LimeChat を 3 つ同時に接続させたが、
	    サーバへの問い合わせは各チャンネルにつき1回までに抑えられていた。
	  - クライアントに伝達される必要のあるメッセージではないので、
	    RunLoop->shared_loop->notify_warn() if ::debug_mode; から
	    ::debug_printmsg(); に変更。
	  - WHO キャッシュにおいて、
	    データ不足であきらめたときのメッセージ表示をやめた。

2004-02-14  Topia  <topia@clovery.jp>

	* 全般:
	  (a) NumericReply を使うようにした。
	  (b) general/sysmsg-prefix を使うようにした。

	* doc-src/conf-main.tdoc, sample.conf:
	  - sysmsg-prefix を追加。

	* sample.conf:
	  - Client::Eval と Client::Cache を追加。

	* main/ChannelInfo.pm:
	  - mode_string method を追加。

	* main/Configuration.pm:
	  - general/sysmsg-prefix のデフォルト値を追加。

	* main/IRCMessage.pm:
	  - clone(deep => 1) を追加。
	  - s/unvalid/invalid/; fix typo.
	  - $this->[PARAMS] がそもそも未定義なときは、
	    n_params は中身なし配列の長さ(=0)を返すようにした。

	* main/ModuleManager.pm:
	  - module の reload の時に、一時的に $this->{modules} の
	    該当箇所に undef を入れて実行されないようにした。
	    (main/RunLoop.pm の変更とセットです。)

	* main/Multicast.pm: (b)
	  - シングルサーバモードで、どこのネットワークにも
	    繋がっていないときは、デフォルトネットワークに
	    $networks->default を使うようにした。

	* main/NumericReply.pm:
	  - irc2.10.3p5+hemp2 に合わせた。
	    ISUPPORT は使用する設定。
	  - fetch_number(名前から番号), fetch_name(番号から名前)
	    のそれぞれを得る関数を追加した。

	* main/PersonInChannel.pm:
	  - priv_symbol method (privilege symbol) を追加。
	    has_[ov] の状態によって、 @, +, 空文字列のどれかを返す。

	* main/PersonalInfo.pm:
	  - AWAY を追加。できるだけ更新しますが、
	    性質上情報の正確さは保証できません。

	* main/RunLoop.pm: (b)
	  - single-server-mode 時に、切断・接続のアナウンスの
	    送信先チャンネル名からネットワーク名をはずすようにした。
	  - サーバへの接続処理時に、 couldn't connect to 以外の
	    エラーメッセージ表示には notify_error を使うようにした。
	  - クライアントからの接続処理時は、エラーメッセージ表示に
	    notify_msg を使うようにした。
	  - apply_filters で、 modules_list の中に undef が出てきたら、
	    それを無視するようにした。
	    (main/ModuleManager.pm の変更も参照。)

	* main/IrcIO/Client.pm: (a)(b)
	  - credit を RPL_YOURHOST でなく MOTD として表示するようにした。
	  - RPL_YOURHOST では、 Tiarra のバージョンを表示する。

	* main/IrcIO/Server.pm: (a)
	  - _RPL_* の処理を NumericReply::fetch_name を使ってまとめた。
	  - _START_WHOIS_REPLY, _RPL_ENDOFWHOIS, _RPL_AWAY を追加。
	  - _RPL_WHOREPLY
	    + 空白を含む realname に関するバグを修正。
	    + away 情報を記憶するようにした。
	    + server hop 情報を network の 'server-hops' remark に保存。
	  - _RPL_CHANNELMODEIS で、 switches と parameters の情報は
	    この reply で得られると決めつけて、クリア処理を行う。

	* module/Channel/Freeze.pm: (b)

	* module/Channel/Rejoin.pm: (a)
	  - ChannelInfo->mode_string を使用するようにした。

	* module/Channel/Join/Connect.pm:
	  - コンマの直後にスペースがあった場合、削除する処理が、
	    最初の一つに対してしか実行されていなかったのを修正…(^^;;;

	* module/Client/Cache.pm:
	  - 追加。いまのところ MODE キャッシュと、 WHO キャッシュを実装。

	* module/Client/Eval.pm:
	  - 追加。クライアントからのコマンドしか受け付けないが、
	    その代わりすべてのコマンドを実行できる。
	    事実上 IRC パスワードがわかれば Tiarra が動いているホスト上で
	    動作しているアカウントの権限で何でもできる、
	    ということに注意すること。

	* module/Log/Recent.pm: (b)
	  - network name が不正な場合は、 notify_warn で警告して、
	    エラーなしに抜けるようにした。

	* module/System/Pong.pm:
	  - prefix がついているのは不自然だったので、削った。

	* module/System/Raw.pm: (b)

	* module/Tools/LinedDB.pm:
	  - ファイルが存在しない場合に、
	    更新チェック部分でエラーが発生していたのを修正。

2004-02-04  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/IrcIO.pm, main/IrcIO/*.pm, main/Module.pm:
	notification_of_message_ioを削除。

	* main/Module.pm (message_io_hook):
	追加。これはnotification_of_message_ioの代わりに呼ばれる。
	このメソッドはメッセージを改変する事が出来る。詳しくはコメントに。

	* main/IrcIO.pm (send_message, receive):
	各モジュールのmessage_io_hookを呼ぶ。

	* main/RunLoop.pm (apply_filters):
	追加。モジュールによるメッセージフィルタリングの一般形。

2004-01-27  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/NumericReply.pm: 追加
	ニューメリックリプライをシンボルとして定義するクラス。
	useで全シンボルをエクスポート。

	* main/IrcIO.pm:
	CRが無く、LFだけで終わっているメッセージも受け入れる。

2004-01-23  Topia  <topia@clovery.jp>

	* tiarra: $0 自体が symlink だったときに、@INC に symlink 先の
	main/module を含めるようにした。
	カレントディレクトリ・$0 のディレクトリは常に含むようにした。
	(make_password): --make-password=password を可能にした。

2004-01-23  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* tiarra: 起動時オプション --make-password 追加。
	make-passwordの機能をtiarra本体に移した。

	* make-password: 削除

2004-01-20  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/Unicode/Japanese.pm:
	同梱のUniJPを0.18から0.19に。JISの問題は解決。

2004-01-14  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/Mask.pm:
	マスクから作った正規表現をqrでコンパイルする際、
	iフラグを付け忘れて大文字小文字の区別が*されていた*ので修正。

	* main/IRCMessage.pm (_parse):
	空文字列については文字コード変換処理を明示的に省略する。
	Unicode::JapaneseにはISO-2022-JP→UTF-8変換において空文字列を"\x00"にしてしまう問題あり。

2003-11-17  Topia  <topia@clovery.jp>

	* tiarra: enhancement.
	パッケージ用にいくつかのバージョン変数を追加した。

	* module/Log/Channel.pm: enhancement/need reload.
	<http://www.clovery.jp/wiki/wiki?BugTrack%2F%2FTiarra%2F%2F1%2F%2F23%2F%2Fpatch-1>
	デフォルトのログファイルパーミッションを 644 から 600 にした。
	ディレクトリ作成時のパーミッションを指定できるようにした。(dir-mode)
	デフォルトは 700 。

	* tiarra: enhancement.
	<http://www.clovery.jp/wiki/wiki?BugTrack%2F%2FTiarra%2F%2F1%2F%2F24%2F%2Fpatch-1>
	--dumpversion を追加した。
	パッケージ作成時にバージョン情報を得るため等に使う予定。

2003-11-09  Topia  <topia@clovery.jp>

	* module/System/Reload.pm (message_arrived): bugfix/need reload.
	<http://www.clovery.jp/wiki/wiki?BugTrack%2F%2FTiarra%2F%2F1%2F%2F22%2F%2Fpatch-1>
	Timer を使って遅延処理することによって、reload command での
	自分自身のリロードを可能にした。

	* main/RunLoop.pm (run): bugfix(single-server-mode)/need reboot.
	<http://www.clovery.jp/wiki/wiki?BugTrack%2F%2FTiarra%2F%2F1%2F%2F21%2F%2Fpatch-1>
	single-server-mode 時の、クライアントから送られて来た
	PRIVMSG/NOTICE のブロードキャストで、 network-suffix 付きの
	チャンネルに送信してしまっていた。

2003-11-09  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* tiarra (help):
	メッセージ中のstdinとstderrの間違いを修正。

2003-11-08  Topia  <topia@clovery.jp>

	* make-password: enhancement.
	<http://www.clovery.jp/wiki/wiki?BugTrack%2F%2FTiarra%2F%2F1%2F%2F20%2F%2Fpatch-1>
	パスワードの入力に、 Term::ReadLine を使用するようにした。

	* module/Log/Recent.pm (client_attached): bugfix(single-server-mode)/need reload.
	<http://www.clovery.jp/wiki/wiki?BugTrack%2F%2FTiarra%2F%2F1%2F%2F18%2F%2Fpatch-2>
	single-server-mode 時に、送信チャンネル名から network-suffix
	をはずす。

	* main/RunLoop.pm (run): bugfix(single-server-mode)/need reboot.
	<http://www.clovery.jp/wiki/wiki?BugTrack%2F%2FTiarra%2F%2F1%2F%2F18%2F%2Fpatch-1>
	single-server-mode 時に、クライアントから送られて来るメッセージに
	network-suffix を付けるようにした。

2003-10-25  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/IRCMessage.pm (serialize):
	最後のパラメータが空文字列だった場合、コロンを残さない為に
	シリアライズ後のパラメタが減ってしまう問題を解決。

	* main/IrcIO/Server.pm (_receive_while_logging_in):
	サーバーがERRORを返した時、その内容でdieするように。

2003-10-24  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/Configuration/Block.pm:
	$block->foo_bar('block') とした時、戻り値が常にブロックとなる。
	未定義であれば空のブロックを、既定義かつ値がブロックであれば
	そのブロックを、既定義かつ値がブロックでなければキーと値のペアを
	一つだけ含むブロックを生成して返す。

2003-10-19  Topia  <topia@clovery.jp>

	* HACKING:
	モジュール作成者向けのドキュメントを書いた。
	まだ、Timer / Hook / Socket I/O 関連の記述がない。

	* module/Skelton.pm:
	新規モジュールのスケルトン。中身のほとんどは main/Module.pm と同一。

	* module/Auto/Alias.pm (message_arrived):
	返り値がおかしかったのを修正。

2003-10-19  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/IrcIO/Server.pm
	(person_if_exists):
	追加。指定されたnickを持つ人物が居れば、そのPersonalInfoを返す。
	(_RPL_WHOREPLY):
	サーバー名とnickの位置を間違えていたので修正。

2003-10-16  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* module/System/Raw.pm:
	追加。Tiarraに改変されない生のメッセージをサーバーに送るためのモジュール。

	* main/RunLoop.pm (update_networks):
	confからサーバー名を削除する事でサーバーから切断した時に、
	そのサーバーで入っていた全てのチャンネルに対するPARTを全クライアントへ送る。

2003-10-14  Topia  <topia@clovery.jp>

	* main/Multicast.pm (distribute_to_servers):
	hijack_forward_to_server を適用(nickで使う)

	* main/RunLoop.pm (_multi_server_mode_changed):
	nick 変更を追加。

	* main/IrcIO/Server.pm (_receive_while_logging_in):
	single-server-mode 時の NICK 処理を追加。

	* main/IrcIO/Server.pm (_receive_after_logged_in):
	single-server-mode 時の NICK 処理に RunLoop/set_current_nick を追加。
	437 での if 条件であほなミスをしていたので修正。

2003-10-12  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/IRCMessage.pm (serialize):
	最後のパラメータがコロンを含んでいる時に、間違った文字列化をする問題を解決。

2003-09-28  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* tiarra-conf.el:
	mmm-modeがインストールされていて、(require 'mmm-mode)または
	(require 'mmm-auto)されている場合に、tiarra-conf用の設定を
	行った後、それを有効にする。

	mmm-modeのサイトは次のURLに。
	http://mmm-mode.sourceforge.net/

	* main/PersonalInfo.pm (remark):
	追加。
	これを保存するためのhashは、必要になった時まで作られない。

2003-09-26  Topia  <topia@clovery.jp>

	* tiarra:
	--debug 時に warn と die に長いスタックトレースを表示する。

	* main/ChannelInfo.pm:
	topic_who と topic_time を追加。
	エラーメッセージのミスを修正。

	* main/Multicast.pm:
	RPL_TOPICWHOTIME の追加。
	hijack_local_to_global 時のフォールバック条件を訂正。

	* main/IrcIO/Client.pm:
	431 No nickname given の実装。
	multi-server-mode でないときには nick 関連の特殊処理をしないように。
	RPL_TOPICWHOTIME の実装。

	* main/IrcIO/Server.pm:
	437 nick/channel is temporarily unavailable に対応。
	multi-server-mode でないときには nick 関連の特殊処理をしないように。
	RPL_TOPICWHOTIME の実装。
	9文字以上のnickが来たときに、可能な限り必要以上短くしないように。

2003-09-25  Topia  <topia@clovery.jp>

	* tiarra:
	--version と --debug の実装。
	::debug_printmsg(...), ::debug_mode を使用できます。
	::printmsg への autoflash 指定を追加。

	* main/ModuleManager.pm:
	(update_modules): $this->{modules} の再構成を、アンロード前に移動。
	notification_of_message_io の呼び出しでエラーが発生するのを回避。
	(_load): デバッグモード時に UNIVERSAL::isa が嘘を付いた場合、
	標準出力に出力する。
	(_unload):
	no strict の場所を変更。
	シンボルテーブル内に存在する関数のうち、
	自分自身が定義した訳ではない関数は undef しないようにした。
	デバッグモードなら、 undef したスカラ・配列・シンボルテーブル・関数、
	undef しなかった関数、に付いてそれぞれ標準出力に出力する。

	* module/Channel/Join/Connect.pm:
	コンマの直後にあるスペースは削除するようにした。
	TiarraDoc を追加。

	* module/Tools/FileCache.pm:
	destruct メソッドを実装。
	RCSタグを標準のものにした。

	* module/Tools/GroupDB.pm:
	Module::Use が抜けていたので追加。
	RCSタグを標準のものにした。

	* sample.conf:
	Channel::Join::Connect の ブロックを TiarraDoc から再生成。
	指定項目の変化はありません。

2003-09-24  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/Multicast.pm (nick_p):
	「|」を含むnickをnickと認識していなかったので修正。

	* module/Log/Recent.pm:
	configのcommandを小文字で書くとログが取られない問題を解決。

2003-09-23  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/ModuleManager.pm:
	use Module::Useされたサブモジュールが破棄される時に、
	そのパッケージの destruct メソッドを引数無しで呼ぶ。

	* main/Mask.pm:
	メモリを食い過ぎるので、コンパイル済み正規表現の
	キャッシュ保存数を150個に減少。

	* main/PersonalInfo.pm:
	メソッドinfoに引数として真偽値を渡した時、
	それが真であればnickとnameとhostの配列を返す。
	wantarrayにすると互換性が失われるため。

	* main/PersonalInfo.pm:
	動作速度向上のため、AUTOLOADを廃止。

	* module/Log/Channel.pm:
	configのcommandを小文字で書くとログが取られない問題を解決。

2003-09-20  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/ChannelInfo.pm, main/IRCMessage.pm,
	main/PersonInChannel.pm, main/PersonalInfo.pm,
	main/Configuration/Block.pm:
	これらのクラスはオブジェクトが大量に作られるので、
	メモリの節約のためにインスタンス型を配列に変更。

	* main/IrcIO.pm:
	メソッド remarks を remark のエイリアスに。
	$io->remark(foo => undef); のように明示的にundefを設定すると
	その註釈を削除。

	* IrcIO/Server.pm:
	remarkをIrcIO.pmに移動したので、こちらは削除。

	* main/L10N.pm:
	* main/LocalChannelManager.pm:
	未完成であり、まだ使われてもいないが、存在しても害は無い。
	それぞれ多言語メッセージとTiarra内部チャンネルを扱う。

	* main/Mask.pm:
	マスク文字列から変換した正規表現のコンパイル結果をキャッシュとして保存するように。
	大量のマスクを扱う条件下で動作が非常に重くなる問題を回避する。
	ベンチマークの結果では、62.5%のマッチング速度の向上が見られた。

2003-08-18  Topia  <topia@clovery.jp>

	* main/Multicast.pm:
	${server,client}_sent に ENDOFWHO を追加。
	これで LimeChat などのクライアントで、
	アドレスコピーなどの機能が使えない症状が無くなった。
	$client_sent の numeric reply にコメントを補完。

2003-08-12  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/FunctionalVariable.pm:
	追加。与えられた任意のハンドラを変数にtieする。
	通常のtieとの違いは、ハンドラを変数毎に関数リファで指定する点。

	* main/Hook.pm:
	フックの一般的な定義。このファイルはクラスHookとクラスHookTargetを定義する。

	* main/Configuration.pm:
	リロードした時、フック`reloaded'を呼ぶ。

	* main/Multicast.pm:
	シングルサーバーモード対応。
	forward_to_serverやlocal_to_globalを動的スコープのフラグで乗っ取る等、
	最早スパゲティどころではない。ジャングル。

	* main/RunLoop.pm:
	シングルサーバーモード対応。
	このモードでは、同時に接続出来るサーバーの数が一つに限定され、
	チャンネル名等にネットワーク名が付加されなくなる。

	* main/IrcIO/Client.pm:
	_inform_joinning_channelsをプライベートメソッドでなくした。
	新しいメソッド名はinform_joinning_channels。

2003-08-04  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* makedoc:
	追加。このスクリプトはdoc-src下のファイルとmodule下のモジュール、
	main下のモジュールを読み、tdoc形式で書かれたドキュメントを認識し、
	sample.confおよびdoc下のhtmlドキュメントを生成する。
	tdocについてはdoc-src/READMEを参照。
	尚、各モジュールへのtdocの記述が完了していない為、
	完全なsample.confは生成出来ない。完了するまではsample.confでなく
	sample.conf.tmpに書き出す。

	* doc-src/README: 追加。tdocについての説明。

	* doc-src/conf-main.tdoc: 追加。generalやnetworksのドキュメント。

	* doc-src/contents.html: 追加。htmlドキュメントのテンプレート。

	* doc-src/module-group.tdoc: 追加。モジュールの分類情報。

	* doc-src/module-toc.html: 追加。モジュールの目次のhtmlテンプレート。

	* doc-src/sample.conf.in: 追加。sample.confのテンプレート。

	* main/Template.pm: 追加。テンプレートを扱うクラス。

	* main/TiarraDoc.pm: 追加。tdocパーサ。

	* module/System/PrivTranslator.pm
	* module/User/Ignore.pm: tdoc追加。

2003-07-31  Topia  <topia@clovery.jp>

	* 全般:
	・インデントの変更
	・コメントの整備
	・mask で使うチャンネル名をネットワーク付きに修正(a)
	・不要な use のクリーンアップ(b)
	・不要な変数のクリーンアップ(c)

	* Auto/Oper.pm:
	(a)

	* Auto/Random.pm:
	(a)(b)

	* Auto/Reply.pm:
	(a)(b)(c)

	* Auto/MesMail.pm:
	(b)(c)

	* Auto/Alias.pm:
	(c)

	* Auto/Response.pm:
	(a)(c)

	* Auto/Utils.pm:
	get_ch_name -> (get_raw_ch_name): ネットワーク名無しの(server 的に raw な)チャンネル名 or undef を得る。
	(get_full_ch_name): ネットワーク名付きのチャンネル名 or undef を得る。
	(generate_reply_closures): 返り値に $get_full_ch_name を追加。
	中身としては、$msg->param(place) 以上の意味は無いが、値の指定場所は一ヶ所にした方が良い。

	* Tools/DateConvert.pm:
	use_posix を import/unimport を使って再実装した。

	* Tools/FileCache/EachFile.pm:
	(can_remove): 実装。
	(AUTOLOAD): eval して関数コールするのではなく、その場でメソッドを定義して飛ぶようにした。

	* Tools/FileCache.pm:
	(main_loop): refcount を使ったチェックの代わりに、 can_remove を使ったチェックにした。

	* Tools/HashDB.pm:
	Module::Use を追加。

	* Tools/HashTools.pm:
	(get_array): 見付からなかった場合に () を返していたが、 undef を返すべきなので修正。
	(replace_recursive): こっかの補完処理を修正
	(_format): regexp の修正( %. -> %(.) )。バグでした。

	* Tools/MailSend/EachServer.pm
	::printmsg -> RunLoop->shared->notify_warn 。
	LinedINETSocket を生成するときに $E_MAIL_EOL を使っていなかった。修正。
	MessageID の作られ方をコメントとして記述。

	* Tools/MailSend.pm
	(b)

	* Mask.pm:
	s/exclude/include/ 。無意味な三項演算子を消した。

	* sample.conf:
	mask 関連を修正。

2003-07-28  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/IrcIO/Server.pm (person_list):
	追加。覚えている全てのPersonalInfoのリストを返す。

2003-07-26  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* tiarra:
	起動時に`-Dfoo'や`-Dfoo=bar'を指定すると、confに`@define foo'や
	`@define foo bar'が書かれているものと見做す。

	* module/Configuration/Preprocessor.pm
	(initial_define):
	@defineの初期設定の為の静的メソッド。

	(_eval_at):
	@ifdef文、@ifndef文を処理可能に。

2003-07-24  Topia  <topia@clovery.jp>

	* tiarra, make-password:
	require 5.6.0 は古いバージョンだと解釈されないようなので require 5.006 に。
	lib, module を tiarra からの相対パスで解釈するように。

	* main/Multicast.pm:
	352(WHOREPLY)のチャンネル名にネットワーク名をアタッチするようにした。

2003-07-23  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/InstantCapsule.pm:
	SelfLoader使用中止。SelfLoaderでDESTROYが定義されると
	カプセル内にDESTROYを定義出来なくなってしまう。

	* module/User/Vanish.pm:
	コマンド「/VANISHDEBUG 1」でメッセージの改変される様子が見えるように。
	現在残っている妙な不具合の原因が解り次第削除。

2003-07-22  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* module/Channel/Freeze.pm
	(freeze):
	カンマで区切られた複数のチャンネル名を認識。

	(defrost):
	凍結していないチャンネルをdefrostするとエラーが起こる問題を解決。
	チャンネル名をマスクとして扱うように変更。

2003-07-20  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/IrcIO/Server.pm (_PART):
	PART受信時、入っているどのチャンネルにも最早その人物が
	居なくなった場合は、その人物についてのPersonalInfoを削除する。

2003-07-19  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/ChannelInfo.pm (remark):
	remarks()のエイリアスとしてremark()を使用可能に。

	* main/Timer.pm (interval):
	明示的にundefを渡す事で、リピート終了可能に。
	uninstallすれば一緒なので大した意味は無い。

	* main/IrcIO/Server.pm (_TOPIC):
	TOPICメッセージを受信した時、古いトピックを'old-topic'として註釈を付ける。

2003-07-17  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* tiarra-conf.el (tiarra-conf-jump-to-block):
	ブロック名を入力し、その位置へジャンプするコマンド。
	デフォルトでは C-c C-. 及び C-c . に割当てられている。

2003-07-16  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* tiarra-conf.el (tiarra-conf-next-token):
	追加。カレントバッファの現在のカーソル位置の次にあるトークンを返す。
	カーソルはそのトークンの終わりの位置へ移動する。

	* tiarra-conf.el
	(tiarra-conf-next-block),
	(tiarra-conf-prev-block):
	追加。それぞれ現在のカーソル位置の次や前にあるブロックへカーソルを飛ばす。
	プリプロセッサ指令があると変な動作をするバグ有り。
	nextは M-n に、prevは M-p に割当てた。

2003-07-10  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* module/Channel/Freeze.pm:
	追加。特定のチャンネルのNOTICEやPRIVMSGの中継を
	一時的に中断するためのモジュール。
	発言を見たくないがPARTはしたくない、といった場合に有効。

2003-07-03  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/Configuration/Block.pm (get):
	$config->foo('random')のような呼出しを可能に。
	複数の定義があればランダムに一つ選んで返す。

	* main/IrcIO/Server.pm (new, reload_config, connect):
	切断された後に再接続すると、以前のNICKが引継がれるように。

	* module/Auto/Oper.pm:
	複数の応答が定義されていれば、ランダムに一つ選んで発言する。省略も可能。

	* module/Auto/Utils.pm
	(sendto_channel_closure, generate_reply_closures):
	作成されたクロージャに、発言内容としてundefを渡した場合、
	何もせずに処理を終える。

2003-06-21  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* tiarra:
	ActivePerlで起動時に出ていた警告を出ないように変更。
	SIGHUPのハンドラをインストールする際の警告だった。

2003-06-19  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* Multicast.pm (attach,detach) :
	チャンネル/nickとネットワーク名の区切り文字として、二文字以上の文字列も使用可能に。
	つまり、今後は区切り文字として「空白を含まない1文字以上の任意の文字列」を使う事が出来ます。

2003-06-06  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* PersonInChannel.pm (remark) :
	明示的に二番目の引数にundefを渡すと、その註釈が削除される。

	* RunLoop.pm (update_networks) :
	同一ホストへの複数の接続には、それぞれ時間差を設ける。

	* RunLoop.pm (run) :
	既に始動時刻が過ぎているタイマーが存在すると、タイムアウト無期限のselectを行なうバグを修正。

	* Configuration/Block.pm (eval_code) :
	%CODE{...}EDOC%ブロックを、パッケージConfiguration::Implanted内で実行する。

	* Configuration/Preprocessor.pm (_eval_pre) :
	%PRE{...}ERP%ブロックを、パッケージConfiguration::Implanted内で実行する。

	* IrcIO/Server.pm (reload_config) :
	general/nickを、それぞれのネットワーク設定ブロックのnickでオーバーライド可能に。

2003-06-04  Topia  <topia@clovery.jp>

	* RunLoop.pm (run) : can_read を先に処理する。少しでも send で切断された状況をなくすため。
	意味があるのかは不明だが、実害は無いはず。

	* IrcIO.pm (send) : 接続チェックの対象に $this->{sock}->connected も追加。
	これが接続されてない状態で書き込もうとすると perl 自体がエラー落ちすることがあるらしい。

2003-06-04  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* tiarra (ipv6_enabled) : IPv6が有効かどうかを真偽値で返す。

	* IrcIO.pm: 閉じられたソケットに対して書き込みを行なう可能性のある問題を(多分)解決。

	* CTCP.pm, ControlPort.pm, Crypt.pm, ExternalSocket.pm,
	  InstantCapsule.pm, LinedINETSocket.pm: これらは一度も使われない可能性があるため、SelfLoaderを用いて遅延ロード。

	* ChannelInfo.pm, PersonalInfo.pm: DESTROY時にエラーが起こる問題を解決。

2003-05-27  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* RunLoop.pm:
	(notify_warn): 追加。全クライアントとコンソールに警告文を出力する。
	(run): 経過時間ゼロ秒のselectを連続で100回以上検出すると、10秒ごとに、CPU時間を食い潰している可能性を警告する。

	* ControlPort.pm:
	ソケットの作成に失敗した時に出たエラーが表示されなかったのを修正。

	* ExternalSocket.pm:
	WantToWriteが返した真偽値によらず、常に「書き込みが必要」として処理していた問題を解決。

2003-05-26  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* Timer.pm (new):
	AtとAfter(又はInterval)が、両方とも指定されていなければcroakする。

	* Configuration/Preprocessor.pm:
	elseifやelseの解釈が正しくなかったのを修正。
	%PREの評価結果がundefになった時に警告が出ていたのを修正。
	@if文や@elsif文の評価結果がエラーになった時、そのエラー内容を表示していなかったので修正。

2003-05-24  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* IO/Socket/INET6.pm: 追加。
	IO::Socket::INETをIPv6に移植。Socket6.pmが必要。

	* RunLoop.pm, IrcIO/Server.pm: IPv6対応。
	general/tiarra-ip-versionに'v6'を指定する事で、IPv6でのリスニングを行なう。
	また、サーバーには最初にIPv6での接続を試みてからIPv4にフォールバックする。
	詳細はsample.confに。

2003-05-23  Topia  <topia@clovery.jp>

	* sample.conf: Auto::Random の説明中の 確立 を 確率 に修正した。

	* Auto/Reply.pm: 追加。

	* Auto/Alias.pm (message_arrived/remove): #(count) を使用可能にした。
	  value が省略された場合はキーごと削除するようにした。

	* Tools/HashDB.pm: 追加。

	* Tools/HashTools.pm: Tools/GroupDB.pm, Tools/HashDB.pm の共通部分を取り出したモジュール。

	* Tools/GroupDB.pm: キー名にコロンを使用可能にした。使用不能な半角スペースが来た場合は拒否する。
	  コメントを修正し、詳細にした。
	  無視する行を指定するクロージャを引数に取れるようになった。省略された場合は # で始まる行を無視する。(従来)
	  del_value は削除出来た値の数を返すようになった。また、 value が未指定ならキーごと削除する。

2003-05-21  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* tiarra-conf.l: 追加。
	  Noboruhiさんによるxyzzy用tiarra.conf編集モード。
	  インストール方法はtiarra-conf.l内に記述されています。

2003-05-17  Topia  <topia@clovery.jp>

	* Auto/Utils.pm: sendto_channel_closure 関数追加。
	  NOTICE/PRIVMSG の処理は面倒なので、これを自動的に処理する。
	  sendto_channel_closure, generate_reply_closures に使用方法のコメントを追加。

2003-05-15  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* conf:
	  general/control-socket-nameを定義すると、外部プログラムからtiarraをコントロールする為の
	  UNIXドメインソケットを作成する。詳しくはsample.confに。

	* ControlPort.pm: 追加。外部コントロール用。

	* IRCMessage.pm: dieメッセージのtypoを修正。

	* IrcIO.pm,LinedINETSocket.pm: sendの代わりにsyswriteを使う。

	* Module.pm: メソッドcontrol_requested追加

	* ModuleManager.pm: メソッドget追加

	* RunLoop.pm: ControlPortを起動する為のコードを追加。

	* Log/Channel.pm: "ID: synchronize"で外部からのログの同期を可能に。

2003-04-29  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* IrcIO/Server.pm: ログイン時、サーバーから送られてきたニューメリックリプライ以外のメッセージを無視する。
	  ログイン前にNOTICEを送るようなサーバーに繋げられない問題を解決。

	* RunLoop.pm: IrcIO->pop_queueがdieした時のメッセージを表示せずに捨てていたのを修正。

	* Channel/Join/Kicked.pm: 追加。チャンネルから蹴られた時に、自動JOINするモジュール。

	* IrcIO/Server.pm: 自分がチャンネルから蹴られた場合、そのチャンネル情報を消さずに
	  ChannelInfoに'kicked-out' => 1というremarkを付ける。

	* RunLoop.pm: サーバーへの再接続時、+kされたチャンネルへの再JOINに失敗していたのを修正。

2003-04-25  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* main/Configuration.pm: general/client-allowedが省略された場合、
	  間違った値をデフォルト値として設定していたので修正。

	* main/Configuration.pm: channel-network-separatorが未定義だった場合に
	  正しくデフォルト値を設定しないミスがあったので修正。

	* Configuration.pm: networksのnameで列挙されたネットワーク名に対応する
	  ブロックの定義が無かった場合、適切なエラーメッセージを出さずに処理を止めていたので修正。

2003-04-18  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* tiarra: SIGHUPを受信した時の動作を変更。
	  これまではシャットダウンしていたが、以後は設定をリロードする。

	* ChannelInfo.pm (fullname): 追加

	* RunLoop.pm: 各ネットワークの設定を変更した後リロードすると、
	  そのネットワークとの接続を一旦切ってから繋ぎ直す。

	* IrcIO/Server.pm (config): 追加。
	  コンストラクタの引数をネットワーク名のみに変更。

	* IrcIO.pm (server_p,client_p): 追加。
	  それぞれIrcIO::Serverであれば1を返すメソッドと
	  IrcIO::Clientであれば1を返すメソッド。

2003-04-13  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* User/Vanish.pm: 追加
	  特定のチャンネルでの特定の人物の存在をクライアントに隠すモジュール。
	  JOINやPART、QUIT等を消去する。

	* IrcIO/Server.pm (channels_list): 追加

	* RunLoop.pm (networks_list,channel): 追加

	* ChannelInfo.pm (AUTOLOAD): ハッシュマップの操作コマンドとして'keys'と'values'を追加。

2003-04-10  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* RunLoop.pm: 切断に気付かない場合があるので、3分毎に各サーバーにPINGを発行する。
	  PING自動発行後にサーバーから来た最初のPONGは破棄される。

	* IrcIO/Server.pm: メソッドremark追加。使い方は他のクラスのremarkと同じ。

	* LinedINETSocket.pm: メソッドconnectの動作をconnectとattachの二つに分けた。
	  これにより予め開かれたIO::Socket::INETに対してLinedINETSocketの機能を適用可能。

2003-04-05  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* Auto/Joined.pm: 追加。
	  特定のチャンネルに誰かがJOINする度に特定の発言を行なうモジュール。
	  チャンネル移転通知以外に使うのはやめた方が良い。

2003-03-28  Topia  <topia@clovery.jp>

	* sample.conf (Auto/Random.pm): mention mask property.

	* Auto/Random.pm: use array_or_all on mask.

	* Auto/Alias.pm: use array_or_all on modifier.

	* Mask.pm: add array_or_(all|all_chan), (all|all_chan)_mask.
	  for not known maskmode, use Tiarra mode; and do warn.

2003-03-23  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* IrcIO/Server.pm: general/bind-addrでサーバーへの接続時のローカルアドレスを指定可能に。
	  また、各ネットワーク設定でbind-addrはオーバーライドできる。

2003-03-23  Topia  <topia@clovery.jp>

	* tiarra: ソースの判別部分自体が展開されていた…ので修正。

	* ChangeLog: Id/Author/Date/RevisionのRCSタグを末尾に追加した。

	* tiarra: ChangeLogからDateとRevisionを読んでバージョン情報に付加するようにした。

2003-03-23  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* User/Filter.pm: 追加。特定のユーザーの発言にフィルタをかけるモジュール。

2003-03-23  Topia  <topia@clovery.jp>

	* CTCP/Version.pm: add perl version information.

	* CTCP/ClientInfo.pm: separate ' ' instead of '/'. (ref. TAGGED DATA)

	* CTCP/{ClientInfo|Ping|Time|UserInfo|Version}.pm>: reply to channel CTCP.

	* CTCP.pm: fix wrong-quote dequoting.

	* sample.conf (Channel/Join/Invite.pm): add Channel/Join/Invite.pm sample configuration.

	* NEWS: add. news for non-developer. please write major changes, and so on.
	  if developer, see ChangeLog and check NEWS, please :-)

	* Channel/Join/Invite.pm: add.

	* Auto/Utils.pm (get_ch_name): add.
	(generate_reply_closures):
	  add param ch_place(6th). default:0.
	    place of channel name in msg->params.
	  $get_ch_name closure return static string.

	* Auto/Response.pm: use register_extcallbacks.
	  generate_reply_closures's 3rd param(use_alias) to undef.(use default)

	* Auto/AliasDB/CallbackUtils.pm: add register_extcallbacks.
	  (for register insecure callbacks)

2003-03-19  Topia  <topia@clovery.jp>

	* sample.conf: change sample configuration.

	* Auto/Random.pm: can use multiple random datas.

2003-03-17  Topia  <topia@clovery.jp>

	* Tools/MailSend/EachServer.pm (clean): fix cleaning code.
	(DESTROY): unnesessary; remove.

	* sample.conf: mention Auto::Random/(mask|count-query|count-format), and format change.
	  mention Auto::Response's DB format.

	* sample.conf (Auto/Alias.pm): s/#(message)/#(value)/ at sample config. sorry.

	* Tools/FileCache.pm, Tools/FileCache/EachFile.pm: add. Tools::LinedDB based cached file i/o.

	* Tools/LinedDB.pm: add. line based i/o framework.

	* Tools/GroupDB.pm (add_group): add $this->synchronize.

	* Log/DateTime.pm: this module is obsolete. remove.

	* Log/Channel.pm, Log/Recent.pm: use Tools::DateConvert instead Log::DateTime.

	* Auto/Response.pm: add callback: read_file/file_lines.
	  add mask check in database 'mask' entry.

	* Auto/Random.pm: use Tools::FileCache.
	  add count query.

	* Auto/AliasDB/CallbackUtils.pm: add #(read_file:fpath:mode:charset).
	  add #(file_lines:fpath:mode:charset).
	(register_callback): $reg_callback accept scalar function name.

2003-03-15  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* BulletinBoard.pm:
	  ・AUTOLOAD経由で値を設定可能に。
	  ・メソッドkeys()を追加。

	* CTCP.pm: 追加。CTCPエンコード/デコードを行なうモジュール。

	* IrcIO.pm: メソッドremark()追加。

	* CTCP/ClientInfo.pm,
	  CTCP/Ping.pm,
	  CTCP/Time.pm,
	  CTCP/UserInfo.pm,
	  CTCP/Version.pm     : 追加。

2003-03-10  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* IrcIO/Server.pm: ネットワーク毎の設定でin-encoding,out-encodingを定義する事により
	  文字エンコーディングの設定をオーバーライド可能に。

2003-03-09  Topia  <topia@clovery.jp>

	* Auto/Response.pm: plum でのキー名が response だったのを勘違いして reply にしていた。
	  (りんりんさんバグレポートありがとうございます)

2003-03-09  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* Configuration/Block.pm: %CODE{ }EDOC%の解釈でメモリリークを起こす不具合を回避。

2003-03-09  Topia  <topia@clovery.jp>

	* Auto/AliasDB/CallbackUtils.pm: register_RandomNickConvertでメッセージがIrcIO::Client
	  発信だった場合に登録しないようにした。 (りんりんさんバグレポートありがとうございます)

2003-03-08  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* IrcIO/Server.pm: オプションnetworks/always-notify-new-nickが設定されていたら
	  nickを変更する度に、変更したサーバーの新しいグローバルnickをNOTICEで通知する。

	* IrcIO/Client.pm: ログイン時に本名として渡された$key=value;key=value...$のオプションを
	  パースする部分を書き直し。$  key =value  ;key  =   value$のような設定でも
	  期待された通りに解釈する。
	  また、メソッドoption追加。このようにして渡されたオプションを取得する。

	* tiarra, Configuration.pm, Configuration/Preprocessor.pm:
	  起動時にオプション--configを省略された場合の動作を変更。
	  ターミナル上から起動した場合は従来のようにデフォルトのファイル名であるtiarra.confを読むが、
	  標準入力がターミナルに接続されていなかった場合、つまりパイプ経由でリダイレクトされている場合は
	  tiarra.confでなく標準入力から設定を読む。この場合は設定のリロードは不可能となる。
	  例: cat tiarra.conf | sed -e 's/Tiarra/arraiT/g' | ./tiarra --quiet

	* Configuration/Block.pm:
	  %CODE{ ... }EDOC%で挟まれた部分を、値の取得時に毎回評価する。

2003-03-04  Topia  <topia@clovery.jp>

	* Tools/MailSend/EachServer.pm: RunLoop::Hookを使用するように変更。
	  ループをなるべく回すように変更。flushはclose時とDATA時に行うことにした。
	  フェイルセーフの為に5sec間隔のTimerも使うことにする。

	* Tools/GroupDB.pm: fpathで指定されたファイルが存在しないときにエラーとなるのを修正。

	* Auto/Alias.pm: 配列の参照を渡すべきところを配列を渡してしまっていた。修正。

	* LinedINETSocket.pm: ExternalSocketのuninstall等も必要かも知れないので
	  DESTROYを復活させる。

2003-03-04  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* ExternalSocket.pm: read/write/want_to_writeで、callerをチェックする位置を変更。

	* Configuration/Block.pm: 文字コードの再解釈に失敗する不具合を解決。

	* RunLoop.pm: クラスRunLoop::Hook追加。
	  RunLoopのループが一回実行される度に呼ばれるフック。
	  呼ばれるタイミングとしてはselect実行直前または直後。どちらかを選択可能。
	  詳しくはRunLoop::Hookの先頭のコメントを参照の事。

2003-03-04  Topia  <topia@clovery.jp>

	* Auto/MesMail.pm: Tools/MailSend.pmを使うように修正。

	* Tools/MailSend/EachServer.pm: 新規追加。SMTPサーバ毎に具体的なメール送信を行う。
	  POP before SMTPの場合はexpireまで待って、そうでない場合はすぐにオブジェクトを破棄する。

	* Tools/MailSend.pm: 新規追加。メール送信を行う。
	  複数のサーバと同時に通信するためにTools/MailSend/EachServer.pmを管理している。

	* Auto/Response.pm: rateを使えるようにした。

2003-03-03  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* Configuration/Block.pm: ブロック内ブロックを扱えるように。

	* Configuration/LexicalAnalyzer.pm: 新規追加。confの字句解析器。

	* Configuration/Parser.pm: 新規追加。confの構文解析器。

	* Configuration.pm: パーサを書き直し。上記二つのクラス、及びプリプロセッサを使用。

2003-03-02  Topia  <topia@clovery.jp>

	* Auto/Response.pm: 新規追加。plumのauto/response.plmの動作をする。

	* Auto/AliasDB/CallbackUtils.pm: 存在してはいけないuninstallがあったので削除。

	* Auto/Utils.pm: コールバックを追加できる引数の追加。

	* Tools/GroupDB.pm: regexpを利用できるようにする引数の追加。
	  find_groups/find_groups_with_primaryの追加。

	* Channel/Mode/Oper/Grant.pm: Auto/Oper.pmとmask処理を統一した。

	* sample.conf: maskの説明が変わってしまうので書き換えた。

	* sample.conf: '-*- tiarra-conf -*-' を一行目に追加した。Auto/MesMailのエントリ追加。

	* Auto/MesMail.pm: 新規追加。伝言をメールとして送信する。メール送信部分は分けられてTools下に
	  行く可能性もある。

	* Auto/Utils.pm: AliasDBの変更に同期。'(nick|user|host).now'はAliasDB内部に移動している。

	* Auto/Oper.pm: AliasDBの変更に同期。Mask::match_deep_chanを使用するように。

	* Auto/Alias.pm: AliasDBはオートフラッシュなのでデストラクタを消した。

	* Auto/AliasDB/CallbackUtils.pm: RandomAliasConvert, JoinedListConvertを追加。
	  MessageReplaceにmessage_replace_lastを追加。

	* Auto/AliasDB.pm: GroupDBを使用するように変更。関数名を一部変更した。
	  confでprivateとreadonlyなキーの指定が出来る。readonlyはまだ対応モジュールが存在しない。

	* Tools/GroupDB.pm: 新規追加。AliasDBから独立させた。

2003-03-02  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* Configuration/Preprocessor.pm: 新規追加。
	  confファイルのプリプロセッサとして使用する。

2003-03-01  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* ConfigBlock.pm: 削除。Configuration::Blockに移動。

	* InstantCapsule.pm: 新規追加。
	  フィールドとメソッドを持つオブジェクトを一時的に生成するクラス。
	  サンプルコードはInstantCapsule.pm内にあります。

2003-02-27  Topia  <topia@clovery.jp>

	* Mask.pm: チャンネルとユーザのマスクをconfで切替え可能にした。
	  sample.confにも説明を追加している。

	* Mask.pm: mask_chanで[+-]を使用可能にした。+channelは++channelまたは
	  -+channelと表記する必要がある。
	  _split_with_chanのsplit処理を_splitに委託した。

	* Mask.pm: channelを含めたmaskを処理する関数を追加した。
	  mask_chan, mask_deep_chanはstrの次にchanが追加されているだけで仕様は同じ。
	  mask_array_chanはstr_masks, chan_masks, str, chanと言う引数になっている。
	  次にcommitされる予定のAuto::Oper辺りがサンプルコードになるはず。

2003-02-26  Topia  <topia@clovery.jp>

	* Multicast.pm: channel_pを追加した。
	  nick_pに文字数チェック(length != 0)とdetachの処理を追加した。

	* LinedINETSocket.pm: デストラクタを実行するより前にsocketが開放されているようだ。
	  デストラクタをコメントアウトした。

	* LinedINETSocket.pm: 新規追加。行単位のキューを使用した入出力を行う。

2003-02-26  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* ExternalSocket.pm: 新規追加。

	* RunLoop.pm: RunLoopが任意のソケットを監視出来るように。
	  ソケットの監視にはExternalSocketを用いる。使い方はExternalSocket.pmにある。

	* Timer.pm: uninstallした時はrunloopにundefを代入する。

2003-02-20  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* Module.pm (notification_of_message_io) : 新規追加。
	  サーバーやクライアントと実際に送受信したメッセージが通知されるメソッド。デバッグ用。

	* IrcIO/(Client/Server).pm : notification_of_message_ioを呼ぶための修正。

	* IrcIO/Client.pm : 複数のクライアントを接続している際、
	  NICKの変更が他のクライアントへ伝わっていなかったので修正。

2003-02-19  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* tiarra-conf.el: 新規追加。confファイルのEmacs用モード。試作品。
	  このファイルが置かれている場所をload-pathに追加し、次のようなautoloadを実行すれば良い。
	  (autoload 'tiarra-conf-mode "tiarra-conf" "tiarra.conf editing mode" t)

2003-02-17  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* Configuration.pm:
		・@includeで他のファイルをインクルード可能に。
		  但し一つのファイルを複数回@includeする事は出来ない。
		・ブロックの{}の位置をある程度自由に。
		・ブロックの中身が空で良ければ{}を省略可能に。
		sample.confに詳しい説明があります。

	* IrcIO/Client.pm: $key=value;key=value;...$形式の本名でログインすると、
	  特定のクライアントの間においてのみconfで設定された項目をオーバーライドする。
	  現在有効なキーはencodingで、これはクライアントとの通信に用いる文字コードである。
	  例:
	  $encoding=euc$     この本名でログインした場合、EUC-JPで通信を行なう。

2003-02-17  Topia  <topia@clovery.jp>

	* System/RemoteControl.pm: 複数行のmaskを使えるようにした。

	* Mask.pm: コメント中の例が間違っていたので修正。

	* Mask.pm: 正規表現マッチと+-機能のオン/オフを可能にした。
	 comma-separeted mask arrayを渡せる関数を追加した。
	 単純にmask arrayを渡せる関数を追加した。
	 wild cardを正規表現にするmake_regexを別関数として独立させた。

	* Auto/Utils.pm: $get_ch_nameでparam(0)が無い場合undefを返すようにした。

2003-02-15  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* RunLoop.pm: Time::HiResがインストールされている環境では
	  Timerの精度がミリ秒に上がる。入っていなければ秒のまま。

	* PersonInChannel.pm: メソッドremark,delete-remark追加。
	  註釈を付ける事が出来る。

	* Multicast.pm: attach/detachでエラーチェックを行なう。

2003-02-13  Topia  <topia@clovery.jp>

	* Auto/AliasDB/CallbackUtils.pm: MessageReplace callback を追加しました。
	 #(message_replace:[split_regexp]:[place]) です。placeはzero originとなっています。
	 ex. test alias -> #(message_replace: :1) -> alias
	 また、この変更でregister_stdcallbacksの引数が$ch_name -> $msgとなり、
	 その変更をAuto/AliasDB.pm, Auto/Utils.pmに反映させています。

	* Auto/Answer.pm: 返答に$reply_anywhereを使うようにした。

	* Auto/Random.pm: オートリロードと追加/削除の返答を追加しています。

	* Auto/Alias.pm: Auto/AliasDB.pmに追加と削除を移しています。
	 追加/削除出来た場合に返答できるようにしました。

	* Auto/Utils.pm: 返り値に、$reply_anywhere
	 (場合によってチャンネルに返したりprivで返したりする)を追加しました。
	 $reply_as_privがextra_replacesを付けられるようにしました。
	  reply_with_stdcallbacksを使用するようにしました。
	  reply_with_stdcallbacksはrandomやdate、randomnick、randomselectなどのcallbackを
	  登録します。
	  user.now, host.now などのエイリアスを追加するようにしました。

	* Auto/AliasDB.pm: Auto/Alias.pmから追加と削除機能を移しました。
	 オートリロードするようにしました。
	 渡されたエイリアスからキーを見つけ出せなかった場合、callbackを呼ぶようにしました。
	 #(name;%s さん) などの表記をサポートしました。
	 サブフォーマット中に対応する括弧を含めます。
	 #(namesuf;#(name)%s)のような表記ができます。

	* Auto/AliasDB/CallbackUtils.pm: AliasDBのCallback機能を使った標準的な拡張です。

	* Tools/DateConvert.pm: 新規追加。plumの&'dateに相当。

	* System/Pong.pm: xchat対策に、pingの代わりにpongを消滅させるようにした。

2003-02-13  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* Multicast.pm: nick_pでのnicklen制限をやめた。

2003-02-12  phonohawk  <phonohawk@ps.sakura.ne.jp>

	* RunLoop.pm: $(network)/userでgeneral/userをオーバーライド可能に。

	* System/RemoteControl.pm: 新規追加

	* これ以前のログは書いていません。

#       Id: $Id: ChangeLog,v 1.158 2004/08/22 11:28:41 topia Exp $
#   Author: $Author: topia $
#     Date: $Date: 2004/08/22 11:28:41 $
# Revision: $Revision: 1.158 $
