2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

プログラミング言語 Rust 4【ワッチョイ】

1 :デフォルトの名無しさん :2017/12/24(日) 18:27:01.98 ID:EGydBhQv0.net
Mozilla発のプログラミング言語「Rust」のスレです

■公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

■ワッチョイ
スレ建て時、一行目に
!extend:on:vvvvv:1000:512
を入れること

■派生元スレ
プログラミング言語 Rust 4
https://mevius.5ch.net/test/read.cgi/tech/1507970294/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

211 :デフォルトの名無しさん (オイコラミネオ MMb5-+3Ti):2023/04/24(月) 18:53:28.63 ID:3hT7+QpVM.net
>>210
それは予め領域を確保しておく関数で、確保できなかった場合には、
Result<(), TryReserveError>
という戻り値を返す関数と言うことですか?
そして、関数呼び出しの直後に ? を書くと、エラー発生時にそこで
アプリをダウンさせると言うことですか?

212 :デフォルトの名無しさん (オイコラミネオ MMb5-+3Ti):2023/04/24(月) 19:00:53.57 ID:3hT7+QpVM.net
>>211
事故レスですが、? 演算子は、x ? と書くと、x の値が Err(y) だったら、
return Err(From::from(y)),
というような動作をする関数のようですね。

213 :デフォルトの名無しさん (ブーイモ MM0a-sjlm):2023/04/24(月) 19:01:30.05 ID:ELtZniCQM.net
いろいろ違う
落としたいならpanicさせとけばいい

214 :デフォルトの名無しさん (ワッチョイ 1eda-2ihv):2023/04/25(火) 00:44:30.70 ID:hB6+7TeQ0.net
メモリ不足を検出した場合に何をしたいかで適切な対応は変わってくるけど、何をしたいの?

215 :デフォルトの名無しさん :2023/04/25(火) 01:46:37.95 ID:ICFLZD9/M.net
>>214
メモリー不足の時にメモリー不足である旨のエラーメッセージを出して、
なんらかの自作の処理コードを動かしたいです。

216 :デフォルトの名無しさん :2023/04/25(火) 01:47:29.28 ID:ICFLZD9/M.net
>>215
なお、Vecに追加する動作を行なった関数の中で処理をしたいです。

217 :デフォルトの名無しさん :2023/04/25(火) 07:31:37.92 ID:S/F8mIrU0.net
重要:
メモリ不足だからと言ってmallocが失敗するとは限らない

218 :デフォルトの名無しさん (ワッチョイ 2a3e-ASru):2023/04/25(火) 09:38:35.21 ID:ug7UW9j70.net
今の Linux カーネルだとアプリケーションからオーバーコミットを無効にすることは出来るようになってるぞ。

219 :デフォルトの名無しさん (ワッチョイ 1eda-2ihv):2023/04/25(火) 10:43:39.39 ID:hB6+7TeQ0.net
try_reserveの戻り値がErrだったら処理を実行するだけだよ
この説明で分からないならenumやResult型について勉強した方が良いよ

あとtry_reserveの失敗要因はメモリ不足だけじゃないけど、エラー種別はnightlyじゃないと取得できないみたいね

220 :デフォルトの名無しさん :2023/04/29(土) 19:47:07.81 ID:OSQfAzE+0.net
RefMut <-> Ref にも Rc <-> Weak みたいな相互変換メソッドがあればいいのに

221 :デフォルトの名無しさん (ワッチョイ bfda-qKNM):2023/04/30(日) 04:06:33.86 ID:5bTJo9fJ0.net
>>220
RefCell自体を取り回して必要なところで都度RefやRefMutを作れば良いのでは

222 :デフォルトの名無しさん (ワッチョイ 375f-k3Rv):2023/04/30(日) 11:51:12.53 ID:cNEEfLAb0.net
>>221
実際今はそれでやってて、別に問題になるほどじゃないんが、ちょっと無駄だよなあと
Ref/RefMutってあんまりあちこち取り回す用にできてないよね

223 :デフォルトの名無しさん (アウアウウー Sa1b-qKNM):2023/04/30(日) 13:58:26.96 ID:ZqZbVcjya.net
>>222
RefやRefMutはMutexのGuardみたいなもんなんだから取り回す範囲は極力狭くするべきなんじゃね

