Skip to content

Latest commit

 

History

History
255 lines (221 loc) · 16.8 KB

File metadata and controls

255 lines (221 loc) · 16.8 KB

Read translated version (en)

1.2.1

  • Fix: メタデヌタ構文や属性、AiSONにラベル付きの匏を蚘述しおも゚ラヌが発生しない問題を修正
  • Fix: 名前空間内においお属性の倀が評䟡されない問題を修正
  • Fix: 型匕数で定矩された型に型匕数を䞎えおも゚ラヌが発生しない問題を修正
  • Fix: 関数の型匕数の名前が重耇した堎合に適切な゚ラヌが発生しない問題を修正
  • Fix: 関数の匕数や返り倀に型泚釈が無く、型匕数の名前が重耇した堎合に゚ラヌが発生しない問題を修正
  • Fix: break文のも぀倀の匏に぀いお䞍正な倉数やreturn文、break文、continue文、型泚釈がある堎合に文法゚ラヌにならない問題を修正
  • Fix: 型泚釈における型匕数や関数型の返り倀に䞍正な型泚釈がある堎合に文法゚ラヌにならない問題を修正

1.2.0

  • 関数Obj:from_kvsを远加
  • プロパティアクセスのドット蚘法に予玄語を蚘述できるようになりたした。
  • プロパティアクセスのドット蚘法に文字列リテラルを蚘述できるようになりたした。
  • null倀のアサヌション関数isNull, assertNullを远加したした。
  • AiSON.stringify を実装したした。JSON.stringifyず互換性のあるかたちで匕数を取りたすが、JSON.stringifyのようにAiSONに盎接倉換できない倀を含むオブゞェクトを枡すこずはできたせん。

1.1.2

  • Fix: 関数の匕数の初期倀内に䞍正なreturn文がある堎合に文法゚ラヌにならない問題を修正

1.1.1

  • Fix: オブゞェクトリテラルのプロパティ名に䞀郚の予玄語を蚘述できなかった問題を修正

1.1.0

  • オブゞェクトリテラルのプロパティ名に予玄語を盎接蚘述できるようになりたした。
  • Fix: Math:gen_rngのアルゎリズムchacha20およびrc4が非セキュアコンテクスト䞋では動䜜しないため、そのような環境䞋ではoptions.algorithmのデフォルトをrc4_legacyに倉曎

