26/06/24 07:58:19.92 dlYoiEh90.net
ここからC++大逆転のシナリオを教えて
628:デフォルトの名無しさん
26/06/24 08:10:52.82 biqyVSqi0.net
圧縮時(伸長時?)のCPU不具合によるチェックサム異常を検出した時、Cならそのままエラー処理ができてRustはクラッシュするしかない様に読めてしまうのだが
629:デフォルトの名無しさん
26/06/24 10:55:46.62 OpAaI1qg0.net
>>627
エプスタインみたいな人がRust製アプリで秘密情報を管理していたのに、中国やNSAが勝手に共有していたと分かれば、エロい人達が自主的にRust利用を止めるんじゃね
630:デフォルトの名無しさん
26/06/24 11:42:26.04 WuleN+KY0.net
Rustは北朝鮮
C++は欧米
631:デフォルトの名無しさん
26/06/24 12:00:49.11 VYeL/Lve0.net
>>628
そうっぽいね
アルゴリズム的にpanicになるのは別にいいと思うんだけど
それがページ全体のクラッシュだったりブラウザのクラッシュにつながるのは
Rust特有のpanicハンドリングの問題だな
632:デフォルトの名無しさん
26/06/24 12:10:23.09 VYeL/Lve0.net
バグ回避はcopy_from_slice使って最初からまとめて書けばいいと思うんだけど性能に差が出るのかね?
buf[0..2].copy_from_slice(&dist.to_le_bytes());
だと
mov word ptr [rcx + rdi], si
let [dist1, dist2] = dist.to_le_bytes();
buf[0] = dist1;
buf[1] = dist2;
だと
mov byte ptr [rsi + rdi], cl
mov byte ptr [rsi + rdi + 1], ch //<-CPUバグの引き金
633:デフォルトの名無しさん
26/06/25 13:37:18.09 wlWeKQvTH.net
panicしない未定義動作よりもpanic推奨
634:デフォルトの名無しさん
26/06/26 14:24:58.84 grt1FiKda.net
Linux内ならpanicでいいんじゃね。Cでもpanicした方がデバッグ助かる。言語仕様としてのpanicのことなら、どうしてんだろな
635:デフォルトの名無しさん
26/07/02 00:10:30.39 bbwDIcek0.net
Rustでもpanicにするかどうかは自由に決められる
あくまで標準ライブラリがそうするというだけであって、言語仕様的に強制されることはない
C++でもCでもそうだけど、標準ライブラリと言語仕様は分けて考えないと
636:デフォルトの名無しさん
26/07/02 08:00:02.52 IumR4KRb0.net
標準ライブラリを使わないアプリケーション実装なんて考慮する必要はあるのかね
さすがに特殊するすぎるきがするわ。慣習や文化も含めてその言語だろ
637:デフォルトの名無しさん
26/07/02 14:05:47.69 /AOAVSgf6.net
>>636
C / C++ / Rust などはシステムプログラミング言語なので、アプリケーション実装に限定された言語じゃない
638:デフォルトの名無しさん
26/07/02 14:15:17.18 /AOAVSgf6.net
>>631
それは単にスレッドやプロセスを適切に分けてないからだぞ
639:デフォルトの名無しさん
26/07/02 14:59:24.65 UNnKnGw9a.net
CもLinuxカーネル内ではprintfすら使えないからね。OS内の開発で標準ライブラリ使えない。あれはユーザーランド向けのものだ
640:デフォルトの名無しさん
26/07/02 16:51:33.30 EmYmcG1E0.net
そんな事言うならstrncpyのバッファオーバーラン問題はC言語の責任じゃないぞ
641:デフォルトの名無しさん
26/07/02 22:15:12.62 UNnKnGw9a.net
カーネル内で使えるstrncpyは標準ライブラリの仕様だけ真似てるだけだからね。
標準ライブラリでもディコンした方がいいのじゃね
642:デフォルトの名無しさん
26/07/04 00:02:29.54 dR8GJQwH0.net
>>638
そういう問題じゃない
原因はなんであれRustのコードは常にpanicする可能性がある
にもかかわらずpanicが発生した場合にどう処理するかを全く考えていないのが問題
スレッドやプロセスを適切に分けるというだけでは不十分
たぶんそれを理解してないRust開発者が多いから繰り返し同じ問題が起きてる
643:デフォルトの名無しさん
26/07/04 13:54:40.79 C/MUGRLI0.net
Rustはサンプルにunwrap()が多過ぎる
むしろunwrap()禁止で良いくらい
644:デフォルトの名無しさん
26/07/04 17:31:29.06 w7R2fdI70.net
// 初心者
let value = result.unwrap();
// 級位者
let Ok(value) = result else { unreachable!() };
// 有段者
let value = result.unwrap();
645:デフォルトの名無しさん
26/07/06 14:31:30.50 f77KKuP8F.net
let value = result?;
646:デフォルトの名無しさん
26/07/06 14:40:45.38 wKirmoVj0.net
>>642
それはRustについてちゃんと知らないからやね
panic するのは panic してもいい環境で使われる、むしろ panic した方がデータを守れる標準ライブラリの一部機能だけ
言語仕様に panic は組み込まれてないから「常にpanicする可能性がある」は普通にウソ
647:デフォルトの名無しさん
26/07/06 14:42:31.99 wKirmoVj0.net
>>640
そもそもC言語の責任だなんて誰も言ってないぞ
ミスでそれが起こる環境を撲滅しようって話でしかない
>>641
関係ないと思うが