224 :デフォルトの名無しさん (ワッチョイ 375f-k3Rv):2023/05/03(水) 20:42:40.07 ID:CZOik0F40.net
Rustにもこんなのあるんか……ええな
https://zenn.dev/kk/articles/20230213_creusot_intro

225 :デフォルトの名無しさん (ワッチョイ 335f-awLq):2023/05/19(金) 17:46:12.04 ID:vnYwlZ+00.net
Rust for Linux updates! More pin-init and refactoring! - YouTube
https://www.youtube.com/watch?v=jAanHvcuYtA

226 :デフォルトの名無しさん :2023/06/02(金) 02:43:27.18 ID:w12tfZkT0.net
The RustConf Keynote Fiasco, explained
https://fasterthanli.me/articles/the-rustconf-keynote-fiasco-explained

一連の事件は結局不幸な伝言ゲームの結果だったということだろうか

227 :デフォルトの名無しさん :2023/06/04(日) 13:53:56.01 ID:xOmzDhxR0.net
以前からCodeLLDBでたまに値がちゃんと表示されないことがあるなーと思ってたら再帰型が原因だったんですね
今ほとんど再帰でできてる部分触ってるせいで困ってる……
dbg!書けばいいだけではあるんだけど泥臭くて嫌だわね
https://github.com/vadimcn/codelldb/issues/605

228 :デフォルトの名無しさん (ワッチョイ d336-IjPS):2023/07/29(土) 22:43:04.08 ID:nwVMjVJQ0.net
いつのまにかrust-specがマージされてる。まだ作業終わってないけど。
ttps://github.com/rust-lang/rfcs/pull/3355
ttps://github.com/rust-lang/rust/issues/113527
rustにもようやく仕様が。

229 :デフォルトの名無しさん (ワッチョイ eada-0btC):2023/07/30(日) 17:17:19.50 ID:9Mwyt07S0.net
これから編集者雇うみたいだからまだまだ時間は掛かりそうだけど、前進だね

230 :デフォルトの名無しさん (ワッチョイ 0f5f-4nYy):2023/08/10(木) 03:13:56.19 ID:cXfKj1l90.net
Hugging FaceがPyTorch的なRust製フレームワークを作り始めたらしい
https://github.com/huggingface/candle

231 :デフォルトの名無しさん (ワッチョイ 275f-orer):2023/08/16(水) 18:13:46.91 ID:Wd6XOYTc0.net
>> https://mevius.5ch.net/test/read.cgi/tech/1692105879/16

rustupを使わないクロスコンパイル環境の構築方法あるらしいよ
https://users.rust-lang.org/t/how-to-add-cross-compile-target-for-offline-system-without-rustup/80811/4

大人しくrustup使っておけよとしか思わんが一応……

232 :デフォルトの名無しさん (ワッチョイ bb36-3sKl):2023/08/16(水) 19:50:14.01 ID:e6GDzmE20.net
githubにrustupのソースコードあるから読めばいいよ。

233 :デフォルトの名無しさん (ワッチョイ 8b01-1ZN1):2023/08/16(水) 23:13:21.01 ID:1NDN9ysp0.net
>>231
サンキュ。試してみます

234 :デフォルトの名無しさん (ワッチョイ f9a9-75c1):2023/08/22(火) 03:24:00.61 ID:Fec2bVY90.net
おおきに、感謝やで!

235 :デフォルトの名無しさん (ワッチョイ d95f-GBSa):2023/08/30(水) 12:04:57.70 ID:LqLNxSZ40.net
Debugを上位トレイトに持たないトレイトのオブジェクトをなんとかしてdbg!する方法は無いもんじゃろか

236 :デフォルトの名無しさん (ワッチョイ 3536-8/Q7):2023/08/30(水) 15:40:36.29 ID:lfrnRSB90.net
ない。基本的なトレイトを実装してないのはバグ。

237 :デフォルトの名無しさん (ワッチョイ 4ada-0cXD):2023/08/30(水) 20:29:40.52 ID:y+HDByBG0.net
参照をポインタにしてアドレスを表示してみるとか

238 :デフォルトの名無しさん (ワッチョイ 4ada-0cXD):2023/08/30(水) 20:30:28.57 ID:y+HDByBG0.net
構造体フィールドの中身を知りたいという事ならAnyを継承させてダウンキャストするかDebugを継承したtraitにするしかないね

239 :デフォルトの名無しさん (ワッチョイ b3bc-yE7J):2023/09/12(火) 06:34:45.51 ID:8vWycgZc0.net
アノ店、今日は休みやねんな

