Skip to content

Releases: ukatech/kawari

Phase 9.2.0

Choose a tag to compare

@ponapalt ponapalt released this 22 Oct 19:29

Phase 9.2.0 (Core 4.2.0)

主な変更

エラー・警告の整理

  • すべてのエラーと警告に、コード (K-E0028 など) と位置 (辞書ファイルと行)、呼び出し連鎖を付け、書式を 1 つにしました。loglevel で有効にしていない種別は何も出さず、辞書の意味も変わりません

kosui --check (検査モード)

  • 辞書を安全モード (ファイルを書かず、SAORI の実体を読み込まず、本体と通信しない) で読み込み、出た診断を報告して終了します。--format json や --werror、--eval に対応し、終了コードで結果が分かります。=kis は実際に実行します

静的検査 (Lint)

  • 辞書の全単語と =kis を、実行せずに調べて警告します (--no-lint で止められます): どこにも定義されていないエントリの参照 (K-W2001)、存在しないコマンド名 (K-W2002)、regex_* の引数の引用符のない ( ) (K-W2003)、regex_replace の置換文字列の引用符のない ${N} (K-W2004)
  • 手元の華和梨ゴースト 129 個で試したところ、警告の多くは本物の書き間違いでした。偽陽性は # lint:disable-next-line=K-W2001 で次の行だけ抑制できます

2038 年問題 (date / mktime)

  • date と mktime が 64 ビットの通算秒数で動き、2038 年以降も扱えます。ただし式 ($[ ]) の整数は 32 ビットのままなので、2038 年以降の通算秒数どうしの計算はまだ正しく動きません。Windows 版は C ランタイムの限界で、1970 年より前と 3000 年末あたりより後は変換できません

🌹 Polished by Claudia

Phase 9.1.1

Choose a tag to compare

@ponapalt ponapalt released this 21 Oct 20:49

Phase 9.1.1 (Core 4.1.1)

文字コードを指定するテキストファイル操作の追加と、不具合の修正。

  • textload_charset エントリ ファイル 文字コード / textsave_charset ファイル 文字コード エントリ... / textappend_charset ファイル 文字コード エントリ... を追加。文字コードは Shift_JIS・UTF-8・EUC-JP・ISO-2022-JP・EUC-KR・GB2312 (textload_charset は auto も可)。未知・非対応の文字コードはエラーになり、エントリもファイルも変えない
  • 落ちる不具合を修正: 辞書の ${$} のように $ の後ろが置換にならない単語、$[ (-2147483647-1) / -1 ]、date に負の時刻を渡したとき。load / request / unload の中の例外が本体に漏れないようにした
  • ${エントリ} の形の単語の ID が再利用されると、集合演算 (${a+b}、size など) から単語が消えていた不具合を修正
  • save / savecrypt / textsave に絶対パスを渡すと本体のカレントフォルダに書き出していたのを、ゴーストのフォルダに書き出すようにした
  • 同じ SAORI の DLL を 2 回読み込むと、最後に解放しても DLL が残っていた不具合を修正
  • char_at・inc / dec・mktime、POSIX での ISO-2022-JP 書き出しと ninix との Direct SSTP、kosui (exit が無いと終わらない) と kawari_encode などの細かな不具合を修正 (詳細は document/changelog.txt)

🌹 Polished by Claudia

Phase 9.1.0

Choose a tag to compare

@ponapalt ponapalt released this 19 Oct 05:46

Phase 9.1.0 (Core 4.1.0)

無名関数 lambda の追加と、正規表現エンジン uka_regexp の更新。

  • KIS に lambda を追加。無名の関数を定義して、その名前 (System.Lambda.<n>) を返す。返った名前は $(${f} 引数) のようにコマンド名として呼び出せるほか、別の関数に渡して使える。クロージャではなく、定義した場所の @ で始まるローカルエントリは引き継がない。不要になったら rmfunc で消す
  • uka_regexp の更新: パターンの先頭に (*UCP) を書くと \d \w \s \b と POSIX クラスが Unicode で判定される (既定は従来どおり ASCII のみ)。Windows ではパターン中のサロゲートペアを 1 文字として扱う。破滅的なバックトラックの対策など
  • 実装されないまま残っていた expr / test の記述をマニュアルから削除

🌹 Polished by Claudia

Phase 9.0.0 β4

Phase 9.0.0 β4 Pre-release
Pre-release

Choose a tag to compare

@ponapalt ponapalt released this 18 Oct 07:41

Phase 9.0.0 β4 (Core 4.0.0)

正規表現コマンドの追加。伺か共用の正規表現エンジン uka_regexp (Unlicense) を載せました。

  • KIS に regex_match / regex_find / regex_findall / regex_count / regex_replace / regex_replace_first / regex_erase / regex_erase_first / regex_split / regex_escape を追加。結果は引数のエントリに入る
  • パターン内のサブルーチン呼び出し (?&名前) \g<名前> で、パターンに定義の無い名前を、辞書のエントリ ${名前} の展開結果として取り込める
  • 辞書やスクリプトに書くパターンは、括弧を含むなら "..." で囲むこと (素の括弧は華和梨の構文として消える)
  • ソースから作る場合、uka_regexp は git サブモジュールなので git clone --recursive か git submodule update --init が必要

