X



Rust part23

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2024/02/23(金) 17:37:52.13ID:CheDQupm
公式
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/
0243デフォルトの名無しさん
垢版 |
2024/03/11(月) 22:24:26.89ID:1Ss4PFRT
>>242
だからデフォルトなんかいらないんだよ
ハッシュごとき使うのにデフォルトがないと使えないような人間がcratesの名前空間を埋めていくのはヤバいよ
0244デフォルトの名無しさん
垢版 |
2024/03/11(月) 22:32:51.13ID:Zfy+Gd54
>>243
ほとんどの言語の連想配列(hashmap)のハッシュ関数はデフォルトがありますよ
指定しないと使えない言語がもしあるとしてもレアじゃないですか?
0245デフォルトの名無しさん
垢版 |
2024/03/11(月) 22:38:01.21ID:1Ss4PFRT
>>244
それはJavaScriptやPythonのような馬鹿がライブラリを書いて馬鹿が馬鹿の再生産をすることを推奨している言語の話でしょう?
もしくは仕様だけ緩く決めて実装には何の責任も取らない言語か
0246デフォルトの名無しさん
垢版 |
2024/03/11(月) 22:39:37.27ID:1Ss4PFRT
スクリプト言語だと速度は求められないという了解があるし
0247デフォルトの名無しさん
垢版 |
2024/03/11(月) 22:53:49.00ID:lga6QF6v
Rust や C++ の思想でいう速さはゼロコスト抽象のことだよ。
抽象化にはコストはない (または十分に小さい) が実行すれば実行内容に相応の実行コストが生じるのは当たり前のことだし、実行内容を最小限にすることを目指したって単に不便になるだけだ。
0248デフォルトの名無しさん
垢版 |
2024/03/11(月) 23:24:30.57ID:pnxYU4a7
あらゆる言語のあらゆるプログラムについて以下が成り立つ
【必須】信頼できない外部入力データに対しては攻撃に強いハッシュ関数を用いなければならない
【自由】そうでないデータに対してはどのハッシュ関数を用いてもよい

この状況で安全な言語はデフォルトとして攻撃に強いハッシュ関数が適切
そして後者と判断できるプログラマーのためにハッシュ関数を指定できる仕様が適切

Rustはこの適切な仕様となっている
0250デフォルトの名無しさん
垢版 |
2024/03/11(月) 23:31:49.34ID:srElBTmD
外に出るときはヘルメットを被って110をすでに入力したスマホを持ちながらおむつをしてコンドームつけてるのがRust
0252デフォルトの名無しさん
垢版 |
2024/03/11(月) 23:47:29.47ID:1gRl0SR3
デフォルトとFxHasherで比較してみたけどHashMapへのinsertのみで実行時間1.7倍
現実のプログラムだとそれ以外の部分が大量にあるためそれ次第で誤差だね
これはデフォルトが安全側に倒す形を取っていて正解と思う
0253デフォルトの名無しさん
垢版 |
2024/03/11(月) 23:47:55.83ID:eCeLdHKW
>>248
>【自由】そうでないデータに対してはどのハッシュ関数を用いてもよい
いやーそれはどうだろう?
ハッシュDoS耐性は不要でも例えばFxHashを使うべきじゃないユースケースも普通にあるよね?

stdに1つしかHasherが用意されておらずサードパーティ頼みな現状は言語的には結構不親切
0255デフォルトの名無しさん
垢版 |
2024/03/11(月) 23:59:34.73ID:o1bdd8gz
Rustはデフォルトハッシュ関数が用意されていておかしいと言うけど
すべての言語で用意されてるでしょ?

Rustは様々なハッシュ関数が標準ライブラリにないと言うけど
それが普通でしょ?

さらにRustの標準ライブラリはなるべく小さくする方針ね
0256デフォルトの名無しさん
垢版 |
2024/03/12(火) 00:02:16.02ID:YqCvYydB
>>255
ここまで読んでそういう解釈になってるなら理解する力が足りてない