240 :デフォルトの名無しさん (ワッチョイ 0f36-8z3m):2023/09/21(木) 01:15:23.63 ID:d9SQw4Jt0.net
intellij rustからRustRoverギリギリ燃えてないな。プラグインもIDEAもバグが増えたのが懸念とか言われてるけど。

241 :デフォルトの名無しさん (ワッチョイ 0f01-w8tn):2023/09/21(木) 23:43:40.50 ID:2whQHU6y0.net
RustのコンパイルターゲットはTierで分けられているけど
x86_64-pc-windows-msvc ←Tier1
x86_64-unknown-none ←Tier2
この違いって何?
Tier1の条件を見るとすべてのテストに合格すること的な事が書いてあるしプラットフォームが不明の状態でそれは不可能はなず
組み込み向けなどの低レイヤー用途を想定したターゲットにTier1のものはなくすべてTier2以下になっている
もしこれが理由なら自分が書いたコードはTier1と同レベルに翻訳される(実行できなかったり実行結果が不正なコードは生成されない)事が
期待できるけどそう考えて問題ないのだろうか

242 :デフォルトの名無しさん (ワッチョイ 3fda-n7kY):2023/09/22(金) 01:00:34.44 ID:J+8eUZUM0.net
>>241
x86_64なら現実的にはほぼ動くとは思う
ただ、あくまでもrust側ではコンパイルが通ることしか確認してなくて、生成されたコードが正しく動作するかは未確認の状態
利用者側が動作確認をきちんとやる必要があるよ

243 :デフォルトの名無しさん (ワッチョイ 0f01-w8tn):2023/09/22(金) 02:06:03.04 ID:/khf3L7K0.net
>>242
例えばベアメタル開発用などでOSとインターフェイスしないコードのみほしい場合
x86_64-pc-windows-msvc(x86_64-unknown-linux-gnuとかでも可)でスタティックリンクのライブラリとしてビルドしてカスタムリンク
x86_64-unknown-noneでビルド
の二択だと出力物の信頼性はどちらの方が高いのだろうか。どちらも適切なローダーを用意すれば動作するはず
特に低レイヤーの開発で翻訳不良があるとトラブルシュートが沼りやすいし、前者の方が有利なら
ゴミが付いたりビルドが複雑化するなどのデメリットを考慮しても検討する価値があるはず

244 :デフォルトの名無しさん (ワッチョイ 0f36-8z3m):2023/09/22(金) 04:58:40.40 ID:B04DzdQA0.net
より正確にはtier2はwith/without Host Toolsに分かれる。
withの方はtarget環境扱いだけじゃなくてネイティブなhost toolsを使用して開発環境として使える。
*-*-none-*はベアメタル向けだからHost Toolsのサポートはない。
言い換えるとtier2 with Host Toolsはセルフホストできる。

Tier 1にもwith/withoutの分類があるけど事実上withoutの方がない。
これは今のところHost Toolsをサポートしてないtier 1が存在しないから。

だからビルド環境に指定したいならx86_64-unknown-none。

245 :デフォルトの名無しさん (ワッチョイ 0f01-w8tn):2023/09/22(金) 23:10:21.93 ID:/khf3L7K0.net
x86_64-unknown-noneが吐くコードをどのくらい信用して良いのかって話ね
Tier2=十分にテストされていない=不正命令例外を吐いたり意図しない演算結果になる可能性がある
とかだと開発に重大な影響が出るし勘弁してほしい。Tier1のターゲットならそんな可能性は無視できるはずだし

246 :デフォルトの名無しさん (ワッチョイ 0ff8-fp56):2023/09/22(金) 23:26:27.84 ID:wn++FXk10.net
テスト云々はlibstdが主なんでは?
そもそもコード生成するのはLLVMなんだし機械語レベルじゃRust側のTierは関係ない気がする

247 :デフォルトの名無しさん (ワッチョイ 0f01-w8tn):2023/09/22(金) 23:47:16.64 ID:/khf3L7K0.net
x86_64-unknown-noneがTier2の理由がstdのテストができないからならそれでいいんだけどね
Platform Supportを見ても
>x86_64-unknown-none * Freestanding/bare-metal x86_64, softfloat
としか書いていない。hardfloatが使えない?のはよくわからないが

