aiscript
aiscript copied to clipboard
🔋 A lightweight scripting language runing on JavaScript
# What `Date:parse`に日付として解釈できない文字列が与えられた時、これまではNaNを返していましたが、エラー型の値(`not_date`)を返すように変更します。 一応nextに入れます。 # Why #476 # Additional info (optional)
# What AiScript Next取り込み用 # Why # Additional info (optional)
APIの名前を変更します。 (#566 の次の案です) ## 方針 - 全般的な文字列操作はプリミティブプロパティに置く - Unicode特有の機能やutf8などのエンコーディング関係はstdに名前空間を作って置く ## 検討点 - あえて、名前空間`Unicode`に置く必要があるのか。`Str`に置いてもよい? - 名前空間`Utf8`や`Utf16`は`Encoding:Utf8`、`Encoding:Utf16`にそれぞれ置いたほうが分かりやすい? ## 変更案 1行目は元の名前 2行目は変更後の名前 ### Unicodeのコードポイントから文字 ``` @Str:from_codepoint(codepoint: num): str @Unicode:from_codepoint(codepoint: num): str ``` ###...
hex APIの変更の提案 ## 現行API ``` @Num:to_hex(x: num): str @Num:from_hex(hex: str): num ``` ## 方針 - 配列を16進文字列(hex)にする用途の方が多そう - 数値単体をhexにする用途はあまりないと思われるが、無くはなさそう - プリミティブプロパティを積極的に使う ## 新API - 各オブジェクトにあるto_hexでhexを生成する基本コンセプト - 文字列からはstd関数を使って配列に変換できる ``` @(v: num).to_hex(): str...
std APIはまだプリミティブプロパティが無かった時代に実装されたものも多く、 もう必要なくなっているものやプリミティブプロパティに移動させたほうが良いものがある可能性があります。 一度見直しをしていきたい。
# What `Math:gen_rng`に第二引数`algorithm`を追加します。 アルゴリズムを`chacha20`、`rc4`、`rc4_legacy`(従来のアルゴリズム)から選べるようになります。 # Why #489 でアルゴリズムの変更についての議論がありましたが、アルゴリズムを選べるようにすることにより、現行の挙動を必要とするプログラムは、`algorithm`を`rc4_legacy`とするだけで従来の挙動を利用できるようになります。 # Additional info (optional) Resolves #489
# What Resolve #489 # Why #489 # Additional info (optional) ~~[playground/vite.config.js](https://github.com/aiscript-dev/aiscript/pull/501/files#diff-2f88794daa440751c38768d25d7bf6298abcd2676759d715987547cb0fd181e4)の`target`指定をハードコードしてますがhttps://github.com/aiscript-dev/aiscript/pull/496 がマージされた場合はそれを採用します。~~ 現状は[SeedRandomWrapper](https://github.com/aiscript-dev/aiscript/blob/96d04910f062e89146ece5579892f1499944570f/src/utils/random/seedrandom.ts)を通してARC4を利用していますが、ChaCha20に置き換えた実装を[別ブランチ](https://github.com/MineCake147E/aiscript/tree/rnd-chacha20)で用意しています。
ミリ秒の取得を用意しない理由が見当たらなかったので提案しました。 Misskey Pluginでノートの正確な投稿日時を知りたい場面などに利用できるかなと考えています。
# What 循環構造をサポートするdeep-equalを実装。 連想配列で必要になりそうなのでひとまず追加。 標準ライブラリ等でも使えそう。 ~~少し怪しい部分があるので考えたい~~ # Why # Additional info (optional)
2024/1/21 更新 以前(#225)も話があったように値として比較する用途の方が多いと思うので、`==`演算子でもdeep-equalされるが良いと思います。 ただ、参照比較もあるほうが良さそうです。 例えば - 値の比較 - `==` 演算子をdeep-equalにする (使用頻度が高いため2文字の演算子) - 参照の比較 - 演算子を追加して、参照の比較をする - `===` - `refeq` - 演算子を追加しないで、Primitive propertyかCore APIのみを追加するでも良さそうです 例 ``` x.ref_eq(y); Core:ref_eq(x, y); ```