重いハッシュ関数がデフォルトになってるのがどうなのかと言う話
0257デフォルトの名無しさん
垢版 |
2024/03/12(火) 00:06:26.32ID:hhdv8qp2
普通に考えて攻撃に強いハッシュ関数がデフォルトとなってるのがベストだよね
攻撃の可能性のない部分のみを後でチューンアップつまり弱いハッシュ関数で置き換えるだけだから
これより良い策があるの?
0260デフォルトの名無しさん
垢版 |
2024/03/12(火) 00:10:10.84ID:YqCvYydB
江戸時代士農工商の身分制度があって
雨の日だけ農民も下駄を履いてよかった
0263デフォルトの名無しさん
垢版 |
2024/03/12(火) 00:15:25.47ID:YqCvYydB
IDコロコロ全肯定君

攻撃されるかもしれないのに攻撃の耐性をつけてない人に
対するフールプルーフのために一律全てのコードを遅くする

そもそもその人が設計ミスってるんだろう
0264デフォルトの名無しさん
垢版 |
2024/03/12(火) 00:15:58.38ID:ltF5NefG
SafeSlowHashMapみたいな名前にすれば良いのに
0266デフォルトの名無しさん
垢版 |
2024/03/12(火) 00:27:26.16ID:hEPMmb8p
>>264 >>265
Rustを使ったことすらない人が文句を言ってるのか
RustのHashMapはHasherに対しても多相であり型パラメータでHasherを指定する
0268デフォルトの名無しさん
垢版 |
2024/03/12(火) 00:33:47.12ID:P8rBcnCc
>>266
誰もそんな話してないやろ
これだから複クンは
0269デフォルトの名無しさん
垢版 |
2024/03/12(火) 00:35:30.45ID:YqCvYydB
こいつは結論が先にあってRustのすべてが正しいから後で理屈をつけているだけ
いつもおかしなことを言ってる
0270デフォルトの名無しさん
垢版 |
2024/03/12(火) 00:36:58.41ID:4FnCuSr/
ripgrepとかuvとかの既に実用が始まってるRust製アプリでは
デフォルトのハッシュ関数使ってるの?
0271デフォルトの名無しさん
垢版 |
2024/03/12(火) 01:00:19.76ID:hEPMmb8p
>>267
やっぱりRustを使ったことないんだな
impl<K, V, S> HashMap<K, V, S>にfn new()は存在しないため
HashMap::<Key, Value, BuildHasherDefault<Hasher>>::default()のように使う
0274デフォルトの名無しさん
垢版 |
2024/03/12(火) 01:42:25.91ID:O5aTP+Ks
いつもRustを叩いてRustスレを荒らしてるアンチの言動はいつもワンパターン
今回のHashMapの件で例えると
もしデフォルトのハッシュ関数が安全でなく速いものだと「Rustはデフォルトが安全でない!」と叩く
もしデフォルトのハッシュ関数が安全で遅いものだと「Rustはデフォルトが遅い!」と叩く
どちらになっていても叩くことが目的のキチガイ
0275デフォルトの名無しさん
垢版 |
2024/03/12(火) 09:25:30.86ID:2ftxmqwc
「俺が高速なプログラムを作れるのは言語のおかげ」は合ってるが
「俺が低速なプログラムしか作れないのは言語のせい」は間違ってる
0276デフォルトの名無しさん
垢版 |
2024/03/12(火) 15:42:43.44ID:qP6Ph9LT
『「俺が低速なプログラムしか作れないのは言語のせい」は間違っている』という立場、ユーザーが充分賢いことを仮定しているのでそれならPythonとC++で良い
0277デフォルトの名無しさん
垢版 |
2024/03/12(火) 16:02:50.20ID:O51IPiXd
ほんとどうでもいいな
自転車置き場というより豚小屋の議論
0279デフォルトの名無しさん
垢版 |
2024/03/12(火) 17:33:47.15ID:+dm3OZRm
知識があれば高速化が可能な場合があるのは、言語や項目に関わらず一般的な話。
安全方針のRustとしては、ハッシュ衝突強度を知らなくてもデフォルトで安全がベター。
0280デフォルトの名無しさん
垢版 |
2024/03/12(火) 18:00:43.49ID:ZUpYWJV7
デフォルトいらんが
ハッシュも自分で選べんガイジがハッシュマップ使うな
0281デフォルトの名無しさん
垢版 |
2024/03/12(火) 18:49:06.95ID:hIsWcrJS
>>279
わかってなさそうなので再度書くけど
ハッシュ衝突強度が高いからと言ってハッシュDoS耐性が高いとも限らないしHashMapに適してるとも限らないからね
0282デフォルトの名無しさん
垢版 |
2024/03/12(火) 18:51:51.27ID:wv71s4mp
弱いハッシュでも困るようなプログラム書く人は、自分で判断できるんじゃないの?デフォルトはパフォーマンス優先で良いと思うけどな。
0283デフォルトの名無しさん
垢版 |
2024/03/12(火) 19:50:55.41ID:WtXn1sYk
攻撃で困るかどうか攻撃されるまで初心者は判断できないと思う。
そして攻撃されてから対処するのでは遅いかもしれない。
パフォーマンスチューニングは遅いことが問題になってからやるので深刻ではなかろう。
0284デフォルトの名無しさん
垢版 |
2024/03/12(火) 19:59:05.75ID:1eKk9IjK
>>283
同意
0285デフォルトの名無しさん
垢版 |
2024/03/12(火) 20:00:13.63ID:uVbV4a/I
RustのDefaultHasherは安全かつパフォーマンスのいいSipHashを使っているので普通は気にする必要ない
もちろんPythonやJavaScript(v8)やSwiftなど多くの言語がこのSipHashを使っている
そのうえでRustは必要とするHashMap毎にFxHashなどさらに高速なものを簡単に指定できる
0287デフォルトの名無しさん
垢版 |
2024/03/12(火) 20:49:29.65ID:+yrdVDIt
他の言語たちがRustを参考に同じように後追いしているのね

