公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
公式ドキュメント
https://www.rust-lang.org/learn
Web上の実行環境
https://play.rust-lang.org
※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/
※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust
※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/
※次スレは原則>>980が立てること
前スレ
Rust part20
https://mevius.2ch.net/test/read.cgi/tech/1677771928/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.2ch.net/test/read.cgi/tech/1514107621/
探検
Rust part21
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2023/08/15(火) 22:24:39.45ID:xzxy4cgp539デフォルトの名無しさん
2023/10/22(日) 23:28:57.61ID:zUgjdRO9 Redox(https://www.redox-os.org/)みたいなRust製のUnix系OSプロジェクトならもうあるし
無理してLinuxに食い込む必要はないと思うんだけどLinux開発者でもRust使いたい人はいるんでしょ
Linuxは一部のモジュールがRust製になる程度で中核は最後までCで通すと思う
というかRustで置き換えるなら名前変えてほしい
無理してLinuxに食い込む必要はないと思うんだけどLinux開発者でもRust使いたい人はいるんでしょ
Linuxは一部のモジュールがRust製になる程度で中核は最後までCで通すと思う
というかRustで置き換えるなら名前変えてほしい
540デフォルトの名無しさん
2023/10/23(月) 00:13:38.68ID:tCssLiBK541デフォルトの名無しさん
2023/10/23(月) 05:58:05.37ID:3382hDjx >>533
実際にはCでもバッファオーバーランしないからRustでは、unsafe必要ないでしょ
実際にはCでもバッファオーバーランしないからRustでは、unsafe必要ないでしょ
542デフォルトの名無しさん
2023/10/23(月) 06:59:33.53ID:8gpCEC0e543453
2023/10/24(火) 00:55:17.36ID:Ei0IGfb9 >>500
今度は逆にrustで書いたもの>>453をcで書いてみた
https://ideone.com/j5KR8Y
・参照透過性は考慮していない
・型のパラメータ化?には挑戦してない
・パターンマッチ再現?にも挑戦してない
・クロージャが欲しいところには呼び出し元の文脈を手渡して誤魔化す
・グローバル変数一個使ってノードの再利用を試みてる
・とにかくlist_qsort内部がそれっぽい感じの手順になってたらヨシ
struct node {
int value;
struct node *next;
};
struct node *list_qsort(const struct node *list) {
int pivot;
struct node *sorted = 0, *tail, *smaller, *rest, *a, *b;
if (list) {
pivot = list->value, tail = list->next;
list_partition(&pivot, less_than_context, tail, &smaller, &rest);
sorted = list_append(a = list_qsort(smaller), b = list_cons(pivot, list_qsort(rest)));
list_available_push_all4(smaller, rest, a, b);
}
return sorted;
}
今度は逆にrustで書いたもの>>453をcで書いてみた
https://ideone.com/j5KR8Y
・参照透過性は考慮していない
・型のパラメータ化?には挑戦してない
・パターンマッチ再現?にも挑戦してない
・クロージャが欲しいところには呼び出し元の文脈を手渡して誤魔化す
・グローバル変数一個使ってノードの再利用を試みてる
・とにかくlist_qsort内部がそれっぽい感じの手順になってたらヨシ
struct node {
int value;
struct node *next;
};
struct node *list_qsort(const struct node *list) {
int pivot;
struct node *sorted = 0, *tail, *smaller, *rest, *a, *b;
if (list) {
pivot = list->value, tail = list->next;
list_partition(&pivot, less_than_context, tail, &smaller, &rest);
sorted = list_append(a = list_qsort(smaller), b = list_cons(pivot, list_qsort(rest)));
list_available_push_all4(smaller, rest, a, b);
}
return sorted;
}
544デフォルトの名無しさん
2023/10/24(火) 13:32:38.68ID:oyxcPsiu スレチ
545デフォルトの名無しさん
2023/10/24(火) 16:02:23.69ID:ju9L4gE1 cargo 経由で rustc にコンパイルオプションを渡したいとき
RUSTFLAG=hogehoge
で成功はしたのですがパッケージ全体が再コンパイルされて遅いです
特定のファイルだけにコンパイルオプションを適用したいのですが
cargo にはそういうオプションはありませんか?
RUSTFLAG=hogehoge
で成功はしたのですがパッケージ全体が再コンパイルされて遅いです
特定のファイルだけにコンパイルオプションを適用したいのですが
cargo にはそういうオプションはありませんか?
546デフォルトの名無しさん
2023/10/24(火) 18:21:38.30ID:u/7eM1yW >>545
ありません
ありません
547デフォルトの名無しさん
2023/10/24(火) 20:07:58.68ID:dncTx+4h 大文字小文字が混在する言語って気持ち悪い
548453
2023/10/24(火) 22:19:05.86ID:yQ/jFyOv549デフォルトの名無しさん
2023/10/25(水) 09:06:18.67ID:9oOV85NF >>545
試してないけど
やるとしたら
cmdとかterminal(shell)を2つ以上別ウィンドウで開いておいて
それぞれ別のRUSTFLAG=を設定しておく(環境毎に独立なはず)
片方でbuildしたあと適用したいファイルだけ修正してもう片方でbuildするとうまくいかんかな
試してないけど
やるとしたら
cmdとかterminal(shell)を2つ以上別ウィンドウで開いておいて
それぞれ別のRUSTFLAG=を設定しておく(環境毎に独立なはず)
片方でbuildしたあと適用したいファイルだけ修正してもう片方でbuildするとうまくいかんかな
550デフォルトの名無しさん
2023/10/25(水) 10:10:31.38ID:p3+NCv68 特定のファイルにだけ適用したいコンパイルオプションて何なの?
551デフォルトの名無しさん
2023/10/25(水) 10:43:36.55ID:dKf07X6i crateで分割したらいけるんじゃね
552デフォルトの名無しさん
2023/10/25(水) 11:35:23.44ID:CN7zqSRs そらそうやろと言いたいところだが
今はcrate単位の指定はできなくてパッケージ単位のみ
今はcrate単位の指定はできなくてパッケージ単位のみ
553デフォルトの名無しさん
2023/10/25(水) 13:57:15.42ID:0w7kqvd/ crate で別れてる前提で
その crate を使う2つの bin (まあまあそっくりな main) を造って
それぞれをそれぞれの RUSTFLAGS= で build したら
うまく使い別けられました
とりあえず速度は気にならないからしばらくこれで逝く
アイディア呉れた人thx
その crate を使う2つの bin (まあまあそっくりな main) を造って
それぞれをそれぞれの RUSTFLAGS= で build したら
うまく使い別けられました
とりあえず速度は気にならないからしばらくこれで逝く
アイディア呉れた人thx
554デフォルトの名無しさん
2023/10/26(木) 14:45:03.06ID:6bJ9rmmH しつもんです
cargo publish のときに
warning: package `hoge vN.N.N` in Cargo.lock is yanked in registry `crates-io`, consider updating to a version that is not yanked
って警告が出てて意味は判るんだが
cargo clean してやり直しても package 'hoge vN.N.N' が最新のものに切り替わらない
自分自身の Cargo.toml の dependencies には hoge は描かれていない
どの crate が原因で hoge を要求してるのか知るにはどうすれば良い?
その crate を最新のものにすれば hoge の yank されてないものを取って来てくれるとも限らない訳だが
cargo publish のときに
warning: package `hoge vN.N.N` in Cargo.lock is yanked in registry `crates-io`, consider updating to a version that is not yanked
って警告が出てて意味は判るんだが
cargo clean してやり直しても package 'hoge vN.N.N' が最新のものに切り替わらない
自分自身の Cargo.toml の dependencies には hoge は描かれていない
どの crate が原因で hoge を要求してるのか知るにはどうすれば良い?
その crate を最新のものにすれば hoge の yank されてないものを取って来てくれるとも限らない訳だが
555デフォルトの名無しさん
2023/10/26(木) 15:53:54.89ID:wO29ziTZ cargo treeを使うといいよ
556デフォルトの名無しさん
2023/10/26(木) 21:41:03.08ID:pAbfpEYj Rust で書かれた WebAssembly/Canvas 上の
FlashPlayer のエミュレータ Ruffle の実装が
凄い勢いで進んでるけど
世界の凄腕プログラマも参戦してるみたい。
このスレで貢献してる人ひょっとしている?
エミュレータ実装て武者修行になるのかな。
FlashPlayer のエミュレータ Ruffle の実装が
凄い勢いで進んでるけど
世界の凄腕プログラマも参戦してるみたい。
このスレで貢献してる人ひょっとしている?
エミュレータ実装て武者修行になるのかな。
557デフォルトの名無しさん
2023/10/26(木) 23:18:45.93ID:oN20rU1J エミュレーターを作り始めるスタートは完全な仕様の資料を手にいれることで、それがないことも良くあることだから調査がしんどいんだよ。
そんで実装は仕様通りにやるだけのひたすらに地道な作業だからあまり面白味はない。
動くだけじゃなくて性能を出そうと思ったら色々と工夫の余地はあるんだけど……
そんで実装は仕様通りにやるだけのひたすらに地道な作業だからあまり面白味はない。
動くだけじゃなくて性能を出そうと思ったら色々と工夫の余地はあるんだけど……
558デフォルトの名無しさん
2023/10/27(金) 10:08:58.42ID:d8VwEqUV 古いゲーム機のエミュレータを書いたことがあるが結構面白いぞ
昔のソフトはクロックタイミングに依存することも珍しくないから、性能だけでなく再現精度にも気を配らなくちゃいけない
腕試しとしてはちょうどいいと思うよ
昔のソフトはクロックタイミングに依存することも珍しくないから、性能だけでなく再現精度にも気を配らなくちゃいけない
腕試しとしてはちょうどいいと思うよ
559デフォルトの名無しさん
2023/10/27(金) 12:30:38.77ID:xuiID3+p もっと良いサイトあったんだけど消滅してる?
http://sunlight.cocolog-nifty.com/sunlight/2005/08/post_1ff6.html
http://www.sm.rim.or.jp/~shishido/tick.html
http://sunlight.cocolog-nifty.com/sunlight/2005/08/post_1ff6.html
http://www.sm.rim.or.jp/~shishido/tick.html
560デフォルトの名無しさん
2023/10/27(金) 22:25:37.09ID:2hH60kIl561デフォルトの名無しさん
2023/10/27(金) 22:44:06.00ID:nnq2nBUF web上で再発明するの好きなやつ多いよね
でも失敗率高めじゃないか?
でも失敗率高めじゃないか?
562デフォルトの名無しさん
2023/10/28(土) 14:23:38.78ID:AMpKEF3U 自己鍛錬で再発明するのは好きにすればいいがそれでサーチエンジンの上位を占拠するのはマジ迷惑だ
563453
2023/10/28(土) 18:50:08.51ID:U0JINWpQ >>548 c
https://ideone.com/Rp476I
・ノードへのポインタとしてリストを表現していた(>>548)のを廃止
・共用体でリストを表現したことによりBoxの位置?がRust版(>>453)と同じに
・特に意味もなくループ文を再帰に置き換え
https://ideone.com/Rp476I
・ノードへのポインタとしてリストを表現していた(>>548)のを廃止
・共用体でリストを表現したことによりBoxの位置?がRust版(>>453)と同じに
・特に意味もなくループ文を再帰に置き換え
564デフォルトの名無しさん
2023/10/29(日) 12:47:29.07ID:IsQ6p7Vf uBlacklist が猿人検出阻止してくれるそうだ
sejuku とか techacademy とか KENTA とか入れると良い
sejuku とか techacademy とか KENTA とか入れると良い
565デフォルトの名無しさん
2023/11/03(金) 14:51:57.32ID:fSSaeY5g === 複製おじさん(通称複おじ)について ===
Rustスレを中心に活動し、2023年4月現在で1年以上ム板に住み着くRustacean。無自覚な荒らし。
Rustスレでは、基本的に他住民の意見を聞いて糧とすることなく、自らのコードが最善であると、ID変更自演を交えいつまでも主張し続ける。
同スレで「所有権が複製される」という違和感のある表現を、「違和感がある」とする他住民の意見をすべて否定してしつこく擁護し続けたことから、「複製おじさん」というあだ名が付けられた。
それ以外のム板スレでは、基本的に他住民の意見を聞いて糧とすることなく、Rustこそが最善であると、ID変更自演を交えいつまでも主張し続ける。
その基本戦術は、「GC言語は遅い」の一声でC/C++/Rust以外の言語を否定し、残ったC/C++は安全ではないので、Rustが最善であるとするもの。
しかしながら、Rust以外の言語に関しては、正当な批判を展開するのに十分な知識を持っているとは言いがたい。
本スレPart1では、C++の問題点を指摘しようとして多数の誤り・知識不足を露呈することとなった。特にしつこく食い下がったのが「動的ディスパッチ」に関する誤解である。
https://mevius.5ch.net/test/read.cgi/tech/1677286186/786-799(ID:Evbafc70とID:RiLc+pIfが複製おじさんであると考えられている)
要約すると、通常「条件分岐」と呼ばれるものを「動的ディスパッチ」と呼ぶのが正しいと主張し続けたのである。
常識的にはあり得ない誤解だが、提示されたC++のコードが自らの主張(C++にはパターンマッチが無い)に不都合であると感じたためか、C++のコードを正しく読み解くことができないにもかかわらず脊髄反射的に否定してしまい、その根拠として誤った論理をこじつけてしまったものと思われる。
ちなみにこの後、同種の誤解を持って書き込むID:wHEiYRW7(これはID使用歴的に複製おじさんとは考えにくい)に対して、正しい理解に基づく指摘を行う単発IDが複数出現するが、この中にも複製おじさんが多数含まれていると考えられている。
このように自分の誤りを認識した場合、それを認める書き込みは決して行わず、別人の振りをして最初から正しく理解していた体を装うのも複製おじさんの特徴である。
Rustスレを中心に活動し、2023年4月現在で1年以上ム板に住み着くRustacean。無自覚な荒らし。
Rustスレでは、基本的に他住民の意見を聞いて糧とすることなく、自らのコードが最善であると、ID変更自演を交えいつまでも主張し続ける。
同スレで「所有権が複製される」という違和感のある表現を、「違和感がある」とする他住民の意見をすべて否定してしつこく擁護し続けたことから、「複製おじさん」というあだ名が付けられた。
それ以外のム板スレでは、基本的に他住民の意見を聞いて糧とすることなく、Rustこそが最善であると、ID変更自演を交えいつまでも主張し続ける。
その基本戦術は、「GC言語は遅い」の一声でC/C++/Rust以外の言語を否定し、残ったC/C++は安全ではないので、Rustが最善であるとするもの。
しかしながら、Rust以外の言語に関しては、正当な批判を展開するのに十分な知識を持っているとは言いがたい。
本スレPart1では、C++の問題点を指摘しようとして多数の誤り・知識不足を露呈することとなった。特にしつこく食い下がったのが「動的ディスパッチ」に関する誤解である。
https://mevius.5ch.net/test/read.cgi/tech/1677286186/786-799(ID:Evbafc70とID:RiLc+pIfが複製おじさんであると考えられている)
要約すると、通常「条件分岐」と呼ばれるものを「動的ディスパッチ」と呼ぶのが正しいと主張し続けたのである。
常識的にはあり得ない誤解だが、提示されたC++のコードが自らの主張(C++にはパターンマッチが無い)に不都合であると感じたためか、C++のコードを正しく読み解くことができないにもかかわらず脊髄反射的に否定してしまい、その根拠として誤った論理をこじつけてしまったものと思われる。
ちなみにこの後、同種の誤解を持って書き込むID:wHEiYRW7(これはID使用歴的に複製おじさんとは考えにくい)に対して、正しい理解に基づく指摘を行う単発IDが複数出現するが、この中にも複製おじさんが多数含まれていると考えられている。
このように自分の誤りを認識した場合、それを認める書き込みは決して行わず、別人の振りをして最初から正しく理解していた体を装うのも複製おじさんの特徴である。
566デフォルトの名無しさん
2023/11/03(金) 20:56:04.34ID:uUmiO3VU Generatorはコードがごちゃっとしてたからgen fn/blockはありがたいな
567デフォルトの名無しさん
2023/11/03(金) 22:49:04.51ID:Q6dMbwrG 2024 editionから?
568デフォルトの名無しさん
2023/11/04(土) 04:29:37.91ID:xhYE5yZM Rustの学習を始めたが、所有権面倒くさい。まあでも安全性は高められそうな感じはする。
569デフォルトの名無しさん
2023/11/04(土) 12:29:53.92ID:eFHrirh7 Better C的なRustが欲しい
C++と張り合って仕様が複雑になってる
C++と張り合って仕様が複雑になってる
570デフォルトの名無しさん
2023/11/04(土) 12:45:03.68ID:whQSHNtc571デフォルトの名無しさん
2023/11/04(土) 13:26:02.22ID:ocaBqo/v Rust は別に C++ と張り合ってなんかいないよ。
現実に使うものはどうやったってどこかで汚くなるってだけ。
綺麗なものは使われてないものだ。
現実に使うものはどうやったってどこかで汚くなるってだけ。
綺麗なものは使われてないものだ。
572デフォルトの名無しさん
2023/11/04(土) 14:22:45.66ID:nDDUhOSB573デフォルトの名無しさん
2023/11/05(日) 00:55:20.60ID:Frni44mO >>569
Carbon
Carbon
574デフォルトの名無しさん
2023/11/05(日) 13:27:00.92ID:bq/z7Mod >>567
「gen」予約keyword化はそうだね
「gen」予約keyword化はそうだね
575デフォルトの名無しさん
2023/11/09(木) 15:19:57.39ID:j64EPVX0 すまんが、VSCode上から/examples下にあるものをデバッグしたい場合ってどうやんの?
他人の作ったクレートのコードを読む上で、これを楽にできると個人的にはありがたいんだけど・・・・
他人の作ったクレートのコードを読む上で、これを楽にできると個人的にはありがたいんだけど・・・・
576デフォルトの名無しさん
2023/11/09(木) 22:37:41.41ID:vNSbYVSe バージョンと拡張機能によりそうだけど自分の環境(Windows)だと
examples内でもfn main()の上に
|> Run | Debug
みたいなinlayが表示されてとりあえずそこからデバッグ実行できた
設定作ればほかの起動方法もあるはず
たぶんrust-analyserの機能だけどデバッガは環境依存だからわからん
examples内でもfn main()の上に
|> Run | Debug
みたいなinlayが表示されてとりあえずそこからデバッグ実行できた
設定作ればほかの起動方法もあるはず
たぶんrust-analyserの機能だけどデバッガは環境依存だからわからん
577デフォルトの名無しさん
2023/11/12(日) 02:38:23.29ID:O0gb6uIB gen はいわゆる協調スレッドなのか。
言語機能として取り込むにはちょっと豪華すぎる気もするな。
言語機能として取り込むにはちょっと豪華すぎる気もするな。
578デフォルトの名無しさん
2023/11/12(日) 04:55:58.85ID:2kP6dQwH genはasyncと同じでコルーチンだよね?
そしてasyncと同じく単純な状態マシンで実装だよね?
そしてasyncと同じく単純な状態マシンで実装だよね?
579デフォルトの名無しさん
2023/11/12(日) 07:45:09.87ID:sBWcqg0h >>576
ありがとう!バッチリできたぜ!!!
ありがとう!バッチリできたぜ!!!
580あぼーん
NGNGあぼーん
581デフォルトの名無しさん
2023/11/12(日) 11:30:27.32ID:cviedAAA >>580
既にやってるよ
既にやってるよ
582デフォルトの名無しさん
2023/11/14(火) 12:58:29.06ID:SRCspH78583デフォルトの名無しさん
2023/11/19(日) 15:31:52.34ID:J3g/JpQ/ rust初心者です。
cだとポインタに対してキャストすることで完全にプログラマ任せのキャストが出来ます。
例えば文字列を参照するポインタを強引に数値として解釈させるなど、好きなように出来ます。
rustでは簡単に調べたところparse().unwrap()などが必要だそうです。
rustはcのようにバイナリフォーマットをプログラマ任せにして自由にキャストさせる習慣はないということでしょうか?
cだとポインタに対してキャストすることで完全にプログラマ任せのキャストが出来ます。
例えば文字列を参照するポインタを強引に数値として解釈させるなど、好きなように出来ます。
rustでは簡単に調べたところparse().unwrap()などが必要だそうです。
rustはcのようにバイナリフォーマットをプログラマ任せにして自由にキャストさせる習慣はないということでしょうか?
584デフォルトの名無しさん
2023/11/19(日) 16:23:14.27ID:/G2k3fWt あるよ
585デフォルトの名無しさん
2023/11/19(日) 16:29:48.57ID:eJPqaRZx #[repr(C)]
as *const T
as *mut T
as usize
bytemuck
slice::from_raw_parts
as *const T
as *mut T
as usize
bytemuck
slice::from_raw_parts
586デフォルトの名無しさん
2023/11/19(日) 16:46:38.60ID:ib2hIQe1 バイナリや文字列と内部表現・の相互変換(シリアライズとデシリアライズ)ならば
Rustではdeser crateファミリーを使って専業分離することが多いね
Rustではdeser crateファミリーを使って専業分離することが多いね
587デフォルトの名無しさん
2023/11/19(日) 18:17:50.06ID:b3b61WiC シリアライズ関連のクレートを使った方が楽だし、もうちょっと簡易的にやる場合でも from_le_bytes などの組み合わせで安全にやれるから不必要にプログラマの責任で管理するべきではないよ。
C でもいまどきは高レイヤのプログラムならそんなに気軽に未定義の型変換はしない。(もっとも、高レイヤではあまり C を使わないけど)
C でもいまどきは高レイヤのプログラムならそんなに気軽に未定義の型変換はしない。(もっとも、高レイヤではあまり C を使わないけど)
588デフォルトの名無しさん
2023/11/19(日) 18:43:57.48ID:ib2hIQe1 ごめん、アホなスペルミスしてる
deserでなくてserde
あとserde_bytesやbincodeを併用
deserでなくてserde
あとserde_bytesやbincodeを併用
589デフォルトの名無しさん
2023/11/19(日) 23:58:07.78ID:J3g/JpQ/ 少し調べてより明確に言語化出来ました。
Rustはゼロコストのserderができますか?
Cだとしばしばそれができます。構造体の要素次第ですが。
で、調べてみるとrkyvというフレームワークが近いことを可能にしているようです。
ゼロコピーと謳っていますが、何らかの演算コストが生じているのかどうか。
Cなら構造体を注意深く設計すればキャスト一発で実行時コストゼロでserderが完了するのです。
Rustはゼロコストのserderができますか?
Cだとしばしばそれができます。構造体の要素次第ですが。
で、調べてみるとrkyvというフレームワークが近いことを可能にしているようです。
ゼロコピーと謳っていますが、何らかの演算コストが生じているのかどうか。
Cなら構造体を注意深く設計すればキャスト一発で実行時コストゼロでserderが完了するのです。
590デフォルトの名無しさん
2023/11/20(月) 02:05:15.84ID:ilBq5gGe591デフォルトの名無しさん
2023/11/20(月) 02:16:16.40ID:UjbzCz3W592デフォルトの名無しさん
2023/11/20(月) 02:16:45.62ID:K0+PyRHv #[repr(C)]付けてstruct/enum/unionをCと同じ使い方すればC互換のレイアウトになるはず
593デフォルトの名無しさん
2023/11/20(月) 06:49:29.19ID:dNsGQu4G >>589
Cと同じことがしたいだけならrepr(C)で構造体定義して
std::mem::transmuteでキャストすればいい
rkyvみたいなフレームワークはもっと高度なデータ型(ハッシュマップとか)で同じことをやるためのもの
Cと同じことがしたいだけならrepr(C)で構造体定義して
std::mem::transmuteでキャストすればいい
rkyvみたいなフレームワークはもっと高度なデータ型(ハッシュマップとか)で同じことをやるためのもの
594デフォルトの名無しさん
2023/11/20(月) 08:53:23.51ID:LwcosZwN 抽象度の高いレイヤを挟んでもかなり最適化で消えるよ。
逆に自由なキャストのコストはゼロではない。
ハードウェアの癖、処理系の癖を理解している人がうまくチューニングすれば性能はあがることも多いけどキャストして直接に読み替えたら実行時コストが低くなるとは限らない。
逆に自由なキャストのコストはゼロではない。
ハードウェアの癖、処理系の癖を理解している人がうまくチューニングすれば性能はあがることも多いけどキャストして直接に読み替えたら実行時コストが低くなるとは限らない。
595デフォルトの名無しさん
2023/11/20(月) 13:51:58.80ID:MS7hPbOQ >抽象度の高いレイヤを挟んでもかなり最適化で消えるよ。
それはもちろん判ってて
その上で厳密にゼロじゃないから問題視してんじゃん
それはもちろん判ってて
その上で厳密にゼロじゃないから問題視してんじゃん
596デフォルトの名無しさん
2023/11/20(月) 15:34:39.51ID:JXHwx0JF 具体的にRustを使うメリットよりデメリットが上回る例があるならそれを出さないと話がわからない
色んなバイナリプロトコルもRustで実装されて問題になっていない
色んなバイナリプロトコルもRustで実装されて問題になっていない
597デフォルトの名無しさん
2023/11/20(月) 17:27:20.27ID:cTETCu/a transmuteだとalign合わせるためにコピーする場合がありそうだから
本気でCと同じゼロコストで読み替えするならポインタ(参照じゃない)をとって
as *const T(as *mut T)で目的の型にキャストして参照(&T, &mut T)に戻す感じかな
どうせunsafeだからunion使う方がいいかもしれないけど
本気でCと同じゼロコストで読み替えするならポインタ(参照じゃない)をとって
as *const T(as *mut T)で目的の型にキャストして参照(&T, &mut T)に戻す感じかな
どうせunsafeだからunion使う方がいいかもしれないけど
598デフォルトの名無しさん
2023/11/20(月) 17:54:17.33ID:PG0EBfXZ Cから移植する場合でtagged unionをうまく移植する方法はないだろうか
unsafe使わずに
struct tagged_value {
enum tag t;
union {
hoge h;
fuga f;
} u;
};
みたいなの
unsafe使わずに
struct tagged_value {
enum tag t;
union {
hoge h;
fuga f;
} u;
};
みたいなの
599デフォルトの名無しさん
2023/11/20(月) 18:11:32.44ID:NaWZknyA >>598
enumで
enumで
600デフォルトの名無しさん
2023/11/20(月) 18:17:00.50ID:ieYqPgSw >>595
最適化の話は「どちらにしてもゼロとは限らない」という話のための前ふり。
仮にその場所に限ってはゼロになったとしても周囲の最適化の足を引っ張ることもある。
総合的な速さを出すには諸々を加味したチューニングが必要なので単純にキャストしたほうが速いとは考えるなというのが主旨。
もちろん諸々を考慮して検証した上で実際に速くなることが確かめられるならそれを否定したりはしないよ。割に合うことは少ないとも思うけど。
最適化の話は「どちらにしてもゼロとは限らない」という話のための前ふり。
仮にその場所に限ってはゼロになったとしても周囲の最適化の足を引っ張ることもある。
総合的な速さを出すには諸々を加味したチューニングが必要なので単純にキャストしたほうが速いとは考えるなというのが主旨。
もちろん諸々を考慮して検証した上で実際に速くなることが確かめられるならそれを否定したりはしないよ。割に合うことは少ないとも思うけど。
601デフォルトの名無しさん
2023/11/20(月) 21:13:04.59ID:ojqzhkRS ちゃんと考えるよ。
角度とか
角度とか
602デフォルトの名無しさん
2023/11/20(月) 23:02:22.90ID:QHUUbGYT 重要なのは、Rustで書くと遅くなる(コストがかかる)パターンを、実際に発見できたのかどうか?
もしそのようなパターンを発見できて、(Cによる)速い方法でも安全性に問題がないのならば、
Rustの歴史ではそれを(必要なら)unsafeで記述してライブラリの中に安全に閉じ込めてきた
そのためRustで一般プログラマーがunsafeを使わずに記述しても、ほとんどのケースでCと同等の速さが出る
もしそのようなパターンを発見できて、(Cによる)速い方法でも安全性に問題がないのならば、
Rustの歴史ではそれを(必要なら)unsafeで記述してライブラリの中に安全に閉じ込めてきた
そのためRustで一般プログラマーがunsafeを使わずに記述しても、ほとんどのケースでCと同等の速さが出る
603デフォルトの名無しさん
2023/11/21(火) 04:05:24.41ID:60zWiP9n 個人的な懸念点は処理のゼロコピー化においてCに劣るのか?という点
Rust界隈でゼロコピーフレームワークが色々あるがどういう工夫が行われているのか
調査は時間がかかりすぎるからやらないw
Rust界隈でゼロコピーフレームワークが色々あるがどういう工夫が行われているのか
調査は時間がかかりすぎるからやらないw
604デフォルトの名無しさん
2023/11/21(火) 04:13:54.83ID:60zWiP9n データ転送はCPU上の演算と比較してかなり遅い処理なので
ゼロコピーで劣ると一部の処理でかなり遅くなる
そしてベンチマーク系のプログラムではゼロコピーはあまり問題にならない。
ゼロコピーで劣ると一部の処理でかなり遅くなる
そしてベンチマーク系のプログラムではゼロコピーはあまり問題にならない。
605デフォルトの名無しさん
2023/11/21(火) 04:16:28.76ID:60zWiP9n ゼロコピーが問題になるのはserder、通信
あとたぶんOSの実装でも問題になるはず
だから数学的計算というよりはシステム間の垣根を超えるようなところで問題になる
RustがベンチマークでC並といっても、あくまで数値計算系の話
あとたぶんOSの実装でも問題になるはず
だから数学的計算というよりはシステム間の垣根を超えるようなところで問題になる
RustがベンチマークでC並といっても、あくまで数値計算系の話
606デフォルトの名無しさん
2023/11/21(火) 08:42:33.89ID:UPhRR3yr ゼロコピーってのはオリジナルのバッファ以外には追加でヒープアロケーションをせずに処理をするという意味
607デフォルトの名無しさん
2023/11/21(火) 10:07:46.27ID:ZzleWc4x ウザイからttf_parserのコードでも読んでくれば
608デフォルトの名無しさん
2023/11/21(火) 11:00:12.68ID:HSO31doi unsafe という名前が誤解の元になってる
unsafe に描く内容って結局安全な内容しか描いてはいけない訳だ
そして unsafe は使ってはいけない機能ではなくむしろ積極的に使って良い機能
unsafe に描く内容って結局安全な内容しか描いてはいけない訳だ
そして unsafe は使ってはいけない機能ではなくむしろ積極的に使って良い機能
609デフォルトの名無しさん
2023/11/21(火) 11:55:27.06ID:pNsPVZam こういうやつがいるからこそunsafeという名前に価値があるんだよな
610デフォルトの名無しさん
2023/11/21(火) 12:57:54.74ID:4vFkathr >>605
それらRustで書くことで遅くなった事例がない
むしろ例えばCDN世界トップのCloudflareは
Cで書かれたnginxを全面的にRustで作り直すことで
CPUリソースとメモリリソースを1/3に削減することに成功している
それらRustで書くことで遅くなった事例がない
むしろ例えばCDN世界トップのCloudflareは
Cで書かれたnginxを全面的にRustで作り直すことで
CPUリソースとメモリリソースを1/3に削減することに成功している
611デフォルトの名無しさん
2023/11/21(火) 15:25:53.24ID:OibZ9mzY Cloudflareのやつはnginxがスレッドベースで処理をブロッキングしてしまう(CPU時間とメモリを占有してしまう)から
マイクロスレッドで作り直した=基本設計を大きく変更したというだけで、Rustだからパフォーマンスが向上したというわけではない
マイクロスレッドで作り直した=基本設計を大きく変更したというだけで、Rustだからパフォーマンスが向上したというわけではない
612デフォルトの名無しさん
2023/11/21(火) 16:18:31.31ID:Pb5WKpvw stdをunsafeで検索するとUnsafeCellしか出てこなくて
unsafeな関数の名前がほとんどuncheckedなのは
let x = unsafe { do_something_unsafe() };
だとアホっぽいからかな
unsafeな関数の名前がほとんどuncheckedなのは
let x = unsafe { do_something_unsafe() };
だとアホっぽいからかな
613デフォルトの名無しさん
2023/11/21(火) 18:24:54.78ID:Fzh9NpIU 検索方法が間違ってる
そしてuncheckedはunsafeとは意味が違う
そしてuncheckedはunsafeとは意味が違う
614デフォルトの名無しさん
2023/11/21(火) 23:10:58.28ID:lumDzvUR615デフォルトの名無しさん
2023/11/21(火) 23:28:16.17ID:u3FDf3nL 外部入力をtransmuteとか地雷臭がハンパない
どうぞご安全に〜
どうぞご安全に〜
616デフォルトの名無しさん
2023/11/21(火) 23:39:45.33ID:lumDzvUR transmute使わなくてすむsafeなライブラリ関数が揃ってるからね
617デフォルトの名無しさん
2023/11/25(土) 09:15:59.95ID:rKTwm3uz Rust って同じ変数名なのに違う型に出来るよね?
同じスコープで再定義出来ると言うか上書き出来る
名前が変わらないから便利って思うかも知れないが
気を付けてソース観ていないと途中で型が変わってるやん!ってなる
なかなか嫌な構文だね
可読性低下しない?勘違いしそう
同じスコープで再定義出来ると言うか上書き出来る
名前が変わらないから便利って思うかも知れないが
気を付けてソース観ていないと途中で型が変わってるやん!ってなる
なかなか嫌な構文だね
可読性低下しない?勘違いしそう
618デフォルトの名無しさん
2023/11/25(土) 09:18:00.86ID:rKTwm3uz あと上書きされたとき前のリソースは上書きされたタイミングで消えてない
明示的に drop していれば消えるがしなかったら実は生きたまま
迷惑仕様じゃないかな
明示的に drop していれば消えるがしなかったら実は生きたまま
迷惑仕様じゃないかな
619デフォルトの名無しさん
2023/11/25(土) 10:20:51.65ID:ytuM+CNS >>618
同じスコープ内でシャドウィングする時は意味的に同じものを入れるようにする
前のリソースがすぐにドロップされないのはシャドウィング時にそのリソースへの参照を使う事で不要なアロケーションを避けられるから
同じスコープ内でシャドウィングする時は意味的に同じものを入れるようにする
前のリソースがすぐにドロップされないのはシャドウィング時にそのリソースへの参照を使う事で不要なアロケーションを避けられるから
620デフォルトの名無しさん
2023/11/25(土) 12:38:39.68ID:EEEndPKs シャドウイングされた時に勝手に消える方が迷惑仕様だな
その時点で他から参照されてるかもしれないし
その時点で他から参照されてるかもしれないし
621デフォルトの名無しさん
2023/11/25(土) 13:46:10.54ID:V6cVkJ+M >>617
Rustはプログラマーに優しい強い静的型付けの言語だから型が違えばエラーになるため混乱もなく大丈夫
また、型変換するたびに別の変数名にしなければいけなかった言語よりも便利でプログラミングも快適だよ
Rustはプログラマーに優しい強い静的型付けの言語だから型が違えばエラーになるため混乱もなく大丈夫
また、型変換するたびに別の変数名にしなければいけなかった言語よりも便利でプログラミングも快適だよ
622デフォルトの名無しさん
2023/11/25(土) 16:27:51.72ID:81rqCYd0 Rustの欠点は誰も使ってない所だけ
623デフォルトの名無しさん
2023/11/25(土) 17:24:40.07ID:4EAT4Ovg >>622
どうしてそんな悲しいこと言うの!
どうしてそんな悲しいこと言うの!
624デフォルトの名無しさん
2023/11/25(土) 18:44:41.46ID:vlc4nTzz 誰も使ってないのってカッコいいな
625デフォルトの名無しさん
2023/11/25(土) 23:55:37.33ID:B979bnCG 俺だけが知っている
626デフォルトの名無しさん
2023/11/26(日) 09:12:21.52ID:k38CbPq9 ユーザーが少ないのはアドバンテージだってポール・グレアムも言ってる。
627デフォルトの名無しさん
2023/11/26(日) 09:20:04.49ID:OE1+8Rl8 GAFAMで使われるようになった時点で言語として消え去る可能性は十分下がったし
別にこれ以上使う人増えなくてもいいんじゃないかな
日本のSIerにまで広まるなんてまずないだろうし
別にこれ以上使う人増えなくてもいいんじゃないかな
日本のSIerにまで広まるなんてまずないだろうし
628デフォルトの名無しさん
2023/11/26(日) 10:05:44.56ID:Deg4O8Si 言語じゃないけどBlenderみたいにいつの間にか覇権を取ってたりすることもあり得る
629デフォルトの名無しさん
2023/11/26(日) 11:39:45.82ID:d/KzVdDP おまえが使ってるのに誰も使ってないって可笑しなことを言うのな
もしかしておまえも使ってないだろ?正直に言え
もしかしておまえも使ってないだろ?正直に言え
630デフォルトの名無しさん
2023/11/26(日) 11:42:35.06ID:Deg4O8Si 「俺の周りじゃ」
631デフォルトの名無しさん
2023/11/26(日) 12:18:50.10ID:d/KzVdDP ぼっちってこと?
632デフォルトの名無しさん
2023/11/26(日) 12:23:12.23ID:oOwLuMql Rust「きゃー、私のために争わないで
633デフォルトの名無しさん
2023/11/26(日) 12:32:50.97ID:iMOX0Yuj クズがこっちに移動してきたか
まかせろ
まかせろ
634デフォルトの名無しさん
2023/11/26(日) 13:04:33.25ID:oOwLuMql crateのバージョンが1.0になってないのが多いから、まだまだだなーって思う
635デフォルトの名無しさん
2023/11/27(月) 02:23:02.91ID:hnitA9Px ぼっちざRust
636デフォルトの名無しさん
2023/11/27(月) 03:19:17.53ID:shAL5QFI >>635
ちょっとかっこいいじゃん
ちょっとかっこいいじゃん
637デフォルトの名無しさん
2023/11/27(月) 10:05:45.61ID:7/k6/GSg638デフォルトの名無しさん
2023/11/28(火) 08:31:02.24ID:t7+ip2Xg Rustって名前が良くない
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 産経新聞「高市早苗の答弁さぁ……思慮が足りてなくね?官僚と詰めずに思いつきで話しているでしょ」 [175344491]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
