[過去ログ] Rust part24 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
978
(1): デフォルトの名無しさん [sage] 2024/07/27(土) 11:02:49.38 ID:WfV9QQMJ(1) AAS
LazyLockよさそうね
979
(3): デフォルトの名無しさん [sage] 2024/07/27(土) 18:38:25.11 ID:U5WpGSyZ(1/2) AAS
俺の今日のハマりポイントを紹介

bindgenにC++のコンストラクタを作らせると、データが壊れる
よく調べたら公式ドキュメントのConstructor semanticsに書いてあった
外部リンク[html]:rust-lang.github.io

コンストラクタを抜けたとき、C++とちがってRustは値をムーブしちゃうので
struct内部を参照したポインタが変なところを参照してバグる
980
(2): デフォルトの名無しさん [] 2024/07/27(土) 19:30:58.99 ID:s18eFGvS(1) AAS
C++も部分的に使えるとはいえ、FFIするならCのAPIにしておく方が無難な気はする
981: デフォルトの名無しさん [sage] 2024/07/27(土) 20:04:50.53 ID:U5WpGSyZ(2/2) AAS
>>980
bindgenはFirefoxがプロダクトでたくさん使ってるって聞いて、いけると思ったんだ
Firefoxは大半がC++だから
982: デフォルトの名無しさん [] 2024/07/28(日) 15:27:45.35 ID:v6kdbv5j(1/2) AAS
>>978
LazyLockさようなら
に観えた
983: デフォルトの名無しさん [sage] 2024/07/28(日) 15:29:40.57 ID:v6kdbv5j(2/2) AAS
>>979
RustとC++は相性最悪
RustとCは相性良いバッチリ
984
(1): デフォルトの名無しさん [sage] 2024/07/30(火) 01:24:35.90 ID:xgbf/AIH(1) AAS
>>979
この件って、RustはC++と比べて無駄にムーブするから遅いってこと?
985
(3): デフォルトの名無しさん [sage] 2024/07/30(火) 06:04:09.29 ID:RHAjweCG(1) AAS
無駄な移動は消える
cargo asmで生成コードを見ることでそれを確認できる
移動前と移動後のアドレスを表示させて最適化を阻害することで元は別々となる例も確認できる
986
(1): デフォルトの名無しさん [] 2024/07/30(火) 12:06:12.26 ID:tiWzrJ23(1) AAS
>>984

>コンストラクタを抜けたとき、C++とちがってRustは値をムーブしちゃうので
>struct内部を参照したポインタが変なところを参照してバグる

って書いてるのに、読解力無い人?
987
(1): デフォルトの名無しさん [sage] 2024/07/30(火) 19:02:27.28 ID:dzXOiSL/(1) AAS
>>985
移動じゃなくてムーブね
ここまでのレスで使われてる述語を踏襲すればいいよ
988
(1): デフォルトの名無しさん [sage] 2024/07/30(火) 20:13:33.28 ID:VUdF4pDl(1) AAS
>>985
最適化のかかり具合でバグが消えたり現れたりする嫌なパターンだな
989
(1): デフォルトの名無しさん [sage] 2024/07/30(火) 20:41:43.84 ID:+5mpqNgW(1) AAS
>>986
Rustを使えばそんなバグは起きない
参照のライフタイムは参照先より長くなることがコンパイル時点で保証される

>>988
Rustならばそこでバグは起きようがない
990
(1): デフォルトの名無しさん [] 2024/07/30(火) 22:41:22.15 ID:GjQxUZ/0(1) AAS
>>989
本人じゃないのに出しゃばらせて頂きますが…。

Rust単体じゃなくて、C++との相性問題ですよ。相性最悪って書いてるんだから。
起きようがないじゃなくて、実際に起きてるらしいじゃないですか。

最適化で治るのなら大したことじゃなくても、デバッグ時にハマるの確実な類のバグ。

将来的に全部Rustで書けば起きないような問題も、過渡期の今は良く起きます。

