Merge remote-tracking branch 'home/v4' into v4
All checks were successful
Build / build (push) Successful in 9m52s
All checks were successful
Build / build (push) Successful in 9m52s
This commit is contained in:
17
content/Dioxus.md
Normal file
17
content/Dioxus.md
Normal file
@@ -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/)
|
1
content/Elm.md
Normal file
1
content/Elm.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
#programming-language
|
2
content/Erlang.md
Normal file
2
content/Erlang.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
#programming-language
|
||||||
|
|
0
content/Gleam.md
Normal file
0
content/Gleam.md
Normal file
28
content/Gream.md
Normal file
28
content/Gream.md
Normal file
@@ -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
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
19
content/Koka.md
Normal file
19
content/Koka.md
Normal file
@@ -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)
|
||||||
|
<body>
|
||||||
|
//equal to
|
||||||
|
f(e1,...,eN, fn(){ <body> })
|
||||||
|
```
|
18
content/Moonbit.md
Normal file
18
content/Moonbit.md
Normal file
@@ -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)
|
||||||
|
|
||||||
|
あ、そうなんだ
|
||||||
|
|
6
content/Rhai.md
Normal file
6
content/Rhai.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
#programming-language
|
||||||
|
|
||||||
|
[[Rust]]で、かつRust言語のいいところを取り込んだ[[Lua]]みたいな埋め込みやすい言語を作ってみたらこうなる、みたいなやつ
|
||||||
|
|
||||||
|
|
||||||
|
[Rhai – Embedded Scripting for Rust](https://rhai.rs/)
|
@@ -2,3 +2,14 @@
|
|||||||
date: "2023-09-01T19:08:25+0900"
|
date: "2023-09-01T19:08:25+0900"
|
||||||
---
|
---
|
||||||
#tools #software
|
#tools #software
|
||||||
|
|
||||||
|
|
||||||
|
## Rustから影響受けたっぽいスクリプティング言語
|
||||||
|
|
||||||
|
- [[Gluon]]
|
||||||
|
- [[Rune]]
|
||||||
|
- [[Rhai]]
|
||||||
|
- [[Moonbit]]
|
||||||
|
- [[Gream]]
|
||||||
|
|
||||||
|
[[RustでGUIを作る選択肢]]
|
26
content/RustでGUIを作る選択肢.md
Normal file
26
content/RustでGUIを作る選択肢.md
Normal file
@@ -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動かせばそれでいいのかな
|
@@ -10,7 +10,12 @@
|
|||||||
- 操作的意味論的にもある程度一貫性がある
|
- 操作的意味論的にもある程度一貫性がある
|
||||||
- モジュール内ではシンボルの相互参照が可能(後から定義されるシンボルでも参照可能)
|
- モジュール内ではシンボルの相互参照が可能(後から定義されるシンボルでも参照可能)
|
||||||
|
|
||||||
で、デザインチョイスのトレードオフとしては意味論を楽にしようと思うと分割コンパイルがめんどくさくなる
|
分割コンパイルができるということは、依存するファイルを毎回コンパイルしないでも、型情報のキャッシュが残ってれば再利用できるということ
|
||||||
|
|
||||||
|
バラバラのMIRとしてコンパイルできて、関数や定数はmonomorphizeされたユニークな名前:値の対応関係が1:1で付く
|
||||||
|
|
||||||
|
|
||||||
|
デザインチョイスのトレードオフとしては意味論を楽にしようと思うと分割コンパイルがめんどくさくなる
|
||||||
|
|
||||||
複数のコードを合体させるときに、流用されるコードの複製が増える問題
|
複数のコードを合体させるときに、流用されるコードの複製が増える問題
|
||||||
|
|
||||||
@@ -42,7 +47,8 @@ mod modname{//ソースファイルと同じ宣言
|
|||||||
```
|
```
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
mod(stage-1){//ステージの変更
|
mod modname{//ステージの変更
|
||||||
|
@stage = macro
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
@@ -13,7 +13,7 @@ date: 2025-07-02 11:40
|
|||||||
|
|
||||||
## 基本構文
|
## 基本構文
|
||||||
|
|
||||||
構文のベースは [Elm](https://elm-lang.org/docs/records) である。この部分だけは Rust 風にはしない。
|
構文のベースは [[Elm]] である。この部分だけは Rust 風にはしない。
|
||||||
|
|
||||||
匿名レコード型を正の文脈で使う。
|
匿名レコード型を正の文脈で使う。
|
||||||
|
|
||||||
|
@@ -121,6 +121,7 @@ ${
|
|||||||
|
|
||||||
この、最後に閉じ括弧が溜まっていく形にしない限り、yはxを参照できなくなってしまう
|
この、最後に閉じ括弧が溜まっていく形にしない限り、yはxを参照できなくなってしまう
|
||||||
|
|
||||||
|
→ステージは[[mimiumのモジュールシステム|モジュール]]単位で変更していくほうが都合がよさそう。
|
||||||
|
|
||||||
|
|
||||||
ステージ表記は相対表記がいいのかしら
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user