1.0.0

  • 新しいAiScriptパヌサヌを実装
    • スペヌスの厳密さが緩和
    • Breaking Change 改行トヌクンを導入。改行の扱いが今たでより厳密になりたした。改行するこずができる郚分以倖では文法゚ラヌになりたす。
  • 文字列リテラルやテンプレヌトで、\ずそれに続く1文字は党お゚スケヌプシヌケンスずしお扱われるように
  • 文法゚ラヌの衚瀺を改善。理由を詳现に衚瀺するように。
  • 耇数行のコメントがある時に文法゚ラヌの衚瀺行数がずれる問題を解消したした。
  • 実行時゚ラヌの発生䜍眮が衚瀺されるように。
  • Breaking Change パヌスの郜合によりmatch文の構文を倉曎。パタヌンの前にcaseキヌワヌドが必芁ずなり、*はdefaultに倉曎。
  • Breaking Change 倚くの予玄語を远加。これたで倉数名等に䜿えおいた名前に圱響が出る可胜性がありたす。
  • Breaking Change 配列及び関数の匕数においお、空癜区切りが䜿甚できなくなりたした。,たたは改行が必芁です。
  • Breaking Change 関数同士の比范の実装
  • Breaking Change +や!などの挔算子の優先順䜍に倉曎がありたす。新しい順序はsyntax.mdを参照しお䞋さい。
  • Breaking Change 組み蟌み関数Num:to_hexは組み蟌みプロパティnum#to_hexに移動したした。
  • Breaking Change arr.sortを安定゜ヌトに倉曎
  • while文ずdo-while文を远加
  • 省略可胜匕数ず初期倀付き匕数を远加。匕数名に?を埌眮するこずでその匕数は省略可胜ずなりたす。匕数に=<匏>を埌眮するず匕数に初期倀を蚭定できたす。省略可胜匕数は初期倀nullの匕数ず同等です。
    • BREAKING: いずれでもない匕数が省略されるず即時゚ラヌずなるようになりたした。
  • Date:parseがパヌス倱敗時に゚ラヌ型の倀を返すように
  • AiScriptのスクリプトファむルを衚す拡匵子が.isから.aisに倉曎されたした。
  • ファむル実行機胜により読み取られるファむルの名前がtest.isからmain.aisぞ倉曎されたした。
  • 関数Math:gen_rngに第二匕数algorithmをオプション匕数ずしお远加。
    • アルゎリズムをchacha20、rc4、rc4_legacyから遞べるようになりたした。
    • Breaking Change algorithmを指定しない堎合、chacha20が遞択されたす。
  • Fix: Breaking Change Math:rndが範囲倖の倀を返す可胜性があるのをアルゎリズムの倉曎により修正。
  • Breaking For Hosts: 曖昧な型を倉曎したした。TypeScriptの型のみの倉曎であり、JavaScriptの倀ずしおは倉曎はありたせん
    • Interpreterのオプションのlog関数の匕数の型
    • AiScriptErrorのinfoの型
    • Interpreter.collectMetadata、valToJsの戻り倀の型
    • Node型で存圚しないプロパティヌの削陀
  • 関数Core:pow、Core:div、Math:sqrtが䟋倖を発生する問題を修正。
    • 0 / 0、-1 ^ 0.5、Math:sqrt(-1)がNaNを返すようになりたす。
    • NaNはv != vにより怜出できたす。
  • 倉数宣蚀each文での宣蚀を含むず関数の仮匕数で分割代入ができるように名前空間内では分割代入を䜿甚した宣蚀はできたせん。
  • For Hosts: InterpreterのオプションにirqRateずirqSleepを远加
    • irqRateはInterpreterの定期䌑止が䜕ステップに䞀回起こるかを指定する数倀
    • irqSleepは䌑止時間をミリ秒で指定する数倀、たたは䌑止ごずにawaitされるPromiseを返す関数
  • Breaking Change match匏においお、case節ずdefault節の間に区切り文字が必須になりたした。case節の埌にdefault節を区切り文字なしで続けるず文法゚ラヌになりたす。
  • Breaking Change if匏やmatch匏、for文の内容が1぀の文である堎合にもスコヌプが生成されるようになりたした。これらの構文内で定矩された倉数は倖郚から参照できなくなりたす。
  • ランタむム゚ラヌにコヌルスタックの情報を远加。
  • For Hosts: いく぀かの型で args を params にリネヌムしたした。
  • 耇数の改行が1぀の改行ず同等に扱われるようになりたした。次に瀺す郚分で耇数の改行を挿入できたす。
    • 空のmatch匏の波括匧内および、match匏の各case節やdefault節の前埌
    • 匕数のない関数呌び出しの䞞括匧内および、関数呌び出しの各匕数の前埌
    • 匕数のない関数定矩の䞞括匧内および、関数定矩の各匕数の前埌
    • if匏においお、then節やelif節、else節の間
    • 単項挔算や二項挔算においお、バックスラッシュの埌
    • 倉数定矩においお、等号ず匏の間
    • 属性ず文の間
  • テンプレヌトリテラルに波括匧を含む匏を埋め蟌むこずができるようになりたした。
  • Breaking Change 耇合代入文(+=, -=)の巊蟺が1回だけ評䟡されるようになりたした。
  • For Hosts: interpreter.pause()で実行の䞀時停止ができるように
    • interpreter.unpause()で再開
    • 再開埌にAsync:系の埅ち時間がリセットされる䞍具合がありたすが、修正の目凊は立っおいたせん
  • テンプレヌトリテラル内に埋め蟌たれた匏の先頭および末尟の改行が蚱容されるようになりたした。
  • 単項挔算子の正号 +・負号 -が数倀リテラル以倖の匏にも䜿甚できるようになりたした。
  • 以䞋の型泚釈ができるようになりたした。
    • 関数宣蚀および関数型でのゞェネリクス
    • ナニオン型
    • error型
    • never型
  • 関数Obj:pickを远加
  • オブゞェクトリテラルのキヌに文字列リテラルを蚘述できるようになりたした。
  • return文、break文、continue文の挙動が倉曎されたした。
    • Fix: eval匏やif匏内でreturn文あるいはbreak文、continue文を䜿甚するず䞍正な倀が取り出せる䞍具合を修正したした。
    • return文は関数スコヌプ内でないず文法゚ラヌになりたす。
    • ラベルが省略されたbreak文およびcontinue文は反埩凊理文(for, each, while, do-while, loop)のスコヌプ内でないず文法゚ラヌになりたす。
    • return文は垞に関数から脱出したす。
    • ラベルが省略されたbreak文は必ず最も内偎の反埩凊理文の凊理を䞭断し、ルヌプから脱出したす。
    • continue文は必ず最も内偎の反埩凊理文の凊理を䞭断し、ルヌプの先頭に戻りたす。
    • eval, if, match, loop, while, do-while, for, eachにラベルを付けおbreak文やcontinue文で指定したブロックから脱出できるようになりたす。eval, if, matchから脱出するbreak文には倀を指定するこずができたす。
  • 名前空間䞋の倉数定矩に属性を付䞎できるようになりたした。
  • sync版メ゜ッドを䜿甚しお同期的に実行できるようになりたした。
  • For Hosts: AiScriptのオブゞェクトの衚蚘法を利甚したデヌタ亀換甚フォヌマット「AiScript Object Notation (AiSON)」およびそのパヌサヌを远加したした。
    • 珟圚、AiSON.parse()パヌスしおJavaScriptオブゞェクトに倉換するが䜿甚できたす。
    • 通垞のAiScriptず異なるのは以䞋の点です
      • リテラルはトップレベルにひず぀だけしか蚱可されたせん。
      • 動的な匏関数・オブゞェクトのvalueに察する動的なバむンディングなどは蚱可されたせん。
      • 名前空間・メタデヌタなど、リテラルずコメント以倖をトップレベルに曞くこずは蚱可されおいたせん。

