Rust part30

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2025/05/28(水) 09:31:36.60ID:ciITeZ5D
公式
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 part29
https://mevius.5ch.net/test/read.cgi/tech/1746200850/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
2025/06/13(金) 00:50:30.07ID:Euk8Z2qV
犯罪者もRustかい
2025/06/13(金) 07:58:36.41ID:EW1dlQVG
rustスレだけ勢いあるな
2025/06/13(金) 09:22:19.66ID:7SY2psdg
もうRust以外の言語に存在価値がないからな
2025/06/13(金) 10:38:02.99ID:JXhmj2e3
Cのマクロってdefineのこと?
773デフォルトの名無しさん
垢版 |
2025/06/13(金) 10:41:53.68ID:f5khIryW
一人でレスパしてる香具師
めっちゃ当てはまっててワロス
watch?v=nsCKf0aQmDk
774デフォルトの名無しさん
垢版 |
2025/06/13(金) 12:11:18.07ID:GtM+sqp8
これからの時代、プログラミングスキルを磨いて、意味あるのかな?
お仕事は、生成AIにもっていかれるのに
2025/06/13(金) 13:37:48.88ID:+bvgw8RY
>>774
化石になるほど使い物にならなくなる訳じゃないだろう
例えば停電した途端に仕事できなくなって納期守れないようなAIより俺らの方がまだ早いじゃん
想定が局所的か、、、
2025/06/13(金) 14:44:41.80ID:ccsGYBbu
AIによる内製化が進むに従ってITエンジニアもユーザー企業に直接所属するケースが増えるだろうから、そっちに行ければ定年まで安泰だろう
Rustに自己肯定感を求めてるようなタイプの人達に社内の御用聞きが務まるか、そもそもやりたいかは疑問だが
2025/06/13(金) 15:28:24.55ID:EADdKRYM
AIの時代は当然Rust一択
2025/06/13(金) 17:47:14.23ID:+Tak731A
全部をAIに任せられるほど甘くないだろ
AIに細かく指示出すより自分でコード書いて見せた方が早い領域は残る
2025/06/13(金) 18:16:39.57ID:3/atOznW
特定の言語でプログラムが書けるみたいな狭義かつ低次のプログラミングスキルは特定メーカーのワープロでタイピングができるとか特定メーカーの表計算ソフトが使えるとかそういうのと同じコモディティ化したスキルになっていく

大事なのは特定の言語に依存しないメタなプログラミングスキルのほう
2025/06/13(金) 18:27:02.35ID:e8dD01Bq
それはそうだけど個別言語スレで言うことじゃないすぎる
2025/06/13(金) 18:27:31.78ID:ccsGYBbu
>>778
コーディング能力は既に人間の方が下だから、下等な我々が細かく指示出すより、
ブラックボックスの仕様から好きに実装していただいて説明してもらった方がよい
2025/06/13(金) 19:32:43.29ID:hKGxiaka
コモディティ化してもしなくても偶然にすぎない
偶然の産物は観察や考察するよりも編集してカットしたほうがいい
しかし編集すればするほど雑音が増えると思ってる人達にはそれができない
2025/06/13(金) 19:45:58.10ID:k1F86t2G
>>779
その通り
特にRustも使えないと今後はプログラマ失格
2025/06/13(金) 22:56:19.01ID:TC0KAGOC
jemallocはマジで終了だってさ
https://jasone.github.io/2025/06/12/jemalloc-postmortem/
2025/06/13(金) 23:27:33.59ID:UVwTiSSY
>>784
終わってない、とかほざいてた人はどうなん?
2025/06/13(金) 23:44:49.92ID:/3nWCuFC
>>784
2017年にFacebookを去った時点で手を引いて現Meta管轄なんだな
2025/06/14(土) 00:01:13.21ID:YcnPIob9
>>786
その記事の内容を読んでそういう感想なら死んでるのと変わらない
2025/06/14(土) 13:57:15.87ID:k1IJmlZ/
形式的には Meta が管理下に置いていたプロジェクトであるというのは間違いではないでしょ。
その上で Meta は全然やる気がなくなってるというだけで。 (少なくとも Jason の視点ではそう見えている。)
2025/06/14(土) 14:50:51.36ID:dtGV1Vl4
凄腕のエンジニア達が長い時間をかけて育ててきたjemallocといえども、
アリーナアロケーションのようなアプリケーション依存の原始的な手法には敵わないってのは虚しい話だな
特にRust信者はともすると小手先の技巧にかまけて視野が狭くなりがちだから気をつけなければならない
2025/06/14(土) 15:08:08.30ID:YcnPIob9
jemallocがMETAの管理下に入ってMETA寄りの機能を実装する開発方針に切り替わった
そして一般よりの機能を削減して一般からそっぽを向かれた
作者自身も一般からの需要にが付いていなかった