詳細は同梱の readme.1st (README.md) と document/kis_reference.html を参照。

🌹 Polished by Claudia

Phase 9.0.0 β3

Phase 9.0.0 β3 Pre-release
Pre-release

Choose a tag to compare

@ponapalt ponapalt released this 18 Oct 00:30

Phase 9.0.0 β3 (Core 4.0.0)

ロケール依存と STL 誤用の修正。機能の追加はありません。

  • SAORI over DirectSSTP のモジュール名の小文字化が本体の LC_CTYPE に依存していた (tr_TR では INTERNAL_... を内蔵モジュールと判定できなかった) のを修正。ASCII の英字だけを小文字にする
  • SAORI の唯一性保証ファクトリのデストラクタが、erase() 後のイテレータを使っていたのを修正
  • find() の結果を unsigned int に入れて npos と比較していた箇所を修正。64bit の POSIX では gsub が例外を投げ、tr が範囲外を読み、isexist が区切り文字を補わなかった (32bit の Windows では変化なし)
  • substr の長さのオーバーフロー、= が多い壊れた Base64 の復号で例外が出る不具合を修正
  • TEntry::Pop / Replace の境界を修正 (今のところ KIS から届かない内部の問題)

詳細は同梱の readme.1st (README.md) を参照。

🌹 Polished by Claudia

Phase 9.0.0 β2

Phase 9.0.0 β2 Pre-release
Pre-release

Choose a tag to compare

@ponapalt ponapalt released this 17 Oct 22:30

Phase 9.0.0 β2 (Core 4.0.0)

  • 本体 (SSP / ninix) のプロパティシステムと SSTP の EXECUTE を使う KIS コマンドを追加: getproperty / setproperty / executesstp / executesstpx (応答コードは System.SSTP.ResponseCode、追加データは System.SSTP.Data)
  • SAORI over DirectSSTP に対応: 本体に内蔵されたモジュール (internal_* など) を、DLL なしの SAORI として callsaori で呼べる (未登録の internal_* は自動登録)
  • 上記は SecurityLevel が local 以外のリクエストからは使えない
  • System.Sender.Path が一度もセットされず、callsaori が常に SecurityLevel: Local を送っていた不具合を修正

🌹 Polished by Claudia

Phase 9.0.0 β1

Phase 9.0.0 β1 Pre-release
Pre-release

Choose a tag to compare

@ponapalt ponapalt released this 17 Oct 19:07

華和梨 Phase 9.0.0 β1 (Core 4.0.0)

内部の文字列をすべて wchar_t (Unicode) にした大改修のβ版です。従来の Shift_JIS の辞書はそのまま動きます。

主な変更

  • 内部文字列を wchar_t 化。文字数・部分文字列などは 1 文字単位 (Windows では絵文字などサロゲートペアは 2 文字)
  • 辞書は UTF-8 (BOM の有無を問わない) / Shift_JIS を自動判定して読み込み
  • save / savecrypt は UTF-8 (BOM あり)、textsave / textappend / ログファイルは UTF-8 (BOM なし) で書き出し
    • savecrypt で保存した辞書は 8.2.9 以前では読めません
  • SHIORI: リクエストの Charset (Shift_JIS / UTF-8) で解釈し、同じ文字コードで応答。loadu に対応 (ACP 外の文字を含むフォルダでも動作)
  • SAORI: UTF-8 で通信を始め、GET Version に Charset を返さない古い SAORI には Shift_JIS で送る。loadu を持つ SAORI には UTF-8 のパスを渡す
  • 「表」「ソ」など 2 バイト目が 0x5C の文字や、IBM/NEC 拡張文字を含むファイル名・フォルダ名の不具合を修正
  • compare などの文字列の大小比較は Unicode のコードポイント順に変更 (ASCII のみなら従来どおり)
  • Win32 API を Unicode (W 版) に切り替え

🌹 Polished by Claudia

Phase 8.2.9

Choose a tag to compare

@ponapalt ponapalt released this 17 Oct 11:59

Phase 8.2.9 (Core 3.2.9)

  • Windows 版 (mingw) のバイナリにバージョン情報リソースを追加 (ファイルのプロパティで 8.2.9.0 と表示されます)
  • 小オブジェクト用アロケータの導入と単語比較の軽量化で処理速度を向上 (mingw 版)。1000 曲プレイリストの実ゴーストで 1.4〜1.9 倍
  • バイナリは 32bit MinGW-w64 (msvcrt 版、g++ 8.1.0) でビルド、UPX 圧縮なし (従来より大きくなっています)。UCRT 版でビルドすると旧い OS で動かなくなるため、依存 DLL は KERNEL32.dll / msvcrt.dll のみ (kosui は USER32.dll も) にしています

🌹 Polished by Claudia