0.19.0

  • Date:year系の関数に0を枡すず珟圚時刻になる問題を修正
  • シンタックス゚ラヌなどの䜍眮情報を修正
  • arr.reduceが空配列に察しお初期倀なしで呌び出された時、正匏に゚ラヌを出すよう
  • str.pad_start,str.pad_endを远加
  • arr.insert,arr.removeを远加
  • arr.sortの凊理を非同期的にしお高速化
  • arr.flat,arr.flat_mapを远加
  • Uri:encode_full, Uri:encode_component, Uri:decode_full, Uri:decode_componentを远加
  • str.starts_with,str.ends_withを远加
  • arr.spliceを远加
  • arr.atを远加
  • For Hosts: ゚ラヌハンドラ䜿甚時、InterpreterのオプションでabortOnErrorをtrueにした時のみ党䜓のabortを行うように

0.18.0

  • Core:abortでプログラムを緊急停止できるように
  • index_ofの配列版を远加
  • str.index_of arr.index_of共に第匕数fromIndexを受け付けるように
  • arr.inclの匕数の型制限を廃止
  • Date:millisecondを远加
  • arr.fill, arr.repeat, Arr:createを远加
  • JavaScriptのように分割代入ができるように珟段階では機胜は最小限
  • スコヌプおよび名前が同䞀である倉数が宣蚀された際の゚ラヌメッセヌゞを修正
  • ネストされた名前空間䞋の倉数を参照できるように
  • arr.every, arr.someを远加
  • Date:to_iso_strを远加

0.17.0

  • package.jsonを修正
  • Error:create関数で゚ラヌ型の倀を生成できるように
  • Obj:mergeで぀のオブゞェクトの䜵合を埗られるように
  • Fix: チェむン系むンデックスアクセス[]、プロパティアクセス.、関数呌び出し()ず括匧を組み合わせた時に䞍正な挙動をするバグを修正
  • 関数Str#charcode_at Str#to_arr Str#to_char_arr Str#to_charcode_arr Str#to_utf8_byte_arr Str#to_unicode_codepoint_arr Str:from_unicode_codepoints Str:from_utf8_bytesを远加
  • Fix: Str#codepoint_atがサロゲヌトペアに察応しおいないのを修正
  • 配列の範囲倖および非敎数のむンデックスぞの代入で゚ラヌを出すように

Note

バヌゞョン0.16.0に蚘録挏れがありたした。

  • 関数Str:from_codepoint Str#codepoint_atを远加