「Rustを使えば」「Rustなら」。
そうでしょうけど、実際問題ライブラリがなければ既存のC/C++ライブラリ使う場面は多々あるでしょう。
(枯れたライブラリならなおさら)

これはRustに限らず、後続の言語全てが抱えている問題です。
991: デフォルトの名無しさん [] 2024/07/30(火) 22:49:06.91 ID:MqLM+D1V(1/3) AAS
最適化じゃなくて単に移動の問題
Box::newで要素を直接ヒープに作れない (いちどスタックに作られてからコピーされる) のと同じで、コンストラクタを抜ける前に構造体が maybeuninit::assume_init で移動する
その上で構造体のアドレスがC++のメソッドにthisポインタとして渡される際に問題を引き起こす、というように思える
だとすると最適化の有無は関係なく起こる気がする

ついでにいえば >>987 もあまり意味のない発言で、移動はムーブの訳語でもある (例えばC++の仕様の訳語に移動コンストラクタという表現がある) し、そもそもこの問題はムーブセマンティクスによるものでもない
これはStringやVecが持つリソースを所有権ごと移動することで効率的に別の変数に割り当てるもので、構造体のアドレスのようなローレベルなものとは違うかと
992: デフォルトの名無しさん [] 2024/07/30(火) 22:59:00.85 ID:MqLM+D1V(2/3) AAS
移動とムーブが仕様として別物だというなら、移動は英語でどう表現されてるんだ?
993: デフォルトの名無しさん [sage] 2024/07/30(火) 23:00:06.83 ID:L/ylOhaJ(1) AAS
>>990
それはRust単体では全く発生しない問題だね
C++とRustを併用する時にRustの知識を持たない人がハマるという話
FFI部分は両者の概念と挙動の違いの知識を持った人が作るべきだね
994
(1): デフォルトの名無しさん [sage] 2024/07/30(火) 23:13:56.95 ID:EnloT7kO(1) AAS
>>979
>>値をムーブしちゃうのでstruct内部を参照したポインタが変なところを参照してバグる

Rustでそのような自己参照はムーブでライフタイム切れとなるためバグは発生しなくて
自己参照を保ちたいならば値がムーブしなければよくて
値がムーブしないためにはスタック上でそのまま使うかヒープ上に確保して使えばよくて
それを保証するためにRustではPinという枠組みがあって安全に取り扱えるようになってるよ
995: デフォルトの名無しさん [] 2024/07/30(火) 23:19:18.00 ID:MqLM+D1V(3/3) AAS
>>994
bindgenの作者に言ってあげればいいと思うよ
ついでに改善したコードをPRしてコントリビュートしてみてはどうだろう
使用者のミスを擦るよりもずっと有意義なはず
996: デフォルトの名無しさん [] 2024/07/30(火) 23:48:00.88 ID:dZ3/RfBM(1) AAS
同意
997: デフォルトの名無しさん [] 2024/07/31(水) 11:32:49.64 ID:yHR2oE13(1/4) AAS
結合が密過ぎないかこの言語
998: デフォルトの名無しさん [] 2024/07/31(水) 11:35:31.65 ID:yHR2oE13(2/4) AAS
>将来的に全部Rustで書けば起きないような問題

さっさと仕事しろおまいらってことですね判ります
999: デフォルトの名無しさん [] 2024/07/31(水) 12:10:03.24 ID:yHR2oE13(3/4) AAS
>>985
Pin
1000: デフォルトの名無しさん [] 2024/07/31(水) 12:10:59.00 ID:yHR2oE13(4/4) AAS
Pin<Arc<T>>
1001
(1): 1001 [] ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 65日 5時間 29分 33秒
1002
(1): 1002 [] ID:Thread(2/2) AAS
5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。

───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。

▼ UPLIFT会員登録はこちら ▼
外部リンク:uplift.5ch.net

▼ UPLIFTログインはこちら ▼
2ch板:login
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.683s*