プログラマブル準AI 華和梨 Phase 9.2.0
伺か用の SHIORI (擬似AI) モジュールです。
- 現在の開発: Ukagaka Tech Team — https://github.com/ukatech/kawari
- オリジナル: KAWARI Development Team — https://github.com/kawari/kawari
Phase 9 系は、オリジナルの華和梨をフォークし、ponapalt と Claudia (Claude) が大幅に改修したものです。
その後、Ukagaka Tech Team に所属してメンテナンスを続けています。
ライセンスと著作権表示はオリジナルのものを引き継いでいます (LICENSE を参照)。
華和梨 Phase 9 のリリース版です。
ライセンスを始め、新仕様に関するかなりの情報がドキュメント化されています。
document/index.html をご使用のブラウザでご覧ください。
華和梨 Phase 9 は、Phase 8 (8.2.x) の置き換えとして、そのまま差し替えて使えます。 ゴーストの辞書 (kawarirc.kis など)・SAORI・本体との連携を書き換えずに、shiori.dll を差し替えるだけで動きます。Phase 7 から 8 へ上がったときのような、辞書の書き直しが必要になる非互換な変更はありません。Phase 7 → 8 の変更点は document/convert.html に載っていますが、これは Phase 8 のゴーストが対象で、Phase 9 に上げるだけなら読む必要はありません。
差し替えるときに知っておくこと (意図した違いです)
save/savecryptは UTF-8 (BOM あり) で書き出します。Phase 9 は 8.2.x が書いたセーブを読めますが、Phase 9 が書いたセーブを 8.2.9 以前に戻して読むことはできません (差し替えを戻す可能性があるなら、セーブのバックアップを)- SHIORI の応答に
Charsetヘッダが付き、SAORI へのGET Versionは UTF-8 で送ります (応答にCharsetが無ければ、以後は Shift_JIS)。ふつうの SHIORI / SAORI には影響しません - 文字列の大小比較とエントリの列挙順が、Shift_JIS のバイト順ではなく Unicode のコードポイント順になりました (ASCII だけなら変わりません)
- 不具合の修正で、これまで偶然動いていた異常な書き方の結果が変わることがあります (整数のあふれ、
dateに負の時刻を渡したときの異常終了など)。細かい一覧はdocument/changelog.txtを参照してください - 診断 (エラー・警告) のログの書式が変わりました (9.2.0)。ログを機械的に読んでいる場合だけ影響します
新しい順に並べています。「非公開」とあるものは一般には公開されなかった版です。
診断 (エラー・警告) の整理
- コンパイラ・インタプリタ・辞書・KIS コマンド・SAORI のエラーと警告すべてに、コード (
K-E0028/K-W0003など。番号は変更も再利用もしない) と位置 (辞書ファイルと行) を付け、書式を 1 つにした:ファイル(行): error K-E0028: 本文。続けて呼び出し連鎖 (in ${エントリ} at ファイル(行)) を最大 8 行出す loglevelで有効にしていない種別は何も出さず、辞書の意味も変えない (未定義のエントリは今まで通り空になる)。コンパイルエラーの書式は変わったが、メッセージの文面は同じ
kosui --check (検査モード) を追加
kosui --check [--format text|json] [--werror] [--decl] [--no-lint] [--eval スクリプト]... [--seed 数] [rcfile]: 辞書を安全モードで読み込み、出た診断を報告して終了する。標準入力は読まず、稼動中のゴーストにも接続しない。終了コードは 0 = 問題なし / 1 = 警告のみ / 2 = エラー / 3 = 実行できない- 安全モードでは、ファイルを書かず (
save/textsave/logfileなどは書かずに成功する)、SAORI の実体を読み込まず、本体との通信 (Direct SSTP) もしない。ただし=kisは実際に実行する - 出力は診断だけ。
--format jsonは常に UTF-8 の JSON 1 つ。--evalで読み込み後にスクリプト (イベントなど) を評価できる
静的検査 (Lint)
kosui --checkは、読み込み後に辞書の全単語と=kisを、実行せずに調べて警告する (--no-lintで止める):K-W2001どこにも定義されていないエントリの参照、K-W2002組み込みでも定義済みの関数でもないコマンド名、K-W2003regex_*の引数にある引用符のない( )(括弧が消える)、K-W2004regex_replaceの置換文字列にある引用符のない${N}- 華和梨ゴースト 129 個で試したところ、警告の多くは本物の書き間違いだった (
setstrをserstrと書いたもの、$([ ... ])の[、);の後に孤立したelse、コメントアウトされた定義の参照など) - 偽陽性は
# lint:disable-next-line=K-W2001, K-W2003(次の行にだけ効く。華和梨のコメントは行頭の#だけなので行末には書けない) で抑制できる
時刻の 64 ビット化 (2038 年問題)
dateとmktimeが 64 ビットの通算秒数で動くようになった (32bit の mingw-w64 はtime_tが 32 ビットで、2038/01/19 12:14:07 (JST) で頭打ちになっていた)。date %s 4102444800やmktime 2100 1 1 0 0 0が使える- Windows 版 (C ランタイムの msvcrt) の限界は残る: 1970 年より前と、3000 年末あたりより後は変換できず、
dateは空文字を返し、mktimeは-1を返す。POSIX 版は OS のtime_tの範囲による - 式 (
$[ ]) の整数は 32 ビットのままなので、2038 年以降の通算秒数どうしの計算 ($[ $(date %s) - ${t0} ]) はまだ正しく動かない。日数などに直してから計算すること
文字コードを指定するテキストファイル操作
textload_charset エントリ ファイル 文字コード/textsave_charset ファイル 文字コード エントリ.../textappend_charset ファイル 文字コード エントリ...を追加。textload/textsave/textappendと同じ動作で、ファイルの文字コードを指定できる。従来のコマンドは変わらない- 文字コードは Shift_JIS・UTF-8・EUC-JP・ISO-2022-JP・EUC-KR・GB2312。
textload_charsetはauto(UTF-8 / Shift_JIS の自動判定) も指定できる - Windows ではコードページ 20932 / 50220 / 949 / 936 を使う。そのため GB2312 は GBK、EUC-KR は UHC として扱う。POSIX は iconv を使う
- 未知の文字コードや、実行環境が対応していない文字コードを指定するとエラーになり、
textload_charsetはエントリを変えず、textsave_charset/textappend_charsetはファイルを書き換えない
不具合の修正
- 落ちる不具合: 辞書の
${$}のように$の後ろが置換にならない単語、$[ (-2147483647-1) / -1 ]、dateに負の時刻を渡したとき。load/request/unloadの中の例外が本体に漏れないようにした ${エントリ}の形の単語が片付けられて ID が再利用されると、集合演算 (${a+b}やsizeなど) から単語が消えていたchar_at "" 0が NUL 文字を返していた。inc/decが int の上限・下限であふれていた。mktimeが夏時間を無視していたsave/savecrypt/textsaveに絶対パスを渡すと、本体のカレントフォルダにファイル名だけで書き出していた。相対パスと同じくゴーストのフォルダに書き出すようにした- 同じ SAORI の DLL を 2 回読み込むと、最後に解放しても DLL が残っていた
- POSIX: ISO-2022-JP への書き出しで変換できない文字があると以降が化けていた。ninix との Direct SSTP で SIGPIPE により落ちることがあった
- kosui は入力の最後に
exitが無くても終わるようになった。kawari_encodeなどはフォルダ名の.を拡張子とみなしていた (入力を出力で上書きしうるファイルは処理しない) - その他、細かな不具合 (
document/changelog.txtを参照)
無名関数
lambdaを追加。無名の関数を定義して、その名前 (System.Lambda.<n>、定義済みの関数と重ならない) を返す。定義の書き方はfunctionと同じで、返った名前は$(${f} 引数)のようにコマンド名として呼び出せるほか、別の関数に渡して使える- クロージャではない。
lambdaを定義した場所の@で始まるローカルエントリ (外側の関数の@argなど) は引き継がない。不要になったらrmfuncで消す
正規表現エンジンの更新 (uka_regexp)
- パターンの先頭に
(*UCP)を書くと、\d\w\s\bと POSIX クラスが Unicode のプロパティで判定される (既定は従来どおり ASCII のみ) - 16 bit の
wchar_t(Windows) で、パターン中のサロゲートペアを 1 文字として扱う。.や[^a]が絵文字全体に一致し、一致の開始・終了位置がペアの途中になることはない。KIS に渡す位置は、従来どおりwchar_t単位 a{,m}をa{0,m}として受け付ける。\Kを先読み・後読みの中に書くとエラーにする。破滅的なバックトラックが多項式時間で終わる- 出力先の文字列が対象文字列や置換文字列と同じ領域を指す場合の
Replace()の不具合と、内部バッファの容量計算のオーバーフロー (エラーで中断する) を修正。開始位置がサロゲートペアの途中にあるときは次の文字境界に進める
ドキュメント
- 実装されないまま残っていた
expr/testの記述をマニュアルから削除した
正規表現
- 伺か共用の正規表現エンジン 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- 構文は PCRE2 に近い (Unicode プロパティ、最短・所有量指定子、先読み・後読み、名前付きグループ、再帰など)。
\d\w\s\bは ASCII のみが対象。オプションはismx - マッチした部分やグループ、分割結果は、指定したエントリに入る
- パターンの中のサブルーチン呼び出し
(?&名前)\g<名前>で、パターン内に定義の無い名前を、辞書のエントリ${名前}の展開結果として取り込めるようにした。部品にした正規表現を辞書に置いて組み合わせられる - パターンに括弧を含むときは
"..."で囲むこと (そのままだと華和梨の構文として括弧が消える) - uka_regexp は git のサブモジュール (
build/src/uka_regexp)。取得はgit clone --recursive、または clone 後にgit submodule update --init makedepend.rbが、同じフォルダのヘッダを"foo.h"と書いた#includeを解決できるようにした (文字コードも CP932 から EUC-JP にそろえた)
不具合の修正
- SAORI over DirectSSTP のモジュール名の小文字化が、本体の
LC_CTYPEに依存していた (tr_TRではIがıになり、INTERNAL_...を内蔵モジュールと判定できなかった)。ASCII の英字だけを小文字にするように修正 - STL の誤用を修正
- SAORI の唯一性保証ファクトリのデストラクタが、
erase()後のイテレータを使っていた find()の結果をunsigned intに入れてnposと比較していた。64bit の POSIX では比較が成り立たず、gsub(一致が尽きたとき) が例外を投げ、trが範囲外を読み、isexistが区切り文字を補わなかった。split/match系 / SAORI のステータス行は挙動の変更なしでsize_typeにそろえた。32bit の Windows では変化なしsubstrの長さがintをあふれうる=が復号結果より多い壊れた Base64 を復号すると例外が出ていた- 内部のみ (今のところ KIS から届かない):
TEntry::Popが空のエントリでback()を呼ぶ、TEntry::Replaceが末尾の次の添字を受け付ける
- SAORI の唯一性保証ファクトリのデストラクタが、
本体との連携
- 本体 (SSP / ninix) のプロパティシステムと SSTP の
EXECUTEを使う KIS コマンドを追加getproperty プロパティ名 [既定値]/setproperty プロパティ名 値executesstp コマンド [引数...]/executesstpx 格納エントリ コマンド [引数...]- 応答コードは
System.SSTP.ResponseCode、追加データはSystem.SSTP.Dataに入る (executesstpxは指定エントリにも入る) - 送り先は
NOTIFY hwndで知る本体のウィンドウ (Windows は Direct SSTP のWM_COPYDATA、POSIX は ninix の UNIX ソケット)
- SAORI over DirectSSTP に対応
- 本体に内蔵されたモジュール (
internal_cryptoなど、互換のhouchi/httpc/stringなど) を、DLL なしの SAORI としてcallsaoriで呼べる saoriregistに実体のない DLL 名を指定するか、未登録のinternal_*を直接呼ぶ (初回にinternal_systemのListModulesで確かめて自動登録)。DLL の実体があれば従来どおり DLL として読む
- 本体に内蔵されたモジュール (
- 上記は SecurityLevel が local 以外のリクエストの処理からは使えない
- Linux のビルドに
-lrt -lpthreadを追加 (ninix の FMO) System.Sender.Pathが一度もセットされず、callsaoriが常にSecurityLevel: Localを送っていた不具合を修正 (リクエストの伝達経路local/external/unknownが入り、SAORI へ渡す SecurityLevel になる)
内部文字列
- 内部文字列をすべて
wchar_t化 (Windows は UTF-16、POSIX は UTF-32)。Windows では BMP 外の文字 (絵文字など) は 2 文字と数える - 文字列の大小比較 (
compare、式中の<>、エントリ列挙順) を SJIS のバイト順から Unicode のコードポイント順に変更 (ASCII のみなら変わらない) - 2 バイト目が
0x5C等になる SJIS 文字や IBM/NEC 拡張文字をファイル名・フォルダ名に使うと誤動作する不具合を修正 (isdir/isexist/readdir等)
文字コード (辞書・ファイル)
- 辞書ファイルの UTF-8 (BOM あり、またはファイル全体が UTF-8 として正当) と Shift_JIS (CP932) を自動判定
- 暗号化行 (
!KAWA0000/!KAWA0001) は、ファイルに BOM があれば復号結果を UTF-8、なければ Shift_JIS として読む
- 暗号化行 (
save/savecryptの出力を UTF-8 (BOM あり) に変更savecryptした辞書は 8.2.9 以前の華和梨では正しく読めません
textloadが UTF-8 / Shift_JIS を自動判定。textsave/textappendは UTF-8 (BOM なし) で書くtextappendは Shift_JIS の既存ファイルにも UTF-8 で追記する
kawari_encode/kawari_encode2は入力が UTF-8 なら出力に BOM を付ける。kawari_decode2は入力に BOM があれば出力にも付けるrccharsetが UTF-8 指定でも日本語メッセージになるlogfileは UTF-8 (BOM なし) で出力。kosui のコンソール入出力は ACP (POSIX は UTF-8)
SHIORI / SAORI
- SHIORI: リクエストの
Charsetヘッダで解釈し、同じ文字コードで応答 (無い/不明なら Shift_JIS)- 全応答に
Charsetヘッダを付ける System.Response.Charset(Shift_JIS/UTF-8) で指定も可能
- 全応答に
- SHIORI:
loadu(UTF-8 パスのload) をエクスポート - SAORI: UTF-8 で送り始め、
GET Version応答のCharsetに従う (無ければ Shift_JIS)- 応答は
Charsetに従って解釈 - DLL が
loaduを持てばloaduを呼ぶ
- 応答は
ビルド・プラットフォーム
- Win32 API を W 版 (UNICODE) に変更、
WINVERは0x0500(Windows 2000) - 非 Windows の文字コード変換に iconv を使用 (FreeBSD / darwin は
-liconv)
- Windows 版 (mingw) のバイナリにバージョン情報リソースを追加
- 小オブジェクト用アロケータの導入と単語比較の軽量化で処理速度を向上 (mingw 版)
textsaveコマンドが複数のエントリを同時に保存できないバグを修正 (Thanks: Don, ukiya, xenon)
insertstrコマンドの動作がinsertコマンドと同じになっていたバグを修正entrycountコマンドが正しいエントリ総数を返さないバグを修正 (Thanks: おば9)
gsubコマンドが連続した pattern を""で置換すると、置換漏れを起こすバグを修正 (Thanks: C.Ponapalt)
- 辞書中に半角中点 (・) があると異常動作を起こすバグを修正
(UPX によるエンバグ? gcc 最適化を
-O1にすることで対応) isexistコマンドがルートフォルダで動作しないバグを修正- 幸水に quiet モード追加。コマンドラインオプションで
--quietを指定することにより、初期化ファイルを読み込むと直ちに終了する - ninix-aya 用コンパイル時のエラー修正 (Thanks: paulliu)
rfindコマンドが検索に失敗したり、仕様にない数値を返すバグを修正 (libkawari/kawari_ns.cppのTEntry::RFindを修正)- Visual C++ 7.1 でコンパイルする際のプロジェクトファイルを添付 (Thanks: 芝やんさん)
- 華和梨が Visual C++ 7.1 でコンパイルできない問題を修正 (
misc/l10n.cppのctow関数の式解釈順序依存部分を削除) (Thanks: 芝やんさん) - メイクファイル (
gcc.mak) ninix-aya 向け部分の typo を修正 (Thanks: jadoさん)
- 辞書系コマンドのインデックス管理コードを整理
inc/decの添え字を範囲指定可能に機能拡張。指定範囲の単語をすべてinc/decする
- 演算式で数値/文字列自動判定が間違っていたバグを修正
- リリースに使用するコンパイラを MinGW 4.1.0 (gcc 3.4.2) に
- リリースのバイナリを、gcc による直接 dll 生成に切り替え (dllwrap は obsolete?)
- gcc 3.x の warning 対応
splitのぬるぽバグを修正inc/decが負の添え字でハングするバグを修正mktimeコマンド追加
- Phase 8.2.1 において、辞書系コマンドのインデックスで負の値が使えなくなっていたバグを修正
- 辞書系コマンドに共通で、「ー」など一部の文字を含むエントリ名のインデックス指定ができないバグを修正 (Thanks: 89さん@OpenKEEPS スレ)
- あべさんの ninix-aya 向けパッチ、phonohawk さんの偽林檎向けパッチをソースに取り込み (Thanks: あべさん、phonohawk さん)
dateコマンドに第 2 引数を epoch からの経過秒数と解釈し、現在の時刻と同じようにフォーマット出力するよう機能追加splitに第 3 引数として""を与えた時ハングアップするバグを修正splitに第 3 引数として""を与えた場合と第 3 引数を省略した場合が等価になるよう機能追加 (どちらも文字ごとに分割する)splitにあわせ、joinも第 3 引数省略時は""を与えた場合と等価になるよう機能追加listsubコマンドが、すでに消去したエントリツリー構造まで見つけるバグを修正- 文字列検索/置換系コマンドにおいて、マッチパターンに
""を指定した場合、マニュアル通りにすべての文字境界にマッチするよう修正 - 文字列検索/置換系コマンドにおいて、存在しないインデックスを指定した場合、ハングアップしたり、正しくない検索結果を返すバグを修正
- 存在しないインデックスを与えた場合、失敗 (
""もしくは-1、コマンド依存) を返す
- 存在しないインデックスを与えた場合、失敗 (
rsubコマンド追加getenvコマンド追加textappendコマンド追加continue構文コマンド追加。このコマンドはループ構文中でのみ機能する- 上記に合わせ、
break構文コマンドはループ構文中でのみ機能するよう変更
splitの空要素に関する扱いが Phase 7.3.1 の頃と異なっていたバグを修正- 要素を区切り文字で結合するコマンド
join追加 - コンパイルに用いる UPX のバージョンを 1.2.4 に変更
saorilistコマンド追加function <関数名>で関数定義を取れるようにしたrmfunc構文コマンド追加xargsの第一引数に、存在しない、もしくは空のエントリ名を指定するとエラーになるバグを修正shiftcodeがshiftと同じ実装になっていたバグを修正 (Thanks: ふぁんとむ9さん)- 空文字列とのマッチが true とならないことがあったバグを修正
- 華和梨エンジンを完全オブジェクト化 (ログストリームなども含む)
- 同一プロセス内に複数インスタンスの生成が可能 (1 スレッド/インスタンス制限有り)。主に偽林檎、ninix への適用を前提
- 現状では複数インスタンス生成をサポートする SAORI が存在しない。native な SAORI については、唯一性保証クラスでガードしている。追って、オブジェクト SAORI 規格の策定が必要
- 勝手規格 SHIORI OBJECT Interface API (
so_*) の追加 - POSIX プラットフォーム向け SHIORI インターフェースの再定義と、SHIORI-POSIX メンテナンスの凍結
- Java, Python の SHIORI-Server, SAORI-Client I/F に仮対応。主に偽林檎、ninix 対応の叩き台
- 引数により
reverseが動かなくなっていたバグを修正 - ファイル/ディレクトリの存在確認コマンド群
isdir/isexist/isfile追加 dateコマンドに%s(1970/1/1 00:00:00 UTC からの経過秒数) 追加- ユーザーズマニュアルの
!~記述ミスと KIS リファレンスのdate説明不備を修正 (Thanks: たくるさん) - マニュアルの「置換できないケース」に「集合演算式の演算子」記載漏れを修正 (Thanks: ダイスさん)
find、rfindが存在しないエントリを検索した時、必ず 0 を返すバグを修正 (Thanks: とりあたまさん)- SAORI の多重ロードなどに関する対策 (Thanks: りゅうさん、lmmさん)
Phase 8.0.0 の正式公開以降 (2002/06/06 〜 2002/07/05)
- KIS コマンドオブジェクトがデストラクトされていなかったバグを修正 (Thanks: 今井さん)
- 幸水起動時に、デフォルトの
System.DataPathとしてフルパスを設定するようにした - ドキュメント追加 (幸水によるデバッグなど)、整備
- KIS 強化短期決戦プロジェクトであった Project KIU は、当初のスケジュールからは大幅に遅れたものの、より現実に即した形で、より高い品質を達成したものと信ずる。Project KIU は、本日をもって解散される
- 以降のメンテナンスは、通常モードの華和梨開発チームがメンテナとなって行われる
- 正式公開
- 各種メッセージの日本語化、一晩で作業完。時間って貴重
- 日本語化メッセージを使うには、
rccharsetコマンドを使ってください。例:rccharset Shift_JIS;
- 何カ所か、無条件に
max=list.length()-1しているところがあった - 配列アクセスの逆コンパイルで、
$[]が増殖するバグを修正 ifの逆コンパイルでelseが余計に入るバグを修正clearで存在しない単語をインデックスすると止まる (4G 回のループが回る) バグを修正 (Thanks: みずひらさん)- 色々ドキュメントを手直し (Thanks: みずひらさん)。特に
communicateのドキュメントバグを修正 (Thanks: lmmさん)
- kosui が、カレントディレクトリの
kawarirc.kisを読まないバグを修正 (Thanks: 118さん@さおりスレ, みずひらさん) - ついでに、デフォルトの DataPath が空になるバグを修正
- ついでに、
kawarirc.kisを読まなくする-norcオプションを追加 - エラーメッセージの分離/まとめ作業開始
- 演算式の
(〜)が逆コンパイルされないバグを修正 (Thanks: 時乃さん) name,craftmanのリソース問い合わせに対応。オーバーライド可 (Thanks: たくるさん)
- ビルドのシステムを多少変更
- kosui の日本語メッセージ削除
- destruct 時に
writeprotectを外す - コンパイラの無限ループをまた一つ潰した
- 単語中の空白の扱いを以前と同等のものに戻す。実際の動作は以下
- 行頭行末の空白を削除
- エントリ定義の
:や文デリミタ (,や;) の直後の空白を削除 - 単語の末尾に「空白+文デリミタ」がある場合、その空白を削除
Phase 8.0.0 のベータ期 (2002/04/15 〜 2002/06/02)
- 以下のバグ/不具合を修正
- shiori.dll の動作がどんどん遅くなるバグ
ASSERT_IF_PROTECTEDが名前を正しく吐かない (直したのを忘れていた)
-
エントリ内検索コマンド
find/rfind -
entry 操作コマンド
cleartree/listsub/listtree/copy/copytree/move/movetree -
華和梨デバッガ ON/OFF コマンド
debugger -
試験的に完全複数行モード導入。普通っぽい。丸括弧は必須で、この丸括弧は、その中で
,による文のセパレートが可能な点でブロックとは異なるエントリ名 [, エントリ名 ... ] ( 文, 文, 文, 文 ) -
演算式で真偽値を
"true"/"false"で出力する (仕様どおり) よう修正 -
以下のバグ/不具合を修正
- 演算式の結合順序に関する大バグ (Thanks: みずひらさん)
- DataPath 設定バグ (Thanks: こやまさん)
- SecurityLevel 設定 (されない) バグ
readdirの結果格納バグ (Thanks: 今井さん)substrの引数判定バグ- SAORI-Client にて
GET Version時にプロトコル名が付かないバグ (Thanks: 名無しさん@里々スレ) - ログ設定を無視して出力する部分
- 様々なドキュメントバグ (keeps8 のトークも含む)
-
ちょびっと高速化
- エントリ配列呼び出しで、負の値を認識していなかった
- Direct SSTP により、kdb (もどき) 復活。受け側にスクリプトが必要
- コンパイラの無限ループバグを修正。昔直した覚えがあるんだけどなー
kis_reference.html。ついに終わったよー!- β公開開始
comparetextload/readdirの引数の順番を変更version/craftman/shioriidのオーバーライドを許す- 存在しないエントリに対するリードアクセスでログを吐くケースを実用域に限定。
loglevel decl増設
wordcount,entrycount- ライセンス問題完全決着。やっと公開できる
System.Resource.を守ることは無意味なので、2.5 リソース取得手法をSystem.Callback.OnResourceに変更foreachがバグっていた!- string 系 KIS で負のインデックスを認識
substrの第三引数の解釈を部分文字列の長さに変更writeprotectコマンド追加- Logger 若干修正
- 存在しないエントリを呼び出した時にログ
- 文字列の逆コンパイルバグ
match_atの SJIS 問題cncpathその他の SJIS 問題
- mingw 版に差し替え
getrandomが登録されていなかった (-_-;- garbage collector
KIS_logfileの未初期化ポインタによるリロード落ちを修正
programming.html- リソースコンパイルに失敗していたので、一時的に取り外し
programming.html腑分け- さとー氏のドキュメント導入
- ドキュメントちまちま手直し
- ベア文字列をモード分け。強烈
- ついに
test,exprコマンドを削除。dll が再び 300KB を切った
securitylevel指定コマンドinsert,match_ateraseは必要なかった。clearがあった- MT BSD ライセンス版
randomseed復活 →srandstart.html- license 問題対応完了。MT ライセンス表記まで含めたライセンス情報は、
ver license;で出力。もう面倒… license.html
- エントリ名を読む部分の文法と実装を若干修正。結局
$$entry[0][1]とかできるように…… callsaoriで落ちる件。半ば bcc のバグ- SHIORI/3.0 対応
- Log 機能、再々度強化
- BNF 修正とそれに合わせたコンパイラの変更
index.html
- SAORI Client
- Log 機能、再度強化
- 新インタプリタと Phase 7.9.0 をマージ
- (未定) namespace