>Pythonの文字列やバイト列に対するハッシュアルゴリズムは、HashDoS対策としてPython 3.4から SipHash24が使われていました。
>その後、ラウンド数を減らしたSipHash13でも十分に安全だとして2015年にRustが、2016年にRubyが、SipHash24からSipHash13への切り替えを行いました。
>Rust や Ruby からは数年遅れましたが、Pythonもデフォルトの文字列ハッシュアルゴリズムがSipHash13に切り替わりました。
0288デフォルトの名無しさん
垢版 |
2024/03/12(火) 20:56:37.07ID:Bo/PtDeL
>>286
常にそれをされたら困るが
Rustでもハッシュ値をオブジェクトに持つstring_cacheなどが用途に応じて使われている
0289デフォルトの名無しさん
垢版 |
2024/03/12(火) 22:08:56.94ID:qGjx1B49
>>274
人にキチガイと言う前に自分の脳を使って考えたら?

どちらになっても叩くことはないだろ
他の言語はデフォルトで速いハッシュを使ってるよ
0291デフォルトの名無しさん
垢版 |
2024/03/12(火) 22:30:53.75ID:QLhbtBPI
他の言語もRustと同じハッシュ関数を用いていることが判明したのにRust叩きを続ける一匹
0292デフォルトの名無しさん
垢版 |
2024/03/13(水) 01:06:52.67ID:l12NsVZP
他の言語の例としてPythonやRubyのような遅いこと前提でとにかく初心者が書いても動けば良いという思想の言語を持ち出してくるのはおかしいでしょう
0295デフォルトの名無しさん
垢版 |
2024/03/13(水) 07:26:54.50ID:W15vpPlq
>>283
判断できない人まで言語側で救う必要性が分からない。