結局jemallocはMETA向けに局所最適化されてそこから一般向けに戻すにはかなりの人員と労力が必要だけど
それに見合うだけのメンテナーも資金もどこからも出てこない
実質死んでますよと

こういう内容
2025/06/14(土) 15:13:02.44ID:YcnPIob9
資金力があるところに吸収されて開発されてもそれが必ずしも良いことではないと言うことだ
吸収する側には目的があって吸収して機能を実装し終わったらそれでもう満足なんだ
2025/06/14(土) 15:48:51.99ID:RARc7ln1
万能なメモリアロケータは実現不可能
どういう用途に効率を特化するかで無数に分かれる
2025/06/14(土) 15:53:14.56ID:RARc7ln1
>>789
最適なタイミングでまとめて確保と解放するアリーナ方式が最も性能出るのは自明
794デフォルトの名無しさん
垢版 |
2025/06/14(土) 19:21:21.54ID:TLqczxub
mRNAワクチンの“新たな懸念”接種済み妊婦の子どもに「異常タンパク質構造」血中で確認★2 [Gecko★]
2025/06/14(土) 15:48:24.59
https://asahi.5ch.net/test/read.cgi/newsplus/1749883704/


・ワクチン問題になっている
2025/06/14(土) 20:11:15.75ID:dS5ekNAa
jemallocがRustから外されて各OSの標準アロケーターに戻った理由も重要だよね
2025/06/14(土) 22:46:25.65ID:3wtf6RT3
性能は用途により一長一短
特定のアロケータが標準だとバイナリサイズで不利なため
2025/06/15(日) 00:30:17.16ID:bKWQLrbi
#[global_allocator]標準化が1.28でjemalloc非標準化が1.32だな
外した理由はブログで書いてる
https://blog.rust-lang.org/2018/08/02/Rust-1.28/#global-allocators
https://blog.rust-lang.org/2019/01/17/Rust-1.32.0/#jemalloc-is-removed-by-default
2025/06/15(日) 00:56:18.63ID:sxaow1g9
システム開発言語であるのにシステムのメモリアロケーターを使っていない
2025/06/15(日) 00:59:44.98ID:ujM9EzWd
Rustにおけるシステムプログラミングというのは「ケチ臭いプログラミング」と読み替えるとよい
必ずしも低レベルであることを意味しない
2025/06/15(日) 09:10:25.99ID:sxaow1g9
jemalloc使用するとメモリが300kb消費されると
rustプログラム一個につき300kb
801デフォルトの名無しさん
垢版 |
2025/06/15(日) 21:04:59.71ID:nFrUb4vG
組み込み開発はRust一択
802デフォルトの名無しさん
垢版 |
2025/06/15(日) 21:27:38.86ID:xQVjBVZp
WEB開発もERust一択
803デフォルトの名無しさん
垢版 |
2025/06/15(日) 21:37:03.14ID:nFrUb4vG
今日もRustで組み込み開発しちゃった
2025/06/15(日) 22:40:54.62ID:B7Y6UoIx
俺はC++で開発し続けているが。
2025/06/15(日) 23:08:21.56ID:vsQD4t+X
組込みデバイスのRustのサポート状況ってどうなん?
少し前にNVIDIAのJetsonを触ったことがあるんだけと、SDKやサンプルはC++が基本だったと思う
(例えばJetson multimedia APIというのがあって、デバイス付属のGPUで動画をエンコードする等ができるんだけど、これはC++のクラスを使うAPIだから他の言語からFFIしづらい)

