仕様・バグ一覧

ここではKuinに関するバグや仕様についてまとめています。
ここに載っていないバグは、未報告のバグなので、書き込みお願いします。




FIXME

Kuinの開発者が「修正すべきタスクのまとめ」を欲しているため、Wikiにリストアップしています。
加筆・修正にご協力をお願い致します。特にルールはありません。じゃんじゃん書き込みましょう。
記入日 不具合の概要 詳細 修正見込等
2013/09/29 avast! 詳細
2013/10/07 Draw@CFontクラスのMakeTexメソッド、等幅フォントを指定しても等幅にならない 詳細
2013/11/16 ReadMe.pdf、35ページ目。stach (stackのtypo)
2013/11/17 ReadMe.pdf、25ページ目。list, stack, queueの定義で、[]は不要(そのままだとコンパイルエラーになる)。
var a: []list<int> :: #list<int>
2013/12/08 幅あるいは高さが4より小さい kntexファイル(例えば2x2)を読み込むと関数固有のエラー Code = 1002 仕様。Readme.pdfに書く予定
2014/01/04 ドライバ依存でRectに角が生えることがある。 rさん 修正予定なし。
2014/01/25 ReadMe.pdf、32ページ目。Subメソッドの戻り値の型がintになっている。正しくは[]type
2014/02/09 const num: float :: 1.0e-5がコンパイルエラー(E1007 不正な数値表現)。1.0e5は問題なし。 1.0e5が通るのが不具合
2014/02/11 dictでGet()したものをそのままToStr()すると値がおかしい。 (Kuin 1.01)
(keyが存在しない場合は問題なし)
2014/02/14 classでメンバの関数型の変数を使うコードで番号なしコンパイルエラー
「Error: インデックスが配列の境界外です。」
詳細
2014/02/16 https://github.com/tatt61880/kuin_test/ ←これで意図せぬコンパイルエラーがでないか。 Kuin更新時チェック用
2014/03/?? リリースコンパイル時に大文字小文字を区別しない
↑ここに追加してください。
※このページはあくまで覚え書きです。本当に不具合か、詳細情報が十分かどうかを、Kuinの作者(b2)に問い合わせるのが望ましいです。

要望

記入日 要望の概要 詳細 実装見込等
2013/11/03 ラベル・ボタン・テキストボックス・チェックボックス・ダイアログボックスの実装
2013/11/03 Input.knの改善 タイピングゲームが作れるレベルに。
2013/10/29 無駄にキャストした場合のエラーメッセージをわかりやすくしてほしい。 詳細
2013/11/02 「Error: E2007 型が一致しません。 キャストなどを用いて正しい型に変換してください。」をよりわかりやすくしてほしい。 詳細
2013/11/21 breakでブロック名が指定されていない場合のコンパイルエラーメッセージが E1000。わかりやすくしてほしい。
2014/01/25 Input@PadやInput@Mouseで押されていない時間がマイナスの値で取得できるといい
2014/02/15 GUIなしで実行するexeを出力するモード(ツール用にほしいです)
2014/02/15 外部のdllやexeを実行する手段。
2014/02/15 eval
2014/02/22 メッセージボックスを出力する関数。(Dbg@Logはデバッグモードでしか使えないので)
2014/03/08 dict型のキー一覧の配列を返すKeys()メソッド
↑ここに追加してください。
※このページはあくまで覚え書きです。要望の詳細が十分Kuinの作者(b2)に伝わるか、確認するのがのが望ましいです。

【便利な検索機能】
Twitter検索: 修正 from:b2
Twitter検索: 修正 from:tes_so
Twitter検索: 調査 from:b2
Twitter検索: 調査 from:tes_so


Ver.0.04での更新情報(0.04同梱のReadme.txtより抜粋)

  • 30fpsを60fpsに変更
  • 明るい部分が発光する効果(キラキラエフェクト)の廃止
  • 例外コードの全面的変更(より扱いやすい10進数の数値へ)
  • list型、stack型、queue型のサポートおよび、それらをforeachで回せるように
  • クラスの継承周りとアクセス指定子の完全サポート
  • ソースレベルのアクセス指定子のサポート
  • スーパークラスに.ToBins()、.FromBins()メソッドが追加されているが、まだ使用してはならない
  • 配列に.Sub()メソッドが追加されているが、まだ使用してはならない
  • フィルタ機能の追加。Draw@SetFilter()関数で、画面全体をグレースケールやセピア調にできる
  • 描画処理を10倍程度高速化。
  • sbyte型の廃止。byte型に符号付き算術シフト.Sar()メソッドの追加
  • throw 2000, "Hoge" のように、文字列が投げられる機能の完全サポート
    • (文字列を含む例外をcatchしなかった場合にメモリリーク警告が出ますが、これに関してはちゃんと解放されていますので安心してください)
  • その他、多数の細かなバグ修正


例外コード一覧
  • 0000~0499 ユーザが自由に使えるメッセージ領域
  • 0500~0599 Kuin側が使用するメッセージ領域
    • 0500 アプリケーションの終了要求(ウインドウを閉じると発生)
    • 1000~1999 関数ごとに自由に使えるメッセージ領域この領域では、例外コードとその意味が1対1に対応していない。関数ごとに独立して設定できる。
