Merge remote-tracking branch 'origin/v4' into v4
This commit is contained in:
commit
30f36ae254
@ -1,4 +1,4 @@
|
||||
#programming-language #memo #logic
|
||||
#programminglanguage #memo #logic
|
||||
|
||||
[[Coq]]を用いた定理証明支援の基礎
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#programming-language #sound
|
||||
#programminglanguage #sound
|
||||
|
||||
Andrew Sorensenが作ったLispライブプログラミング環境。
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
#software #programming-language #sound
|
||||
#software #programminglanguage #sound
|
||||
|
||||
https://faust.grame.fr
|
52
content/Lua.md
Normal file
52
content/Lua.md
Normal file
@ -0,0 +1,52 @@
|
||||
#programminglanguage
|
||||
|
||||
軽量で埋め込みやすいスクリプティング言語。音楽用ソフトでは[[Reaper]]とかでも使われている。
|
||||
|
||||
コンパイラは基本的なやつはANSI Cで実装されている。
|
||||
|
||||
JITコンパイラで超高速に動く別の処理系[[LuaJIT]]もある
|
||||
|
||||
Luaでオーディオビジュアルライブコーディングをするための[[LuaAV]]などがある(更新されてないけど)
|
||||
|
||||
動的型付けで手続き型っぽいが、関数を第一級オブジェクトとして扱える。そのためクロージャを使用できるが、この実装にupvalueという方式を採用していることで有名(?)
|
||||
|
||||
tableというArrayと連想配列の両方が扱えるような唯一のデータ構造をもち、tableに関数を放り込むことでオブジェクト指向っぽくメソッドを定義することもできる。
|
||||
|
||||
FFIでは、C言語側でユーザーデータというC言語側からしか直接触れないデータを経由する(LuaからはC言語側で別途定義したデータ操作用の関数を叩く)ことでアプリと繋ぐことがしやすい仕組みになっている。標準ライブラリのファイルIOとかもこの仕組みで実装されているらしい。
|
||||
|
||||
GCは最新の実装ではインクリメンタルマーク&スイープ。
|
||||
|
||||
Cからアクセスするには`luaState*`を受け取って`int`を返す関数だけを通じて、LuaのVMのスタックに値を積んだり、取り出したりすることで操作するような感じになる。
|
||||
|
||||
数値型は基本的に64bit floatのみ(埋め込む時はコンパイル時にマクロで切り替えることができる)。内部的にはIntとかboolの区別はあって、いい感じにキャストできるようになっている。
|
||||
|
||||
|
||||
|
||||
## リファレンス
|
||||
|
||||
[Lua 5.4 Reference Manual](https://www.lua.org/manual/5.4/)
|
||||
|
||||
[Lua 5.3 マニュアル日本語訳](http://milkpot.sakura.ne.jp/lua/lua53_manual_ja.html)
|
||||
|
||||
言語機能もそうだが、埋め込み用のC APIの説明では結局内部の設計について知らないと動かせないので言語開発者向けの情報が多い感じ。
|
||||
|
||||
## upvalue関連
|
||||
|
||||
[1パスコンパイラでのクロージャの実装方法(Upvalue)](https://tyfkda.github.io/blog/2020/01/03/clox-closure.html)
|
||||
|
||||
[[Crafting Interpreter]]で解説されているUpvalueの日本語での分かりやすい解説
|
||||
## Rustでの実装
|
||||
|
||||
[Writing a minimal Lua implementation with a virtual machine from scratch in Rust](https://notes.eatonphil.com/lua-in-rust.html)
|
||||
|
||||
パーサと簡単なVMの実装。GCとかはない
|
||||
|
||||
[Build a Lua Interpreter in Rust](https://wubingzheng.github.io/build-lua-in-rust/en/)
|
||||
|
||||
ほぼフル機能の実装チュートリアル。中国語からの英語自動翻訳だが普通に読める。特にクロージャやupvalue周りの実装が参考になりそう。GCに関してはRustの`Rc`をそのまま使っているため、VMの機能としては存在しない。
|
||||
|
||||
Lua C APIではCのクロージャを投げるときには、そもそもC言語にクロージャがないので何が嬉しいのかよくわからない感じだったが、このチュートリアルの実装だとRust側から`Rc<RefCell<Box<dyn FnMut>>>`のクロージャを投げることができるので、Rustの中でLuaを埋め込むんだったら分かりやすくて嬉しい。
|
||||
|
||||
[purua](https://github.com/udzura/purua/tree/2a2007a562fd6e2fdfa6183b0558c4809ec2a212)
|
||||
|
||||
ミニマルな実験的実装。GCとかなさそうだけど、その分コンパクトなので分かりやすいかも。なぜか途中でコードをほぼ全部消すコミットが積まれていて最新版は中身がなくなっている・・・
|
@ -1,4 +1,4 @@
|
||||
#programming-language #software #tools
|
||||
#programminglanguage #software #tools
|
||||
|
||||
マニュアル
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#programming-language #compiler-design
|
||||
#programminglanguage #compiler-design
|
||||
|
||||
[chumskyのチュートリアル](https://github.com/zesterer/chumsky/blob/main/tutorial.md)で、評価する関数の実装がライフタイム付きでこんな感じになってたの頭いいなと思ったので、RAIIにしたらもっとシンプルに見えるのではと思った
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#paper #programming-language
|
||||
#paper #programminglanguage
|
||||
|
||||
https://dl.acm.org/doi/10.1145/3471872.3472970
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#memo #mimium #programming-language
|
||||
#memo #mimium #programminglanguage
|
||||
|
||||
[[音楽プログラミング言語の形式化#mimium と 多段階計算]]
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
#programming-language #sound
|
||||
#programminglanguage #sound
|
||||
|
||||
https://github.com/tomoyanonymous/otopoiesis
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#programming-language
|
||||
#programminglanguage
|
||||
|
||||
項でインデックス付された型
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#programming-language
|
||||
#programminglanguage
|
||||
|
||||
メタプログラミングの技法の一種。[[MetaOCaml]]などが有名
|
||||
|
||||
|
@ -33,6 +33,6 @@
|
||||
- https://ueno-bunka.jp/history/
|
||||
- [国立西洋美術館50年史: 1959-2009: 昭和34年度-平成20年度](https://nmwa.repo.nii.ac.jp/records/769)
|
||||
- [上野観光連盟-上野の歴史](https://ueno.or.jp/history/)
|
||||
- [科学博物館 概要2020](https://kahaku.go.jp/about/summary/imgs/kahaku_outline2020.pdf)
|
||||
- [科学博物館 概要2020](https://www.kahaku.go.jp/about/summary/imgs/kahaku_outline2020.pdf)
|
||||
|
||||
科学博物館の方が西洋美術館より先だったってのはちょっと意外だな
|
||||
|
7
content/竹内関数で音楽.md
Normal file
7
content/竹内関数で音楽.md
Normal file
@ -0,0 +1,7 @@
|
||||
#programminglanguage #music
|
||||
|
||||
再帰関数の実装のベンチマークなどでよく使われる竹内関数(たらい回し関数)
|
||||
|
||||
[[aike]]さんの記事
|
||||
|
||||
https://aike.hatenablog.com/entry/20111112
|
@ -1,4 +1,4 @@
|
||||
#programming-language
|
||||
#programminglanguage
|
||||
|
||||
Temporal Recursionとも。
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#research #programming-language #sound
|
||||
#research #programminglanguage #sound
|
||||
|
||||
やっているプロジェクト
|
||||
|
||||
@ -13,4 +13,8 @@
|
||||
|
||||
[[Rustでの評価文脈(環境)のRAIIっぽい実装]]
|
||||
|
||||
[[Cranelift]]
|
||||
[[Lua]]
|
||||
|
||||
[[Cranelift]]
|
||||
|
||||
[[竹内関数で音楽]]
|
@ -1,4 +1,4 @@
|
||||
#programming-language #research
|
||||
#programminglanguage #research
|
||||
|
||||
|
||||
## 先行例
|
||||
|
Loading…
Reference in New Issue
Block a user