[obsidian] vault backup: 2025-10-16 18:28:16[

This commit is contained in:
2025-10-16 18:28:16 -04:00
parent b56577613b
commit 0df4565fea
6 changed files with 56 additions and 12 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -77,12 +77,15 @@ v4
- まず型のユニフィケーションをunion_findに置き換える
- 型システムがしっかりするほど逆にエラー報告がわかりにくくなってる矛盾があるので、unionする際にエラーの原因をちゃんとtrackできるような仕組みを何か入れたい
- [[mimiumでのバリアント]]:やっぱり必要
- モジュールシステム名前空間のCライブラリレベルでのマングリングとか考える必要ありそう
- [[mimiumのモジュールシステム|モジュール]]名前空間のCライブラリレベルでのマングリングとか考える必要ありそう
- [[OSC]]の実装
- アドレスを単一のnumberにマッピングするだけならそんなに困らなさそう。
- [[mimiumでMIDIインプットを実装|MIDIドライバの書き直し]]
- イベントストリームのチェーン
- イベントストリームのチェーンをちゃんとFRPで書けるようにしたい
- オーディオドライバのコンフィグ系をフロントエンドに実装
- Delayに加えて、rwtableプリミティブを追加
- これがないとリバースディレイを作れない
- というか、これがあるとDelayもrwtableでカバーできてしまうという
- シンタックスツリーをRed-GreenツリーにしてLanguage Serverを強化
- ステージ0の組み込み関数に配列と文字列操作を追加
- mapやfoldをやるにはジェネリクスが必要だけど、とりあえずは整数に対する操作だけでも

View File

@@ -146,13 +146,7 @@ fn dsp(){
[[Computation Expression]]使ってIOの値を`let!`でバインドしていく、とかの方がわかりやすいかも?
## MIDIディレイとかどうすんの
MIDI入力がトリガーになってクロージャのupvalueを書き換えることでCellの中身を書き換えるとなると、現実的にはオーディオスレッドとMIDIイベントスレッドを跨いでupvalueを操作することになる。`get_closure_mut`でクロージャをゲットして実行することはできるけど、その時には結局VMがオーディオスレッドにいるから、VMがクロージャ実行予約の命令を受け取るmpscチャネルを持っておいて、予約されたらオーディオブロックの頭で実行する、みたいな感じにする
```rust
fn delay<T>(stream:Stream<T>,time:float){
stream@(now+float)
}
```
Arcでupvalueを全部包んで、closed upvalueの中身をAtomicU64にする、みたいな方法もあるにはあるが、そうするとClosureのストレージはVMそのものというよりもVMインスタンス間で共有される感じになるのかな

View File

@@ -151,7 +151,7 @@ Rustの場合はグローバルな宣言が基本的に型推論しなくて済
- use modAの解釈開始
- マップに問い合わせ、ファイルがあったのでそれを参照
- とりあえずmodAの型はすべて不明なレコード型として解釈して型付け開始
- Proigram→Exprへの変換の中でuse宣言をextern modA:{...}に変換し、名前空間参照をレコードへのアクセスに変換
- Program→Exprへの変換の中でuse宣言をextern modA:{...}に変換し、名前空間参照をレコードへのアクセスに変換
両方が推論終わってから再度Unificationしないといけないかこれも再帰を禁止しておけばそれでいいのか
@@ -186,5 +186,7 @@ Pythonのモジュールシステム [Python's Import System - Module object|R
一応このやり方でも、ファイルに対する型情報さえ残ってればキャッシュと分割コンパイル自体は可能?
問題点レコードとして埋め込むと、エクスポートできる関数はステージ0かステージ1のいずれかになるモジュール内でステージの混在自体はできるけど
なんかこれだとダメだというもっとはっきりした理由をこの前気がついた気がするんだが、思い出せねえ、、