こういうのがRustに対応するようになるまでは、この分野はまだしばらくC++中心になるんじゃないかと思う
ラズパイなんかはRustの話も聞くし、できることは増えてると思うけど
2025/06/16(月) 02:15:29.18ID:0s59hzvI
メジャーなCPUならそれなりに対応してると思う
https://doc.rust-lang.org/beta/rustc/platform-support.html

SDKは需要とベンダーのやる気次第
807デフォルトの名無しさん
垢版 |
2025/06/16(月) 05:39:40.78ID:YU6mcAo1
ヌルポ😳😳

Google Cloud、世界中のリージョンが影響を受けた大規模障害、原因は管理システムがヌルポインタ参照でクラッシュしたこと
2025年6月16日
https://www.publickey1.jp/blog/25/google_cloud_3.html
2025/06/16(月) 06:07:30.55ID:Y7h+7ucI
記事あんま理解できてないけどヌルポインタってそんなにまずいもんなの?
コンパイラーが検出してくれるし、スコープから外れた変数はドロップされるからそもそも参照されないかと思ってた
809デフォルトの名無しさん
垢版 |
2025/06/16(月) 06:43:29.69ID:pyVTMG/F
ヌルポインタ参照って
プログラムをCとかunsafeとか使わずにRustで全て作ってるとしたら起き得ないことであってる?
2025/06/16(月) 08:20:04.56ID:GmbZlZxT
>>808-809
ヌルポインタの問題は型の非互換性、本質的には機能の非互換性の問題。

古いJavaで顕著だけど、ヌルポインタは何の機能もサポートしないのにコンパイル時はほとんどすべての型に化けることができるから、コンパイル時に問題を発見できずに実行時に問題になることがある。
本来なら互換性を保つためにヌルオブジェクトとかを使うべきだけど、言語で禁止しているわけではないので、低能力コーダーとか無能ライブラリアンとかはヌルポインタを返す関数とかを作って問題になる。

safe rust は基本的にヌルポインタを使えないので、このようなトラブルになることは少ないかと。
2025/06/16(月) 11:48:14.62ID:d1GW0AGS
問題の本質はヌルポじゃないだろ
publickeyの人はそれがわかってない

てかGoogleの品質管理体制も杜撰すぎるな
812デフォルトの名無しさん
垢版 |
2025/06/16(月) 12:21:10.35ID:LhShA12G
ガッ!
2025/06/16(月) 12:30:45.07ID:Y7h+7ucI
空白のフィールド含んだだけでクラッシュとかよく分かんないよ
俺がテストせずにこのプログラムをリリースさせた責任者だったら会社に残れないな。明らかにテスト捏造してるから
——
新しいポリシーデータには意図せず空白のフィールドが含まれており、これをサービスコントロールが読み込んで実行したところ、ヌルポインタ参照となりクラッシュが発生します
——
2025/06/16(月) 13:38:36.81ID:Zx2RP+Vb
要は不具合を引き起こす特定のパターンがあり、テストで発見されなかったってことだろ
たまたま結果としてヌルポでクラッシュしただけで、仮にヌルポの可能性に気づけていたとしてもそれ自体がバグの原因でない以上、
問題のパターンが別の形で障害を起こしていた可能性を否定できないな
2025/06/16(月) 14:56:07.05ID:3OfwotkI
もしRustで実装していれば、パニックですんでいたのにな
2025/06/16(月) 15:28:10.23ID:89xCrI9h
今回の事態を招いた最も重大な要因は「リリース手続きの欠陥」であって、ヌルポ参照という"クラッシュに至る個別の事象"に着目した対策に終始するのは悪手(ヌルポ参照以外の要因で本件のような事象が再発しても良いのか、という問いにyesと答えることに他ならない)
2025/06/16(月) 15:38:50.32ID:2OOusEms
>>814
>要は不具合を引き起こす特定のパターンがあり、テストで発見されなかったってことだろ

