diff --git a/content/Dioxus.md b/content/Dioxus.md new file mode 100644 index 00000000..7cf8aba2 --- /dev/null +++ b/content/Dioxus.md @@ -0,0 +1,17 @@ + + + +まだ開発中だけど[[Blitz]]というRustで書かれた独自のネイティブHTMLレンダラの統合予定もあり + +アニメーションライブラリ + +[GitHub - wheregmis/dioxus-motion: A lightweight, cross-platform animation library for Dioxus, designed to bring smooth, flexible animations to your Rust web, desktop, and mobile applications.](https://github.com/wheregmis/dioxus-motion?tab=readme-ov-file) + +グラフ描画ライブラリ(愚直にSVG生成で実装されてる) + +[GitHub - dioxus-community/dioxus-charts: A simple chart components library for Dioxus](https://github.com/dioxus-community/dioxus-charts) + + +Rustで書かれたUIでも高速ホットリロードができるとか(どうやってるんだ) + +[\[media\] Dioxus Subsecond Rust Hotpatch Engine + Ratatui ❤️ : r/rust](https://www.reddit.com/r/rust/comments/1j8z3yb/media_dioxus_subsecond_rust_hotpatch_engine/) \ No newline at end of file diff --git a/content/Elm.md b/content/Elm.md new file mode 100644 index 00000000..22d3bb17 --- /dev/null +++ b/content/Elm.md @@ -0,0 +1 @@ +#programming-language \ No newline at end of file diff --git a/content/Erlang.md b/content/Erlang.md new file mode 100644 index 00000000..60699fa0 --- /dev/null +++ b/content/Erlang.md @@ -0,0 +1,2 @@ +#programming-language + diff --git a/content/Gleam.md b/content/Gleam.md new file mode 100644 index 00000000..e69de29b diff --git a/content/Gream.md b/content/Gream.md new file mode 100644 index 00000000..bc5c90b7 --- /dev/null +++ b/content/Gream.md @@ -0,0 +1,28 @@ +#programming-language + +[[Rust]]っぽいシンタックスだが、[[Erlang]]の[[BEAM VM]]もしくは[[JavaScript]]をターゲットとして コンパイルされるスクリプティング言語。 + + +Use構文が面白い。ちょっと[[Computation Expression]]でSeqを使った時とか、[[Koka]]のWith構文と似た仕組みと見える +[Use - The Gleam Language Tour](https://tour.gleam.run/advanced-features/use/) + +```rust +pub fn with_use() -> Result(String, Nil) { + use username <- result.try(get_username()) + use password <- result.try(get_password()) + use greeting <- result.map(log_in(username, password)) + greeting <> ", " <> username +} + +pub fn without_use() -> Result(String, Nil) { + result.try(get_username(), fn(username) { + result.try(get_password(), fn(password) { + result.map(log_in(username, password), fn(greeting) { + greeting <> ", " <> username + }) + }) + }) +} +``` + + diff --git a/content/Koka.md b/content/Koka.md new file mode 100644 index 00000000..a3db2261 --- /dev/null +++ b/content/Koka.md @@ -0,0 +1,19 @@ +#programming-language + +[The Koka Programming Language](https://koka-lang.github.io/koka/doc/index.html) + +[[MicroSoft]]のチームが研究しているプログラミング言語。 + +名前(KOKA=効果)のとおり、[[代数的エフェクト]]が明示的な組み込みシンタックスで扱える。 + +中括弧の囲みをインデントで代用できて、JSっぽくもPythonっぽくも書ける。シンタックス的に推測できれば無名関数を省略して書けたりと、かなり構文糖衣が積極的に使われている。 + + +With構文が面白い。[[Haskell]]のIOモナドで`<-`をチェーンしていくようなやつが、単に高階関数を受け取る関数の順番を入れ替える構文として実装されてるので、ネストが深くなっていくのを避けられる。 + +```koka +with x <- f(e1,...,eN) + +//equal to +f(e1,...,eN, fn(){ }) +``` diff --git a/content/Moonbit.md b/content/Moonbit.md new file mode 100644 index 00000000..d1ce9051 --- /dev/null +++ b/content/Moonbit.md @@ -0,0 +1,18 @@ +#programming-language + +[[Rust]]っぽい構文とシステムから、メモリ管理だけはGCに任せて[[WebAssembly]]ファーストな言語を設計してみましたみたいなやつ + +[MoonBit](https://www.moonbitlang.com/) + + +現状のコンパイラは[[OCaml]]で書かれてるっぽい。 + +[GitHub - moonbitlang/moonbit-compiler](https://github.com/moonbitlang/moonbit-compiler) + + +> 元 Meta で BuckleScript | [[ReScript]] を開発していた [[Hongbo Zhang]] 氏がチーフアーキテクト。 + +[自分が Moonbit 言語について知っていること](https://zenn.dev/mizchi/articles/practical-moonbit) + +あ、そうなんだ + diff --git a/content/Rhai.md b/content/Rhai.md new file mode 100644 index 00000000..e8dbf1d9 --- /dev/null +++ b/content/Rhai.md @@ -0,0 +1,6 @@ +#programming-language + +[[Rust]]で、かつRust言語のいいところを取り込んだ[[Lua]]みたいな埋め込みやすい言語を作ってみたらこうなる、みたいなやつ + + +[Rhai – Embedded Scripting for Rust](https://rhai.rs/) \ No newline at end of file diff --git a/content/Rust.md b/content/Rust.md index f6676f2f..e3762aa8 100644 --- a/content/Rust.md +++ b/content/Rust.md @@ -2,3 +2,14 @@ date: "2023-09-01T19:08:25+0900" --- #tools #software + + +## Rustから影響受けたっぽいスクリプティング言語 + +- [[Gluon]] +- [[Rune]] +- [[Rhai]] +- [[Moonbit]] +- [[Gream]] + +[[RustでGUIを作る選択肢]] \ No newline at end of file diff --git a/content/RustでGUIを作る選択肢.md b/content/RustでGUIを作る選択肢.md new file mode 100644 index 00000000..86c7242b --- /dev/null +++ b/content/RustでGUIを作る選択肢.md @@ -0,0 +1,26 @@ + +## [[egui]] + +[[otopoiesis]]で使ってる。[[ImGui]]から影響を受けたimmediate GUI。WebAssemblyでもきちんと動作する(全部を一つのcanvasにレンダリングする。DOMの扱いは無理) + + +## [[iced]] + +[[Elm]] のアーキテクチャに影響を受けたライブラリ。 + +マルチバイト文字非対応 + + +## [[Tauri]] + +Webviewベースで、フロントエンドはJSやTypeScriptで書くという、[[Electron]]のような構成のデスクトップアプリを作れるフレームワーク + +生のCanvasを触ることもできる + +## [[Dioxus]] + +フロントエンドも含めてRustで完結するWebviewベースのライブラリ。 + +こちらは生Canvas触れないのがつらい + +Dioxusでつくっていって、サムネイルとか必要ならWeb-sysでCanvas動かせばそれでいいのかな diff --git a/content/mimiumのモジュールシステム.md b/content/mimiumのモジュールシステム.md index c9c07118..2c5f56fe 100644 --- a/content/mimiumのモジュールシステム.md +++ b/content/mimiumのモジュールシステム.md @@ -10,7 +10,12 @@ - 操作的意味論的にもある程度一貫性がある - モジュール内ではシンボルの相互参照が可能(後から定義されるシンボルでも参照可能) -で、デザインチョイスのトレードオフとしては意味論を楽にしようと思うと分割コンパイルがめんどくさくなる +分割コンパイルができるということは、依存するファイルを毎回コンパイルしないでも、型情報のキャッシュが残ってれば再利用できるということ + +バラバラのMIRとしてコンパイルできて、関数や定数はmonomorphizeされたユニークな名前:値の対応関係が1:1で付く + + +デザインチョイスのトレードオフとしては意味論を楽にしようと思うと分割コンパイルがめんどくさくなる 複数のコードを合体させるときに、流用されるコードの複製が増える問題 @@ -42,7 +47,8 @@ mod modname{//ソースファイルと同じ宣言 ``` ```rust -mod(stage-1){//ステージの変更 +mod modname{//ステージの変更 +@stage = macro // } ``` diff --git a/content/mimiumのレコード型.md b/content/mimiumのレコード型.md index a9251b7e..e77619ab 100644 --- a/content/mimiumのレコード型.md +++ b/content/mimiumのレコード型.md @@ -13,7 +13,7 @@ date: 2025-07-02 11:40 ## 基本構文 -構文のベースは [Elm](https://elm-lang.org/docs/records) である。この部分だけは Rust 風にはしない。 +構文のベースは [[Elm]] である。この部分だけは Rust 風にはしない。 匿名レコード型を正の文脈で使う。 diff --git a/content/mimiumの多段階計算.md b/content/mimiumの多段階計算.md index a3247e8c..c17da80c 100644 --- a/content/mimiumの多段階計算.md +++ b/content/mimiumの多段階計算.md @@ -121,6 +121,7 @@ ${ この、最後に閉じ括弧が溜まっていく形にしない限り、yはxを参照できなくなってしまう +→ステージは[[mimiumのモジュールシステム|モジュール]]単位で変更していくほうが都合がよさそう。 + -ステージ表記は相対表記がいいのかしら