22/10/09 11:45:38.50 kycCKtGO.net
おまえも隔離スレに帰れ!ちょっと前にLLVMだから凄い坊があそこで暴れてたけど、ここはgccrsとかやる人の場だ、市ね
101:デフォルトの名無しさん
22/10/09 13:36:44.30 1+WY+ral.net
gccrsって使えるようになったの?
102:デフォルトの名無しさん
22/10/09 20:46:00.69 yOxuO3a2.net
Linux6.1ってRustで組んだってこと?
103:デフォルトの名無しさん
[ここ壊れてます] .net
ドライバ等をRustでも書けるようになるだけ
104:デフォルトの名無しさん
22/10/09 23:29:48.75 FY4RBnfH.net
Pattern alternativesってなんですか?和訳のパターンORもよくわかりません
URLリンク(doc.rust-lang.org)
URLリンク(doc.rust-jp.rs)
105:デフォルトの名無しさん
22/10/09 23:53:45.87 vVo7+K5Y.net
パターンの代替策
つまり「|」記号が
bit演算のORとしてだけでなく
パターンのORとしても使われるよってこと
106:デフォルトの名無しさん
22/10/10 11:32:20.19 wEJNunBW.net
>>69
なるほど
マルチスレッドで共有する場合にはどうするのが適切なんでしょうか?
107:デフォルトの名無しさん
22/10/10 11:45:42.80 wEJNunBW.net
>>105
これか
URLリンク(qiita.com)
108:デフォルトの名無しさん
22/10/10 18:49:06.89 lNBbmc/N.net
Linux Kernel6.1は、Rustへ移行した最初のバージョンとなります。
Rustへ移行することにより、C言語バージョンの世代から、およそ30%の高速化を果たしました。
109:デフォルトの名無しさん
22/10/10 22:52:16.26 3WEeN/aN.net
気分はCelltic!
「実はshared xor mutableってしっくりこないんです!」
110:デフォルトの名無しさん
22/10/10 23:11:02.61 U+uG6kFy.net
>>105
内部可変性を得たい場合
スレッド内ではCell<T>もしくは参照を持ち出したいならRefCell<T>を使う
スレッド内部で普通の共有ならばそれらの&を使う (&mutでなくてもOK)
スレッド内部で所有者が別となる共有ならばそれらのRc<...>を使う
スレッド間では完全排他のMutex<T>もしくはreaders複数可のRwLock<T>を使う
(ただしTがi32やboolならばもっと軽いAtomicI32やAtomicBoolが使える)
スレッド間で共有は所有者が別となるのでそれらのArc<...>を使う
111:デフォルトの名無しさん
[ここ壊れてます] .net
>>97
最適化頑張ってるだけでムーブは概念的なものじゃないぞ。RBMMなんだから。
112:デフォルトの名無しさん
22/10/11 19:16:08.16 Bl5ahscm.net
moveがmemcpy呼び出しになるかどうかはあくまでも実装の話で
move自体のセマンティクスはデータのコピーを要求しないということが言いたいのでは
最適化offにして構造体サイズ大きくするとmemcpy呼び出されるから、memcpy起きないというのは嘘だけど
113:デフォルトの名無しさん
22/10/11 19:23:40.64 61VrJvDY.net
>>110
あくまでもRustの言語レベルでの抽象的なレベルではムーブはムーブであってビットコピーの保証はそこには一切ない
そして我々は抽象的な概念に基づいてプログラミングすればよい
生成コードはムーブという抽象的な概念だけを保証して最適化される
だからこそ生成コードではムーブでビットコピーが消え得る
114:デフォルトの名無しさん
22/10/11 19:29:43.10 61VrJvDY.net
>>111
memcpyはたまたまムーブの最適化なしのデフォルト状態で行われる可能性のあるコードにすぎないね
Rustの言語としてはmemcpyが必ず行われることなんて全く保証しない
ムーブはもっと上位の概念であってRustが保証するのはその上位の概念のみだね
115:デフォルトの名無しさん
22/10/11 19:51:08.13 Bl5ahscm.net
>>113
はいはい、>>111は誤読されかねない表現でしたね
(常に)memcpy起きないというのは嘘
と読み替えておいてください
元々の>>94のRefCellやMutexの方が効率的かという質問については、そういう場合もある、というのが答えで良いですよね
生成されるコードがどうなるかは最適化レベルや周囲のコードに依存するわけで、必ずどちらかが効率が高いと言えるようなものではない
感覚的には格納するデータサイズが大きい方がRefCell/Mutexが有利に、小さければCellが有利になりそうだけど、
ちゃんと測定したわけではないので実際のところは分からない
116:デフォルトの名無しさん
22/10/11 20:23:10.29 iRs2n6UT.net
>>114
実はRefCell構造体のメンバーにCellが使われている(現状)
使用されるメモリサイズ
Cell<T> ← Tと同じサイズ
RefCell<T> ← Tのサイズに加えてborrow管理のために内部で使用するCellサイズ分加算
動作コスト
Cell<T> ← (利用後すぐset()すれば)Tと同じコスト
RefCell<T> ← Tのコストに加えてborrow管理のために内部で使用するCellの読み書き操作コスト分加算
117:デフォルトの名無しさん
22/10/11 21:44:42.19 P/g9+OyI.net
ホント笑っちゃうくらい嘘を散りばめてくるよねw
118:デフォルトの名無しさん
22/10/11 21:58:52.19 lchMb24F.net
>>114
RefCellやMutexの方が効率的かという質問については
代用として使うならばそれらの方が遅いでしょう
RefCellはボローチェック処理が必ず入ります
Mutexは排他的ロック処理が入るのでさらに遅いです
119:デフォルトの名無しさん
22/10/11 22:06:38.86 Bl5ahscm.net
120:rget="_blank" class="reply_link">>>115 動作コストはT全体を置き換える場合だよね TがVecで、一要素追加する場合のコストも計算してみてよ >>117 ボローチェック処理が最適化で消えないことは保証されてるの? ボローチェックや排他処理のコストはCellで発生するデータコピーより必ず高コストになるの?
121:デフォルトの名無しさん
22/10/12 14:10:22.75 IRDyECLz.net
ムーブ元の変数が使われないことがわかってるんだから
その変数の領域を使い回せばよいだけでしょ?
普通に考えてコピーとか起きないと思うんだが
122:デフォルトの名無しさん
22/10/12 18:26:20.15 R7/twQcO.net
自称分かってる人同士のケンカ
123:デフォルトの名無しさん
22/10/12 21:47:16.08 TdLmkMrU.net
RefCell使うのはアロケーションを避けたいからでしょ
124:デフォルトの名無しさん
22/10/12 23:29:45.96 MmGzrhE7.net
Cell<T>もTもメモリ領域は同じサイズで性質が異なるだけなのね
Cell<T>の更新はこうなるから
(1) メモリ→value読み出し // take()その1
(2) メモリ←default-value書き込み // take()その2
(3) valueを更新してnew-value
(4) メモリ←new-value書き込み // set()
コンパイラがまともなら(2)の部分はムダと判断して無くせそうね
さらにvalueの更新内容によっては (例えば足し算など算術の場合など)
その後にLLVMが最適化でメモリに対して直接実行する命令コードにするだろうから読み出し書き込みも消えるわけね
125:デフォルトの名無しさん
22/10/13 01:04:10.25 v9vBAx/l.net
CopyじゃないStringやVecで&mut selfとるメソッドを試せば違いが分かるよ
126:デフォルトの名無しさん
22/10/13 02:00:58.56 m/K7Pbd2.net
Copyを実装しない適当な構造体
#[derive(Default)]
struct Foo {
inner: i32,
}
の &Cell<Foo> と &mut i32 の両方のケースで
>>122の最適化により同じ生成コードとなるから
Copyを実装してるか否かは関係ないみたい
127:デフォルトの名無しさん
22/10/13 03:36:21.71 Oo+uXzBV.net
>>124
それだと簡単にインライン化出来るからね
アロケーションが必要な型という意味でCopyじゃないStringやVecと言ったんだけど
Dropと言ったほうがよかったのかな
128:デフォルトの名無しさん
22/10/13 04:02:18.88 cMF4wuqy.net
アロケーション発生しなくても(i32, i32)とかにするだけでもう生成アセンブリ同じじゃなくなるね
129:デフォルトの名無しさん
22/10/13 08:01:16.32 wSzwAK9q.net
コンパイラが>>122の
(2) メモリ←default-value書き込み
を削除する最適化をすれば
Copy実装なかろうがヒープを使おうが
生成コードは同じになるんじゃね?
130:デフォルトの名無しさん
22/10/13 15:12:31.34 FWxI+s/s.net
>>126
Copyにしてget/setにすれば同じになるかも
131:デフォルトの名無しさん
22/10/13 15:31:24.77 WZ96xtHr.net
macOSにおけるFirefoxのパフォーマンスを劇的に改善した方法とは?
メモリアロケーター「jemalloc」を独自にカスタマイズしたアロケーターを用いてメモリ管理を行っています。Firefoxのアロケーターでは並列処理時のロックを効率的に行うためにOSごとにネイティブなAPIを使用しているとのこと。このロックAPIとして、macOSではOSSpinLockが用いられていました。
URLリンク(gigazine.net)
これって、Rustのメモリアロケーターがjemallocを基にしたRust実装になってるってことだよね?大昔はjemallocだったという話で
132:デフォルトの名無しさん
22/10/14 21:09:01.17 iCatm8xv.net
>>136
シッタカも出来ないかまってちゃん不定期
URLリンク(searchfox.org)
133:デフォルトの名無しさん
22/10/15 00:38:51.20 ZRY2KlKK.net
>>130
servoを構成するコンポーネントのうちfirefoxに取り込まれたstyloしか登場してないように見えるが
134:デフォルトの名無しさん
22/10/15 10:12:30.40 kho15VFl.net
複オジにマジレスしても意味ないよ
135:デフォルトの名無しさん
22/10/15 21:19:13.19 Sue68NiD.net
お前の主張は「Firefoxはservo使ってない」であって「styloしか登場してない」では無い、そもそもstyloだけじゃない
途方もなく低い技術力でマウント取りたいことが生きがいの薄汚いオッサン
136:デフォルトの名無しさん
22/10/16 01:52:37.08 xR2EqnpB.net
servoは独立したレンダリングエンジンだからservoを使うと言えるのはgeckoを丸々置き換えた場合では
というかallocatorの話はどうなったんだ
137:デフォルトの名無しさん
22/10/16 13:06:47.08 I4ihc4bO.net
「Firefoxはservo使ってない」定期、顔真っ赤の話しそらしオジサン、geckoを丸々置き換えた場合とか言い出したw
「styloしか登場してない」も消えたwww
あんたはアロケーターなんて興味ないだろwww
したけりゃしろ。自分からは詳しい技術的な話何もできない、マウントしたいだけ、業界にいる寄生虫
138:デフォルトの名無しさん
22/10/16 16:22:20.12 xR2EqnpB.net
>>134
firefoxのレンダリングエンジンはservoじゃなくてgeckoのままだよ
servoは次世代ブラウザ向けのレンダリングエンジンの実装を模索するための実験プロジェクトで、geckoを置き換えることを意図したものではないよ
servoの一部のコンポーネントは完成度が高くgeckoに取り込まれてはいたので、
servoが発展していったらgecko全体がservoで置き換えられる未来もありえたけど、
mozillaがservoの開発者レイオフしちゃったのでその可能性もなくなっちゃったかと
動的ライブラリや静的ライブラリとして他のアプリケーションにリンクするcrateの場合、リンク先のアプリケーションバイナリに含まれる(または、動的リンクされる)allocatorを利用するのが普通なので、
geckoのservo由来のrustコードもそうなっていて独自にallocatorを定義することはしていないんじゃないかな
139:デフォルトの名無しさん
22/10/16 18:59:51.30 qTG+zV4j.net
rust関係ないけどjemallocを日本語で読む時
ジェ-
140:マロック派?それともジェム-アロック派?
141:デフォルトの名無しさん
22/10/16 20:24:24.45 xR2EqnpB.net
Json Evans mallocだからジェーイーマロックって呼んでる
142:はちみつ餃子
22/10/16 22:45:33.29 SvF0Fhwf.net
それを言うなら malloc が (たぶん) memory allocate の略なんだから
ジェーイーエムアロックと呼ぶのが筋というものでは……。
俺はそもそも口頭で読み上げる機会がないから考えたこともなかった。
143:デフォルトの名無しさん
22/10/16 23:11:22.79 sz/XVYMu.net
開発者本人の動画見るとジェイ・マロックに聞こえるが
ジェイ・イー・マロックが短くなってるだけかなこれ
URLリンク(youtu.be)
144:デフォルトの名無しさん
22/10/17 18:50:40.32 q3uOCHzu.net
>>136
servoじゃなくてgeckoのままは言い過ぎです、現にベクター系の2Dや、Canvasなどに使用するレンダラーはservo由来の
レンダラーが使用されます。その他はその通りでしょう
145:デフォルトの名無しさん
22/10/17 19:52:15.71 gBqRn20s.net
>>141
geckoを構成するコンポーネントの入れ替わりはあったけど
firefoxのレンダリングエンジンは生まれたときからずっとgeckoだよ
逆にgeckoじゃなかったら何なんだ
146:デフォルトの名無しさん
22/10/17 19:58:16.39 gBqRn20s.net
>>141
FirefoxにRustのコンポーネントを多く導入したQuantumプロジェクトの説明でも、ServoのコンポーネントをGeckoに取り込むと言っていて、
Geckoを置き換えるとは言っていない
URLリンク(wiki.mozilla.org)
147:デフォルトの名無しさん
22/10/17 21:29:09.32 MqsTBCMt.net
Rust関係ないからFirefoxスレでどうぞ
148:デフォルトの名無しさん
22/10/17 22:43:40.85 GuOtjDmV.net
もうその話題はいいよ
しつこいな
149:デフォルトの名無しさん
22/10/18 10:08:56.84 1nhFYrk9.net
しつこくやって『Cell<T>はTと同じコスト』(真っ赤な嘘)を流したかったんでしょw
150:デフォルトの名無しさん
22/10/18 11:26:14.64 f2tKHPpy.net
termuxのrustずっとバージョン不整合で動かないな
rustupじゃそもそもインストール出来ない
151:デフォルトの名無しさん
22/10/18 12:14:53.29 PMaXG0c3.net
>>147 俺は普通に動いてる
一応聞きたいんだけど、TermuxはF-Droidから入れたよね?
Play Store版はもうメンテナンスされてないから色々バグると思う
152:デフォルトの名無しさん
22/10/18 12:23:43.08 lAl7R2Of.net
>>143
あー、それ見てワカッタ風吹かしてんのな。「Rustのコンポーネントを多く導入」と言ってる時点で、styloだけじゃないし
2DレタリングのwebrenderもservoからのRust製だわ。”誰も”Geckoを置き換える=Geckoが無いなんて言ってない
URLリンク(github.com)
153:デフォルトの名無しさん
22/10/18 14:03:11.76 f2tKHPpy.net
>>148
F-Droidから入れてる
何故かlibllvm-14.soのリンクが出来ないと怒られてしまう
で入ってるllvmのバージョンが更新で15に上がってしまってる状態
俺環かも知れんね
154:デフォルトの名無しさん
[ここ壊れてます] .net
あんまり自信がある訳じゃないんだけど、カーネルが64bitでユーザーランドが32bitみたいな環境だったりしない?
155:デフォルトの名無しさん
[ここ壊れてます] .net
>>149
Geckoのコンポーネントを置き換える
と
Geckoを置き換える
は全然意味が違うでしょ
まあ日本語の問題で意図してるところは食い違ってないから反応するのはこれで終わりにするわ
156:デフォルトの名無しさん
[ここ壊れてます] .net
グーグル、Rustで書かれたセキュアなOS「KataOS」を発表
URLリンク(japan.zdnet.com)
157:デフォルトの名無しさん
22/10/18 15:37:54.47 f2tKHPpy.net
>>148,151
すまぬ色々やってる中で入れたnightlyの影響だった
お騒がせした
158:デフォルトの名無しさん
22/10/19 03:30:17.24 cvhlJCwu.net
fucsia「僕はいらない子なの?」
159:デフォルトの名無しさん
22/10/19 07:05:26.07 CJepXKVA.net
>>153
昔「おおっ!!!あのグーグルがまた何か新しいことを始めたぞ!すごそうだ!」
今「まぁーーたはじまったよ・・・」
160:デフォルトの名無しさん
22/10/19 11:11:44.42 H7L8/zfi.net
Googleが立ち上げては潰してきたサービス一覧「Killed by Google」
killedbygoogle.com
161:デフォルトの名無しさん
22/10/19 11:23:33.38 iHEkpSLR.net
何も産まないよりは健全よね
162:デフォルトの名無しさん
22/10/19 11:35:06.09 Dqx/r4FW.net
役に立つかどうかわからんものに手を出せる余裕が
個別の結果に関わらず
部分的な成果の積み上げで会社をブーストさせるんよ
163:デフォルトの名無しさん
22/10/19 11:38:58.17 Sj+PYk/j.net
まあ堅そうな名前ではあるな
164:デフォルトの名無しさん
22/10/19 12:24:59.02 j2B3ovC/.net
IoT向けOSって言ってるし組み込みOSなんて元々百花繚乱だろ。
組み込み機器の脆弱性対応なんて大変だし、そもそもその手の脆弱性が入り込みにくい言語を採用するのは合理的だと思う。
165:デフォルトの名無しさん
22/10/19 12:46:33.84 xwPbcXKV.net
日本ってやらない理由、出来ない理由並べる奴が多いよな
多くの日本企業よりGoogleの方が多く生み出しているし世の役に立っている
166:デフォルトの名無しさん
22/10/19 12:48:40.76 aUvB23KT.net
南朝鮮ってやらない理由、出来ない理由並べる奴が多いよな 多くの南朝鮮企業よりGoogleの方が多く生み出しているし世の役に立っている
167:デフォルトの名無しさん
22/10/19 13:00:38.45 xwPbcXKV.net
Rust Foundationへの参加はNECやFUJITSUよりSamsungの方が早いんじゃないかなぁ
国内大手で積極的にRustを推していこうなんて所はなさそうに見えるし
組み込みのRenesasとかもやる気なさそうだしな
168:デフォルトの名無しさん
22/10/19 19:58:52.34 +MAum9P/.net
出来ない理由を考えるのではなく!
169:デフォルトの名無しさん
22/10/19 21:32:43.94 mHa4T+cl.net
日本が後進国になってきたのは政治の責任が大きいけど
IT分野で遅れてるのは総じて教育水準が低いからだよ
170:デフォルトの名無しさん
22/10/19 22:51:58.05 owfoFln4.net
民主主義国は政治の責任=有権者の責任
171:デフォルトの名無しさん
22/10/19 23:03:48.16 kLmY2FYt.net
>>167
利権差配と中抜きしか考えない国賊を礼讃して
統一創価売国与党に投票し続けたやつの責任だろ
172:デフォルトの名無しさん
22/10/20 00:02:58.60 ce/AQgdF.net
まったく読むに値しないクソ書き込みの羅列の中で
>>160 だけが唯一価値ある輝きをはなっている
173:デフォルトの名無しさん
22/10/20 13:00:10.90 Px+TgmX7.net
在日だらけ。IT分野で遅れてるのは米国(英語圏)・中国の人口差だし、日本の人口減でもある。
世界中で、歴史上、移民以外で人口減を解決した国は1つもない
そういう意味では韓国などはでは優れたソフトウエアは1つもない。馬鹿な半島はAndoridのOSを
握ろうとTizenなどというゴミを掲げたが、食いついたのはNTTドコモぐらい
いま韓国で起こってるのはソフトウエアサービスの””ガラパゴス化””であり、GoogleやAmazon
Apple Payなどに対して参入障壁を作り防御するような、大昔の古臭い日本あった不公正貿易。
民主党政権時代だって3年あったわけだが、利権
174:と中抜きしかしてない。やったことは仕分けだが 1つも役に立たないどころか、地方医療を崩壊させ、気象変動へ対処できるインフラ投資を 一時的止めた害悪しかなかった。その他にも野田政権による執拗な消費税増税もあった。 今彼らは英国が減税を匂わせただけで大混乱していることを見ずに、消費税ゼロを掲げている。 卑劣にも矛先を反らし、リベラルなのに移民反対派で、リベラルなのに「国賊、売国」などという言葉を使い、 まるで戦争前夜か、共産主義や社会主義のような物言いをするアホが出る時点で若い人の人材不足といえる。
175:デフォルトの名無しさん
22/10/20 16:07:13.38 zGrDbuOl.net
英国が減税しただけで、支持率が7% になったw
米国の金利上昇で、韓国の金利も0.5% 上がったw
なのに、借金が1千兆円もある日本の金利が、0%w
狂った世界中の経済学者達が、日本は不正をしている。
日本国債は破綻しなければおかしいと言ってるw
外人が幾ら日本国債を売っても、金利が上がらない。
破綻しないw
いい加減、借金が1千兆円もあるという財務省の嘘に気付け!w
YouTube で勉強しろ。
【TVじゃ絶対言えない話】国の借金は嘘!?中田敦彦が解説
176:デフォルトの名無しさん
22/10/21 19:45:15.15 xXJwtueL.net
WEB+DB PRESS、何度目のRust入門なんだい?
177:デフォルトの名無しさん
22/10/21 20:10:13.59 HoCfXQGg.net
Rust入門は初めて
178:デフォルトの名無しさん
22/10/21 21:22:06.02 2TP3mE4K.net
pythonとrustを一通り試してみた
for文の入れ子で外側のforをbreakできるとか、数値を1_000_000と表現できるとか、
そんなところでrustのほうが行き届いている感じがした
ただpythonのリスト内包表記、添え字の-1で配列の一番最後を表すとかそんなのは便利だな
179:デフォルトの名無しさん
22/10/21 21:26:14.55 gnp0h5uN.net
Rust入門という感じではないな
Rustを使ったWeb入門という感じ
180:デフォルトの名無しさん
22/10/21 22:25:35.46 YCtBy6Lb.net
>>175
Web+DB Press読者は簡単なWebアプリ開発はいろんな言語で経験済みで理解しやすいだろうからチュートリアルの対象に選んだだけでは?
181:デフォルトの名無しさん
22/10/22 13:19:56.51 OES5lhv+.net
>>176
普段読まないけどRustなので買ってみた
なかなかわかりやすかった
基本文法の解説が明らかに足りないけど
サンプルを理解するだけならこの程度で良いのか
面倒な部分が表に出ないようにうまくサンプルを調整してるし
182:デフォルトの名無しさん
22/10/22 21:03:49.60 Vp6sRBIs.net
借用がどうGCに関係するのかよくわからない
うまく説明しているサイトはないですか?
183:デフォルトの名無しさん
22/10/22 21:38:11.55 OES5lhv+.net
まずスタックとヒープを理解せよ
これは口を酸っぱくして言ってる
でないとRustは理解できない
184:デフォルトの名無しさん
22/10/22 21:39:04.07 PO/EA+oY.net
とりあえずThe Bookの4章
URLリンク(doc.rust-lang.org)
Rustをそれなりに習得しようと思うなら
The Bookとオライリー本を読むのが一番近道
185:デフォルトの名無しさん
22/10/22 23:56:07.88 OES5lhv+.net
両方とも初心者には辛いよなあ
わかりやすい入門書が待たれる
186:デフォルトの名無しさん
22/10/23 00:22:18.48 LnniM1YV.net
借用するときにデータをスタックに積む
スコープを抜けるときに一気にpopするので
GCがいらない、つまり、早い
heapだとGCのときにデータの移動が必要になる
ので遅い
この理解であってる?
187:デフォルトの名無しさん
22/10/23 00:29:31.67 jNoMv4k0.net
ポインタとか参照とか他の言語で扱ったことない?
188:デフォルトの名無しさん
22/10/23 00:44:57.32 h/oZflgJ.net
heapが遅いの要因は、メモリの割り当て解放処理があるから処理量が多いとか、
割り当てた領域がバラバラになることでキャッシュ効率がさがることとかかと
189:デフォルトの名無しさん
22/10/23 13:47:22.46 /F23RQvw.net
ページング処理みたいなのが、ヒープだと2重に行われるんじゃないの?
190:デフォルトの名無しさん
22/10/23 14:14:22.62 ioVOctq2.net
>>182
Rustでのその辺のメモリの動きはオライリー本に詳しく書いてあった気がするから読むべし
191:デフォルトの名無しさん
22/10/23 15:30:09.10 t4UBj2/5.net
>>182
>>185
お前ら、具体的にどうされてるからスタックだと速いかわかって無いだろ、、、
192:デフォルトの名無しさん
22/10/23 18:33:19.09 QEVtmAwk.net
>>182
そんなに物事が単純なら良かったのに...
”スコープを抜けるときにGCがいらない、つまり、早い”、これは間違いでもある。インライン展開されるような高階関数なら良いが
ループ中でアロケーションしてしまうような記述をすると、その度に確保・解放されるので非効率になりかねないし、借用による
メモリーの管理ではないが、参照カウントを使用するSwiftでは、ループでボトルネックになることはある。
このためRustでは高階関数で書く事が一般的に(分かり易く)良い事とされる。あとスタックでどの言語も大体はスコープ外で
消えるのでヒープとスタックの区別は付けましょう
独立したGCスレッドが動く言語だと、スコープ外れでGCするとは限らないので、速い場合がある。一方で、高負荷な環境では
GCスレッドがありで、回収などインターラプトが入るのでRustが有利になる(=※こちらのほうがRustが重要視される理由)
いわゆるSTOP THE WORLD(DIO様風)だ。ただ、これが無ければ良いということではなく、循環参照などを作らなければ
問題ないという話で循環参照を作ってしまうのであれば、独立したGCスレッドは便利でもある
”GCのときにデータの移動が必要”になるかどうかは、GCのアルゴリズム次第であり、厳密には”データの移動が必要”になるのは
メモリーのフラグメント解消つまりコンパクション処理によるところが大きい。これは、近代的なOSでは似たような事を行っていて
これ自体が速度に大幅に影響を及ぼすとは言い難い
193:デフォルトの名無しさん
22/10/23 19:03:12.25 NZM9O6ur.net
>>188
> ループ中でアロケーションしてしまうような記述をすると
アホなコードで議論する必要あるの?
194:デフォルトの名無しさん
22/10/23 20:51:00.62 h/oZflgJ.net
一体何と何を比較しているのだ
195:デフォルトの名無しさん
22/10/23 22:09:39.72 HOBBKeJ+.net
なんかすごい早口で支離滅裂なこと言ってるけど
頭を整理した方が良いよ
196:デフォルトの名無しさん
22/10/24 16:50:56.92 SgELnO58.net
スコープを抜けるときにGCがいらない、つまり、早い
これが間違っている理由を教えてください
197:はちみつ餃子
22/10/24 18:09:05.87 VKX4Fsrh.net
ヒープメモリの管理はそれなりに重い処理だというのが論旨のように見える。
GC を使った場合のように不要なオブジェクトの判別をしていくコストは Rust では生じないが
それを除けば空いてる箇所と使用中の箇所を上手いこと管理する実行時コストは
GC (に付随するメモリ割り当て) でやってるのとたぶんそんなに差はないんじゃね。
198:デフォルトの名無しさん
22/10/24 18:49:41.29 8+UVFZyO.net
>>192
>スコープを抜けるときにGCがいらない、つまり、早い
確保したメモリはいつ解放するんだよバカ。
199:デフォルトの名無しさん
22/10/24 19:05:34.14 Off49nvS.net
文法で制約したら、書き手もコンパイラも
変数の寿命を厳密に特定することができて便利だろって事で、
どこにどう確保すると速いとか、そういう話とは別では
200:デフォルトの名無しさん
22/10/24 19:14:17.25 FdEAHzhz.net
GCがないので速い←わかる
スコープを抜けたらpopするだけなので速い←わかる
スコープを抜けるときにGCがいらない←スコープとGCは何の関係もないよね
201:デフォルトの名無しさん
22/10/24 20:07:47.96 rCA25jH/.net
まあGCは常に動く可能性があるからな
逆に全く動かない可能性もある
そこはGCのアルゴリズムによりけり
202:デフォルトの名無しさん
22/10/24 21:01:10.53 SgELnO58.net
スタックを使っているから
pop すればそのままメモリが解放されるという意味では?
203:デフォルトの名無しさん
22/10/24 21:39:23.30 UxIqfb1a.net
何と何を比べて何が速いと思ってるのか整理しなよ
話はそれからだ
204:デフォルトの名無しさん
22/10/24 22:49:30.31 c7GaYtEs.net
>>198
動的データ全部スタックに積むのか。すげーな。
205:デフォルトの名無しさん
22/10/24 22:54:45.01 9jOSWWIs.net
そんなことよりコンパイルの遅さマジでテコ入れろYO、非力なCeleronでactix-webのコンパイルしたら10分とかふざけてんのか?
206:デフォルトの名無しさん
22/10/24 23:05:21.00 XsMeW9pb.net
コンセプトがコンパイル遅くしても賢くするだから無理
207:デフォルトの名無しさん
22/10/24 23:18:23.86 b0depGja.net
依存ライブラリまで全部自前ビルドさせられてるわけだからな
コンパイル済みcrateの配布とかやってくれればなんとかなりそうではあるが
208:デフォルトの名無しさん
22/10/24 23:42:51.24 cJUnO/Lg.net
コンパイル高速化はユーザー側でもいろいろ工夫の余地はあるが
コア数多いマシンを使うのがいちばん効果がある
209:デフォルトの名無しさん
22/10/25 07:14:07.04 0Y9XP165.net
分散コンパイルか、差分コンパイルか、常にバックエンドでコンパイルか
210:デフォルトの名無しさん
22/10/25 08:16:49.84 A5TY3R0Y.net
>>201
流石にもっと良いマシン買えでFA
211:デフォルトの名無しさん
22/10/25 08:49:49.17 1jHrAe9o.net
でもRustって錆だよね
212:デフォルトの名無しさん
22/10/25 11:17:17.09 5EjxpvPU.net
ライブラリ類も複雑化・大型化の一途をたどっているご時世だし
Androidをビルド出来ないようなマシンは開発用としては時代遅れじゃね
213:デフォルトの名無しさん
22/10/25 16:49:21.94 pUVcngq8.net
環境負荷を下げるためにもTier1プラットフォームはビルド済みか半分ビルド済みを配布できるようにすべき
214:デフォルトの名無しさん
22/10/25 18:21:31.05 RZIJ148t.net
structのフィールドにasyncのクロージャ持たせるの面倒だな
215:デフォルトの名無しさん
22/10/26 00:21:17.27 +/Fbza6R.net
>>210
Pin<Box<dyn Future<Output = T>>> ではだめ?
216:デフォルトの名無しさん
22/10/26 01:59:13.05 TlW6c1+d.net
>>211
Box<dyn Fn() -> Pin<Box<dyn Future<Output = T>>>>
こんな感じ
217:デフォルトの名無しさん
22/10/26 03:12:53.76 J4zGWIbj.net
>>200
全部とは言っていないローカル変数だけだ
218:デフォルトの名無しさん
22/10/26 07:48:04.37 i0Q+rT9S.net
>>213
GoだってJavaだってローカル変数はスタックを利用する。
219:デフォルトの名無しさん
22/10/26 08:03:17.30 xzd5i3vP.net
>>214
Go は知らんが Java は値型しかスタックに確保しないよ
配列使うだけでヒープ使う
220:デフォルトの名無しさん
22/10/26 10:03:48.91 8iR+QuRY.net
んなこと言ったらRustだってBox使うだけでヒープ使われるだろ
221:デフォルトの名無しさん
22/10/26 10:28:26.80 poB2zSjv.net
ピープアレルギーでも湧いたのか?
222:デフォルトの名無しさん
22/10/26 10:55:30.37 xzd5i3vP.net
>>216
そりゃあえてBox使えばヒープ使うわな
極論バカ乙w
223:デフォルトの名無しさん
22/10/26 12:39:08.43 61QnplYU.net
ヒープで思いついたけどtest::benchってなんで使用したメモリ量出てこないの?Rustだってアロケーター自作できるなら出せなくないと思うんだが
224:デフォルトの名無しさん
22/10/26 13:39:05.90 29TlHyS0.net
c言語なんかも int a[n] とかはスタックから取ってきてる。昔はmallocしてたが。
とはいえlinuxのスタック領域はヒープとそんな変わらん。
225:デフォルトの名無しさん
22/10/26 13:49:21.71 OrdcPqRc.net
環境によるが、Rust のスレッドごとのスタックサイズのデフォルトが2MBとかで
バカでかいローカル変数や引数を使おうとすると、
簡単に実行時エラー/スタックオーバーフローを実現できるという
ちなみに、String はヒープを使う
226:デフォルトの名無しさん
22/10/26 14:58:21.99 XcmPInF1.net
>>220
ん?
何が変わらんの?
227:デフォルトの名無しさん
22/10/26 16:10:38.33 +/Fbza6R.net
>>219
issueはあるが放置されてる
URLリンク(github.com)
こういうのは欲しい人が積極的に動かないとなかなか進まないよね
228:デフォルトの名無しさん
22/10/26 18:56:12.77 m/VlzFSs.net
C 以外の言語は、すべて浅いコピー・shallow copy でしょ。
実体はコピーされずに、参照だけがコピーされる
たぶん、ローカル変数も参照だけがスタックにあって、
実体はヒープにあるのでしょ
229:デフォルトの名無しさん
22/10/26 19:32:11.84 /Jbhrlo+.net
そもそもスクリプト言語はマシンスタック使ってないから
C/C++/Rust/Goみたいなコンパイル言語とスクリプト言語(PythonとかRuby)とではメモリモデルが全く違う
JVMのJITはVMスタックをマシンスタックに引き継ぐって処理をやってるけど
230:デフォルトの名無しさん
22/10/26 19:35:12.65 +/Fbza6R.net
>>224
Cにdeep copyの概念ある?
231:はちみつ餃子
22/10/26 19:39:57.27 UI6BPQPg.net
>>226
たぶん >>224 は Java や C# などでいう参照型のことを言ってると思う。
232:デフォルトの名無しさん
22/10/26 19:41:30.91 WAf5RIwU.net
Box<T>って出現頻度の割に表記が長いよな
boxキーワードに変える案はどうなったんだ?
233:デフォルトの名無しさん
22/10/26 20:19:12.15 SEIcgM+j.net
>>220
まーた思いつきで適当なこと言ってるの?
234:デフォルトの名無しさん
22/10/26 21:39:27.98 xibmu52f.net
シャローコピーもディープコピーもプログラマに意識させるような言語の方がいいと思うけどなあ
235:デフォルトの名無しさん
22/10/27 17:59:59.22 36nf4K/2.net
C言語は低レベルすぎるからshallow copyやdeep copyを意識する必要がそもそもないしな
ポインタをそのまま複製するのがshallow copyでポインタをデリファレンスしてからその値を複製するのがdeep copyってだけやし
236:デフォルトの名無しさん
22/10/27 18:19:49.08 mzG41rMz.net
cだってポインタがネストされてたら順番に見てかないといけないのは他の言語と同じでしょ。
ネストを考慮しなくて良いならjavaだってcloneで一発コピーできる
237:デフォルトの名無しさん
22/10/27 22:00:27.64 rMi5UTbc.net
>>231
> C言語は低レベルすぎるからshallow copyやdeep copyを意識する必要がそもそもないしな
むしろ意識しまくりだろ
shallow copyとかdeep Copyとかのおしゃれな名前では呼んでないけど
238:デフォルトの名無しさん
22/10/27 22:11:49.94 olmwGZ8d.net
複製おじさんディープコピー知らなかったもんねw
239:デフォルトの名無しさん
22/10/27 22:27:03.43 DBkkmtck.net
あえていうならCにおいては構造体のメンバをそのまま代入するのがshallow copy
構造体のメンバのポインタの領域を新しく領域を確保してコピー元の構造体を再帰的にmemcpyするのがdeep cooy
240:デフォルトの名無しさん
22/10/27 23:13:57.69 qcIge2ki.net
Cではというが大多数の言語がそうじゃね
241:デフォルトの名無しさん
22/10/28 00:02:58.28 Rl5QKwW8.net
deep copy は、ネストするから難しい
Ruby などは参照のリンクを断つために、
一旦、JSON などの文字列にしてから、オブジェクトを再構築したりする
Marshal もあるけど、色々な条件がつく。
IO, Proc, 特異メソッドが使えないとか
242:デフォルトの名無しさん
22/10/28 01:13:37.77 jXOvR4PJ.net
なんか話の脈絡も流れもなく各人が単語に反応して書きたいこと垂れ流すだけのスレと化してんな
243:デフォルトの名無しさん
22/10/28 03:43:44.96 01u53tKZ.net
高階関数はGCの性能に影響を及ぼすの?
244:デフォルトの名無しさん
22/10/28 09:27:53.24 jXOvR4PJ.net
Webpackの後継となる新バンドルツール「Turbopack」が登場。Rust製のネイティブアプリケーションでWebpackの700倍高速に。Next.js Conf 2022 - Publickey
URLリンク(www.publickey1.jp)
245:デフォルトの名無しさん
22/10/28 16:15:00.57 AMrJHSke.net
JavaScriptっていつまでバンドルとかやるん?
246:デフォルトの名無しさん
22/10/28 16:24:46.58 muqJ433+.net
いっそコンパイルしたら
247:デフォルトの名無しさん
22/10/28 16:28:04.57 AMrJHSke.net
wasmでそれやろうとしてるけど
wasmランタイムよりJavaScriptランタイムの方がまだ速いというトホホな状態
248:デフォルトの名無しさん
22/10/28 19:59:50.54 eNUtjibx.net
じゃあasmjsでよくね
249:デフォルトの名無しさん
22/10/30 11:39:14.94 zV+ownbZ.net
何いってんだ
JavaScriptはRustの大口顧客だぞ
バカにするなんてとんでもない
JavaScriptの市場が大きいほどRustが儲かる仕組みなんだ
250:デフォルトの名無しさん
22/10/30 13:52:59.67 Ffhte1rz.net
moziraとgoogle, Microsoftと主要ブラウザメーカーが推進してるからな
251:デフォルトの名無しさん
22/10/30 19:41:21.29 TG2fSMWC.net
なんでvecの&mutに*が不必要なのか、いまいち理解してなかったけど
fn calc(n: &mut Vec<usize>) {
(*n).push(1);
}
こういうことかー。そういうことだったのかー
252:デフォルトの名無しさん
22/10/30 23:24:15.56 tkb7REiJ.net
struct User {
name : String,
age : u32,
}
fn main() {
let mut user = User {
name : "sato".to_string(),
age : 30,
};
user.age = 40;
user.name = "aaaa".to_string();
println!("{}{}", user.name, user.age);
}
"sato".to_string()で生成したStringは
user.name = "aaaa".to_string()後はどうなるの?
mainの}抜ける=プログラム終了時ようやく解放?
253:デフォルトの名無しさん
22/10/30 23:41:49.13 fG4j0a7a.net
Dropを自分で実装した型で試せばわかる
254:デフォルトの名無しさん
22/10/31 19:06:46.94 DHbQvQ7c.net
相変わらずLinusに怒られまくってるね
255:デフォルトの名無しさん
22/11/01 06:39:05.97 y5vMQo4Y.net
rust導入してもディレクトリ構造が汚くなるだけなのにどうして導入したんだろうね
正直撤回して欲しいわ
256:デフォルトの名無しさん
22/11/01 07:47:38.45 6ZBnCRFC.net
ディレクトリ構造なんかより優先すべきことがあるからだろ
rust使う意味を何も分かってないな
257:デフォルトの名無しさん
22/11/01 14:04:14.12 w6yg6Ajb.net
もうlinusがカーネル用にsafeな言語作った方がいいんじゃないの
既成言語じゃ既存の処理系と整合性をとらないといけないから
いろいろな不整合が生じる
258:はちみつ餃子
22/11/01 14:12:23.10 XoXOtAeK.net
エコシステムの充実はユーザ規模によるところがあるから
たとえ言語の設計としてベストマッチでも特化しすぎると
(使い手が増えなくて) 雑多なツールやライブラリが出揃い難いということもありうる。
Linux くらいの規模なら専用言語を作っても割に合ったりするかな?
259:デフォルトの名無しさん
22/11/01 14:25:52.66 smDWdngC.net
linusがなんか言ったの?
ググってもlinux 6.1にrustが取り込まれた話しか見つけられなかった
260:デフォルトの名無しさん
22/11/01 14:50:17.04 FsVxrWah.net
>>253
なにそのgitな流れは。
凄まじく少ないコードで実現してしまいそうで恐ろしい。
ピーキーなのになって、普通の人は使えないのを期待しちゃう。
261:デフォルトの名無しさん
22/11/01 14:58:39.21 O+5UiM+O.net
>>253
linusはgcc拡張のCが最高だと思ってる人だよ
262:デフォルトの名無しさん
22/11/01 18:29:34.49 cxS6KzKc.net
>>250
どれ?
263:デフォルトの名無しさん
22/11/02 15:56:44.98 ohjjd8k9.net
linuxもデフォルトcというよりもかなりカーネル用の拡張してるからrustもそうすればええわってのが
linusの主張でしょ。
264:デフォルトの名無しさん
22/11/02 16:18:07.00 qqWWqhkC.net
一応clangでもlinuxカーネルコンパイルできるようになっているということは、
LLVMに必要な機能はそろっているということだろうから、
rustcからそれらの機能を呼び出せるようにできれば良いのかね
265:デフォルトの名無しさん
22/11/02 16:35:45.00 F11hp17c.net
リーナスゴシップとかどうでもいいスレチネタを続けるなよ
266:デフォルトの名無しさん
22/11/03 02:16:08.55 atTBpfYp.net
しょーもないシンタックスの話より有意義だけどな。
267:デフォルトの名無しさん
22/11/03 05:38:58.72 CtTK5dM6.net
1要素タプルの書き方Pythonと同じなんだね
パターンマッチで参照外しと絡むとややこしいなぁ
// 要素1のタプルはカンマ必要
let (mut a, ) = (1, );
a = 100;
println!("{}", a); //=> 100
// 要素1のタプルはカンマ必要
let &(mut a, ) = &(1, );
a = 100;
println!("{}", a); //=> 100
// (式)と区別つかないからとか
let &(mut a) = &(1);
a = 100;
println!("{}", a); //=> 100
// error[E0308]: mismatched types
let &mut a = &1; // ←ココ
a = 100;
println!("{}", a);
// こっちはok
let &(mut a) = &1;
a = 100;
println!("{}", a); //=> 100
mutがどっちに付くのが優先なのか(イミュータブルなaの参照なのかaのイミュータブル参照なのか)覚えてないと適切に()付けられないね、覚えりゃいいんだけども
Rustの話に限らずもっと根本的な解決方法ってないのかな?
()をいろんな意味に酷使し過ぎでは?関数の引数部分、式の評価順変更、タプル、等々
型は後置修飾なのに&やmutはなんで前から懸かるの?
これ全部RPNにすれば解釈の曖昧さがなくなって優先順位の()が要らなくなり、関数呼び出しもf1(1, f2(2, 3), f3(4))は1 2 3 f2 4 f3 f1となって、タプル以外の()撲滅できないか?
268:デフォルトの名無しさん
22/11/03 19:40:23.88 4W4icteo.net
>>263
()を色々使いすぎというのは同意だけどRPNだと今よりもっと使われないよ。
連鎖性言語とか好きだけど。
269:デフォルトの名無しさん
22/11/03 21:14:31.73 Z+updFpk.net
()については他の言語と同じだしそこで変に独自性を出してもなぁという感じ
270:デフォルトの名無しさん
22/11/03 21:15:01.48 t6ap+kyc.net
for &i in vec![0_usize; 5].iter() {
//iのままなんちゃら
}
for i in vec![0_usize; 5].iter() {
//*iでなんちゃら
}
参照外しはどっちをつかってる人のほうが一般的なん?
271:デフォルトの名無しさん
22/11/03 21:21:15.76 0fRPRys5.net
Copy実装してる型なら別にどっちでも……
272:デフォルトの名無しさん
22/11/03 21:35:17.79 b1nVlp4p.net
union で定義した型があり、タグビットに相当するビットで variant を区別できる場合に
enum と同じ表現でパターンマッチするというようなことは出来ませんかね?
マニュアルを見た感じでは出来なさそうなので駄目で元々な相談なんですが……。
それが欲しくなった事情としては抽象的なバイトコードマシンが定義されていて
そのバイトコードをそのまま enum にマッピングできれば楽なのになと思った次第です。
273:デフォルトの名無しさん
22/11/04 04:42:50.90 QJXSkaei.net
.expect("なんとかかんとかfailed.");
expectの引数はこんな文章になりがち
.expect("なんとかexpected, but かんとか found");
ならまだいいけど
コード読むときexpectというメソッド名からその引数には"期待しているものの説明"を"期待"してしまう
慣れるんだろうか…
274:デフォルトの名無しさん
22/11/04 08:57:52.35 KcmeiRV8.net
>>269
英単語を声に出して読んでみ
275:デフォルトの名無しさん
22/11/04 09:12:11.15 NSu48ax/.net
>>269
公式のドキュメントにも
.expect("failed to parse number")
という例があるしあまり気にしない方がよさそう
URLリンク(doc.rust-lang.org)
276:デフォルトの名無しさん
22/11/04 09:15:25.47 yWEsFaag.net
>>271
これ英語の分からん奴が書いたんだろう
277:デフォルトの名無しさん
22/11/04 09:25:36.66 u3TD418O.net
>>269
まあ慣れるしかないわな
俺もこの名前はおかしいと思うし世の中でもおかしいと思う人はいるようだ
URLリンク(stackoverflow.com)
278:デフォルトの名無しさん
22/11/04 09:47:45.14 QJXSkaei.net
>>273
よかった、俺だけではなかったか
279:デフォルトの名無しさん
22/11/04 09:54:11.00 NSu48ax/.net
推奨されるメッセージのスタイルが定義されているので>>269は正しい
URLリンク(doc.rust-lang.org)
どうしても気になるならこれを根拠にしてメッセージを修正するpull req送ると良いと思う
280:デフォルトの名無しさん
22/11/04 11:58:42.90 hgziOenm.net
君、ぼくのおちんちんを舐めてみないかい
281:デフォルトの名無しさん
22/11/04 12:36:39.57 8jcY9XF+.net
.expect("ン拒否するゥ");
282:デフォルトの名無しさん
22/11/04 13:14:11.67 u3TD418O.net
.expect("もう少しぶっといイチモツを用意すべきです")
283:デフォルトの名無しさん
22/11/05 21:07:51.50 EPLuMYxk.net
expectがそもそも期待するという意味より、予想するという意味合いで使われてることが多い気がする
284:デフォルトの名無しさん
22/11/05 21:47:55.53 6MdwxjIj.net
ここまで1.65の話題ゼロか
285:デフォルトの名無しさん
22/11/05 21:51:57.09 4ktyBPoJ.net
GAT難しいからw
286:デフォルトの名無しさん
22/11/05 21:58:52.83 B2i8Nuif.net
Rust 1.65.0 の発表
2022 年 11 月 3 日 · Rust リリース チーム
URLリンク(blog.rust-lang.org)
新しい Rust リリースの詳細に入る前に、イランの宗教道徳警察によるMahsa Amini の悲劇的な死と、他の多くの人々の死と暴力的な抑圧に注意を向けたいと思います。詳細については、 URLリンク(en.wikipedia.org)を参照してください。私たちは、人権のために闘っているイランの人々と連帯します。
↑BLMといいウクライナといい海外ITの政治的主張入れて当然みたいなノリ苦手
質実剛健のイメージだったがRustチームも同じでちょっとガッカリ
287:デフォルトの名無しさん
22/11/05 22:23:37.34 CC30py/U.net
嫌な世の中だな
288:デフォルトの名無しさん
22/11/05 22:33:26.02 zxpwXxCd.net
そういうのが嫌なら使わなければよろしい
289:デフォルトの名無しさん
22/11/06 03:47:36.18 5A+TXyoz.net
お、Backtraceがstabilizeされたか
めでたい
290:デフォルトの名無しさん
22/11/06 23:25:31.82 tr7TV8Z+.net
>>285
うむ
291:デフォルトの名無しさん
22/11/07 14:30:18.00 5gh9UgGm.net
むしろ政治的な要素が少しでもあると過敏反応する日本IT連中のがキモいわ
292:デフォルトの名無しさん
22/11/07 14:37:07.26 3k6QMezQ.net
RustってSDGsだよね
293:デフォルトの名無しさん
22/11/07 16:35:16.97 F5fz3af4.net
みんなMSRVいくつにしてる?
294:デフォルトの名無しさん
22/11/07 21:29:16.68 oBOm8exD.net
日本人はまあ事なかれ主義だから仕方がない
295:デフォルトの名無しさん
22/11/09 08:18:29.70 JQdb1AnG.net
過剰反応というかツイッターでも左翼のトレンド操作がバレてしまったし
そういう必死な印象操作する奴らに全く反応しないのも正常性バイアスなだけで危険だと思うけどね
296:デフォルトの名無しさん
22/11/09 08:49:14.30 jv4fVWS/.net
別に操作でもなんでもなく前から人が選んでるって言ってたじゃん。
だからそういうのを過剰反応って言うんだよ。
297:デフォルトの名無しさん
22/11/09 09:39:55.00 LmGx5OMY.net
>>291
ナイーブなやっちゃなぁ
どの国でも底辺ほど極右化しちゃうのは物事が見えてないからなんやな
298:デフォルトの名無しさん
22/11/09 09:48:57.31 fSnT1d04.net
貧困老人って左傾化してるイメージある
299:デフォルトの名無しさん
22/11/09 12:28:40.18 aAawVede.net
>>292
トレンドはどのように決定されますか?
トレンドはアルゴリズムによって決定され、初期設定では、フォローしているアカウント、興味関心、位置情報をもとにカスタマイズされています。
こういうAI系にRustが使われる可能性ありそうかな?
300:デフォルトの名無しさん
22/11/09 12:56:20.73 YZQA7nNX.net
>>295
コア部分がC++、FortranからRustに変わるとかはありそう
301:デフォルトの名無しさん
22/11/09 13:03:43.26 tbXsBHme.net
>>294
それもまたナイーブな見方やなぁ
反自民党なら左、親自民党なら右やと思ってるんやろ?
302:デフォルトの名無しさん
22/11/09 14:25:41.02 bNBw/HLH.net
>>296
rustのGPU周りのツールチェインは整備進んでるの?
303:デフォルトの名無しさん
22/11/09 19:49:39.97 8uuc6jgH.net
>>298
GPGPU系は普通に使えそうな感じはしてるけどdeep learning周りはNvidiaが乗り気になるまで無理かもしれないと思えてきた
304:デフォルトの名無しさん
22/11/12 21:53:46.90 PWetNf5n.net
eguiつよそうだけどみんな興味ないの?
305:デフォルトの名無しさん
22/11/13 01:00:16.84 1Xo91Kz4.net
guiはeguiとtauriの2強になりそう
306:デフォルトの名無しさん
22/11/13 02:09:24.41 Uh0BavN1.net
eguiはエグイ
307:デフォルトの名無しさん
22/11/13 02:33:53.13 RFRBhoEy.net
言うほど2強か?
URLリンク(www.publickey1.jp)
308:デフォルトの名無しさん
22/11/13 21:44:40.30 S
309:eSkk5iM.net
310:デフォルトの名無しさん
22/11/13 22:06:12.87 iM/fRtPp.net
脱Electronした純Rust製コードエディタが出ないことには評価し辛いな。
311:デフォルトの名無しさん
22/11/13 22:58:55.78 T5PK/vl5
312:.net
313:デフォルトの名無しさん
22/11/15 00:12:55.17 dw7MQVYD.net
Bevyの変更量エグいな。1.0到達まで様子見するわ
URLリンク(bevyengine.org)
314:デフォルトの名無しさん
22/11/15 00:20:45.30 aZkMwykQ.net
米国家安全保障局、CやC++からメモリー安全性の高いJavaなどへの移行を推奨
URLリンク(japan.zdnet.com)
ハッカーらによるリモートコード実行(RCE)をはじめとするさまざまな攻撃からコードを保護するために、C#やGo、Java、Ruby、Swift、Rustといったメモリー安全性の高い言語に移行するよう推奨している。
315:デフォルトの名無しさん
22/11/15 00:37:48.72 91d2LP66.net
CやC++で書かれているライブラリに依存するのもやめた方が良いのかね
316:デフォルトの名無しさん
22/11/15 01:26:07.72 5Bng48RE.net
実績というのは何にも代えがたい証明だからね。
十分に広く長く使われて枯れたライブラリをすぐさま使用停止するほどではないと思う。
長期的には移行せざるを得ないと思うが。
317:デフォルトの名無しさん
22/11/15 02:05:15.69 9SlnRoJw.net
>プログラマー側での実行に大きく依存している
言語の問題ではなくて、処理系と設計の問題だろうけど
C/C++と同程度の注意力であっても、
比較的楽に安全な実装が可能という話か
318:デフォルトの名無しさん
22/11/15 05:58:46.96 XpLYghoG.net
RubyはRustの誤植な気がする
319:デフォルトの名無しさん
22/11/15 06:20:05.09 dw7MQVYD.net
Javaもnull非安全クソ言語じゃんぬるぽ
320:デフォルトの名無しさん
22/11/15 07:20:48.25 GEd0aXfX.net
>>312
元の記事でも
The National Security Agency (NSA) is urging developers to shift to memory safe languages – such as C#, Go, Java, Ruby, Rust, and Swift
って書いてあるから誤植とかでは無いと思うがNSAのソースを示してほしいね
URLリンク(www.zdnet.com)
321:デフォルトの名無しさん
22/11/15 08:46:43.91 91d2LP66.net
メモリ安全という意味ではRubyは条件満たしてはいるのでは
Pythonがないのは気になるが
322:デフォルトの名無しさん
22/11/15 08:47:01.64 UduTysKC.net
ソース
URLリンク(media.defense.gov)
323:デフォルトの名無しさん
22/11/15 09:09:11.17 ott+UO1u.net
人工衛星イザナミ・イザナギでも、mruby を使っている
C はポインターでバグるから、
文字列処理などはポインターを使わない、安全なmrubyが良い
それで、mrubyから、Cのライブラリを呼び出せば安全
324:デフォルトの名無しさん
22/11/15 11:32:13.77 LEUpsbho.net
文字列処理でポインタを使わないってどうやんの?
325:デフォルトの名無しさん
22/11/15 11:45:11.75 Ohwd0nE1.net
陽に使わないって事だろ
326:デフォルトの名無しさん
22/11/15 12:05:46.25 91d2LP66.net
言わんとすることは分かるけど人工衛星と文字列処理はあんまり関係なさそう
327:デフォルトの名無しさん
22/11/15 12:16:51.72 REyE3AUr.net
>>316
これからメモリーセーフな言語が沢山出てきそうだな
328:デフォルトの名無しさん
22/11/15 12:57:18.27 37NRafRf.net
メモリセーフかつGC無しの言語ってRust以外に増える気配ないよな
需要あるのに
329:デフォルトの名無しさん
22/11/15 13:11:29.50 bU8+MPV6.net
C++ は安全な言語に混ぜてもらえなかったんだな。
C++はCに寄せられてしまったのかと。
330:デフォルトの名無しさん
22/11/15 13:50:50.90 eF4hIM3d.net
「生ポインタを使わずスマートポインタを使う」
「オブジェクトのコピーはすべてムーブを使う」
を徹底すればそこまで危険ではないんだけどね
331:デフォルトの名無しさん
22/11/15 13:53:08.34 Ohwd0nE1.net
>>323
まあやろうと思えばCと同じことができちゃうからね
332:デフォルトの名無しさん
22/11/15 14:25:30.22 5Bng48RE.net
>>324
知っててもクソみたいな誤りをするのが人だからな。
333:デフォルトの名無しさん
22/11/15 15:49:10.51 91d2LP66.net
Google Chromeのバグの7割がメモリ安全関連というし、
C++で安全性を保ちつつ大規模複雑なアプリケーションを作るのは難しいのでは
334:デフォルトの名無しさん
22/11/15 16:00:29.49 AMPFJlS8.net
そりゃ「〇〇するよう気をつければ良い」が通るんならそもそもバグらないよう気をつけられるはずだしな
人間が気をつけるのと機械的にチェックできることの間には大きな差がある
335:デフォルトの名無しさん
22/11/15 21:18:52.91 oaKUlL5c.net
>「オブジェクトのコピーはすべてムーブを使う」
微妙に意味が分からん
336:デフォルトの名無しさん
22/11/16 03:16:38.83 +3Ecu7Qb.net
>>329
クラスにムーブコンストラクタとムーブ代入演算子を必ず実装して
それが呼び出されように書くということね
ゼロから書く場合は可能
つまりRustっぽく書く
しかし外部ライブラリを使う場合は破綻するので無理なのだが
337:デフォルトの名無しさん
22/11/16 07:33:54.12 NR4h2Di6.net
F#をトライしていたのですが、VSは重いし、VScodeは動かすことができず
Sublimeは何とか動くが、ライブラリをうまくアクセスできず図を出力できず
コマンドラインでの実行もバージョンが古いせいかこれもライブラリにアクセスできず
で、似ているというRUSTをテストしてみました
インストールも簡単、クレートの設定も簡単
コンソールでコンパイル、実行も簡単
webにあるサンプルをテスト、5つほどwarningがでていましたが図を出力できました
F#では実行環境を作るのに四苦八苦しましたが、RUSTはあっというま
感激してここにアップしました
今から勉強します
338:デフォルトの名無しさん
22/11/16 07:35:45.01 16ZvLDN4.net
「コピーは使わないでムーブする」なら意味が通じたが
339:デフォルトの名無しさん
22/11/16 12:12:43.09 I1e3AS0A.net
>>332
そのつもりで書いてた。
推敲不足だったな。回線ケーブルで首釣るかもしれん。
340:デフォルトの名無しさん
22/11/16 18:02:22.96 +n4YDZit.net
一部のアスペ以外はそれぐらいの推論はできるからあまり気にしなくていいよ
341:デフォルトの名無しさん
22/11/16 18:02:43.41 QMFF+6Ax.net
そういうのは吊るを使う
342:デフォルトの名無しさん
22/11/16 18:29:22.77 XyYlAbZW.net
>>333
お前は誰だよw
俺を語ってんじゃねー
343:デフォルトの名無しさん
22/11/16 20:20:41.18 Lkj73ShV.net
.netでrustが使えれば無敵なのに
344:デフォルトの名無しさん
22/11/16 21:13:44.67 y4GxYc69.net
GCのランタイム環境でRUSTは意味ないんじゃ?
345:デフォルトの名無しさん
22/11/16 21:37:10.96 eOApcCVI.net
ML 系言語が Rust を高水準にした感じじゃない?
(というか ML の研究からリージョン推論が生まれて Rust に繋がっていったのだが……。)
.NET 用だと F# があるから使ってみても面白いかもね。
346:デフォルトの名無しさん
22/11/16 21:59:45.42 /cIgFYP8.net
.NETのライブラリが使いたいとかでは
347:デフォルトの名無しさん
22/11/17 00:08:08.45 Wvvh1amI.net
rust難しすぎません?
僕はまだまだ、たぶん無理だけど、そこそこできるようになったとしても、全体の底上げがなければ普及が難しいのではという自己弁護
348:デフォルトの名無しさん
22/11/17 00:34:44.66 /MItGujg.net
既存のC/C++のコードをRustに書き直すのは
頑張らなくても良いですと言われていても
世界に一人ぐらい頑張る人がいて
再実装しましたみたいなのが時々出てくるな
349:デフォルトの名無しさん
22/11/17 00:48:28.80 SzkkMxOu.net
C++ 何となく使っているけど、Rust って難しいの?
C++ より難しいなら、先に勉強しようかな
350:デフォルトの名無しさん
22/11/17 01:00:11.07 EPum3E1i.net
>>343 とりあえず動かすのはRustのが難しい
正しく動かすのはC++のが難しい
351:デフォルトの名無しさん
22/11/17 01:28:33.22 MDHZgFO+.net
C++ は未定義を踏むのがさすがに簡単すぎるのがいけない。
352:デフォルトの名無しさん
22/11/17 01:54:53.99 6uPAxih4.net
>>330
これを徹底すればC++も問題ないよ
353:デフォルトの名無しさん
22/11/17 03:15:48.27 Oh632irx.net
>>344
Rustは安全性と処理効率を保ったままさらに高みに登ろうとすると、C++では
可能だったことが不可能なことがある。
354:デフォルトの名無しさん
22/11/17 05:38:42.23 MvDxl/Xz.net
>>346
徹底するのが難しい、って話だろ
355:デフォルトの名無しさん
22/11/17 05:39:00.42 7vp/wPcJ.net
>>346
「〇〇を徹底します」みたいな精神論が再発防止にならないのは業界の常識
356:デフォルトの名無しさん
22/11/17 05:39:30.88 7vp/wPcJ.net
>>347
具体的にはどういうケース?
357:デフォルトの名無しさん
22/11/17 07:38:31.41 HsWuKvxv.net
>>350
大規模なマルチスレッドとかじゃない?
それこそ「共有メモリは排他制御を徹底すべし」ってだけの話だけど
数百万行のコードベース全体に対して常時気をつけ続けるというのは人間には無理だろう
358:デフォルトの名無しさん
22/11/17 07:44:38.30 EPum3E1i.net
>>351 マルチスレッドこそRustの得意分野だと思うんだけど
359:デフォルトの名無しさん
22/11/17 07:48:15.39 AvIWLuzY.net
rustは所有権とかライフタイムとかなければ簡単で使いやすそうって印象
360:デフォルトの名無しさん
22/11/17 07:53:43.04 HKu8SavS.net
所有権やライフタイムがいらないならrustである必要ないのでは
361:デフォルトの名無しさん
22/11/17 08:37:34.35 HsWuKvxv.net
>>352
あ、逆の話か
C++だと不可能なことがRustだと可能になるって読んでた
357のは思いつかんね
362:デフォルトの名無しさん
22/11/17 08:42:54.13 t8CddWfY.net
複雑なマルチスレッドのアプリで俺にしか直せないバグを故意に仕込むことならC++でしかできないかな
363:デフォルトの名無しさん
22/11/17 09:56:45.90 AvIWLuzY.net
>>354
プログラマが全知全能でメモリ関係のバグを踏まないって仮定したら所有権やライフタイムがなくてもrustはc++以上の優れた型システムを持ってる
364:デフォルトの名無しさん
22/11/17 10:21:30.69 oUYdn6MU.net
>>357
Haskellの方が優れてるよ
365:デフォルトの名無しさん
22/11/18 17:50:50.73 nTmfkfcZ.net
米GitHubは11月18日までに、2022年にGitHub上で多く使用されたプログラミング言語ランキングを発表した。
その結果、1位は「JavaScript」だった。以降、2位「Python」、3位「Java」、4位「Typescript」、5位「C#」、
6位「C++」、7位「PHP」、8位「Shell」、9位「C」、10位「Ruby」と続いた。
Rubyに負けたらいけないだろw
366:デフォルトの名無しさん
22/11/18 17:57:22.15 G2UZSnwT.net
企業の人ってGitHub使えるのかな?
企業が使い始めたら増えると思うけど。
367:デフォルトの名無しさん
22/11/18 18:25:40.22 nTmfkfcZ.net
真の意味でホビーユーザーに支持されなきゃだめだよ
368:デフォルトの名無しさん
22/11/18 18:31:52.75 UFs4jVzI.net
ゆきひろにより開発されたオブジェクト指向スクリプト言語か
369:デフォルトの名無しさん
22/11/18 18:55:51.18 fYiWUan7.net
このグラフ、Typescriptの躍進とRubyの凋落が対照的で興味深かった。
370:デフォルトの名無しさん
22/11/18 19:00:57.54 WkS6x7hj.net
これか
URLリンク(i.imgur.com)
371:デフォルトの名無しさん
22/11/18 21:08:51.27 8iIh2nXZ.net
C/C++の減少分がRustじゃね
372:デフォルトの名無しさん
22/11/18 21:48:16.28 G2UZSnwT.net
その説が正しい使い方気がした
373:デフォルトの名無しさん
22/11/19 00:42:59.64 h9f1WTcb.net
>>350
効率よくリンクリストやグラフ構造を使うこと。
この(前?)スレで散々議論されていた。
374:デフォルトの名無しさん
22/11/19 00:49:11.67 UL/detO7.net
いい加減スレ違いはやめろって
375:デフォルトの名無しさん
22/11/19 04:53:18.01 c1VeRjNF.net
>>367
全然具体的でなくて草
そりゃ散々議論(のつもりw)になるわ
コードで示すとか出来ないの?
376:デフォルトの名無しさん
22/11/19 09:49:20.36 RDqVxLmi.net
tscがRustだと書き直すのが難しいとか聞いたが
377:デフォルトの名無しさん
22/11/19 10:48:30.65 AeJpea+k.net
>>370
tscをRustに一部移植
元のコードがGC前提だから全体の移植は大変なのでGoに変更
GoはGoで無駄な作業が多くて大変。やっぱりRustのほうが良かったのでRustに戻す
というのが今の状況
来年あたりまたGoに戻ってる可能性はあるが
378:デフォルトの名無しさん
22/11/19 14:18:44.14 UL/detO7.net
>>371
移植とか考えずに仕様だけ洗い出してからRustで実装するのがベストでしょうね
仕様解析チーム(tscを読み込んでドキュメント化する)
とRust実装チーム(Rustのエキスパートたち)
この2チームがいれば十分だし
379:デフォルトの名無しさん
22/11/19 20:51:33.06 W8eLHJQE.net
Rustで実装が難しいようなアルゴリズムは不安全で時代遅れだ説
380:デフォルトの名無しさん
22/11/19 20:55:58.15 LAn7MDSu.net
解析してる間にどんどんtscの仕様は変わっていくよ
381:デフォルトの名無しさん
22/11/19 21:07:54.54 2PIO0unP.net
Rustってお互いに参照し合うようなグラフ構造を表現しにくいイメージある
382:デフォルトの名無しさん
22/11/19 22:17:39.01 ibRUDL6T.net
し難いのか不可能なのかどっちよ
383:デフォルトの名無しさん
22/11/19 22:23:36.77 yb7KRrg5.net
rustcでグラフ構造扱ってるよ
ポインタではなくインデックスでアクセする実装
384:デフォルトの名無しさん
22/11/19 22:41:12.16 yWSzX/NN.net
>>377
なるほどなあ
385:デフォルトの名無しさん
22/11/19 23:28:51.73 PCVv4O5z.net
>>377
前スレ読んでもわかるが、それでやれば出来るのは分かってるんだけど、
効率が落ちるから「ゼロコスト安全性」ではない。
386:デフォルトの名無しさん
22/11/19 23:29:54.28 PCVv4O5z.net
>>373
リンク構造を持つデータ構造は今も発展途上中で今後も開発されていくが、
Rustでは取り扱いにくく、むしろRustこそ時代遅れ。
387:デフォルトの名無しさん
22/11/19 23:31:24.06 PCVv4O5z.net
ポインタが理解できない人は、ポインタが中心に居るところのリンク構造を全て
無視するから、Rustの欠点が理解できないだけ。
388:デフォルトの名無しさん
22/11/19 23:32:17.52 Bzioz9F5.net
>>376
しにくいだけ
>>1のHow to not learn RustとかオライリーのProgramming Rustでも指摘されてたはず
389:デフォルトの名無しさん
22/11/19 23:44:21.19 PCVv4O5z.net
>>376
不可能ではないが、C言語のように参照やポインタでダイレクトに取り扱うのが
不可能なので、インデックスを介してアクセスした、非常に複雑な仕組みで
アクセスしたりする必要があり、効率が落ちる。
マシン語レベルで見ると、アクセスすすために必要なコードが増えるから。
390:デフォルトの名無しさん
22/11/19 23:44:57.71 PCVv4O5z.net
誤:インデックスを介してアクセスした、非常に複雑な仕組みで
正:インデックスを介してアクセスしたり、あるいは、非常に複雑な仕組みで
391:デフォルトの名無しさん
22/11/20 00:54:20.94 uh6X/Buy.net
窮屈だからとか言って車に乗るときにシートベルトを付けないタイプの人かな
392:デフォルトの名無しさん
22/11/20 01:12:16.21 RgPem6BD.net
見かけ上はインデックスアクセスでも最適化がかかると途中のアドレス計算はほとんど消滅してポインタでやるのとそんなに差はなくなるよ。
ポインタを露骨に使うのはコンパイラ技術の未熟さをプログラマに補わせてただけ。
十分に高い能力のコンパイラにとってはプログラマが細々とした効率のための指示をするのはむしろ最適化の邪魔になる。
全体の構成やアルゴリズムの話ならともかく、細々とした部分はコンパイラのほうが人間よりよっぽど賢いんやぞ。
393:デフォルトの名無しさん
22/11/20 01:28:00.24 8zb5D3SN.net
ahoの「アルゴリズムの設計と解析」という古い本で木構造をインデックスアクセスで実装していたけど
rustにふさわしい実装だったんだな
この本はポインタがない言語を想定していたのだろうけど
394:デフォルトの名無しさん
22/11/20 01:29:41.16 mdre8ZhB.net
ポインタで書いた方が速いじゃんて事は現にあったし
昔だと、それでも遅いからってアセンブリ言語で関数書いて呼んだりしたが
今なら、そこまでやらなくてもいいだろう
これは、コンパイラの進化もあるだろうが、CPUの進化の恩恵が大きい
395:デフォルトの名無しさん
22/11/20 01:32:00.55 8zb5D3SN.net
脱ポインタの流れは変わらないと思うけどね
安全性とは程遠いからこれを無くさない限り絶対にメモリ安全性は守られない
396:デフォルトの名無しさん
22/11/20 09:27:21.62 feChXjeV.net
unsafeつかえばいいじゃん
397:デフォルトの名無しさん
22/11/20 13:59:12.71 9/YCbfcZ.net
>>386
インデックスを使おうとすると、1つのオブジェクトを作成する際にヒープから確保できず、
同じ集約(コンテナ)に属する全オブジェクトが入っている配列をreallocするような
動作が必要となり、スプリアス的に「停止時間」が入る。
また、その際キャッシュが大規模クリアされてしまう。
398:デフォルトの名無しさん
22/11/20 14:00:19.95 9/YCbfcZ.net
>>390
前スレ(?)で、それでは済まないことが指摘済み。
399:デフォルトの名無しさん
22/11/20 14:05:25.97 9/YCbfcZ.net
>>389
自分が理解できないことは「ダメ」なこととしたり、排除しようとしてしまう。
典型例としては:
・数学が苦手な人 --> 数学不要論に走り、学校で教えることすら禁止させようとする。
・オブジェクト指向のメリットが理解できない人 -->オブジェクト不要論に走る。
・ポインタが苦手な人 --> ポインタを排除しようとする。
Rustはポインタを使うデータ構造を上手く使えなくなるようになっているので、
ポインタが理解できない人は、他の人も使えなくなって安堵の境地に浸れる。
オブジェクト指向で最も大事なclassの概念も使えなくなっているので、
オブジェクト指向が使えこなせなかった人は、他の人も使えなくなって、
競走上の劣等性を感じなくてすむ様になって得した気分になる。
しかし、現実は、そう甘くは無い。
400:デフォルトの名無しさん
22/11/20 14:06:00.71 RgPem6BD.net
>>391
> 必要となり
ならない。
401:デフォルトの名無しさん
22/11/20 14:09:39.17 9/YCbfcZ.net
>>394
インデックスは「連番」なので、その集約に属する全てのノードが、
1つの配列に入ってなければならない。
だから、ノードを追加した時に配列の容量が足りなくなると、
全ノードを入れるための配列の再確保が必要となる。
(全ノードが十分入る容量の配列を一気に確保して、move 動作が必要となる。
この際にキャッシュがほぼ全クリア状態になる。)
402:デフォルトの名無しさん
22/11/20 14:14:51.22 9/YCbfcZ.net
>>391
[追加]
さらに、それに加えて、インデックスからオブジェクトにアクセスする際には、
オブジェクトのアドレス計算が必要となる。
それに、次のような掛け算が必要となる:
size = sizeof(OBJECT);
address = base + index * size; // 掛け算。
掛け算は計算科学上遅い処理であり、避けるべき処理である事が知られている。
403:デフォルトの名無しさん
22/11/20 14:16:00.87 YFSLlDHr.net
Rustで複雑なことをさせなければいい
404:デフォルトの名無しさん
22/11/20 14:19:02.05 RgPem6BD.net
>>396
> 遅い処理
遅くない。
405:デフォルトの名無しさん
22/11/20 14:19:28.58 9/YCbfcZ.net
>>396
[補足]
ただし、index * size の値を、「offset 値」として予め計算しておいて、
index値ではなく、offset値をindex値の代わりにすると、この掛け算は
除去できる。
このoffset値は、「相対アドレス」や「相対ポインタ」に相当する。
406:デフォルトの名無しさん
22/11/20 14:20:12.92 9/YCbfcZ.net
>>398
ポインタよりは遅い。
32BIT値の掛け算は、16クロックほど掛かる。
407:デフォルトの名無しさん
22/11/20 14:20:23.64 8zb5D3SN.net
>>395
Vec使えばそんな不効率なことはせんよ
408:デフォルトの名無しさん
22/11/20 14:23:27.03 RgPem6BD.net
>>400
かからない。
原理的には掛け算が高コストなのはわかるが現代の CPU は
その差を埋めるために高度なアドレシングモードを用意した。
409:デフォルトの名無しさん
22/11/20 14:26:55.83 9/YCbfcZ.net
>>401
不可能。
410:デフォルトの名無しさん
22/11/20 14:27:54.72 9/YCbfcZ.net
>>402
>その差を埋めるために高度なアドレシングモードを用意した。
全く関係無い。
imul命令のlatencyはどんどん速くなって、いて、いまや 3 クロックほどに
なっているらしいが、アドレッシングモードは関係無い。
411:デフォルトの名無しさん
22/11/20 14:31:49.56 RgPem6BD.net
>>404
imul は使われない。
関係ないものを持ち出しているのはそっち。
412:デフォルトの名無しさん
22/11/20 14:34:23.52 8zb5D3SN.net
この人大丈夫か?
なんか支離滅裂になってきてるが
413:デフォルトの名無しさん
22/11/20 14:43:00.42 AxU0uBeT.net
速度求めるならsizeは2のべき乗にするだろうしそれならバレルシフタで相当昔から1クロックで済むだろ
それほど大きくないサイズならアドレッシングモードでサポートしてるプロセッサーもあるし
ID:9/YCbfcZ はもう少しちゃんと勉強した方がいいと思うよ
414:デフォルトの名無しさん
22/11/20 14:48:48.34 YFSLlDHr.net
Rustで作ったdenoはなぜか遅いんだよな
URLリンク(dev.to)
415:デフォルトの名無しさん
22/11/20 14:49:57.69 9/YCbfcZ.net
>>407
メモリの無駄になるので、一般にはObjectのサイズは2のべき乗には出来ない。
416:デフォルトの名無しさん
22/11/20 14:53:40.99 RgPem6BD.net
>>408
元が根本的にダメだったら単に作り直すだけでも速くなったりするが、
大きなプロジェクトの成果物の性能が良いのは細々としたチューニングを続けてきたという蓄積の賜物。
すぐには越えられないのはごく普通のこと。
417:デフォルトの名無しさん
22/11/20 15:06:31.98 9/YCbfcZ.net
>>405
配列
T a[N];
に対して、
a[index]
のアドレスを計算する時、
address = ((BYTE *)&a) + sizeof(T) * index;
の計算が行なわれ、マシン語レベルでは :
mov rax,(Tのサイズ)
imul rax,(index)
add rax,(aのアドレス)
と計算される。
Tのサイズが、1,2,4,8 の場合に限っては、
lea rax,[(aのアドレス) + (Tのサイズ) * index]
と書けるが、一般の場合には無理。
418:デフォルトの名無しさん
22/11/20 15:15:31.54 feChXjeV.net
>>408
bunが速いのは、denoやnodejsではJSで書かれている部分がbunではzigで書かれていることや
JSエンジンのJITの段数の違いによるもので
rust関係ないという理解なんだけど
419:デフォルトの名無しさん
22/11/20 15:17:09.91 9/YCbfcZ.net
>>412
Bunはおいておいて、node(C++製JSエンジン?)とdeno(Rust製JSエンジン?)
では、denoの方がnodeより遅いと読み取れる。
420:デフォルトの名無しさん
22/11/20 15:17:10.42 feChXjeV.net
>>392
どのレス?もっかい書いてよ
421:デフォルトの名無しさん
22/11/20 15:17:44.33 9/YCbfcZ.net
>>414
レスではなくスレ。
何度も書かない。
422:デフォルトの名無しさん
22/11/20 15:24:09.33 feChXjeV.net
>>413
Rust製JSエンジンとか書いてる時点でよくわかってないのが読み取れる
423:デフォルトの名無しさん
22/11/20 15:26:15.43 feChXjeV.net
>>415
スレのどのレスか教えてよ
424:デフォルトの名無しさん
22/11/20 15:26:41.67 YFSLlDHr.net
>>410
そっか、チューニング大事なんだな
425:デフォルトの名無しさん
22/11/20 15:30:49.96 9/YCbfcZ.net
>>417
検索してくれ。
426:デフォルトの名無しさん
22/11/20 15:34:04.94 9/YCbfcZ.net
>>416
nodeやdenoは余り知らないから。
427:デフォルトの名無しさん
22/11/20 15:39:36.41 feChXjeV.net
>>419
これのこと?
スレリンク(tech板:151番)
428:デフォルトの名無しさん
22/11/20 15:43:51.99 9/YCbfcZ.net
>>421
まあ、そうだ。ただし、それは議論の一部。
ただ、反論する前に、頭がいいことが資格だぞ。
この板は頭の良さに対して全くフィルターが掛かってないから議論が混沌とする。
文字だけで理解するのではなく、イマジネーションと脳内のワーキングメモリー
を働かせて図形的に考えないとダメだぞ。
429:デフォルトの名無しさん
22/11/20 15:45:48.15 feChXjeV.net
>>421のレスはすべてをunsafeにすれば可能と暗に言ってるから、
>>392の言うunsafeを使っても済まない場合には該当しないか
430:デフォルトの名無しさん
22/11/20 15:47:47.99 feChXjeV.net
>>422
そうだね、文章だけではあなたの脳内の意図をちゃんと読み取れないから想像力が重要だね
431:デフォルトの名無しさん
22/11/20 15:56:42.10 9/YCbfcZ.net
>>423
しかし、「すべてをunsafe」にするなら、Rustの意味が全く無いから、
「それでは済まない」。
432:デフォルトの名無しさん
22/11/20 15:57:37.84 9/YCbfcZ.net
>>424
ちゃんと書くには長く書く必要があるが、理解できない人が多いから書けない。
そもそも、5chでは文章が途切れて書ききれない。
433:デフォルトの名無しさん
22/11/20 16:13:12.85 RgPem6BD.net
>>418
チューニングの蓄積は大事だが、チューニングは実行環境 (など) の特性に合わせるということだから
前提となる特性が変われば今までの蓄積が今度は足を引っ張ることもある。
だからたまにはリセット (別プロジェクトとして始動) をするのも必要なことなんだよ。
少しづつ違う方針のものが併存しているのが健全な状態で、
真似したり反発したりしながら新陳代謝をしていくもんだ。
434:デフォルトの名無しさん
22/11/20 19:14:36.78 0EAflA1G.net
グラフとかリンクトリストとかにはarena使えないの?
bumpaloとかtyped-arenaとかid_arenaとかgenerational-arenaとか色々出てるけど
435:デフォルトの名無しさん
22/11/20 19:36:54.78 feChXjeV.net
>>426
じゃあなんでこのスレに書いてるの?
436:デフォルトの名無しさん
22/11/20 19:37:03.39 feChXjeV.net
>>428
普通に使えるよ
437:デフォルトの名無しさん
22/11/20 19:39:01.04 feChXjeV.net
>>425
そもそもすべてをunsafeにする必要があるという前提が偽だよね
特定のデータ構造の操作がプラグラムのすべてなの?
438:デフォルトの名無しさん
22/11/20 20:33:05.68 Y0E2xhem.net
単純なLinkedListのdropでstackoverflow
URLリンク(matklad.github.io)
439:alls-in-a-forest-does-it-overflow-the-stack.html dropが再帰的に呼ばれそうなところでwarning出してくれたら嬉しいんだけどな あ
440:デフォルトの名無しさん
22/11/21 16:56:19.41 qlbniNQc.net
試しにいろいろやってみたけど
引数を含めて参照渡しなのか値渡しなのか完全に区別されてるのがいいね
441:デフォルトの名無しさん
22/11/21 17:12:12.72 VM/mtrCu.net
unsafeは甘え
442:デフォルトの名無しさん
22/11/21 17:26:26.15 EfM99hS7.net
超エキスパートの皆さんが unsafe で
システムプログラミングしてくださるんだろうが
443:デフォルトの名無しさん
22/11/21 21:30:40.94 rgJVysd6.net
URLリンク(qiita.com)
444:01f79d42d63e886 本筋と関係ない部分での強めの態度での批判(というかいちゃもん)、いかにも日本的な陰湿なマウント文化が凝縮されていて笑えない
445:デフォルトの名無しさん
22/11/21 21:46:20.48 bYPD5c9s.net
テスト
446:デフォルトの名無しさん
22/11/21 21:47:48.09 bYPD5c9s.net
お、書けたか
今日から勉強始めて Tour of Rust やってるんだけどなんか分かりづらいような...?
The Book からやったほうがいいのかな
447:デフォルトの名無しさん
22/11/21 21:54:54.43 sdhkglZS.net
Haskellからやった方がいいかも
448:デフォルトの名無しさん
22/11/21 22:00:50.98 bYPD5c9s.net
Haskell... モナド... うっ、頭が
449:デフォルトの名無しさん
22/11/21 23:01:50.99 gRBDBkQB.net
>>436
本当にこれ
ワイもその記事のコメント欄読んでいたけど
@Akira-T-Hatakeyamaが的外れの癖に高圧的に書いていて見ていて気分が悪くなったわ
サンプルコードもそんなおかしいものではないし事実Cではするメモリリークも防げている
まったく害のない記事を上げたがために揚げ足取りを取られていて不憫や
450:デフォルトの名無しさん
22/11/21 23:15:45.42 SGMQ7SqF.net
> Cをきちんと理解していない人が RUST が安全ですと言っても、説得力皆無ですね。
ここに完全同意できてしまうから
この話はもうそこで終わってしまう
批判された側は改善するか記事消すかして
態度で反省を示してほしいわ
ゴミ記事量産すなって話
451:デフォルトの名無しさん
22/11/21 23:45:49.72 /NggQuuk.net
callocの代わりにalloca使えとか揚げ足取りがすぎる
普通のOSならメモリリーク起きないというのも意味不明
452:デフォルトの名無しさん
22/11/21 23:50:01.01 /NggQuuk.net
とはいえ元記事も微妙でメモリ安全の話をするならuse-after-free等の話をして欲しかった
453:デフォルトの名無しさん
22/11/22 06:46:59.40 5norvibI.net
ありがちな不具合を示すサンプルにこうすりゃいいとか言われてもねぇ...
そもそもstr_new()でalloca()使ったらstr_new()から抜けた時に解放されちゃうからもっと酷いことになるのわかってないだろw
454:デフォルトの名無しさん
22/11/22 09:08:14.28 XE2I6odc.net
>>441
コメントしてるやつほどではないにしても
記事もそれなりに害のある記事やろ
455:デフォルトの名無しさん
22/11/22 10:53:06.52 iGHsIGH/.net
コンパイル時評価の欠点
URLリンク(c3.handmade.network)
Rustが攻撃されてる!許せねぇ!
456:デフォルトの名無しさん
22/11/22 11:53:04.77 7hOwVVcX.net
const fnと思ったらmacroの話か
書かれてることはもっともだと思うしrust-analyzerの作者も似たようなことを言っていたような
457:デフォルトの名無しさん
22/11/22 12:05:47.11 5norvibI.net
コンパイル時評価の欠点と言うかマクロは混乱しやすいって話だろ
まあ良薬も使いすぎると毒になるしほどほどに使うのは難しいし、処理系のサポートが難しくてエラーメッセージがイミフになるとかあるから半分ぐらいは同意する
458:デフォルトの名無しさん
22/11/22 13:20:21.25 8XCnEjtt.net
>>447
この文脈でdownsidesを欠点と訳すのは微妙
「コンパイル時評価のマイナス面」みたいにプラス面の存在が当然の前提となる日本語にしないと与える意味が変わる
459:デフォルトの名無しさん
22/11/22 16:03:09.05 gDAAjuMT.net
0..10 で生成されるオブジェクトってイテレータですか?
460:デフォルトの名無しさん
22/11/22 16:12:53.87 7RPBFD0W.net
>>451
はい
0..10はRange<i32>
impl<A> Iterator for Range<A> where A: Step
impl Step for i32
461:デフォルトの名無しさん
22/11/22 17:02:18.19 gDAAjuMT.net
>>452
ありがとうございました
462:デフォルトの名無しさん
22/11/23 08:39:00.67 wkDaFc7P.net
>>453
どういたしまして
463:デフォルトの名無しさん
22/11/23 22:54:55.70 /vguy0QL.net
The Bookの日本語版がRust 1.58で英語版がRust 1.62っぽいんですけど、この差が問題になることありますか?
464:デフォルトの名無しさん
22/11/23 23:36:05.63 Z55i7UcV.net
>>455 ほぼない
強いて言えば新しい書き方が載ってないぐらい
古い書き方でも問題なく動く
465:デフォルトの名無しさん
22/11/24 01:19:12.75 4Rr7WzTC.net
>>455
バージョンの差は問題にならないが日本語版と原文の差は大きい
英語が苦手で原文だと読むのに3倍時間かかるような人でも原文読む方がRustを理解するには圧倒的な近道
466:デフォルトの名無しさん
22/11/24 02:03:20.81 7DmT43os.net
英語が駄目って人は百倍かけても読めない。
467:デフォルトの名無しさん
22/11/24 02:06:19.42 L4U2ehwP.net
The Book自体がそんな一生懸命読むべきもんじゃない
別のそのへんの本屋で売ってるRust本でもいい
468:デフォルトの名無しさん
22/11/24 02:06:45.58 01gKjbzi.net
機械翻訳も良くなったとは言え普通に間違えるし英語読めない人なら日本語版の方がいいでしょ
469:デフォルトの名無しさん
22/11/24 03:11:31.83 7Kcsa8Zb.net
あの日本語版はないわな
Rust習得の弊害でしかない
470:465
22/11/24 09:13:21.63 /ycVFx5q.net
様々な意見、ありがとうございます!
両方を見比べて大きな差がありそうなところは英語版を翻訳して読んでみようと思います
471:デフォルトの名無しさん
22/11/24 09:14:00.12 ZOGzuV/a.net
日本語版の一番の欠点は、基礎や概念を説明している項目が所々抜けてることだろうな
なんもわからないまま結論を覚えるだけになってしまう
472:デフォルトの名無しさん
22/11/24 10:04:24.95 wZ9/qcyF.net
Rustって難しくね?
できればライフタイムあたり意識しないでプログラミングしたいんだけど
473:デフォルトの名無しさん
22/11/24 11:37:21.52 rSYd8nrB.net
そういう難しいところに直に向かい合うための言語なので...
474:デフォルトの名無しさん
22/11/24 12:37:17.60 5MNsXfkj.net
Typeshareが1.0になったけどどない?
URLリンク(github.com)
475:デフォルトの名無しさん
22/11/24 13:01:03.30 lMxgdHP2.net
日本語版ダメだと思うなら添削してくれればいいのに
英語出来る俺スゲーとかマウント取りたいだけの人なんかな
476:デフォルトの名無しさん
22/11/24 13:14:00.92 rSYd8nrB.net
仮に貢献してても5chじゃなくて別のコミュニティで表明するんじゃね
477:デフォルトの名無しさん
22/11/24 13:18:22.75 B8EZvrTz.net
横からだけど義務教育で人並みの勉強をして英語がまったくできないっていうのは
本人の資質に問題があると思っている
(もちろん面と向かってこんなことは言わないけど)