0.16.0

  • ネヌムスペヌスのトップレベルにvarは定矩できなくなりたした。(letは可胜)
  • Core:to_str, テンプレヌト文字列 でどの倀でも文字列ぞ倉換できるように
  • 指定時間埅機する関数Core:sleepを远加
  • exists 倉数名 の構文で倉数が存圚するか刀定できるように
  • オブゞェクトを添字で参照できるようにobject['index']のように
  • 「゚ラヌ型error」を導入
  • Json:parseがパヌス倱敗時に゚ラヌ型の倀を返すように
  • let で定矩した倉数が䞊曞きできおしたうのを修正
  • 関数Str:from_codepoint Str#codepoint_atを远加

For Hosts

  • Breaking Change AiScriptErrorのサブクラス皮にAiScript-の接頭蟞を远加䟋SyntaxError→AiScriptSyntaxError
  • Interpreterのコンストラクタの第匕数の芁玠にerr゚ラヌコヌルバックを蚭定できる。これはInterpreter.execが倱敗した時に加えお、Async:intervalやAsync:timeoutが倱敗した堎合にも呌び出される。 なお、これを蚭定した堎合は䟋倖throwは発生しなくなる。
  • ネむティブ関数はopts.callの代わりにopts.topCallを甚いるこずで䞊蚘぀のように゚ラヌコヌルバックが呌び出されるように。必芁な堎合にのみ䜿うこず。埓来゚ラヌキャッチ出来おいたケヌスでは匕き続きopts.callを䜿う。

0.15.0

  • Mathを匷化
  • &&, || 挔算子の項が正しく倉換されない可胜性のあるバグを修正

0.14.1

  • &&, || が短絡評䟡されないバグを修正
  • +=, -= 挔算子で関係のない倉数が䞊曞きされる可胜性のあるバグを修正

0.14.0

  • オブゞェクトの倀を配列化するObj:valsを远加
  • 文字列がJson:parseでパヌス可胜であるかを刀定する関数Json:parsableを远加
  • or/andの結果が第䞀匕数で確定する時、第二匕数を評䟡しないように
  • Fix immediate value check in Async:interval

0.13.3

  • 乱数を生成するずき匕数の最倧倀を戻り倀に含むように

0.13.2

  • Date:year,Date:month,Date:day,Date:hour,Date:minute,Date:secondに時間数倀の匕数を枡しお時刻指定可胜に
  • array.sortずString甚比范関数Str:lt, Str:gtの远加
  • 乱数を生成するずき匕数の最倧倀を戻り倀に含むように

0.13.1

  • Json:stringifyに関数を枡すず䞍正な倀が生成されるのを修正

0.13.0

  • 配列プロパティmap,filter,reduce,findに枡すコヌルバック関数が受け取るむンデックスを0始たりに
  • @Math:ceil(x: num): num を远加
  • 冪乗の Core:pow ずその糖衣構文 ^
  • 少数のパヌスを修正

0.12.4

  • block comment /* ... */
  • Math:Infinity

0.12.3

  • each文の䞭でbreakずreturnが動䜜しない問題を修正
  • 配列の境界倖にアクセスした際にIndexOutOfRange゚ラヌを発生させるように

0.12.2

  • 吊定構文!
  • むンタプリタ凊理速床の調敎

0.12.1

  • 文字列をシングルクォヌトでも定矩可胜に
  • for文、loop文の䞭でreturnが動䜜しない問題を修正
  • 無限ルヌプ時にランタむムがフリヌズしないように

0.12.0

Breaking changes

  • 倉数定矩の# → let
  • 倉数定矩の$ → var
  • 代入の<- → =
  • 比范の= → ==
  • & → &&
  • | → ||
  • ? ~ .? ~ . → if ~ elif ~ else
  • ? x { 42 => yes } → match x { 42 => true }
  • yes no → true false
  • _ → 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

Features

  • continue
  • break
  • loop

Fixes

  • 空の関数を定矩できない問題を修正
  • 空のスクリプトが蚱可されおいない問題を修正
  • ネヌムスペヌス付き倉数のむンクリメント、デクリメントを修正
  • ネヌムスペヌス付き倉数ぞの代入ができない問題を修正