特定のパターンというか「新機能のために新しく適用する全世界共通のポリシーデータ」と「新機能」の組み合わせでクラッシュするんだから本番環境に適用するポリシーデータでは一切テストしてなかったってことでしょ

feature flagがなければステージングでのテストも行わず本番と同時適用ってのも意味がわからない
2025/06/16(月) 15:40:30.06ID:2OOusEms
>>815
パニックでも結果は同じ
2025/06/16(月) 16:50:55.12ID:3OrQmcm3
>>815
Rustで実装していればOption型になる
unwrapしない限りpanicは起きない
2025/06/16(月) 17:11:52.79ID:6J/NsGPY
JavaはTとOption<T>を区別しないからStringでもnull検査パスしてるか分からんのよね
誰かが検査してると思ってたら誰も検査してなかったり逆に至る所で何重にも検査されてたり
2025/06/16(月) 17:56:55.33ID:Y40wNqxo
>>819
今回のやつはRustで実装しててもunwrapしてたケースだろう

>>820
Javaの場合は@Nullableみたいなアノテーション使ってビルド時にチェッカーを走らせる
2025/06/16(月) 18:02:11.42ID:3OrQmcm3
>>821
Optionをunwrapしていいのは常にSome自明時と
異常時にpanicで落ちていい時のみ
2025/06/16(月) 18:48:18.73ID:Y40wNqxo
>>822
後者に該当

ポリシーデータから必須項目が欠落しているような状態はヌルポを発生させたプログラマーから見ればプログラムを即停止すべき異常事態という認識
2025/06/16(月) 19:02:14.08ID:F+AaTG3L
Rustはわりとunwrapというかコンテキスト外し一般を使う人が多い印象があるね
そのあたりはやはりベターC++という感じがする
2025/06/16(月) 19:03:13.08ID:WftbHuxu
>>823
異常時に停止してよい時のみpanicが使われて暴走やセキュリティの穴を防止するんだよ
2025/06/16(月) 19:04:58.04ID:WftbHuxu
>>824
落ちてはいけないプログラムでそんなことする人はいないよ
2025/06/16(月) 19:45:53.03ID:GmbZlZxT
>>823
panicにするかどうかを決めるのはサーバーを実装する側じゃなくてサーバーを使うユーザー側だろ。
Linusじゃないけど、サーバー側がランタイムエラーでパニックを発生させるのは根本的に問題がある。単にエラーを返すべき。
2025/06/16(月) 19:53:50.09ID:xdTbb2+R
Rustは絶対安心安全なんだよ
2025/06/16(月) 22:35:10.42ID:GFXQS+aF
>>827
もちろんあるべき姿としてはエラーを返すなりフォールバックさせるなりすべき
だけど現実はヌルポでエラーも返さずクラッシュさせてたわけでRustに置き換えればpanicで落としてたのと同じようなもの

つまりRustを使っていれば防げたかというと今回のケースは防げなかった可能性が高いということ
2025/06/16(月) 23:23:51.15ID:n/id3DH6
Rustを使えば防げただろう
2025/06/16(月) 23:25:29.39ID:n/id3DH6
>>824
そういう時はこれ

[lints.clippy]
unwrap_used = "deny"
2025/06/17(火) 07:28:54.01ID:nAKE0zH5
>>829
ならpanicさせる>823の考えは間違いだね。

rustも安全性を標榜するならpanic禁止モードを用意すべきだわ。
2025/06/17(火) 08:53:29.58ID:wIiKTA/n
DoS攻撃脆弱性でregexのCVEがあったけど
関連サービスの事を無視して自分勝手にpanicしちゃったら同じ脆弱性だよね
834デフォルトの名無しさん
垢版 |
2025/06/17(火) 09:28:01.71ID:qKSR12sf
ヌルポ騒動が起きるたびにRustの重要性が引き上がる
2025/06/17(火) 09:35:12.84ID:9ReeLirD
>>834
ポリシーの内容をチェックして。受け入れ可能じゃなければResultでテキトーにErr返したら済んだんじゃないの?