以下に、標準ライブラリ関数での例外コード一覧
  • Snd@Load
    • 1000 サポートしていない形式のファイルをロードした
    • 1001 サウンドのハードウェアエラー
  • CSnd.Play
    • 1000 不正な引数パラメータ
  • SaveData@Load
    • 1000 セーブデータが破損している(プレイヤーによる改竄の防止)
  • int.ToStrF, float.ToStrF
    • 1000 不正なフォーマット指定
    • 1001 長すぎるフォーマット指定
  • Kuin@Hash
    • 1000 長すぎるデータ列
  • CStream.Seek
    • 1000 不正なOrigin指定、もしくはファイルの範囲を超えた位置にシークした
  • CStream.Read***
    • 1000 読み込めるデータが残っていない(ファイル終端にたどりついた)
    • 1001 読み込んだデータがintやfloatなど得ようとした数値の型の範囲を超えている
  • Draw@LoadTex
    • 1000 サポートしていない形式のファイルをロードした
    • 1001 テクスチャサイズが、一辺2^nピクセルになっていない
    • 1002 グラフィックスのハードウェアエラー
  • Draw@LoadFont
    • 1000 サポートしていない形式のファイルをロードした
  • CFont.MakeTex
    • 1000 テクスチャサイズが大きくなりすぎた
    • 1001 グラフィックスのハードウェアエラー
  • Draw@LoadObj
    • 1000 サポートしていない形式のファイルをロードした
    • 1001 グラフィックスのハードウェアエラー
  • CObj.Draw
    • 1000 不正な引数パラメータ
  • Draw@SetCamera
    • 1000 不正な引数パラメータ(長さゼロのベクトルを指定した)
  • Draw@SetLight
    • 1000 不正な引数パラメータ
  • 2000~2999 ユーザが自由に使える例外領域
  • 3000~3999 Kuin側が使用する例外領域
    • 3000 assert文の条件がfalseになった
    • 3001 GBerry.knが見つからない(この例外を検知しても、GBerryがないと例外情報を出力する術がないことに注意。そのうち対策する)
    • 3002 配列の有効範囲外を参照した
    • 3003 int型の数値がオーバーフローした(Kuinのint型はオーバーフローしないように扱うべき。とはいえ、2^63程度の膨大な数が扱えるので、そこまで気にしなくても良い)
    • 3004 クラスのインスタンスを、変換できないクラスにキャストしようとした(親→子キャストで注意)
    • 3005 ファイルが開けなかった(例外に埋め込まれた文字列に、ファイルパスが格納されている)
    • 3006 GBerryの初期化エラー(例外に埋め込まれた文字列に、原因の詳細が格納されている)
    • 3007 GBerryが扱うクラス(Draw@CTexなど)のコアなメソッド(.ToStrなど)を直接呼び出そうとした
    • 3008 GBerryが扱うクラス(Draw@CTexなど)のインスタンスをユーザ側で作ろうとした
    • 3009 オーバーライドされていない、.ToStr()、.Cmp()などのメソッドが呼び出された(クラス同士を比較するときは、Kuin側によって.Cmp()が呼ばれるが、そのときユーザ側でその中身を実装していないと、この例外が生じる)
    • 9999 予期せぬ例外(Kuinコンパイラのバグなので、作者に報告すべき)
  • 16#80000000~ CPUが発生させる例外領域(以下はCPUの仕様を読んで書いたので、実際に検証していない。おそらくこういう例外となっている、程度に認識してほしい。英語表記のものは、よく解らなかったもの)
    • 16#80000002 Datatype misalignment
    • 16#80000003 ブレークポイント(デバッガアプリから操作しないと通常発生しない)
    • 16#c0000005 不正なメモリアクセス(nullインスタンスのメソッドを参照したときなどに発生)
    • 16#c0000006 In Page Error
    • 16#c0000008 Invalid Handle
    • 16#c000001d Illegal Instruction
    • 16#c0000025 Noncontinuable exception
    • 16#c0000026 Invalid Disposition
    • 16#c000008c Array Bounds Exceeded
    • 16#c000008d Float denormal operand
    • 16#c000008e 浮動小数点ゼロ除算(float型で0.0除算したときに発生、のように見えるが、Kuinでは無限大infの値になるので、実際には発生しないと思われる)
    • 16#c000008f Float inexact result(このあたりに、0.0 / 0.0 のような NaN例外があるはず)
    • 16#c0000090 Float invalid operation
    • 16#c0000091 浮動小数点オーバーフロー(実際に発生するのかは不明)
    • 16#c0000092 Float stack check
    • 16#c0000093 浮動小数点アンダーフロー(実際に発生するのかは不明。負の大きな数があふれることを指すのではなく、絶対値の小さすぎる数が0.0に丸め込まれることを指す)
    • 16#c0000094 整数ゼロ除算(int型で0除算したときに発生)
    • 16#c0000095 整数オーバーフロー(Kuinではこの例外ではなく、3003コードが返るので、この例外は発生しないと思われる)
    • 16#c0000096 Priv instruction
    • 16#c00000fd スタックオーバーフロー(無限に再帰呼び出しをすると発生)