それなら、unsafeもカジュアルに使えないように仕掛けを用意した方が良いんじゃないかと。
0296デフォルトの名無しさん
垢版 |
2024/03/13(水) 08:05:27.17ID:7ftIQ2tM
必要なことしかやりませんって言語は他にあるからそちら使えばいいのでは?
0297デフォルトの名無しさん
垢版 |
2024/03/13(水) 11:53:59.71ID:k71lJTPU
安全と速度は両立するかそれともトレードオフか
トレードしかしない人にとって、コストは支払うと決めたら絶対にキャンセルできない印象があるよね
有償かと思ったけどよく考えたらやっぱゼロコストだったという現象は許せない
0298デフォルトの名無しさん
垢版 |
2024/03/13(水) 13:08:21.45ID:zcdQDtji
Rustなんかに手を出すのはC++まともに書けない馬鹿なんだから、「充分賢ければ速く書ける」は実質「速く書けない」なんだよな
賢いならRustなんかやらない
0299デフォルトの名無しさん
垢版 |
2024/03/13(水) 13:52:10.04ID:k71lJTPU
自由があればデフォルト設定を強制されないのは自明な事実
ただし、賢い人間が自由を所有しているのか、道具自体が自由度を持っているのか
そもそも「所有している」というのはただの感想なのか客観的事実なのか
0300デフォルトの名無しさん
垢版 |
2024/03/13(水) 15:08:41.44ID:EtYMYlMl
アホ vs バカの不毛な争いが続くのは隔離スレにワッチョイつけたやつの責任だからな
0301デフォルトの名無しさん
垢版 |
2024/03/13(水) 17:12:52.60ID:2jYqKDsd
本スレにワッチョイつけず隔離スレと称して余計なスレ立ててそっちにワッチョイつけるバカども。
5chでRust使ってるって言ってるやつらはそんなもの
0302デフォルトの名無しさん
垢版 |
2024/03/13(水) 17:32:48.34ID:k71lJTPU
不毛の判断が早いなあ
後世の歴史家が判断するという定型文に縛られないから早いんだな
0305デフォルトの名無しさん
垢版 |
2024/03/13(水) 21:22:31.53ID:cNV/vVTe
>>300
分かってるんならワッチョイ付きRustスレの盛り上げに協力してくれんかえ
0306デフォルトの名無しさん
垢版 |
2024/03/13(水) 21:54:19.69ID:Ay/UTMuM
ワッチョイなんか盛り上がる訳ねえ
そんな話題あったらこのスレに投下してつまらない議論を流した方が余程生産的
0307デフォルトの名無しさん
垢版 |
2024/03/13(水) 22:31:42.96ID:/twoPXVD
高齢化でコーディングできなくなったおじいさんを叩くのは良くないと言う話
0308デフォルトの名無しさん
垢版 |
2024/03/13(水) 22:39:35.15ID:vtWyM3VT
30後半でコーディングしてるやつなんて9割コミュ障で出世できなかったやつだろ
0311デフォルトの名無しさん
垢版 |
2024/03/14(木) 00:41:25.89ID:2hurvpo9
結局スクリプト言語で書かれた原作が必要か
他のジャンルでも原作なしのオリジナルは難しそうだろう
0312デフォルトの名無しさん
垢版 |
2024/03/14(木) 12:30:54.13ID:HuCxvvOv
Rustで書き直してパフォーマンスが上がったので注目浴びる!みたいなプロダクトはなんか白けるよな。
JSとかPythonの基盤ツールをRustで書き換えて激速!みたいなのはもう汎用言語としてのアイデンティティ捨てられててオワットル。
0313デフォルトの名無しさん
垢版 |
2024/03/14(木) 12:34:38.63ID:GaNa4vYx
日本みたいに、何とかするには人投入しよう!スキルどうでもいいからとにかく人集めて!なところじゃね~。
0314デフォルトの名無しさん
垢版 |
2024/03/14(木) 13:45:31.80ID:zTrHTca+
おそらく植山類が新しいリンカを作ったあたりが開発ツール高速化の機運の始まりだと思う。
歴史的事情でごちゃごちゃしてて遅いのが仕方がないと思われていたものについて
速度を意識して書いてみたら数百倍単位で速くなってわひゃーーというのが強烈なインパクトだった。
(それは C++ で書かれてるんだけどね。)
商売で開発ツールを提供している会社にとっては少なくともそれと同程度のものを出さないと面子が立たない。
リンカを作ってるところはこぞって高速化に努めた。
リンカ以外にもその機運が波及しているのが今。