パニックさせる必要ほんとにあったと思ってる?
2025/06/17(火) 10:10:19.32ID:ArcAimKK
>>835
それでもこの件では障害になることには違いないのでは
クラッシュはしないかもしれないが
2025/06/17(火) 10:27:20.42ID:HytcwfDv
Rustで書くなら関数は必ずResultもしくはOptionを返すことになり、上位で処理される
2025/06/17(火) 10:32:24.66ID:Q1H3y5Wh
>>837
>>822にもあるけど
> Optionをunwrapしていいのは常にSome自明時と
その「自明」をコンパイラが静的分析するか>>831がデフォルトじゃないかぎり
隠れ unsafe
2025/06/17(火) 10:35:09.70ID:HytcwfDv
>>838
unwrapは使われない
?オペレータで上位へ委託するか
match / if let等で処理される
2025/06/17(火) 10:41:17.77ID:wEWjoXoE
このGoogleの件に関して言うなら、ポリシーの読み込み失敗即ちロールバックなんだろうからpanicは妥当
起動時に必須の環境変数が無い場合にpanicさせるようなもんだね
2025/06/17(火) 10:46:12.73ID:ya3T3y3J
panicで全体を止めたくない時はUnwindSafeな処理単位をcatch_unwindで実行すればいい
使ったことないけど
2025/06/17(火) 10:51:31.79ID:gnbFtFWo
>>832
ヌルポでクラッシュさせてたのは間違いではなかったとでも?

>>823はヌルポでクラッシュさせてた人たちの認識
その人たちが仮にRustを使ってたら同じようにpanicで落とすだけ
つまりRustを使っていたとしても障害は防げないという話

それに今回の障害を見てエラーハンドリングしていれば問題なかったと考えるのは短絡的すぎる
一番の問題点は一サービスの一コンポーネントがクラッシュしただけであらゆるサービスが全面的にダウンしたという点にある
だからあらゆるコンポーネントを絶対panicしないように作ろうとするよりも一コンポーネントがpanicしたとしても全面的なシステムダウンに繋がらない仕組みを作ろうと考えることが今回のような障害を防ぐための第一歩
2025/06/17(火) 10:56:21.14ID:tkXXIxpc
>>842
まともなシステムはそれだな
プロセスが落ちてもハンドリングされる
2025/06/17(火) 10:58:00.04ID:tkXXIxpc
異常状態のままプロセスが走り続けるよりもpanicなどでプロセス終了が正しいシステム構築
2025/06/17(火) 11:09:29.63ID:QpxoSzQp
異常状態のまま動き続ける言語よりさ
panic or エラー処理されるRustが良い結論は変わらんよね
2025/06/17(火) 11:13:48.44ID:wEWjoXoE
>>842
Google Cloud APIのコントロールプレーンのコアコンポーネントはさすがに一サービスの一コンポーネントとかいうレベルじゃないよ
OSのカーネルみたいなもん
こんなのヘタに誤動作を続けられたら会社が吹き飛ぶようなセキュリティ事故に繋がる可能性もあるわけで、死んでくれた方がマシ
2025/06/17(火) 11:52:15.15ID:e/HQQ23L
ワンワンパニック
2025/06/17(火) 12:50:17.15ID:ya3T3y3J
Javaで
if (value == null) {
throw AppException();
}
を書き忘れるのとRustで
let Some(value) = opt_value else { return Err(AppError); }
の代わりに
let value = opt_value.unwrap();
と書くのは発生リスクが全然違うと思うんだけど
Javaでうっかりnullチェックを忘れる人はRustでもうっかりunwrapを使うものなのか?
2025/06/17(火) 13:10:12.25ID:aeCwWEdf
>>848
本人判断で「自明」と決めつけて意図的にunwrapを使うのでは
2025/06/17(火) 13:36:52.80ID:gAVRJIie
>>822によれば
本人判断で「panicで落ちていい」と決めつけて意図的にunwrapを使うパターンもある
2025/06/17(火) 14:21:36.03ID:w2F36Aoo
>>848
Rustでは必要により明示的にpanicさせる.unwrap()とコードを書いた時のみpanicが起きる
意思が必要
2025/06/17(火) 15:48:15.44ID:FL91roa2
>>846
クラッシュしたのはコントロールプレーンの一部であるポリシーチェックシステムのさらにその一部のバイナリ
もっと言えば問題が起きたのはそのまた一部のクォータチェック部分

