公式
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 part25
https://mevius.5ch.net/test/read.cgi/tech/1722354386/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
探検
Rust part26
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2024/09/20(金) 22:18:38.38ID:c48cFuZJ557デフォルトの名無しさん
2024/10/30(水) 20:23:51.06ID:rkQwQTjo implするときにtrait側の境界より厳しい境界を設定するとE0276エラーになるけど、緩くても特に何も言われないんだな
しかし別にそのトレイトメソッドを緩い条件で呼べる訳ではないという
なんかlintないんかねこれ
しかし別にそのトレイトメソッドを緩い条件で呼べる訳ではないという
なんかlintないんかねこれ
558デフォルトの名無しさん
2024/10/30(水) 20:39:06.44ID:o3z0lAnP >>556
ほんとそれ。
昔はマシン一台あたりの I/O (通信やデータベース) に対して CPU やメモリが余ってたから実行速度なんてそんなに気にしてなかった。
クラウド時代になって使ったリソース分で課金されるようになると削れる部分は削らざるをえなくなるよな。
なにせ金額は経営陣にも理解できる数値だから。
ほんとそれ。
昔はマシン一台あたりの I/O (通信やデータベース) に対して CPU やメモリが余ってたから実行速度なんてそんなに気にしてなかった。
クラウド時代になって使ったリソース分で課金されるようになると削れる部分は削らざるをえなくなるよな。
なにせ金額は経営陣にも理解できる数値だから。
560デフォルトの名無しさん
2024/10/30(水) 22:39:28.15ID:aKzR4n7A 超大規模のシステムを運用してるんじゃなければ
Rustを使うことによるクラウド費用の削減効果なんて
人件費で軽く吹き飛んで負債になりまくりだろ
Rustを使うことによるクラウド費用の削減効果なんて
人件費で軽く吹き飛んで負債になりまくりだろ
561デフォルトの名無しさん
2024/10/30(水) 23:07:53.41ID:1vbcRrkY そう思う人は遅い言語を使ってクラウド料金たくさん払えばよい
562デフォルトの名無しさん
2024/10/30(水) 23:47:20.95ID:k59ANI4a CPU時間と実メモリ使用量で課金されるのはFaaS系だけって話前にもしたじゃん
563デフォルトの名無しさん
2024/10/30(水) 23:59:51.69ID:qFWovamr >>562
タイムシェアリングシステムではCPU時間で課金される
タイムシェアリングシステムではCPU時間で課金される
564デフォルトの名無しさん
2024/10/31(木) 03:34:36.66ID:DLPRJH+s 自分の所は年間億単位のサーバー費用がかかるし開発も数年かかるんでrustに置き換えるのは十分元取れる。皆c++組めるんでrust教えるのも難しくない。
既に稼働中の部分を組み直す価値があるかは難しい所。Googleのように新機能の部分からrustで書いていくのがいいかな。
既に稼働中の部分を組み直す価値があるかは難しい所。Googleのように新機能の部分からrustで書いていくのがいいかな。
565デフォルトの名無しさん
2024/10/31(木) 12:55:27.39ID:POJr+rF8 541 が循環参照されてる
566デフォルトの名無しさん
2024/10/31(木) 14:32:08.16ID:OWKccF9V Tokioチュートリアルをやっているんだけどさ
チュートリアルの本題とは違うものの、TcpListener::bind()やOSの仕組みがわからなくてすまんが教えてくれねえか
https://tokio.rs/tokio/tutorial/spawning
ここで出てきたんだけど、これってアドレスにリスナーをバインドしただけではなぜnetstat -aの結果には出てこないの????
チュートリアルの本題とは違うものの、TcpListener::bind()やOSの仕組みがわからなくてすまんが教えてくれねえか
https://tokio.rs/tokio/tutorial/spawning
ここで出てきたんだけど、これってアドレスにリスナーをバインドしただけではなぜnetstat -aの結果には出てこないの????
567デフォルトの名無しさん
2024/10/31(木) 14:46:55.34ID:baPJOvwr https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=220e62ef9b9cbfa9a15d1cdd2547de6b
ぜんぜんわからない
俺たちは雰囲気でライフタイムを書いている
ぜんぜんわからない
俺たちは雰囲気でライフタイムを書いている
568デフォルトの名無しさん
2024/10/31(木) 14:57:44.52ID:baPJOvwr https://github.com/rust-lang/rust/issues/100728
あっこれかあ
fn(T) -> Uとかimpl Fn(T) -> Uはいいけどトレイトオブジェクトにすると全部非変になっちまうのか
ダルいなあこりゃ
あっこれかあ
fn(T) -> Uとかimpl Fn(T) -> Uはいいけどトレイトオブジェクトにすると全部非変になっちまうのか
ダルいなあこりゃ
569デフォルトの名無しさん
2024/10/31(木) 15:19:43.08ID:z7RNZZm9 循環参照が無いなら
UAFは無くなるからだよ
馬鹿専用言語だと思った
UAFは無くなるからだよ
馬鹿専用言語だと思った
570デフォルトの名無しさん
2024/10/31(木) 15:41:44.65ID:rdZbiqu1 C言語だと、伝統的にはポインタを多用することで高速化が図られている。
その場合、循環参照はよく起きる。但し、その事に配慮してメモリーブロック(オブジェクト)を
destruct するようにしてあるので、特に問題ないし、馬鹿な設計でもない。
その方が速度効率が上がるためだから。
その場合、循環参照はよく起きる。但し、その事に配慮してメモリーブロック(オブジェクト)を
destruct するようにしてあるので、特に問題ないし、馬鹿な設計でもない。
その方が速度効率が上がるためだから。
571デフォルトの名無しさん
2024/10/31(木) 17:20:18.37ID:ZEhuzsit 参照カウントの場合の循環参照の話だから
C言語じじいは無理して入ってこなくていいよ
C言語じじいは無理して入ってこなくていいよ
572デフォルトの名無しさん
2024/10/31(木) 18:04:25.22ID:rdZbiqu1 >>571
参照化カウント方式のポインタで循環参照させる人は、そりゃ珍しいだろうよ。
参照化カウント方式のポインタで循環参照させる人は、そりゃ珍しいだろうよ。
573デフォルトの名無しさん
2024/10/31(木) 22:06:07.79ID:sM0Z2pjW >>570
そのまとめてブロックでメモリ確保して一気に返す方法はRustや他の言語でも使われている普通の方法
そのまとめてブロックでメモリ確保して一気に返す方法はRustや他の言語でも使われている普通の方法
574デフォルトの名無しさん
2024/10/31(木) 22:08:28.63ID:sM0Z2pjW まとめて解放するため循環参照があってもまとめて解放される
575デフォルトの名無しさん
2024/10/31(木) 22:57:51.93ID:DLPRJH+s C言語で出来る事はRustでも出来るよという事がイマイチ浸透していない気がする。
カスタムのメモリアロケーターも作れるし、GC欲しければ自分で実装するか、人が作ったクレート使えばいいし。
循環参照の管理が難しいならそういうシステム最初に作るでしょ?
カスタムのメモリアロケーターも作れるし、GC欲しければ自分で実装するか、人が作ったクレート使えばいいし。
循環参照の管理が難しいならそういうシステム最初に作るでしょ?
576デフォルトの名無しさん
2024/10/31(木) 23:23:13.46ID:iDB9JYHh GC自作とかいう大二病しぐさは大学生のうちに卒業しておけよ
577デフォルトの名無しさん
2024/10/31(木) 23:37:38.88ID:DLPRJH+s578デフォルトの名無しさん
2024/10/31(木) 23:50:49.71ID:Vd3VQsE1 まとめてメモリ解放の究極版として
常駐プログラムでないなど単発処理プログラム対象だと
Rustはleak()を使ってライフタイムの'static化つまりプログラム終了まで解放しない宣言することでプログラミングが簡易になるよ
Cで一部をfreeしないのと同じことだね
常駐プログラムでないなど単発処理プログラム対象だと
Rustはleak()を使ってライフタイムの'static化つまりプログラム終了まで解放しない宣言することでプログラミングが簡易になるよ
Cで一部をfreeしないのと同じことだね
579デフォルトの名無しさん
2024/11/01(金) 00:52:09.22ID:YZO2XE1P C言語で出来ることの大部分は実はRustでは出来ない。
580デフォルトの名無しさん
2024/11/01(金) 00:52:09.90ID:YZO2XE1P C言語で出来ることの大部分は実はRustでは出来ない。
581デフォルトの名無しさん
2024/11/01(金) 01:18:56.49ID:MT2bV/S9 longjmpとか?
582デフォルトの名無しさん
2024/11/01(金) 01:28:27.65ID:YZO2XE1P いや。ほとんどのデータ構造とアルゴリズムが、Rustでは効率良く使用不可能。
583デフォルトの名無しさん
2024/11/01(金) 01:34:16.91ID:3Qm9+gDD584デフォルトの名無しさん
2024/11/01(金) 03:23:25.98ID:eE8SKVMG rustのgcって型に情報はみ出てんじゃん
ローカルでしか使えんし
ローカルでしか使えんし
585デフォルトの名無しさん
2024/11/01(金) 05:52:59.83ID:0qsWeWDL RustにGC無いよ
586デフォルトの名無しさん
2024/11/01(金) 08:50:35.34ID:wlON8pP2 >>579
激遅でいいんならRustで出来るだろ
激遅でいいんならRustで出来るだろ
587デフォルトの名無しさん
2024/11/01(金) 09:12:07.99ID:gzsDik24 libcクレート使えば、CとそっくりのRustプログラムできるでしょ
588デフォルトの名無しさん
2024/11/01(金) 11:20:36.22ID:7FgA9x/Y589デフォルトの名無しさん
2024/11/01(金) 18:44:17.66ID:DQt7FtoO >>579
名前空間が無いからってマクロで識別子を生成するのはもう勘弁してください
名前空間が無いからってマクロで識別子を生成するのはもう勘弁してください
590デフォルトの名無しさん
2024/11/01(金) 18:49:49.50ID:I9IxltIy GCついてるRustが欲しい
rustのtraitシステムは好きだが静的メモリ安全性まではいらない
rustのtraitシステムは好きだが静的メモリ安全性まではいらない
591デフォルトの名無しさん
2024/11/01(金) 19:00:04.84ID:0wzgx2ON592デフォルトの名無しさん
2024/11/01(金) 19:25:45.68ID:FTeJ4swx まともなGCライブラリなんかないよ
おとなしくRustらしいコードを書くか、Rustをやめるかだ
おとなしくRustらしいコードを書くか、Rustをやめるかだ
593デフォルトの名無しさん
2024/11/01(金) 21:49:04.02ID:lqBEgicJ594デフォルトの名無しさん
2024/11/01(金) 22:49:51.10ID:XWaTPxZT >>592
だよな
だよな
595デフォルトの名無しさん
2024/11/01(金) 23:32:34.62ID:Y/NQYWW3 >>593
メモリリークするかどうかはOSやアロケータ依存
メモリリークするかどうかはOSやアロケータ依存
596デフォルトの名無しさん
2024/11/01(金) 23:58:44.68ID:zgZjB7HD597デフォルトの名無しさん
2024/11/02(土) 00:41:46.39ID:3NvQMTDb598デフォルトの名無しさん
2024/11/02(土) 01:36:59.35ID:tAgBVlMI Tと&TとRc<T>を区別できるのは静的型付けの成果なんだよな
LispがすべてをGCの対象にするのは型を宣言しないからだし
それに、副作用のある関数とない関数を「型」で区別できなかったから
すべてが純粋な関数だったら (動的型でも) 分かりやすいという話になった
LispがすべてをGCの対象にするのは型を宣言しないからだし
それに、副作用のある関数とない関数を「型」で区別できなかったから
すべてが純粋な関数だったら (動的型でも) 分かりやすいという話になった
599デフォルトの名無しさん
2024/11/02(土) 04:46:39.55ID:3NvQMTDb 成果でもなんでもない
言語的にそうせざるをえないだけ
型で区別するのはいいことばかりじゃない
言語的にそうせざるをえないだけ
型で区別するのはいいことばかりじゃない
600デフォルトの名無しさん
2024/11/02(土) 07:03:08.78ID:tAgBVlMI 技術の話をたまにしかしない人達に
技術は善いことばかりじゃないと説教するのは的外れすぎるだろ
技術は善いことばかりじゃないと説教するのは的外れすぎるだろ
601デフォルトの名無しさん
2024/11/02(土) 07:06:40.35ID:3NvQMTDb 技術的な話をしてるから的外れ
型の弊害の経験ないからピンとこない
型の弊害の経験ないからピンとこない
602デフォルトの名無しさん
2024/11/02(土) 09:53:55.89ID:+GKIPsT4 enumで解消
603デフォルトの名無しさん
2024/11/02(土) 14:38:12.14ID:tAgBVlMI とりあえず両極端を経験してみるのはじつは拙速で、巧遅でも清書でもない
どっちも弊害があると語る第三者が最も遅いのだ
どっちも弊害があると語る第三者が最も遅いのだ
604デフォルトの名無しさん
2024/11/02(土) 23:52:01.28ID:aIv/CPhG >>595
それはむしろ逆
freeを完全にすることでメモリリークを防ぐことはできない
freeはアロケータが管理するメモリバッファへ返還する動作しかしない
malloc/free交互にするたびにそのバッファをゼロにするためOSやその他システムへバッファを返還する非効率をしない
アロケータが管理するバッファはfree後も常に一定量が残っている
つまりバッファを完全にシステム側に返還する責務をfreeは持たないしfreeで実現は無理だ
そこは各システムが別の機構として責務を持っている
普通のOSならプロセス終了でバッファ含めて使用メモリ全体を自動解放することになる
組み込みシステムでもそのプログラム終了時に少なくともバッファ部分を解放する仕組みを持たなければならない
freeを忘れてもあるいはfreeせぬまま異常終了となってもその仕組みによりメモリリークは起きない
それはむしろ逆
freeを完全にすることでメモリリークを防ぐことはできない
freeはアロケータが管理するメモリバッファへ返還する動作しかしない
malloc/free交互にするたびにそのバッファをゼロにするためOSやその他システムへバッファを返還する非効率をしない
アロケータが管理するバッファはfree後も常に一定量が残っている
つまりバッファを完全にシステム側に返還する責務をfreeは持たないしfreeで実現は無理だ
そこは各システムが別の機構として責務を持っている
普通のOSならプロセス終了でバッファ含めて使用メモリ全体を自動解放することになる
組み込みシステムでもそのプログラム終了時に少なくともバッファ部分を解放する仕組みを持たなければならない
freeを忘れてもあるいはfreeせぬまま異常終了となってもその仕組みによりメモリリークは起きない
605デフォルトの名無しさん
2024/11/03(日) 01:07:42.39ID:GP4mHnVt606デフォルトの名無しさん
2024/11/03(日) 08:19:11.87ID:OLDVpvrl まともなOSならfreeせずに終了しても問題が起こらないように作ってあるよ
そうしないと異常終了のようなケースでリークし続けることになるし
(古いものやマイナーなものも含めた全てのOSがそうだとは言い切れないけど)
その上でだけど、上記はOSの動作の問題であって、言語のルールとしては「mallocしたら対になるfreeを呼ぶこと」だろうから、自分の好みとしてはfreeをちゃんと呼ぶよう作りたい派
「OSが解放するから問題ない」というのは「プログラマが責任をサボっても問題は起こらない」という感じがしてて、行儀の良いコードでないように感じる
そうしないと異常終了のようなケースでリークし続けることになるし
(古いものやマイナーなものも含めた全てのOSがそうだとは言い切れないけど)
その上でだけど、上記はOSの動作の問題であって、言語のルールとしては「mallocしたら対になるfreeを呼ぶこと」だろうから、自分の好みとしてはfreeをちゃんと呼ぶよう作りたい派
「OSが解放するから問題ない」というのは「プログラマが責任をサボっても問題は起こらない」という感じがしてて、行儀の良いコードでないように感じる
607デフォルトの名無しさん
2024/11/03(日) 08:27:05.14ID:vgT2G1ym mallocしたら対になるfreeを呼ばずに終了するのはマナー違反
目上のOSに対して失礼に当たる
目上のOSに対して失礼に当たる
608デフォルトの名無しさん
2024/11/03(日) 08:32:32.56ID:muWl0Gle こういうやつに限って問題が起きると「想定外でした」と恥ずかしげもなく言うんだよな
609デフォルトの名無しさん
2024/11/03(日) 08:32:33.64ID:W/WQS3jI メモリリークが問題になるのは、むしろ終了させずに長期間稼働させ続ける場面でのことだと思うが…。
特に鯖とか医療機器・自動車組み込みなど、経済・人命に影響が大きい分野。
特に鯖とか医療機器・自動車組み込みなど、経済・人命に影響が大きい分野。
610デフォルトの名無しさん
2024/11/03(日) 08:37:43.84ID:vgT2G1ym >>609
そういう分野では、そもそも動的にメモリ確保しない
そういう分野では、そもそも動的にメモリ確保しない
611デフォルトの名無しさん
2024/11/03(日) 09:04:30.66ID:DnnuC4NT 動的確保をしないものもあればするものもある
自分の知ってる範囲が世の中の全てだと勘違いしないことだな
自分の知ってる範囲が世の中の全てだと勘違いしないことだな
612デフォルトの名無しさん
2024/11/03(日) 09:25:18.11ID:OLDVpvrl 医療機器や自動車ほど重要なものではないけど、自分の仕事だと組込みでも動的確保を使うよ
Windows EmbeddedやUbuntuようなOSが入ってるし、それなりのリソースがある環境での話だけど
「大きなバッファはプログラムの最初に1度だけ確保する」ことはするけど、それ以降のヒープ確保をしないとか、static領域のみを使うとかまではしてない
(Rustスレでいうのもなんだけど現状はC++)
一般化できる話かは分からないけど、例えばカメラを使う機器かつ複数種類のハードウェアを扱うプログラムなら動的確保は必要じゃない?
想定するカメラ画像のうち最も大きいサイズに合わせたメモリを静的確保する作りでも良いと思うけど、プログラム起動後にハードウェアに問い合わせて、それを元に必要分のバッファを確保する作りも多いと思う
Windows EmbeddedやUbuntuようなOSが入ってるし、それなりのリソースがある環境での話だけど
「大きなバッファはプログラムの最初に1度だけ確保する」ことはするけど、それ以降のヒープ確保をしないとか、static領域のみを使うとかまではしてない
(Rustスレでいうのもなんだけど現状はC++)
一般化できる話かは分からないけど、例えばカメラを使う機器かつ複数種類のハードウェアを扱うプログラムなら動的確保は必要じゃない?
想定するカメラ画像のうち最も大きいサイズに合わせたメモリを静的確保する作りでも良いと思うけど、プログラム起動後にハードウェアに問い合わせて、それを元に必要分のバッファを確保する作りも多いと思う
613デフォルトの名無しさん
2024/11/03(日) 10:22:36.62ID:e8fWHn4Q614デフォルトの名無しさん
2024/11/03(日) 11:21:00.89ID:wZ/A1hEq mallocが駄目ならsbrkを使えば良いじゃない。by マリー
615デフォルトの名無しさん
2024/11/03(日) 11:34:52.74ID:8jL1esrh > malloc/free交互にするたびにそのバッファをゼロにするためOSやその他システムへバッファを返還する非効率をしない
なんやこの悪文は
なんやこの悪文は
616デフォルトの名無しさん
2024/11/03(日) 11:49:46.99ID:kGU90lSm >>609-610
手術中にGC走り出したら困るもんなー
手術中にGC走り出したら困るもんなー
617デフォルトの名無しさん
2024/11/03(日) 11:52:19.67ID:kGU90lSm >>615
chatGPTに聴いて造らせたような文章だな
chatGPTに聴いて造らせたような文章だな
618デフォルトの名無しさん
2024/11/03(日) 13:59:19.14ID:yWge6Gp+ ChatGPTはそんな変な文を作らない。
619デフォルトの名無しさん
2024/11/03(日) 16:50:47.89ID:zQdSfX4F MS-DOSですら、free忘れようが何しようが、
プロセス終了時にちゃんとOSがプロセスが確保した
メモリーを解放してたよ。
プロセス終了時にちゃんとOSがプロセスが確保した
メモリーを解放してたよ。
620デフォルトの名無しさん
2024/11/03(日) 17:05:19.83ID:zQdSfX4F なんせ、MS-DOSのように「意味的には」ページングして無い場合には、
メモリー解放はOS目線で見れば簡単と言えば簡単だからね。
for ( プロセスが確保していたメモリーブロックを全て巡る ) {
(そのメモリーを解放);
}
みたいなロジックであって。
WindowsやLinuxのようなOSでは、ページングや色々なこと
してるから複雑だけど、それでもOSは頑張って解放するよ。
メモリー解放はOS目線で見れば簡単と言えば簡単だからね。
for ( プロセスが確保していたメモリーブロックを全て巡る ) {
(そのメモリーを解放);
}
みたいなロジックであって。
WindowsやLinuxのようなOSでは、ページングや色々なこと
してるから複雑だけど、それでもOSは頑張って解放するよ。
621デフォルトの名無しさん
2024/11/03(日) 17:20:04.38ID:X/+mpRk0 素人質問で大変恐縮ですが、CPU/GPUのファームウェアをrustで書くことは可能?
622デフォルトの名無しさん
2024/11/03(日) 17:46:00.06ID:OLDVpvrl >>613
>確実にメモリ不足が起こらないこと保証できるのそれ?
それは悪魔の証明に近くないか?
保証はできないけど、普通に使う分には使えてるものだよ
人命に関わるような分野ではない&長時間 (例えば24時間以上) 連続で動かす機器ではないという条件だけど
「組込みでは動的確保をしてはならない」と言うなら、例えば組込みJetsonなんて製品が世に存在するわけがないでしょ
あれはNVIDEAのGPUを積んでて、CUDAを使った処理などを行える機器だけど、組込み向けとして売られてる
GPUメモリの確保は当然動的確保になるわけで
>確実にメモリ不足が起こらないこと保証できるのそれ?
それは悪魔の証明に近くないか?
保証はできないけど、普通に使う分には使えてるものだよ
人命に関わるような分野ではない&長時間 (例えば24時間以上) 連続で動かす機器ではないという条件だけど
「組込みでは動的確保をしてはならない」と言うなら、例えば組込みJetsonなんて製品が世に存在するわけがないでしょ
あれはNVIDEAのGPUを積んでて、CUDAを使った処理などを行える機器だけど、組込み向けとして売られてる
GPUメモリの確保は当然動的確保になるわけで
623デフォルトの名無しさん
2024/11/03(日) 18:50:54.75ID:W/WQS3jI >>621
デバイスドライバって意味なら書ける。
https://qiita.com/lalafell/items/be50f696a35fc6dbce62
win以外
ラズパイのキーボードファームウェアの記事。
https://zenn.dev/nazo6/articles/keyball-embassy-rp2040
こんな調子でCPUやGPUも理論的には行けるはず。
Googleはある程度道筋経ててるみたいね。
C/C++からRustへ:Googleが示すファームウェア進化の道筋
https://xenospectrum.com/google-revamps-firmware-with-rust/
Googleは最近、Android仮想化フレームワークの保護された仮想マシン用ファームウェアをRustプログラミング言語で書き直し、その経験をもとに他の開発者にも、“メモリセーフ”な言語である、Rustへの移行を強く推奨し、ブログでその詳細を解説している。
デバイスドライバって意味なら書ける。
https://qiita.com/lalafell/items/be50f696a35fc6dbce62
win以外
ラズパイのキーボードファームウェアの記事。
https://zenn.dev/nazo6/articles/keyball-embassy-rp2040
こんな調子でCPUやGPUも理論的には行けるはず。
Googleはある程度道筋経ててるみたいね。
C/C++からRustへ:Googleが示すファームウェア進化の道筋
https://xenospectrum.com/google-revamps-firmware-with-rust/
Googleは最近、Android仮想化フレームワークの保護された仮想マシン用ファームウェアをRustプログラミング言語で書き直し、その経験をもとに他の開発者にも、“メモリセーフ”な言語である、Rustへの移行を強く推奨し、ブログでその詳細を解説している。
624デフォルトの名無しさん
2024/11/03(日) 18:52:21.77ID:XxnHrPnR Linuxなんて勝手にプロセス殺して知らんぷりする糞OSですし
625デフォルトの名無しさん
2024/11/03(日) 18:56:19.56ID:W/WQS3jI626デフォルトの名無しさん
2024/11/03(日) 19:43:19.04ID:X/+mpRk0 >>623
ありがとうございます
ありがとうございます
627デフォルトの名無しさん
2024/11/03(日) 20:51:25.90ID:e8fWHn4Q628デフォルトの名無しさん
2024/11/03(日) 21:09:49.26ID:X/+mpRk0 Staticこそ至高
629デフォルトの名無しさん
2024/11/03(日) 21:34:55.27ID:OLDVpvrl >>627
書いた通り、大きなメモリ (主に画像用) は最初に必要分を確保して使い回してるし、当然そのサイズは機器の搭載RAMサイズを考慮しているよ
処理によっては一時的なメモリ確保は生じるけど、適切に解放してるしメモリリークしてるわけでもない
組込みって分野が広いし、あくまでこれは自分の分野の話だというのは念頭においてくれ
メモリが32KBしかないマイコンと、8GBや16GBのメモリを積んでる機器とでは条件が全然違う
リソースが限られていたり、24時間360日動くような機器なら動的確保を避けろというのはその通りだと思う
書いた通り、大きなメモリ (主に画像用) は最初に必要分を確保して使い回してるし、当然そのサイズは機器の搭載RAMサイズを考慮しているよ
処理によっては一時的なメモリ確保は生じるけど、適切に解放してるしメモリリークしてるわけでもない
組込みって分野が広いし、あくまでこれは自分の分野の話だというのは念頭においてくれ
メモリが32KBしかないマイコンと、8GBや16GBのメモリを積んでる機器とでは条件が全然違う
リソースが限られていたり、24時間360日動くような機器なら動的確保を避けろというのはその通りだと思う
630デフォルトの名無しさん
2024/11/03(日) 21:46:04.58ID:OLDVpvrl >24時間360日
これは365日の誤字
これは365日の誤字
631デフォルトの名無しさん
2024/11/03(日) 22:22:34.29ID:etptyyzP >>607
普通のプログラマーが対象とする普通のOS環境においてfree()とOSは関連がない
そしてfree()せずにプログラムが終了してもメモリリークは起きない
関係するのプログラム動作中にメモリの再利用ができないことでメモリを使い果たさないかどうかのみだ
つまりGCに頼る言語でGCが起きる以前にプログラム実行が終わってしまうようなタイプのプログラムなら同様にfree()を行わなくても構わない
起動時にまとめてメモリを確保して終了時まで放さないタイプでもfree()を行なう必要はない
free()を行なわないことでプログラミングをより平易かつ安全にすることができる
普通のプログラマーが対象とする普通のOS環境においてfree()とOSは関連がない
そしてfree()せずにプログラムが終了してもメモリリークは起きない
関係するのプログラム動作中にメモリの再利用ができないことでメモリを使い果たさないかどうかのみだ
つまりGCに頼る言語でGCが起きる以前にプログラム実行が終わってしまうようなタイプのプログラムなら同様にfree()を行わなくても構わない
起動時にまとめてメモリを確保して終了時まで放さないタイプでもfree()を行なう必要はない
free()を行なわないことでプログラミングをより平易かつ安全にすることができる
632デフォルトの名無しさん
2024/11/03(日) 22:34:17.00ID:tj8/H5Bl 結論:
複オジが対象としているタイプのプログラムではfree()を行なわないことでプログラミングをより平易かつ安全にすることができる
以上。
複オジが対象としているタイプのプログラムではfree()を行なわないことでプログラミングをより平易かつ安全にすることができる
以上。
633デフォルトの名無しさん
2024/11/03(日) 22:50:04.49ID:JgJhJeSd freeしないコードのコードレビューはしたくないな
こだわりが強そうだし、本当に安全なのか確かめるのも大変
こだわりが強そうだし、本当に安全なのか確かめるのも大変
634デフォルトの名無しさん
2024/11/03(日) 23:14:53.65ID:/IbdFPbo635デフォルトの名無しさん
2024/11/04(月) 01:39:27.51ID:nRSMDwEy freeを使ってないがreallocは使ってるみたいな
敵視してない敵がいる
つまり敵味方は自由に選べないので、同意してないコストを強制されることもある
敵視してない敵がいる
つまり敵味方は自由に選べないので、同意してないコストを強制されることもある
636デフォルトの名無しさん
2024/11/04(月) 02:53:23.37ID:Bn72OgcT Rustの話を、しよう
637デフォルトの名無しさん
2024/11/04(月) 14:38:06.42ID:dJ1Yp7fe638デフォルトの名無しさん
2024/11/04(月) 14:59:59.47ID:IyJSMCPH お話してから、しましょう
639デフォルトの名無しさん
2024/11/04(月) 16:28:27.25ID:613UlU6B >>637
いや俺はそいつとは違うが絶対安全なのは事実
いや俺はそいつとは違うが絶対安全なのは事実
640デフォルトの名無しさん
2024/11/04(月) 17:33:20.85ID:Jcd4tSdQ 何が絶対安全なの?
641デフォルトの名無しさん
2024/11/04(月) 17:41:55.51ID:P+qabS46 >>639
いや完全に脳みそ複オジでしょ
いや完全に脳みそ複オジでしょ
642デフォルトの名無しさん
2024/11/04(月) 18:04:13.97ID:mBJjb45a >>566
亀レスだけどアドレスにリスナーをバインドすればnetstat -aの結果にLISTEN状態で出てくるぞ
亀レスだけどアドレスにリスナーをバインドすればnetstat -aの結果にLISTEN状態で出てくるぞ
643デフォルトの名無しさん
2024/11/04(月) 18:21:55.56ID:613UlU6B644デフォルトの名無しさん
2024/11/04(月) 18:36:09.56ID:+Zn5uplp そんなイキれるほど頭のいいこと言ってないから
freeしなきゃ安全!
はずいわ
freeしなきゃ安全!
はずいわ
645デフォルトの名無しさん
2024/11/04(月) 18:36:26.40ID:0co8NUe7 そりゃ安全ではあるけど別の大問題を生むし……
わざわざそれを言ってるのって「Cであえて解放しないようにするとC++/RustでRAIIに任せるのと比べて(誤差レベルで)早い」って意見に対してくだらない意地張ってるだけじゃないですか
わざわざそれを言ってるのって「Cであえて解放しないようにするとC++/RustでRAIIに任せるのと比べて(誤差レベルで)早い」って意見に対してくだらない意地張ってるだけじゃないですか
646デフォルトの名無しさん
2024/11/04(月) 18:45:22.71ID:UYP+oEN0 >>643
#include <stdio.h>
int main() {
int x;
printf("%d\n", x);
return 0;
}
↑freeしてないけどメモリ安全ではないよ
何が安全なのか知らんけど
#include <stdio.h>
int main() {
int x;
printf("%d\n", x);
return 0;
}
↑freeしてないけどメモリ安全ではないよ
何が安全なのか知らんけど
647デフォルトの名無しさん
2024/11/04(月) 19:51:08.05ID:3WEWZAvC648デフォルトの名無しさん
2024/11/04(月) 19:52:09.07ID:3WEWZAvC >>645
俺は寿命が短時間なのか想定されるプログラムで敢えてfreeしないアプローチを取るのは賛成やが
俺は寿命が短時間なのか想定されるプログラムで敢えてfreeしないアプローチを取るのは賛成やが
649デフォルトの名無しさん
2024/11/04(月) 19:52:59.06ID:3WEWZAvC >>646
この本ではdangling pointerのエラーについては発生しないこどメモリ安全だと主張している
この本ではdangling pointerのエラーについては発生しないこどメモリ安全だと主張している
650デフォルトの名無しさん
2024/11/04(月) 21:16:42.38ID:nRSMDwEy RAIIより単純なアプローチがもしあればRAIIは非科学的だぞという
このオッカムの剃刀自体が、科学的な実験やデータを必要としない哲学の思想だ
このオッカムの剃刀自体が、科学的な実験やデータを必要としない哲学の思想だ
651デフォルトの名無しさん
2024/11/04(月) 21:43:03.80ID:C+a/rILf >>636
Rustでももちろん意図的に解放しない有用な方法を公式にサポートしている
これはヒープ領域の一部を解放しないことにして例えばスタティック領域のようにみなすことができる
つまりライフタイムを'staticにできるため構造体メンバーに制約なく組み込めて関数からも自由に返せるようになる
この機能はsafeなRustの標準ライブラリとして提供されている
Rustでももちろん意図的に解放しない有用な方法を公式にサポートしている
これはヒープ領域の一部を解放しないことにして例えばスタティック領域のようにみなすことができる
つまりライフタイムを'staticにできるため構造体メンバーに制約なく組み込めて関数からも自由に返せるようになる
この機能はsafeなRustの標準ライブラリとして提供されている
652デフォルトの名無しさん
2024/11/04(月) 22:47:38.24ID:pw9M2oNL >>649
そりゃ「確保した参照を絶対解放しない言語」ならdangling pointerは発生しないだろ
でもC言語はそうじゃないしはfreeしなくてもdangling pointerは発生するから全然安全じゃない
結局「freeしなければ絶対安全」の正体は
「freeしなければfree起因によるdangling pointerは発生しない」というだけ
当たり前すぎて泣けてくる
そりゃ「確保した参照を絶対解放しない言語」ならdangling pointerは発生しないだろ
でもC言語はそうじゃないしはfreeしなくてもdangling pointerは発生するから全然安全じゃない
結局「freeしなければ絶対安全」の正体は
「freeしなければfree起因によるdangling pointerは発生しない」というだけ
当たり前すぎて泣けてくる
653デフォルトの名無しさん
2024/11/04(月) 23:29:15.46ID:nRSMDwEy 政治起因による制約さえ無くなれば経済が偉大になるという謎理論があるからな
654デフォルトの名無しさん
2024/11/05(火) 22:33:43.60ID:foggTYfW655デフォルトの名無しさん
2024/11/05(火) 23:42:46.08ID:fXJW6BJV &'static mut Tに何か代入したらどうなるの
代入前の値にdropが定義されてたら呼び出される?
それは実質的にfreeしてるのと同じなのでは
代入前の値にdropが定義されてたら呼び出される?
それは実質的にfreeしてるのと同じなのでは
656デフォルトの名無しさん
2024/11/06(水) 00:29:29.78ID:40oev9+T >>655
デストラクタはその型の値に対して行われるものであって
一般的にはヒープメモリとは関係がない
たまたまその型(の一部)がヒープメモリを所有すれば当然解放される
一方で&'static mut Tの元はBox<T>そして&'static mut [T]の元はVec<T>
つまり解放されないのはBoxやVecという入れ物でありTの話ではない
デストラクタはその型の値に対して行われるものであって
一般的にはヒープメモリとは関係がない
たまたまその型(の一部)がヒープメモリを所有すれば当然解放される
一方で&'static mut Tの元はBox<T>そして&'static mut [T]の元はVec<T>
つまり解放されないのはBoxやVecという入れ物でありTの話ではない
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… [BFU★]
- 中国国営メディア「沖縄は日本ではない」… ★2 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」 [ぐれ★]
- 【こんなの初めて…】民泊には既にキャンセルも 中国の渡航自粛で [ぐれ★]
- NY円、一時1ユーロ=180円台まで下落…1999年のユーロ導入以来初 ★2 [蚤の市★]
- 俳優 高岡蒼佑「エジプト出身とかナイジェリア出身とかの人が、日本の代表顔して移民の事とか話してるの見るとなんか違う気がする」★2 [Anonymous★]
- 【悲報】なんで「アジア主義」を唱える右翼が居ないの🤔 [616817505]
- 野田(安倍晋三マニア)「総理は国益を損なうような発言はしてはいけない」 [884040186]
- 中国国営放送「日本は琉球をただちに中国に返還せよ」 キタ━━━━(゚∀゚)━━━━!!!!! [314039747]
- 【高市悲報】アメリカ戦争省「あのさ、何回シミュレートしてもわーくに中国に負けちゃうんだよね🤗」 [359965264]
- 自民「高市の一言でこれまで積み上げてきた関係が駄目になる。言葉の重みを分かっていない。自分でまいた種は自分で刈り取ってもらう」 [256556981]
- 【高市悲報】片山さつき、円安進行を受けコメント「為替の変動を緊張感を持って見極める」 [888298477]
