ここでは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)に伝わるか、確認するのがのが望ましいです。
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
- SaveData@Load
- 1000 セーブデータが破損している(プレイヤーによる改竄の防止)
- int.ToStrF, float.ToStrF
- 1000 不正なフォーマット指定
- 1001 長すぎるフォーマット指定
- Kuin@Hash
- 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
- Draw@SetCamera
- 1000 不正な引数パラメータ(長さゼロのベクトルを指定した)
- Draw@SetLight
- 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 スタックオーバーフロー(無限に再帰呼び出しをすると発生)
最終更新:2014年03月19日 19:54