クォータチェックができなければGCPの全サービスを落とすべきというビジネス判断としてはなくはないがIncident Reportを見る限りGoogleはそうは考えてない
2025/06/17(火) 16:05:37.54ID:UZ5mCAEQ
Rustにしとけ
続行不可能で意図的にpanicさせるか
きちんとResult/Option処理するかになる
2025/06/17(火) 16:27:46.74ID:9ReeLirD
リリースしてから実際にポリシー変更が発生するまでの2週間、
テストやりこんで最後のバグだしするまでの時間とみなすか、
リリースヨシ!と思ってたかだよな

リリース後も2週間頑張ってテストやったけど境界条件探すの下手くそで見つけられませんでした、で通るかな。自分のことのようにゾッとする
2025/06/17(火) 17:05:59.65ID:FL91roa2
>>854
プログラムの変更とポリシーデータの変更は責任者も管轄組織もプロセスも違うんだと思う
ポリシーデータのほうはビジネスよりの組織が管轄というのはよくある話
なのでDev的にはリリースヨシ!

改善点の2点目に「Regardless of the business need for 〜」とあるからOpsはBizの政治力で本来とは違うプロセスを強制させられたのかもしれない
2025/06/17(火) 18:12:51.30ID:FL91roa2
ここに内部事情を含めていろいろ書いてあった
https://news.ycombinator.com/item?id=44274563
2025/06/18(水) 00:29:09.64ID:1jrMASAC
ここでの議論と同じだね
Rustでpanicするの明示的にpanicを起こすコードを書いたときだけ
2025/06/18(水) 01:06:16.44ID:aQwOTYhv
>>857
>Rustでpanicするの明示的にpanicを起こすコードを書いたときだけ

ここでもHNでもそんな議論はされてない
ただ複オジが連呼してるだけ
2025/06/18(水) 01:09:01.01ID:ZwZRjmCs
さっさとC++捨ててRustにすれば防げたのにな
2025/06/18(水) 01:12:36.99ID:SA0JPy/4
>>858
初心者は今回のこのまとめを見るといい
https://news.ycombinator.com/item?id=44281839
2025/06/18(水) 02:58:44.97ID:vm71nNgD
Googleの事案なんてどうでもよくてインシデントにかこつけてRustの布教がしたいだけ
だから何を書いても無駄
2025/06/18(水) 06:20:38.83ID:KrGEp9Dg
Rustを採用していれば防げた事案
2025/06/18(水) 09:57:10.50ID:NQ+tIPxW
>>848
本質は同じ

書き忘れではなくロジカルな思い違いもある
ここでnullはないやろとここErrはないやろは同じで思い込みだから

言語によって優劣とかじゃなく人間の限界がある
2025/06/18(水) 10:09:02.91ID:4yVSzLnj
>>863
全く違う
unwrap()はNone時にpanicを起こすための関数
書き忘れでpanicしない
2025/06/18(水) 10:20:51.18ID:NQ+tIPxW
> 書き忘れではなくロジカルな思い違いもある
2025/06/18(水) 10:31:14.78ID:GRTFL2K0
panicさせてはいけないプログラムでpanicさせる関数を呼ぶバカはいない
reviewでもバレる
2025/06/18(水) 10:49:25.62ID:NQ+tIPxW
メモリリークさせてはいけないぷろぐらむでめもりりーくさせるばかはいない!
2025/06/18(水) 11:01:39.66ID:Ulz+jHl5
Rustを使えばメモリリークも未定義動作もなく安全安心よ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況