[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FDclone-users:01002] Re: FDclone 3.00m has been released



 しらいです。

 既に 3.01 もほぼ完成している状況ではありますが、3.00 系列
を bug まみれのまま放置するのも忍びないので 3.00m release の
運びとなりました。

In Message-Id <20120726153238.491204805FA@yuka.unixusers.net>
        Takashi SHIRAI <shirai@unixusers.net>writes:
>  しらいです。

>  以下は HISTORY より今回の変更点の抜粋です。

 では 3.00 系列最後となる修正項目解説です。


> 	コンパイル用識別子 UTF8LANG を追加。

 詳しくは Install や TECHKNOW にあるとおりなんですが、3.00l
で追加した DEFKCODE を Linux にも適用するための苦肉の策です。
環境変数 LANG が「UTF」を含む時のみ機能します。
 これで、条件を満たす Linux 環境では make 一発で UTF-8 対応
の binary が作成されます。Linux 以外の環境でも config.h 辺り
で定義すれば LANG に応じて機能しますけど、他に候補あります?


> 	一部環境でカスタマイザの設定保存時に異常終了する点を修正。

 [FDclone-users:00982] で報告のあった bug に対する対処です。


> 	IME 変換候補の優先順位がおかしかった点を修正。

 これは説明が難しいんですが、変換候補の頻度情報による重み付
けが間違っていたために、選択候補の並び順が正しくなくなってし
まうという不具合です。
 「来る」のように複雑な活用を行なう単語の場合、語幹の区切り
方によって複数の候補を有してしまうような辞書があります。その
場合は、複数候補のうち一番高い頻度を採用する筈でした。
 この際に配列の添字のカウントミスがあって、全然異なる候補の
頻度情報を採用してしまっていました。

 標準の単文節変換辞書は頻度情報を持たない上に、複数の辞書エ
ントリから同一の変換候補が導出されるという例が稀有だったため
に今まで全く見つかっていませんでした。


> 	ShiftJIS 環境で DICTSRC に記述した辞書を利用できない点を修正。

 ShiftJIS 環境でも Wnn や Canna の辞書って EUC-JP で提供さ
れるんですよね。ShiftJIS ベースの NEWS を念頭に置いた sj3 で
すら EUC-JP でした。
 にも拘らず、ShiftJIS ベースの OS 環境では、全ての resource
は ShiftJIS だと決めつけていたために、EUC-JP の辞書を正しく
扱えなくなっていました。
 ただねー、時流を考えると UTF-8 形式の辞書が出て来る筈なの
で、本当なら辞書の漢字コードは compile 時に選択可能にしなく
てはならないんでしょうね。


> 	gcc-4.2 でコンパイルに失敗する点を修正。

 [FDclone-users:00985] で報告のあった bug に対する対処です。


> 	パイプ処理時に無限ループに陥ることがある点を修正。

 [FDclone-users:00992] で報告のあった bug に対する対処です。


> 	パイプ処理中にサスペンドキーが効かない点を修正。

 上記 bug fix の検証中に見つかった bug です。この fix 解説
の [FDclone-users:00997] で言及している SIGTTIN/SIGTTOU が過
去実際に発生していたのを 2.07b で対応したのが原因です。
 当時の解説を [FDclone-users:00435] から読むと、困ったこと
にこれらの signal を無視することで回避していました。その結果
SIGTSTP まで無視されてしまった訳です。
 [FDclone-users:00997] の patch により signal 発生源が回避
されたので、この無視をやめて 2.07a 以前の実装に戻しました。

 で、めでたく pipe の suspend は出来るようになったんですが、
実は fg で復帰させた時に pipe 情報を失ってしまっていることが
ここで初めて発覚しました。
 仕方ないので suspend 時に保存しておく job 情報の中に pipe
情報を含め、fg 時には pipe の各段を含めた process 制御を行な
うことにしました。
 これでようやく、pipe の suspend も復帰も出来るようになりま
した。


> 	組込みコマンド wait の引数省略時のマニュアル誤記を修正。

 POSIX 的には、引数無しの wait は「全 process を待つ」が正
解ですし、FDclone でも実装上はそうなっているんですが、man を
見ると「カレントジョブを待ちます」と書いてあります。
 履歴を紐解いてみても、過去そういう実装があった経緯もなく、
どうしてそういう記述になったのかは判りません。ともあれ記述が
間違っているので修正しました。
 唯一、compile 用識別子 NOJOB の定義時のみ記述通りの実装に
なるので、man page 記述時に #if の読み間違いをしてしまったの
かも知れませんね。

                                               しらい たかし