package.jsonを修正Error:create関数でエラー型の値を生成できるようにObj:mergeで2つのオブジェクトの併合を得られるように- Fix: チェイン系(インデックスアクセス
[]、プロパティアクセス.、関数呼び出し())と括弧を組み合わせた時に不正な挙動をするバグを修正 - 関数
Str#charcode_atStr#to_arrStr#to_char_arrStr#to_charcode_arrStr#to_utf8_byte_arrStr#to_unicode_codepoint_arrStr:from_unicode_codepointsStr:from_utf8_bytesを追加 - Fix:
Str#codepoint_atがサロゲートペアに対応していないのを修正 - 配列の範囲外および非整数のインデックスへの代入でエラーを出すように
バージョン0.16.0に記録漏れがありました。
- 関数
Str:from_codepointStr#codepoint_atを追加
- ネームスペースのトップレベルに
varは定義できなくなりました。(letは可能) Core:to_str,テンプレート文字列でどの値でも文字列へ変換できるように- 指定時間待機する関数
Core:sleepを追加 exists 変数名の構文で変数が存在するか判定できるように- オブジェクトを添字で参照できるように(
object['index']のように) - 「エラー型(
error)」を導入 Json:parseがパース失敗時にエラー型の値を返すようにletで定義した変数が上書きできてしまうのを修正- 関数
Str:from_codepointStr#codepoint_atを追加
- Breaking Change AiScriptErrorのサブクラス4種にAiScript-の接頭辞を追加(例:SyntaxError→AiScriptSyntaxError)
- Interpreterのコンストラクタの第2引数の要素に
err(エラーコールバック)を設定できる。これはInterpreter.execが失敗した時に加えて、Async:intervalやAsync:timeoutが失敗した場合にも呼び出される。 なお、これを設定した場合は例外throwは発生しなくなる。 - ネイティブ関数は
opts.callの代わりにopts.topCallを用いることで上記2つのようにエラーコールバックが呼び出されるように。必要な場合にのみ使うこと。従来エラーキャッチ出来ていたケースでは引き続きopts.callを使う。
- Mathを強化
&&,||演算子の項が正しく変換されない可能性のあるバグを修正
&&,||が短絡評価されないバグを修正+=,-=演算子で関係のない変数が上書きされる可能性のあるバグを修正
- オブジェクトの値を配列化する
Obj:valsを追加 - 文字列が
Json:parseでパース可能であるかを判定する関数Json:parsableを追加 - or/andの結果が第一引数で確定する時、第二引数を評価しないように
- Fix immediate value check in Async:interval
- 乱数を生成するとき引数の最大値を戻り値に含むように
Date:year,Date:month,Date:day,Date:hour,Date:minute,Date:secondに時間数値の引数を渡して時刻指定可能に- array.sortとString用比較関数Str:lt, Str:gtの追加
- 乱数を生成するとき引数の最大値を戻り値に含むように
- Json:stringifyに関数を渡すと不正な値が生成されるのを修正
- 配列プロパティ
map,filter,reduce,findに渡すコールバック関数が受け取るインデックスを0始まりに @Math:ceil(x: num): numを追加- 冪乗の
Core:powとその糖衣構文^ - 少数のパースを修正
- block comment
/* ... */ - Math:Infinity
- each文の中でbreakとreturnが動作しない問題を修正
- 配列の境界外にアクセスした際にIndexOutOfRangeエラーを発生させるように
- 否定構文
! - インタプリタ処理速度の調整
- 文字列をシングルクォートでも定義可能に
- for文、loop文の中でreturnが動作しない問題を修正
- 無限ループ時にランタイムがフリーズしないように
- 変数定義の
#→let - 変数定義の
$→var - 代入の
<-→= - 比較の
=→== &→&&|→||? ~ .? ~ .→if ~ elif ~ else? x { 42 => yes }→match x { 42 => true }yesno→truefalse_→null<<→return~→for~~→each+ attributeName attributeValue→#[attributeName attributeValue]- 真理値の
+/-表記方法を廃止 - for、およびeachは配列を返さなくなりました
- ブロック式は
{ }→eval { }に - 配列のインデックスは0始まりになりました
- いくつかのstdに含まれるメソッドは、対象の値のプロパティとして利用するようになりました。例:
Str:to_num("123")->"123".to_num()Arr:len([1 2 3])->[1 2 3].len- etc
continuebreakloop
- 空の関数を定義できない問題を修正
- 空のスクリプトが許可されていない問題を修正
- ネームスペース付き変数のインクリメント、デクリメントを修正
- ネームスペース付き変数への代入ができない問題を修正