で、高速化のキモはデータ構造であるというのが明瞭になったんだけど
メモリ管理の部分を処理系 (ランタイムサポート) の側でやるようなものだとそこんところのチューニングが出来ない。
Rust である必然性が強いわけではないけど C++ とかよりは今なら Rust のほうがいいかなってのはまあ自然な判断ではある。
0315デフォルトの名無しさん
垢版 |
2024/03/15(金) 00:47:31.57ID:eu7fnAy5
コードを書けない
プログラムできなくなるとこういうことしか書けなくなると言う見本
0316デフォルトの名無しさん
垢版 |
2024/03/15(金) 10:43:30.71ID:5CgUbd5q
だが読むより書くほうが優れているという前提から
原作を正しく読解するよりも正しくない二次創作のほうが優れているという結論が出てくる
0317デフォルトの名無しさん
垢版 |
2024/03/15(金) 11:53:24.75ID:94MXVgRN
春だなぁw
0319デフォルトの名無しさん
垢版 |
2024/03/15(金) 20:40:42.93ID:W8LQpOAr
>>315
辛辣で草
そういう似非技術者系おじいちゃんおちょくると
怒って自分が唯一知ってる知識振り回してくるから面白いぞ
0320デフォルトの名無しさん
垢版 |
2024/03/15(金) 21:07:06.30ID:8+Y0uCh5
Rustコードを書けない似非技術者系おじいちゃんたちは他のスレでやりとりしなさい
ここはRust専用スレ
0322デフォルトの名無しさん
垢版 |
2024/03/15(金) 21:36:49.30ID:3GkeGGWK
できなくなるんじゃなくて
元々できてないんよね>>314みたいな人は
というより単に職業マじゃないのかもな
趣味でプログラム触ったことあるパソコン少年的な
0325デフォルトの名無しさん
垢版 |
2024/03/17(日) 19:33:58.02ID:1VtyMVPz
Rust書けるやつ集めるの大変すぎ
0326デフォルトの名無しさん
垢版 |
2024/03/17(日) 22:06:35.75ID:BMZldfUE
Rustで書けば速くてリソースコスト下げられるうえに保守性も良くていいことずくめだからだな
ただしまともなプログラマーしか使い  こなせない
0328デフォルトの名無しさん
垢版 |
2024/03/18(月) 10:20:48.83ID:JObkxwF0
しょーもないこだわり持ってるやつしか使ってない
0331デフォルトの名無しさん
垢版 |
2024/03/18(月) 14:49:59.91ID:RRSB5dTk
無効なアドレスを参照しない
運が良ければSegmentation Fault、運が悪ければ変な値が使われて何か起こる

無効なアドレスを更新しない
運が良ければSegmentation Fault、運が悪ければそこの値が壊れて何か起こる

メモリリークは割とどうでもいい
0332デフォルトの名無しさん
垢版 |
2024/03/18(月) 15:00:45.39ID:ZJ4hMg34
>>330
メモリ安全性のうち特に重要な一つがメモリ競合の安全性
まだ使っている値を意図せずに書き換えてしまい矛盾してしまう
プログラミングで起こるバグの代表的な一つ
Rustではこれを防ぐことができる
0333デフォルトの名無しさん
垢版 |
2024/03/18(月) 15:02:35.53ID:1+ObkRXf
>>331
ありがとう
「運が悪ければ変な値が使われて何か起こる」
そういえばメモリの概念理解せずにC言語使って、動かすたびに結果がかわるバグプログラム生み出してビビリ倒したことを思い出しました……
0334デフォルトの名無しさん
垢版 |
2024/03/18(月) 15:07:28.37ID:1+ObkRXf
>>332
ありがとう
「運が悪ければ変な値が使われて何か起こる」
そういえばC言語の現在時刻取得関数がポインタ返し&参照先書き換えるタイプの関数だったので大ハマリしたことありますね…
0335デフォルトの名無しさん
垢版 |
2024/03/18(月) 18:35:36.34ID:utey1W8X
セルフコントならもう少し面白いやつを頼む
0336デフォルトの名無しさん
垢版 |
2024/03/20(水) 01:19:02.24ID:6E76csi8
WebAssemblyバイナリの実行環境を提供する「Rust」で作成されたランタイム「Wasmi」に脆弱性が明らかになった。
ttps://www.security-next.com/154875
0337デフォルトの名無しさん
垢版 |
2024/03/20(水) 05:37:59.51ID:wTR4SIFK
デフォルトで制限よりも多くのパラメーターを指定すると域外に書き込みを行うおそれがある「CVE-2024-28123」が明らかとなった。

2023年12月にリリースされた「同0.31.1」にて脆弱性は修正された。
パラメーターが128個以下であることを確認する回避策についてもアナウンスしている。
0338デフォルトの名無しさん
垢版 |
2024/03/20(水) 12:50:32.15ID:/slJg93x
>>336
そういうのRust関係ないからわざわざここに書かなくてもいいよ
0340デフォルトの名無しさん
垢版 |
2024/03/20(水) 13:48:07.28ID:i9d3tzeg
ガベージコレクションのあるスクリプト言語であるPythonですら脆弱性でCVE出まくってるよ
0342デフォルトの名無しさん
垢版 |
2024/03/20(水) 16:11:18.74ID:sC/F3tDJ
unsafe使用箇所だからメモリ安全の外だろうな
インタプリタのスタックフレーム参照で毎回境界チェックする実装も微妙だししゃーない
■ このスレッドは過去ログ倉庫に格納されています

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