公式
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 part22
https://mevius.5ch.net/test/read.cgi/tech/1705760500/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.2ch.net/test/read.cgi/tech/1514107621/
探検
Rust part23
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2024/02/23(金) 17:37:52.13ID:CheDQupm340デフォルトの名無しさん
2024/03/20(水) 13:48:07.28ID:i9d3tzeg ガベージコレクションのあるスクリプト言語であるPythonですら脆弱性でCVE出まくってるよ
341デフォルトの名無しさん
2024/03/20(水) 14:22:40.25ID:HLjoI2yW これは「メモリ安全」の外の話?中の話?
342デフォルトの名無しさん
2024/03/20(水) 16:11:18.74ID:sC/F3tDJ unsafe使用箇所だからメモリ安全の外だろうな
インタプリタのスタックフレーム参照で毎回境界チェックする実装も微妙だししゃーない
インタプリタのスタックフレーム参照で毎回境界チェックする実装も微妙だししゃーない
343デフォルトの名無しさん
2024/03/20(水) 16:33:56.60ID:pz7pPV/0 jsonの方も?
344デフォルトの名無しさん
2024/03/20(水) 17:50:49.65ID:w9jt/Hdz コード見てみたが言語関係なくダメな書き方の見本ってだけだな
ttps://github.com/wasmi-labs/wasmi/commit/f7b3200e9f3dc9e2cbca966cb255c228453c792f
ttps://github.com/wasmi-labs/wasmi/blob/v0.31.0/crates/wasmi/src/engine/stack/values/mod.rs#L158-L163
修正コードは毎回境界チェックしてるのと同じ
extendする前に必ずreserve呼ばなければいけないとか反省の色が見られない
ttps://github.com/wasmi-labs/wasmi/commit/f7b3200e9f3dc9e2cbca966cb255c228453c792f
ttps://github.com/wasmi-labs/wasmi/blob/v0.31.0/crates/wasmi/src/engine/stack/values/mod.rs#L158-L163
修正コードは毎回境界チェックしてるのと同じ
extendする前に必ずreserve呼ばなければいけないとか反省の色が見られない
345デフォルトの名無しさん
2024/03/20(水) 18:13:46.74ID:ASk8Mk2n extendという名前も実体と違ってバクの素
346デフォルトの名無しさん
2024/03/20(水) 18:19:15.64ID:sC/F3tDJ 修正コードはhotfixでしょ
masterブランチの方は結構手が入ってると思う
masterブランチの方は結構手が入ってると思う
347デフォルトの名無しさん
2024/03/20(水) 18:27:22.61ID:ihbrcjwp その知識やスキルを活かして出世して欲しい
348デフォルトの名無しさん
2024/03/20(水) 20:04:41.25ID:TrbgWl+Z ダメな書き方でもコンパイルが通れば安全なはずなのではw
349デフォルトの名無しさん
2024/03/20(水) 20:32:22.01ID:sC/F3tDJ んなこたない
ダメなunsafeの使い方すれば安全じゃなくてもコンパイルは通せる
ダメなunsafeの使い方すれば安全じゃなくてもコンパイルは通せる
350デフォルトの名無しさん
2024/03/21(木) 01:05:26.83ID:CBfowBe/ 直接の原因はunsafeなメソッドをsafeメソッドにしたこと
unsafeのsafe wrapperの質は大事
今のコードもunsafeの使い方が怪しくて信頼できない
fn get_release_unchecked_mut(&mut self, index: usize) -> &mut UntypedValue {
debug_assert!(index < self.capacity());
// Safety: This is safe since all wasmi bytecode has been validated
// during translation and therefore cannot result in out of
// bounds accesses.
unsafe { self.entries.get_unchecked_mut(index) }
}
unsafeのsafe wrapperの質は大事
今のコードもunsafeの使い方が怪しくて信頼できない
fn get_release_unchecked_mut(&mut self, index: usize) -> &mut UntypedValue {
debug_assert!(index < self.capacity());
// Safety: This is safe since all wasmi bytecode has been validated
// during translation and therefore cannot result in out of
// bounds accesses.
unsafe { self.entries.get_unchecked_mut(index) }
}
351デフォルトの名無しさん
2024/03/21(木) 01:39:19.40ID:t5wrhqh7 >>350
俺んとこもそのコードはよく書くけれど
今回の敗因は引数のindexが生のusizeであること
そこをusize直接ではなくそのラッピングの専用型にする
そしてその専用型が動く範囲が必ず範囲内であることを保証する形で
get_uncheckefのunsafeを使う関数をsafeに仕上げる
俺んとこもそのコードはよく書くけれど
今回の敗因は引数のindexが生のusizeであること
そこをusize直接ではなくそのラッピングの専用型にする
そしてその専用型が動く範囲が必ず範囲内であることを保証する形で
get_uncheckefのunsafeを使う関数をsafeに仕上げる
352デフォルトの名無しさん
2024/03/21(木) 19:05:54.93ID:QWnK+qvS unsafeを適切に使えないプログラマが書くと全然安全じゃないという事?
353デフォルトの名無しさん
2024/03/21(木) 19:57:12.18ID:7RDAu5V5 全然そういう事
Rustで無闇にunsafeを使うのは日本語で無闇に「全然」を使うくらいやばい
Rustで無闇にunsafeを使うのは日本語で無闇に「全然」を使うくらいやばい
354デフォルトの名無しさん
2024/03/21(木) 20:09:58.67ID:gM/gTjZ5355デフォルトの名無しさん
2024/03/21(木) 20:26:53.11ID:1l7zk65j 俺はむやみに「全然」とか「ヤバい」を使ってるけどトラブルになったことはないな
ガンガンunsafe使ってこーぜ!!
ガンガンunsafe使ってこーぜ!!
356デフォルトの名無しさん
2024/03/21(木) 20:28:39.30ID:7RDAu5V5 >>354
それだと単なる自己言及だから352に対する答えとして不十分では
それだと単なる自己言及だから352に対する答えとして不十分では
357デフォルトの名無しさん
2024/03/21(木) 20:45:04.06ID:t5wrhqh7 少なくとも>>350のindex: usizeは
何らかラッピング { index: usize }と別型にすべきところ
まず範囲外のusizeでうっかり使っても型エラーにできる
そしてラッピング型の動作が必ず範囲内に収まるコードであることを注視するだけで安全性を保証できる
何らかラッピング { index: usize }と別型にすべきところ
まず範囲外のusizeでうっかり使っても型エラーにできる
そしてラッピング型の動作が必ず範囲内に収まるコードであることを注視するだけで安全性を保証できる
358デフォルトの名無しさん
2024/03/21(木) 21:05:14.02ID:7RDAu5V5 NonZeroとかNonNullみたいな固定条件ならいいけど
範囲みたいな可変条件だと型だけじゃ厳しいでしょ
別の条件で作られた同じ型の値を使われるかもしれないし
ライフタイムで条件と関連付けるのも限界がある
結局テストパターン増やしてdebug_assert踏むしかない
範囲みたいな可変条件だと型だけじゃ厳しいでしょ
別の条件で作られた同じ型の値を使われるかもしれないし
ライフタイムで条件と関連付けるのも限界がある
結局テストパターン増やしてdebug_assert踏むしかない
359デフォルトの名無しさん
2024/03/21(木) 21:44:37.76ID:t5wrhqh7360デフォルトの名無しさん
2024/03/21(木) 22:18:44.86ID:cOunjWn7 unsafeをsafeでないのにsafeにしておいて
ある型が使い方によってはunsafeになるかもしれないから注視しろってのはちょっとキツイです
ある型が使い方によってはunsafeになるかもしれないから注視しろってのはちょっとキツイです
361デフォルトの名無しさん
2024/03/21(木) 22:27:42.27ID:WuGieKPN 結局プログラマが色々意識してコーディングしないと安全にはならないのね
こういうのもコンパイラがエラーにしてくれてそれを直していけば安全になるものだと思ってたんですけど
こういうのもコンパイラがエラーにしてくれてそれを直していけば安全になるものだと思ってたんですけど
362デフォルトの名無しさん
2024/03/21(木) 23:07:15.31ID:7RDAu5V5 unsafeに手を出さなければ最悪でも暴走する前にpanicで停止する安全性は確保できる
実際は安全の為でもpanicで止まると困るから色々注意しないといけないし
unsafeで余計なチェック省いたり黒魔術使ったりもする
Rustの安全性のサポートは選択と集中がしやすくなる程度で万能ではない
実際は安全の為でもpanicで止まると困るから色々注意しないといけないし
unsafeで余計なチェック省いたり黒魔術使ったりもする
Rustの安全性のサポートは選択と集中がしやすくなる程度で万能ではない
363デフォルトの名無しさん
2024/03/21(木) 23:12:07.53ID:v/mpoJJ8 >>361
unsafeを使わなれば自動的に安全が保証される
unsafeを使うならその関連箇所に人間による安全保証が必要、それ以外は自動的に安全が保証される
C/C++はすべてのコードがunsafe状態なので自動的に安全が保証されるところがない
unsafeを使わなれば自動的に安全が保証される
unsafeを使うならその関連箇所に人間による安全保証が必要、それ以外は自動的に安全が保証される
C/C++はすべてのコードがunsafe状態なので自動的に安全が保証されるところがない
364デフォルトの名無しさん
2024/03/21(木) 23:22:25.34ID:WuGieKPN いつもの人がきたw
結局レベルの低い人が書くとunsafeも不適切に使われて今回のように脆弱性が出てしまうでしょ
Rustであれば安全と思ってる人が多そうなのでかえってunsafeによる脆弱性が見落とされたり発覚しにくくなって問題だと思うんですけど
結局レベルの低い人が書くとunsafeも不適切に使われて今回のように脆弱性が出てしまうでしょ
Rustであれば安全と思ってる人が多そうなのでかえってunsafeによる脆弱性が見落とされたり発覚しにくくなって問題だと思うんですけど
365デフォルトの名無しさん
2024/03/21(木) 23:58:23.31ID:z414Bs3I > Rustであれば安全と思ってる人が多そう
いや一応言っとくけど多くはないよ流石にw
一部の人が連呼してるだけ
ほかの人はもっと現実的だろな
いや一応言っとくけど多くはないよ流石にw
一部の人が連呼してるだけ
ほかの人はもっと現実的だろな
366デフォルトの名無しさん
2024/03/21(木) 23:59:21.08ID:t5wrhqh7 原則はunsafeを使うな!
これだけだ
理解できていてunsafeを使う場合も
とにかく閉じ込めろ!
専用のクレートを作れ
専用のモジュールを作れ
専用の型を作れ
これだけだ
理解できていてunsafeを使う場合も
とにかく閉じ込めろ!
専用のクレートを作れ
専用のモジュールを作れ
専用の型を作れ
367デフォルトの名無しさん
2024/03/21(木) 23:59:51.15ID:XJ9dJAV6 unsafe使わなければ安全
368デフォルトの名無しさん
2024/03/22(金) 09:16:28.77ID:IQ7X1X+j まあ実際rustはコンパイル通ればいいの思想を強める傾向にはある。
それは意識して気をつけた方がいい。
それは意識して気をつけた方がいい。
369デフォルトの名無しさん
2024/03/22(金) 10:19:34.77ID:avPqaarP ロジックや言語仕様を考えずにコンパイルが通るまでひたすらいじくり回すタイプの人間は本当にいる。
チュートリアルすら読まずに書き始めてなんもわからんから教えてと質問サイトに投稿しちゃうやつはいる。
そういうやつは早めに脱落して欲しいし大抵は脱落していくんだけどどういうわけか生き残ってあらゆるところをワヤにしていく狂人がたまにいるんだよ……
普通に現実を見ながらちゃんと学べる人なら (たまにはミスることもあるだろうけど) 大丈夫だよ。
チュートリアルすら読まずに書き始めてなんもわからんから教えてと質問サイトに投稿しちゃうやつはいる。
そういうやつは早めに脱落して欲しいし大抵は脱落していくんだけどどういうわけか生き残ってあらゆるところをワヤにしていく狂人がたまにいるんだよ……
普通に現実を見ながらちゃんと学べる人なら (たまにはミスることもあるだろうけど) 大丈夫だよ。
370デフォルトの名無しさん
2024/03/22(金) 11:58:26.79ID:7Rs7masV371デフォルトの名無しさん
2024/03/22(金) 12:34:01.41ID:TbCMvv+/ 実行時に範囲が変動するといっても制御下にあるのだからindexがその範囲にある時のみ有効な型を実装すればよい
そうすればその型に対して常に安全にget_uncheckedを使える
そうすればその型に対して常に安全にget_uncheckedを使える
372デフォルトの名無しさん
2024/03/22(金) 14:04:42.65ID:ZrfX32kv Rustは失敗言語
373デフォルトの名無しさん
2024/03/22(金) 14:10:55.04ID:ceR9yHkM 今回の件でRustの安全性が確実になったのが興味深いよな
アンチが必死に探してきた問題も>>350でunsafe利用だった
アンチが必死に探してきた問題も>>350でunsafe利用だった
374デフォルトの名無しさん
2024/03/22(金) 16:00:31.63ID:JqYXTM4B >>371
「indexがその範囲にある時のみ有効な型」の意味がよく分かってないけど
実行時に型の方でindex検査して無効時にpanic起こすなら普通にusizeでgetしてunwrapしようよ
unsafeにする意味がない
「indexがその範囲にある時のみ有効な型」の意味がよく分かってないけど
実行時に型の方でindex検査して無効時にpanic起こすなら普通にusizeでgetしてunwrapしようよ
unsafeにする意味がない
375デフォルトの名無しさん
2024/03/22(金) 17:14:19.13ID:vuLWDWdh376デフォルトの名無しさん
2024/03/22(金) 19:27:28.32ID:G6tKD1fj Adaなら特定の範囲の型作れるみたいよ
377デフォルトの名無しさん
2024/03/22(金) 20:07:18.97ID:vuLWDWdh 今回は範囲が固定ではなく変わり得る
378デフォルトの名無しさん
2024/03/23(土) 23:29:45.64ID:eeq00BcS 誰にでもunsafeが使えてしまうのが問題なのでは?
原則使えないくらいが、バカでも安全になるからRustの方向性に合ってる気がする。
原則使えないくらいが、バカでも安全になるからRustの方向性に合ってる気がする。
379デフォルトの名無しさん
2024/03/24(日) 00:34:36.37ID:iaJ2USO3 Rust の制限は機械的に検証可能な範囲に絞ったらそうなったということであって、その制限の範囲内で十分にプログラムが書けるというものでもない。
まあ思ったよりも足りるけどやっぱり必要だから unsafe はある。
まあ思ったよりも足りるけどやっぱり必要だから unsafe はある。
380デフォルトの名無しさん
2024/03/24(日) 10:55:06.56ID:UXqlkypu381デフォルトの名無しさん
2024/03/24(日) 11:08:34.82ID:BHU0SFkf なるほど、欲しい機能を実装していったら、結構安全になったって感じなのかな。OpenBSDみたいな偏執なのとは違う感じか?
382デフォルトの名無しさん
2024/03/24(日) 11:48:11.45ID:uu8/yG2s indexの境界チェックが律速になるようなコード書いてみてえな
383デフォルトの名無しさん
2024/03/24(日) 20:37:14.59ID:YsO86RjG >>376 型宣言の時に type My_Int is range -1 .. 5; 範囲宣言(マイナスでも、1からでもOK)できて、範囲を越えたらエラー 配列もその範囲指定で自由に作成できる。
384デフォルトの名無しさん
2024/03/24(日) 20:45:58.90ID:Rrl8qRWO >>383
定数じゃなければ結局実行時にチェックするってことだよね
定数じゃなければ結局実行時にチェックするってことだよね
385デフォルトの名無しさん
2024/03/25(月) 01:12:47.74ID:yMlw6u5B >>384
新しい型はint型とは独立した型なんだから変数にしたってその新しい型じゃないとコンパイル時にエラー。
新しい型はint型とは独立した型なんだから変数にしたってその新しい型じゃないとコンパイル時にエラー。
386デフォルトの名無しさん
2024/03/25(月) 07:21:41.59ID:CNajD+3j >>384 何十年も前なのですまそ
array(-2)とかarray(6)をアクセスしたら例外発生 array(-1)はOK
type Month is range 1..12
type Month_Array is array(Month) of Integer;
ma : Month_Array := (1,2,3,4,5,6,7,8,9,10,11,12);
for m in ma'first..ma'last loop // カウンタは1から12
ma(m) = m;
end loop;
array(-2)とかarray(6)をアクセスしたら例外発生 array(-1)はOK
type Month is range 1..12
type Month_Array is array(Month) of Integer;
ma : Month_Array := (1,2,3,4,5,6,7,8,9,10,11,12);
for m in ma'first..ma'last loop // カウンタは1から12
ma(m) = m;
end loop;
387デフォルトの名無しさん
2024/03/25(月) 14:37:28.19ID:x/lXcXel 今回の話は実行時境界チェックを無くす(減らす)実行時コスト削減の話だけど
そのAdaの例だと実行時に範囲外に値が動けてアクセスで例外発生するから何の解決にもなっていないね
そのAdaの例だと実行時に範囲外に値が動けてアクセスで例外発生するから何の解決にもなっていないね
388デフォルトの名無しさん
2024/03/25(月) 16:23:44.40ID:9GDk/VLW How much does Rust's bounds checking actually cost?
https://blog.readyset.io/bounds-checks/
https://blog.readyset.io/bounds-checks/
389デフォルトの名無しさん
2024/03/25(月) 17:27:16.04ID:MT/jL+52 こんなもんjavaの速度低下が境界値チェックによるものじゃないってことで話は終わっとると思ったけどな。
問題は浮動小数の取り扱いだっての。
問題は浮動小数の取り扱いだっての。
390デフォルトの名無しさん
2024/03/25(月) 21:23:48.62ID:x/lXcXel unsafeは可能な限り避けるべきで
safe Rustでの改善をまずすべき
その次にindex checkの有無で意味のあるパフォ向上がある時のみ考える
現実にはsafe Rustでの改善ができてないことが多い
例えばよく見かける例としては
iが動いていくのにa[i]でアクセスしてしまう
これはiの範囲checkとa[i]の範囲checkで二重checkになるbad pattern
参照(ポインタ)化することで範囲checkを1回に減らせる
safe Rustでの改善をまずすべき
その次にindex checkの有無で意味のあるパフォ向上がある時のみ考える
現実にはsafe Rustでの改善ができてないことが多い
例えばよく見かける例としては
iが動いていくのにa[i]でアクセスしてしまう
これはiの範囲checkとa[i]の範囲checkで二重checkになるbad pattern
参照(ポインタ)化することで範囲checkを1回に減らせる
391デフォルトの名無しさん
2024/03/27(水) 15:06:55.14ID:g9hYSxJr unsafeは極力避けろというアドバイスばっかりでunsafeを適切に閉じ込める基本的な考え方や実装パターンの啓蒙が不十分なんだよね
unsafeを良く知れば知るほど自然と避けるようになるから避けろ避けろと言うよりもunsafeに関する知識を深められるようにする方が大事
unsafeを良く知れば知るほど自然と避けるようになるから避けろ避けろと言うよりもunsafeに関する知識を深められるようにする方が大事
392デフォルトの名無しさん
2024/03/27(水) 15:29:03.70ID:pFQTMi8v 「unsafeの閉じ込めにはセンスがいるから、教えてもらわないと出来ないやつはunsafeを使うな」
が言える限界な気がする。現にunsafeを適切に閉じ込めるためのノウハウを継承できる資料とかがないので
が言える限界な気がする。現にunsafeを適切に閉じ込めるためのノウハウを継承できる資料とかがないので
393デフォルトの名無しさん
2024/03/27(水) 16:02:47.08ID:BwG0n/Az unsafeはライブラリ作者とかがハード周りアクセスするために使うもので、コーダーが使うものじゃないだろ。
unsafe可能ソースファイル用の拡張子を別途用意して、rsファイルはunsafe禁止にしてもいいくらいじゃない?
unsafe可能ソースファイル用の拡張子を別途用意して、rsファイルはunsafe禁止にしてもいいくらいじゃない?
394デフォルトの名無しさん
2024/03/27(水) 16:59:36.71ID:LwoOYerE >>393
そしたら全部を unsafe 可能版で書いちゃうのが世の中の現実ってもんなんだよ。
そしたら全部を unsafe 可能版で書いちゃうのが世の中の現実ってもんなんだよ。
395デフォルトの名無しさん
2024/03/27(水) 17:05:39.09ID:6Vj8sISV396デフォルトの名無しさん
2024/03/27(水) 17:08:09.55ID:6japDZ8y windows-rs とか使うと絶望するよな。もうちょいラップして安全なAPIも提供してほしい。
397デフォルトの名無しさん
2024/03/27(水) 18:09:17.85ID:345wycOn >>395
~すればいいだけって言う奴はたいてい本人はやらないんだよなぁ。
~すればいいだけって言う奴はたいてい本人はやらないんだよなぁ。
398デフォルトの名無しさん
2024/03/27(水) 18:27:03.05ID:3NgGdhlw399デフォルトの名無しさん
2024/03/27(水) 18:54:43.86ID:nHNmKGrp その素晴らしい提案がなぜされていないのか考えよう
そしてなぜ自分は実行から逃げているのか考えよう
そしてなぜ自分は実行から逃げているのか考えよう
400デフォルトの名無しさん
2024/03/27(水) 20:42:45.86ID:deTzlgug >>394
Rustが流行りそうな一番の理由は「管理側」が「コーダー」にunsafeみたいなことをやらせたくないということなんだから、どこでもunsafeとか管理側が許さんだろ。
Rustが流行りそうな一番の理由は「管理側」が「コーダー」にunsafeみたいなことをやらせたくないということなんだから、どこでもunsafeとか管理側が許さんだろ。
401デフォルトの名無しさん
2024/03/27(水) 21:06:58.89ID:LwoOYerE unsafe はコンパイラが安全性を「論理的に検証できない」部分であって、理論上の都合で出来た区分だよ。
危険な操作も含まれるけど危険な部分を分けれてるわけではない。
もちろん unsafe を制限する規約のプロジェクトがあったって良いが、そのための機能じゃないよ。
危険な操作も含まれるけど危険な部分を分けれてるわけではない。
もちろん unsafe を制限する規約のプロジェクトがあったって良いが、そのための機能じゃないよ。
402デフォルトの名無しさん
2024/03/27(水) 21:18:47.87ID:deTzlgug403デフォルトの名無しさん
2024/03/27(水) 21:31:01.25ID:LwoOYerE404デフォルトの名無しさん
2024/03/27(水) 21:44:58.62ID:deTzlgug405デフォルトの名無しさん
2024/03/27(水) 21:49:49.48ID:Fy0R0co2 理想をいえばunsafeなんて無いならサイコーだったんだろうね
rust陣営もしゃあなしでunsafe導入したんやろうし
unsafeなしですべてがセーフで効率的だったら
そりゃあrustは本当に素晴らしい文句なしの言語だったやろな
rust陣営もしゃあなしでunsafe導入したんやろうし
unsafeなしですべてがセーフで効率的だったら
そりゃあrustは本当に素晴らしい文句なしの言語だったやろな
406デフォルトの名無しさん
2024/03/27(水) 22:08:33.46ID:toZsv7uT 生ポインタすなわちCPUによるメモリアクセスはunsafe
そこが出発点
unsafeを組み合わせてunsafeを閉じ込めたsafeなインタフェースを提供できる
それがsafe Rustの基本原理
つまりunsafeに行き着くためunsafe無しでは何もできない
これが真理
一方で
unsafeを閉じ込めたライブラリ利用可を前提にすれば
unsafeを用いないsafe Rustでほとんど大抵のことが実現できるのも事実
そこが出発点
unsafeを組み合わせてunsafeを閉じ込めたsafeなインタフェースを提供できる
それがsafe Rustの基本原理
つまりunsafeに行き着くためunsafe無しでは何もできない
これが真理
一方で
unsafeを閉じ込めたライブラリ利用可を前提にすれば
unsafeを用いないsafe Rustでほとんど大抵のことが実現できるのも事実
407デフォルトの名無しさん
2024/03/27(水) 22:24:02.18ID:cgbLYCC5408デフォルトの名無しさん
2024/03/27(水) 22:52:47.09ID:qNf/D02g そこまでsafeな事にこだわるなら、Haskellに行けばいいのでは…?
409デフォルトの名無しさん
2024/03/27(水) 22:57:38.14ID:LwoOYerE410デフォルトの名無しさん
2024/03/27(水) 23:02:28.02ID:toZsv7uT #![forbid(unsafe_code)]
を宣言すればいい
もちろんすべてはunsafeへ行き着くため
unsafeを禁止できるのは自分のコード部分だけ
を宣言すればいい
もちろんすべてはunsafeへ行き着くため
unsafeを禁止できるのは自分のコード部分だけ
411デフォルトの名無しさん
2024/03/27(水) 23:55:45.93ID:pFQTMi8v unsafeな部分の拡張子を変えるというのが有効とはあんま思えんのだよな
平気でunsafe使ってくるガイジは当然平気でunsafeな拡張子を使ってくるだろうという予想する
平気でunsafe使ってくるガイジは当然平気でunsafeな拡張子を使ってくるだろうという予想する
412デフォルトの名無しさん
2024/03/28(木) 07:44:09.91ID:OabXy/xk413デフォルトの名無しさん
2024/03/28(木) 08:15:17.48ID:wHq/ItvK rustもいろいろ問題を抱えてるんだね
プログラマの習熟が必要だっていうなら流行らないだろう
メモリ安全なソフトウェア書くことを優先するなら土方が適当に使えるjavaやc#があるだろうし
新しいc/c++/rustと競合する決定版のような言語が出てきてrustはさらなる傍流に押しやられそう
プログラマの習熟が必要だっていうなら流行らないだろう
メモリ安全なソフトウェア書くことを優先するなら土方が適当に使えるjavaやc#があるだろうし
新しいc/c++/rustと競合する決定版のような言語が出てきてrustはさらなる傍流に押しやられそう
414デフォルトの名無しさん
2024/03/28(木) 08:34:31.08ID:5loDhjzb415デフォルトの名無しさん
2024/03/28(木) 08:48:28.49ID:OabXy/xk416デフォルトの名無しさん
2024/03/28(木) 09:00:19.29ID:5loDhjzb417デフォルトの名無しさん
2024/03/28(木) 10:37:24.50ID:dWo+4s1T 結局いつもの「無知なアンチ vs 無知な信者」の薄っぺらい対立になっちゃうのな
418デフォルトの名無しさん
2024/03/28(木) 14:03:58.90ID:61/ABBlz まあハスケルなんかもinvalidな変数使うようにっての広めるのには役立ったからrustもそういう位置に落ち着くだろ。
419デフォルトの名無しさん
2024/03/28(木) 17:41:01.08ID:Li+1uESY unsafeを使う人はライブラリ作成者がほとんどで、残りはシビアなインフラ作成者
一般プログラマーはunsafeを使わずに、unsafeが閉じ止められたライブラリのsafeなインターフェースのみ用いる
もしunsafeを用いて閉じ込めてsafeなインターフェースを提供できる新たなパターンを発見した時のみ、
その部分だけを切り出してライブラリ作成者になれる
それができない一般プログラマーはunsafeに縁がなく、unsafeを気にする必要がない
一般プログラマーはunsafeを使わずに、unsafeが閉じ止められたライブラリのsafeなインターフェースのみ用いる
もしunsafeを用いて閉じ込めてsafeなインターフェースを提供できる新たなパターンを発見した時のみ、
その部分だけを切り出してライブラリ作成者になれる
それができない一般プログラマーはunsafeに縁がなく、unsafeを気にする必要がない
420デフォルトの名無しさん
2024/03/28(木) 18:27:15.03ID:OabXy/xk >>419
そうならやっぱりデフォルト禁止にすべきだな。一般コーダーはunsafeを使えないようにしてコードの安全性を高めるべき。
Rustのデフォルトムーブとかshared xor mutableとかは安全側に倒しているのに、なんでunsafeだけはユルユルなのかね。
そうならやっぱりデフォルト禁止にすべきだな。一般コーダーはunsafeを使えないようにしてコードの安全性を高めるべき。
Rustのデフォルトムーブとかshared xor mutableとかは安全側に倒しているのに、なんでunsafeだけはユルユルなのかね。
421デフォルトの名無しさん
2024/03/28(木) 18:35:39.73ID:2Ez7VURh unsafeって書かないといけないってのは結構デフォ禁止よりの処置だと思うが
このメッセージが伝わらない相手にはもうunsafeの文法を分けてunsafeだけ難しくするとかしかなさそう
でもわざわざ難しい文法を用意すると言うのも馬鹿らしい話だ
このメッセージが伝わらない相手にはもうunsafeの文法を分けてunsafeだけ難しくするとかしかなさそう
でもわざわざ難しい文法を用意すると言うのも馬鹿らしい話だ
422デフォルトの名無しさん
2024/03/28(木) 18:56:54.80ID:Hx0Q8eMq 必要な各企業、各プロジェクトなどで義務付け
#![forbid(unsafe_code)]
これでunsafeの話はおしまい
他の言語と比べてRustはコーディング規約もAPI規約も公式で楽
Rust公式APIガイドライン
https://rust-lang.github.io/api-guidelines/
#![forbid(unsafe_code)]
これでunsafeの話はおしまい
他の言語と比べてRustはコーディング規約もAPI規約も公式で楽
Rust公式APIガイドライン
https://rust-lang.github.io/api-guidelines/
423デフォルトの名無しさん
2024/03/28(木) 19:45:10.84ID:OabXy/xk >>422
公式のドキュメントで
#![forbid(unsafe_code)]
の説明を探しているんだけど、どこにあるのかしらん?
doc.rust-lang.org/nomicon/safe-unsafe-meaning.html
の1行でおしまい?
公式のドキュメントで
#![forbid(unsafe_code)]
の説明を探しているんだけど、どこにあるのかしらん?
doc.rust-lang.org/nomicon/safe-unsafe-meaning.html
の1行でおしまい?
424デフォルトの名無しさん
2024/03/28(木) 20:08:10.91ID:uNPCtnZO forbidもunsafe_codeもrustcのlintの一部だな
doc.rust-lang.org/rustc/lints/levels.html#forbid
doc.rust-lang.org/rustc/lints/listing/allowed-by-default.html#unsafe-code
doc.rust-lang.org/rustc/lints/levels.html#forbid
doc.rust-lang.org/rustc/lints/listing/allowed-by-default.html#unsafe-code
425デフォルトの名無しさん
2024/03/28(木) 21:59:19.02ID:vhhc95Ef Rust Foundationによる資格認定試験に合格した者だけにunsafe使用パスワードが発行されるようにするしかないな。
426デフォルトの名無しさん
2024/03/28(木) 22:34:58.42ID:jTiWvkZ+ どの開発でも
#![forbid(unsafe_code)]が原則
どうしてもunsafeが必要なら
その安全ロジックを関係者で協議後に
#![deny(unsafe_code)]へそのモジュールのみ変更し
許可する部分のみを
#![allow(unsafe_code)]として監視対象
といった感じが一般的かと
監視対象を極一部に限定できて
全体はコンパイラにより保証できるため
他のプログラミング言語より扱いやすい
#![forbid(unsafe_code)]が原則
どうしてもunsafeが必要なら
その安全ロジックを関係者で協議後に
#![deny(unsafe_code)]へそのモジュールのみ変更し
許可する部分のみを
#![allow(unsafe_code)]として監視対象
といった感じが一般的かと
監視対象を極一部に限定できて
全体はコンパイラにより保証できるため
他のプログラミング言語より扱いやすい
427デフォルトの名無しさん
2024/03/28(木) 22:41:56.41ID:8+kd1npI >>420
一般とそうでない奴は誰がどうやって区別するのさ?
一般とそうでない奴は誰がどうやって区別するのさ?
428デフォルトの名無しさん
2024/03/28(木) 22:42:31.88ID:8+kd1npI >>421
正解
正解
429デフォルトの名無しさん
2024/03/28(木) 23:58:52.21ID:KGiLR8kg 時間がない時はunsafe使っていいよ
430デフォルトの名無しさん
2024/03/29(金) 00:05:51.94ID:B//2x2dm 時間がない時に焦ってunsafe使って書いたコードは長期利用すると大変なことになるので書いてから1時間以内に使って捨てよう
431デフォルトの名無しさん
2024/03/29(金) 00:19:58.75ID:Rgc3qInF432デフォルトの名無しさん
2024/03/29(金) 00:24:32.79ID:Rgc3qInF433デフォルトの名無しさん
2024/03/29(金) 01:57:50.63ID:EplliVDI 壊れたレコードオジ怖い
434デフォルトの名無しさん
2024/03/29(金) 02:36:16.29ID:B//2x2dm >>432
安全性の検討も必要な検討も全部スキップして「えいや」ってやればsafe rustより速く書き上がることもあるのでは?
安全性の検討も必要な検討も全部スキップして「えいや」ってやればsafe rustより速く書き上がることもあるのでは?
435デフォルトの名無しさん
2024/03/29(金) 07:36:27.65ID:9Pm5HVgJ 雑にunsafe使って早く書けるのはFFIくらいかな
FFIはどのみちunsafe必須だけど、事前条件とかの検討せずに雑にsafe化してしまうならそれは確かに早い
pure Rustでunsafeの方が早いケースはちょっと思いつかないな
FFIはどのみちunsafe必須だけど、事前条件とかの検討せずに雑にsafe化してしまうならそれは確かに早い
pure Rustでunsafeの方が早いケースはちょっと思いつかないな
436デフォルトの名無しさん
2024/03/29(金) 08:25:13.35ID:bd1Zch8f437デフォルトの名無しさん
2024/03/29(金) 08:27:22.40ID:bd1Zch8f >>426
それぐらいやらないとRust採用するメリット無さそうだよな。
それぐらいやらないとRust採用するメリット無さそうだよな。
438デフォルトの名無しさん
2024/03/29(金) 08:41:03.04ID:ev5kqnbp 初心者ぼく「禁止しないといけないようなもんが標準で使えるって結局それ危険な言語なんでは?
439デフォルトの名無しさん
2024/03/29(金) 09:16:34.82ID:cTkAvXQI そもそも普通に書いててunsafe使いたいなって場面がない
多人数で書いてるならforbidで落としてもいいけど
コードレビューでちょっとでも見ればunsafe使ってることは明らかなんだし、いずれにしてもどうでもいい
多人数で書いてるならforbidで落としてもいいけど
コードレビューでちょっとでも見ればunsafe使ってることは明らかなんだし、いずれにしてもどうでもいい
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国側が首相答弁の撤回要求、日本側拒否 [夜のけいちゃん★]
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す ★3 [蚤の市★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 映画「鬼滅の刃」の興行収入急減、日本行き航空券大量キャンセル…中国メディア報道 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 「タワマン天国」に飛びつく若者…SNSに転がる「成功体験」に続けるのか 湾岸エリアの業者が語った現実 [蚤の市★]
- 【悲報】日本人錯乱「集団的自衛権行使に賛成。けど自衛隊を戦わせるのは反対」 [237216734]
- 【悲報】高市効果で「1ドル=160円」が相場へwwwwwwwwwwwwwwwwwwwwwwwwwwwww 止まらぬ高市円安💥💥 [871926377]
- 小川彩佳アナ「高市総理はここまで影響が出ることを想像して発言したんでしょうか」高市ソルジャー「!!!!(シュババババ)」 [931948549]
- 今来た遊戯王やってる奴スレ
- FGOで好きなサーヴァントがアビゲイル、北斎、楊貴妃なんだが
- 自閉症が「んなっしょい」と連呼するお🏡
