uzmoi
uzmoi
型アノテーションに書けなかったりメソッドを定義できなかったりするので、素直にclassみたいなものを書けるようにした方が最終的にシンプルになるように思います。
stdをデフォルトから分離して、ホスト側がプリセット的なものを選択してconstsと一緒にインタプリタに渡すようにしてもいいなと思いました。 使わないデフォルトの実装をtree-shakingで落とせるのと、#45 とかで信頼できる環境でだけデフォルト実装を使う関数とかが入ったときに、上書きし忘れとかアップデートで増えた新しい関数の上書きし忘れとかを防げるので。
ファイル分けてなくても変数が参照されていなければ効きますね。 例えば以下のようにすれば`stdPresetAll`や`Unsafe:function`の実装は参照されていないので消えます。 ```ts // aiscript.ts export const stdPresetSafe = { 'Safe:function': FN_NATIVE(/* implements */), }; export const stdPresetAll = { ...stdPresetSafe, 'Unsafe:function': FN_NATIVE(/* implements */), }; export class Interpreter {...
すいません、駄目な気がして試したらファイル分けてなくてもは嘘でした。 ファイル分けてれば効きます。 ファイル分けない場合は関数にすれば効きます。 ```ts export const stdPresetSafe = () => ({ 'Safe:function': FN_NATIVE(/* implements */), }); export const stdPresetAll = () => ({ ...stdPresetSafe(), 'Unsafe:function': FN_NATIVE(/* implements */), }); ```
リンクがaiscript-devじゃなくてsyuiloだからっぽい?
GitHub appはPRにカバレッジのチェックを追加するやつだったはず。 test.ymlでtokenが指定されてないのが原因っぽい。 https://docs.codecov.com/docs/adding-the-codecov-token 以下を追記して、しゅいろさんに`CODECOV_TOKEN`を設定してもらう必要がありそう。 ```yaml with: token: ${{ secrets.CODECOV_TOKEN }} ``` あと関係ないけど、テストの前で`npm run build`してるステップ不要ですね。
休止時間の方はsetTimeout以外(requestIdleCallbackとか)も使えるようにPromiseを返す関数を渡すようにすると良いかも
easyよりsimpleのほうがいい気もしますが irqRateはステップ数の方だと思うので、そうするならirqSleepとか……?
まあこのくらいはできていいかもですね。 コールバックもirqSleepプロパティにして`number | (() => Promise)`型を受け付けると排他チェックが要らなくていいですかね
排他チェックとかの実行コストは全体から見ればほぼゼロなので性能のことは気にしていなくて、排他なプロパティーがあるとオプションの複雑さが増して良くないかなと思って提案しました。 同じ目的のものを簡単な方法で指定できるだけなので、一つのプロパティで済むならそのほうが良いかなと。