248 :デフォルトの名無しさん (ワッチョイ 0336-3hLy):2023/09/23(土) 01:27:48.45 ID:JOYgBSwC0.net
Tierはrustcのコードベースがビルドできるかどうかの保証であって吐くバイナリの質の保証じゃない。
そもそもrustcはフロントエンドだからどういうバイナリ吐くかは無関係。
tier 1/2の違いは自動テストが常に実行されるかどうかの違いだけ。

全部Platform Supportに書いてあるからこの説明でわからんならどこが理解できないのか言ってくれ。

249 :デフォルトの名無しさん (ワッチョイ 5301-3pIy):2023/09/24(日) 21:37:53.69 ID:JmCRMtY30.net
Tier表記がアテにならないならコードの質を比較するにはどうしたらいいんだろ
x86_64とavrが同じ品質、同じ最適化レベルなわけないよな

250 :デフォルトの名無しさん (ワッチョイ 0ada-sj2L):2023/09/25(月) 08:27:06.59 ID:gOdfC5Fq0.net
rustに限らずコンパイラの生成コードの品質はアセンブリ見て判断するしかないんじゃね
LLVM IRもプラットフォームごとに差があるのかね?

251 :デフォルトの名無しさん :2023/11/08(水) 11:25:16.25 ID:QNjJKK3y0.net
Rust製ブラウザエンジンの「Servo」、アプリに組み込み可能なクロスプラットフォーム対応WebView化を目指す。Electron代替を目指す「Tauri」への組み込み実現へ - Publickey
https://www.publickey1.jp/blog/23/rustservowebviewelectrontauri.html

期待

252 :デフォルトの名無しさん :2023/11/13(月) 11:53:03.89 ID:k6bqA1Ku0.net
https://rust-lang.github.io/rfcs/3192-dyno.html

気づいたらポシャっててstd-1.73.0からProvider/Demandも消えてた
やっぱりRTTIとかそういうのはあんまり乗り気じゃないのかな??

253 :デフォルトの名無しさん (ワッチョイ e3f0-Krj3):2023/12/28(木) 17:26:22.81 ID:WYblPX1w0.net
RubyのYJITって仕組みはRustで実装されてるんだな
ソース見てビビった

254 :デフォルトの名無しさん :2023/12/28(木) 19:28:59.59 ID:13cJB/jM0.net
>>253
へぇ、Node.jsもあちこちが遅いからと
ちょこちょこ便利ライブラリの中身がRustに置き換わり始めてるし
今後こういう流れは加速しそうだな

255 :デフォルトの名無しさん (ワッチョイ ff3e-XnzH):2023/12/28(木) 21:34:36.48 ID:x05ZB4jI0.net
遅い部分を Rust でなおそうというよりは、
Rust へ置き換わる流れに乗るついでに駄目なところをそろそろなんとかしようぜという感じじゃないかな。
イマイチなのがわかっててもちゃんと動いてるなら何かきっかけがないと重い腰が上がらないのはよくあること。

256 :デフォルトの名無しさん :2023/12/28(木) 22:12:11.01 ID:WYblPX1w0.net
YJITのコード、相当面白いな
RustでJITしてるよw
マシンコードゴリゴリ生成してる

257 :デフォルトの名無しさん (アウアウウー Saa7-9gAl):2023/12/29(金) 18:42:09.07 ID:gLXDegz1a.net
rustってJavaやpythonみたいに爆発的に流行るわけじゃなくてじわじわ広まっていく感じなんだろうな

258 :デフォルトの名無しさん :2023/12/29(金) 22:02:28.40 ID:iUQmWV32a.net
YJIT、最初はCで実装されてたがRustに変えたみたい
bindgenでCRuby側のAPIをRust側に持ってきて
それを使いながらJITでマシンコード生成してる
面白すぎる
コードもめちゃくちゃ読みやすいぞ

259 :デフォルトの名無しさん (ワッチョイ 9701-Hbjn):2024/02/04(日) 19:30:07.17 ID:TI/zzvYY0.net
RustのRTOSはTockがあるけどFreeRTOSやTOPPERS/SSP、μT-Kernelなど既成のRTOSとの比較レビューってある?

260 :デフォルトの名無しさん :2024/03/22(金) 21:59:30.16 ID:qT4SZAGX0.net
Rust 1.77.0
https://blog.rust-lang.org/2024/03/21/Rust-1.77.0.html

66 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★