Mozilla発のRust言語のスレ
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
Web上の実行環境
https://play.rust-lang.org
日本語の情報
https://rust-jp.rs/
前スレ
Rust part9
https://mevius.5ch.net/test/read.cgi/tech/1598112455/
探検
Rust part10
■ このスレッドは過去ログ倉庫に格納されています
2021/04/02(金) 21:38:04.11ID:L7IeSfpL
123デフォルトの名無しさん
2021/04/17(土) 11:27:24.53ID:t/1FzfAW pure rustでカーネル作ってる人いるんだから
原理的に不可能ってわけでもないだろ
原理的に不可能ってわけでもないだろ
124デフォルトの名無しさん
2021/04/17(土) 11:29:13.13ID:LJqBKM+D allocまで全部作り切ってからパッチ投げてLinusに却下って言われたら目も当てられんしな。プロトタイプの段階でこまめに出すのはいいと思う。
125デフォルトの名無しさん
2021/04/17(土) 11:37:37.77ID:h7zOlTtk >>120
伝統的なCでは、
char *ptr;
if ( (ptr = malloc(サイズ)) == NULL ) { // (1)
printf( "メモリ確保にしっぱいしたで〜\n" );
}
それをC++で書くとすれば、
if ( (ptr = new char [サイズ]) == NULL ) { // (2)
printf( "メモリ確保にしっぱいしたで〜\n" );
}
となるけれども、
v.push_back(i + 100); // (3)
でメモリーエラーのエラーチェックしないのに(2)でしても余り意味はないという
考え方もあるわけでなので(2)と書かずにエラーチェック無しで
ptr = new char [サイズ]; // (4)
と書く方針もあっていいと思う。
なお、よっぽど大きなデータを扱わない限り、デスクトップマシンでは
(3)や(4)で失敗する可能性はとても低い。
伝統的なCでは、
char *ptr;
if ( (ptr = malloc(サイズ)) == NULL ) { // (1)
printf( "メモリ確保にしっぱいしたで〜\n" );
}
それをC++で書くとすれば、
if ( (ptr = new char [サイズ]) == NULL ) { // (2)
printf( "メモリ確保にしっぱいしたで〜\n" );
}
となるけれども、
v.push_back(i + 100); // (3)
でメモリーエラーのエラーチェックしないのに(2)でしても余り意味はないという
考え方もあるわけでなので(2)と書かずにエラーチェック無しで
ptr = new char [サイズ]; // (4)
と書く方針もあっていいと思う。
なお、よっぽど大きなデータを扱わない限り、デスクトップマシンでは
(3)や(4)で失敗する可能性はとても低い。
126デフォルトの名無しさん
2021/04/17(土) 11:41:51.20ID:h7zOlTtk N88-BASICでは、読み込みモードでファイルを開く時、
open "ファイル名" for input as #1
と書いていたが、ファイルが存在しないとここでエラーになって
アプリが終了していたことを思い出した。
Perl、Ruby、Pythonなんかは、全て基本的に同じ方針だと思う。
その流儀とRustでのメモリー不足時のpanicの方針も同じと考えていいだろうな。
open "ファイル名" for input as #1
と書いていたが、ファイルが存在しないとここでエラーになって
アプリが終了していたことを思い出した。
Perl、Ruby、Pythonなんかは、全て基本的に同じ方針だと思う。
その流儀とRustでのメモリー不足時のpanicの方針も同じと考えていいだろうな。
127デフォルトの名無しさん
2021/04/17(土) 11:48:23.17ID:r+Flv24K >>121
そう、それだけの話。でもそれだけの話がここでは恐ろしく通じない。
そう、それだけの話。でもそれだけの話がここでは恐ろしく通じない。
128デフォルトの名無しさん
2021/04/17(土) 12:20:31.25ID:3/shspJz >>122
On allocation: this is just our usage of `alloc` in order to speed
development up -- it will be replaced (or customized, we have to
decide how we will approach it) with our own allocation and data
structures.
これのことか?
itってour usage of `alloc`のことじゃねーのと思ったけど、alloc自体のAPIデザインに問題があるみたいな話出てるの?
On allocation: this is just our usage of `alloc` in order to speed
development up -- it will be replaced (or customized, we have to
decide how we will approach it) with our own allocation and data
structures.
これのことか?
itってour usage of `alloc`のことじゃねーのと思ったけど、alloc自体のAPIデザインに問題があるみたいな話出てるの?
129デフォルトの名無しさん
2021/04/17(土) 13:30:05.64ID:5SUmF/jF >>125
> if ( (ptr = new char [サイズ]) == NULL ) { // (2)
C++ は new も vector::push_back も bad_alloc が飛ぶ。ふつうの new は nullptr 返さない。
> if ( (ptr = new char [サイズ]) == NULL ) { // (2)
C++ は new も vector::push_back も bad_alloc が飛ぶ。ふつうの new は nullptr 返さない。
130デフォルトの名無しさん
2021/04/17(土) 13:35:37.75ID:YGcs/48d てかアロケータの動作がどうのってLinux Kernel関係あるの?
ベアメタル用途全般が該当すると思うけど
ベアメタル用途全般が該当すると思うけど
131デフォルトの名無しさん
2021/04/17(土) 14:08:16.83ID:h7zOlTtk >>129
そういえば、言葉は忘れたけど、関数宣言の行に、その関数の中でどういう
例外が起きる可能性があるかについてのthrows を書くかどうか、書くべきか、
省略しても良いか、などの違いが色々あって、どういう言語仕様にすべきかが
結構問題になっていると聞いた。
すべてを書くと多くなりすぎるし、全く書かないのも問題だとか、そんな話。
なんという言葉だったかな。
そういえば、言葉は忘れたけど、関数宣言の行に、その関数の中でどういう
例外が起きる可能性があるかについてのthrows を書くかどうか、書くべきか、
省略しても良いか、などの違いが色々あって、どういう言語仕様にすべきかが
結構問題になっていると聞いた。
すべてを書くと多くなりすぎるし、全く書かないのも問題だとか、そんな話。
なんという言葉だったかな。
132デフォルトの名無しさん
2021/04/17(土) 14:30:50.99ID:ahfNUrst allocatorがエラーを返さずに例外を上げる挙動にRustの標準ライブラリ的なもの(コレクションとかスマートポインタとか?)が依存していて、
それはLinuxカーネル的には許容できないからそういうコードをそのまま持ち込むなよ?ということでしょ
Linuxカーネル上のC言語はそもそも標準ライブラリとか使わないし
メモリ確保もmallocじゃなくてkmallocというカーネル内独自関数使うし
ここ見ると
https://medium.com/nttlabs/linux-kernel-module-with-rust-d5363c2f9085
array: vec![0;32] で kmalloc が呼ばれるみたいだね
でもこれLinuxのカーネルモジュールのコードとしてはそこでエラーチェックが必要になるのかね?
もしくはkmallocに失敗したらそのモジュール自体が自動でアンロードされるとか
でもアンロードされるときに後処理とかしたいかなとかいろいろ考える必要はありそう
それはLinuxカーネル的には許容できないからそういうコードをそのまま持ち込むなよ?ということでしょ
Linuxカーネル上のC言語はそもそも標準ライブラリとか使わないし
メモリ確保もmallocじゃなくてkmallocというカーネル内独自関数使うし
ここ見ると
https://medium.com/nttlabs/linux-kernel-module-with-rust-d5363c2f9085
array: vec![0;32] で kmalloc が呼ばれるみたいだね
でもこれLinuxのカーネルモジュールのコードとしてはそこでエラーチェックが必要になるのかね?
もしくはkmallocに失敗したらそのモジュール自体が自動でアンロードされるとか
でもアンロードされるときに後処理とかしたいかなとかいろいろ考える必要はありそう
133はちみつ餃子 ◆8X2XSCHEME
2021/04/17(土) 14:48:08.80ID:V2rXjiTW >>131
動的例外仕様 (dynamic exception specification) のことか?
https://timsong-cpp.github.io/cppwp/n3337/except.spec
送出される可能性のある例外を記述する仕組みだったが、役に立ってなかったので C++17 で廃止された。
(例外を送出するかしないかだけを指定する方式が残された。)
C++ の仕様では例外を送出しないという指定を付けたところを例外が通過しようとしたら
std::terminate が呼ばれて異常終了扱いになるという、実質的な assert なんだわ。
静的な検査をカッチリやってくれるわけではないんで、
カーネル記述みたいな文脈では使い物にならんな。
動的例外仕様 (dynamic exception specification) のことか?
https://timsong-cpp.github.io/cppwp/n3337/except.spec
送出される可能性のある例外を記述する仕組みだったが、役に立ってなかったので C++17 で廃止された。
(例外を送出するかしないかだけを指定する方式が残された。)
C++ の仕様では例外を送出しないという指定を付けたところを例外が通過しようとしたら
std::terminate が呼ばれて異常終了扱いになるという、実質的な assert なんだわ。
静的な検査をカッチリやってくれるわけではないんで、
カーネル記述みたいな文脈では使い物にならんな。
134デフォルトの名無しさん
2021/04/17(土) 14:49:51.36ID:ohP60UMx linuxだろうとwindowsだろうと普通のカーネルはそうだろ。
よっぽど特殊用途のOSならどうかは知らんが。
よっぽど特殊用途のOSならどうかは知らんが。
135デフォルトの名無しさん
2021/04/17(土) 15:49:17.42ID:h7zOlTtk >>133
なんか、Javaにおいて、throwsに創出するすべての例外を書く仕様にしてみたら、
地獄のように沢山書かなくてはならなくなって困り、
関数プロトタイプ宣言の直後の throws()の中に
「書く必要のある例外」と「書かなくても良い例外」
の違いを設けることにした、この板で聞いた。
なんか、Javaにおいて、throwsに創出するすべての例外を書く仕様にしてみたら、
地獄のように沢山書かなくてはならなくなって困り、
関数プロトタイプ宣言の直後の throws()の中に
「書く必要のある例外」と「書かなくても良い例外」
の違いを設けることにした、この板で聞いた。
136デフォルトの名無しさん
2021/04/17(土) 15:56:30.53ID:h7zOlTtk137はちみつ餃子 ◆8X2XSCHEME
2021/04/17(土) 16:29:38.34ID:V2rXjiTW >>135
検査例外と非検査例外のことだな。
例外の便利なところは大域脱出が出来るところで、例外を捕捉する箇所と発生する箇所の間では例外のことを忘れられる点。
発生しうる例外の伝播を明示しないといけないのだと返却値で返す形にするのと差がない。
例外を使っていると異常系だということが見た目に分かり易いってくらいのもの。
Java が明示しなくてよい例外という分類を設けたのは明示しなくてよいというだけでなく捕捉もしなくてよいということでもあって、
どのように使い分けるのがよいかは諸説あるけども、非検査例外は
・ 捕捉したところで回復できないもの
・ そもそもその例外を発生させないようにすべきもの (実質的には assert)
というのがおおよその共通認識になっている。
メモリ不足は回復不可能なので非検査例外に分類されているが、
「Java のレイヤでは」回復不可能という話であって、
Java では低レイヤを書かないという前提があるからこういう決め打ちが出来る。
低レイヤと高レイヤでは前提が違ってくるから同じようにはいかんのだ。
検査例外と非検査例外のことだな。
例外の便利なところは大域脱出が出来るところで、例外を捕捉する箇所と発生する箇所の間では例外のことを忘れられる点。
発生しうる例外の伝播を明示しないといけないのだと返却値で返す形にするのと差がない。
例外を使っていると異常系だということが見た目に分かり易いってくらいのもの。
Java が明示しなくてよい例外という分類を設けたのは明示しなくてよいというだけでなく捕捉もしなくてよいということでもあって、
どのように使い分けるのがよいかは諸説あるけども、非検査例外は
・ 捕捉したところで回復できないもの
・ そもそもその例外を発生させないようにすべきもの (実質的には assert)
というのがおおよその共通認識になっている。
メモリ不足は回復不可能なので非検査例外に分類されているが、
「Java のレイヤでは」回復不可能という話であって、
Java では低レイヤを書かないという前提があるからこういう決め打ちが出来る。
低レイヤと高レイヤでは前提が違ってくるから同じようにはいかんのだ。
138デフォルトの名無しさん
2021/04/17(土) 16:34:30.24ID:h7zOlTtk >>136
https://www.w3resource.com/java-tutorial/types-of-exception.php
1. Checked exceptions
2. Unchecked exceptions
が有り、2. には、
2-1. Errors
2-2. Runtime exceptions
の2種類がある。
1はmethodシグネチャのthrowsの後に明示しなくてはならないが、
2は不要。1はプログラマが処理することが出来る場合が多いが、
2はとても難しいことが多い。
OutOfMemoryErrorは、2-1 に属し、throwsの後に明示する必要がないが
「2」なのでプログラマが対処することが難しい例外に分類される。
https://www.w3resource.com/java-tutorial/types-of-exception.php
1. Checked exceptions
2. Unchecked exceptions
が有り、2. には、
2-1. Errors
2-2. Runtime exceptions
の2種類がある。
1はmethodシグネチャのthrowsの後に明示しなくてはならないが、
2は不要。1はプログラマが処理することが出来る場合が多いが、
2はとても難しいことが多い。
OutOfMemoryErrorは、2-1 に属し、throwsの後に明示する必要がないが
「2」なのでプログラマが対処することが難しい例外に分類される。
139はちみつ餃子 ◆8X2XSCHEME
2021/04/17(土) 16:46:23.23ID:V2rXjiTW 低レイヤでも高レイヤでも使うことを考えたらやっぱ例外という仕組みは使いにくいっつーことだな。
カーネルを書くにあたって Rust が (現状では) ベストというわけでもないだろうけど、
比較的可能性がある選択のひとつではあると思う。
どうせ標準ライブラリのフルセットを使えるわけではないのは C でも同じことだし。
カーネルを書くにあたって Rust が (現状では) ベストというわけでもないだろうけど、
比較的可能性がある選択のひとつではあると思う。
どうせ標準ライブラリのフルセットを使えるわけではないのは C でも同じことだし。
140デフォルトの名無しさん
2021/04/17(土) 17:10:18.35ID:h7zOlTtk Rubyなんかでファイルオープンする時にはエラー発生チェックをしなくてもよくて
エラーが発生するとpanicする。これは簡単なプログラムでは便利。
そしてbegin,rescue,endではさめば、panicせずにエラー処理することも
出来る様になっている。これはtry,catch構文と発想は同じ。
でも、読み書き用の2つのファイルをオープンして読んで加工して書き込む
ような時、catch文でどっちのエラーか区別したりするのは面倒といえば面倒かな。
C風だと、fopen の行で処理できて分かり易かったのに。
エラーが発生するとpanicする。これは簡単なプログラムでは便利。
そしてbegin,rescue,endではさめば、panicせずにエラー処理することも
出来る様になっている。これはtry,catch構文と発想は同じ。
でも、読み書き用の2つのファイルをオープンして読んで加工して書き込む
ような時、catch文でどっちのエラーか区別したりするのは面倒といえば面倒かな。
C風だと、fopen の行で処理できて分かり易かったのに。
141デフォルトの名無しさん
2021/04/17(土) 17:12:33.63ID:h7zOlTtk142デフォルトの名無しさん
2021/04/18(日) 02:29:17.84ID:xL1TJJG/ ttps://github.com/rust-lang/rust-bindgen/commit/0e25962c4e69aef647e7275fa7bc7545dbb8cd0b#diff-b1a35a68f14e696205874893c07fd24fdb88882b47c23cc0e0c80a30c7d53759
コロコロ変わってその度に置換するスクリプト書いてるんだけど、
二ヶ月くらい音沙汰ないからそろそろ名前くらい安定してほしい。
コロコロ変わってその度に置換するスクリプト書いてるんだけど、
二ヶ月くらい音沙汰ないからそろそろ名前くらい安定してほしい。
143デフォルトの名無しさん
2021/04/18(日) 09:49:21.11ID:vWwiRDOG rustってそんなにいいか?
任意の場所でfreeできるcとは違って
ブロック抜けるタイミングでしかメモリ開放されないんだろ?
rustっていらなくなってもブロック抜けるまではヒープメモリ保持しないといけないってことなの?
任意の場所でfreeできるcとは違って
ブロック抜けるタイミングでしかメモリ開放されないんだろ?
rustっていらなくなってもブロック抜けるまではヒープメモリ保持しないといけないってことなの?
144デフォルトの名無しさん
2021/04/18(日) 10:08:02.12ID:UN4umXE6 >>143
dropじゃだめなの?
dropじゃだめなの?
145デフォルトの名無しさん
2021/04/18(日) 10:09:10.01ID:732wPalE そんなに良くないからキミはもっとcを頑張ったほうがいい
cを頑張ってc++にも手を出して頑張って
気が狂いそうになるのを覚えてからもう一度来たらいい
cを頑張ってc++にも手を出して頑張って
気が狂いそうになるのを覚えてからもう一度来たらいい
146デフォルトの名無しさん
2021/04/18(日) 10:34:02.72ID:vWwiRDOG147デフォルトの名無しさん
2021/04/18(日) 12:33:31.22ID:gA/cagL6 ワロタw
148デフォルトの名無しさん
2021/04/18(日) 12:57:11.20ID:UN4umXE6 vectorにpushしながらその要素の可変参照を返すようなメソッドってあったりしますか?
149デフォルトの名無しさん
2021/04/18(日) 13:12:40.26ID:/yrt+WGh お前らの用途だったらgoで十分だろと思うことが多いわ。
ファッションでやるってのも悪くはないが。
ファッションでやるってのも悪くはないが。
150デフォルトの名無しさん
2021/04/18(日) 13:30:23.57ID:8MLIImZW rustではunsafeを多用するのは良いことですか?
151デフォルトの名無しさん
2021/04/18(日) 13:39:58.68ID:a3mPgn8/ 必要なら使えばいい
152デフォルトの名無しさん
2021/04/18(日) 16:52:32.86ID:dOXZMSKq >>148
そういうメソッドはなさそう
特に理由がなければ分けて書いた方がいいけど、ブロック式を使って
let y = { v.push(x); v.last_mut().unwrap() }; // 変数に入れる場合
f({ v.push(x); v.last_mut().unwrap() }); // 関数に渡す場合
みたいな詰め方はできるかな
いっぱい使うならローカルなマクロ作ってもいい
macro_rules! push_and_mut_ref {
($v:expr, $x:expr) => {{ $v.push($x); $v.last_mut().unwrap() }};
}
let y = push_and_mut_ref!(v, x);
蛇足だけどyが生きてる間はvに触れないからご注意を
そういうメソッドはなさそう
特に理由がなければ分けて書いた方がいいけど、ブロック式を使って
let y = { v.push(x); v.last_mut().unwrap() }; // 変数に入れる場合
f({ v.push(x); v.last_mut().unwrap() }); // 関数に渡す場合
みたいな詰め方はできるかな
いっぱい使うならローカルなマクロ作ってもいい
macro_rules! push_and_mut_ref {
($v:expr, $x:expr) => {{ $v.push($x); $v.last_mut().unwrap() }};
}
let y = push_and_mut_ref!(v, x);
蛇足だけどyが生きてる間はvに触れないからご注意を
153デフォルトの名無しさん
2021/04/18(日) 17:30:23.89ID:qHYw4Dd3154デフォルトの名無しさん
2021/04/18(日) 17:38:05.52ID:/DBGFH0C entry APIみたいなことしたいのかな
155デフォルトの名無しさん
2021/04/19(月) 03:50:11.66ID:cH3u5yp0 Rustに比べたC++の良さは雑に書けるところだって気付いた
やっぱ雑が許されない巨大プロジェクトはRustで、小規模な自分用ツールの類はC++で書いてくことになりそうだ
やっぱ雑が許されない巨大プロジェクトはRustで、小規模な自分用ツールの類はC++で書いてくことになりそうだ
156デフォルトの名無しさん
2021/04/19(月) 08:44:54.89ID:4a/aZ6Q1157デフォルトの名無しさん
2021/04/19(月) 10:48:10.96ID:7a+3hK+O 段階的に直していく方法と最初から設計で硬くしておく方法があると思うが
rustが念頭に置いてるのは明らかに後者。これがいいのか悪いのかは議論の余地がある。
rustが念頭に置いてるのは明らかに後者。これがいいのか悪いのかは議論の余地がある。
158デフォルトの名無しさん
2021/04/19(月) 11:19:16.28ID:QqvLWpkW 型が強いからリファクタリングしやすいという意味では段々直していく方法に適しているとも言えると思うが
159デフォルトの名無しさん
2021/04/19(月) 11:21:50.23ID:7a+3hK+O160デフォルトの名無しさん
2021/04/19(月) 11:34:35.17ID:VqBzpR75 >>155
雑に書いた脆弱性のあるバイナリを世に出さなきゃそれでもいいんじゃね
雑に書いた脆弱性のあるバイナリを世に出さなきゃそれでもいいんじゃね
161デフォルトの名無しさん
2021/04/19(月) 13:02:55.04ID:sZaag2LS162デフォルトの名無しさん
2021/04/19(月) 13:06:52.92ID:hAOdtYDs つーかRust以前はどうしてたんだよって話w
流行りのもんに飛びついてそれ以外見えなくなってる典型
流行りのもんに飛びついてそれ以外見えなくなってる典型
163デフォルトの名無しさん
2021/04/19(月) 13:26:32.62ID:I7sE/fYQ どうしてたって脆弱性を秘めたまま出回ってただろ
164デフォルトの名無しさん
2021/04/19(月) 13:27:33.53ID:k4Vsf7V5 いつものレイヤーとかスコープを
ごちゃまぜにする思考が乱雑な人でしょ
ごちゃまぜにする思考が乱雑な人でしょ
165デフォルトの名無しさん
2021/04/19(月) 14:27:55.78ID:7a+3hK+O それお前だろ
166デフォルトの名無しさん
2021/04/19(月) 16:41:05.18ID:OqiIdPZa まあ、C/C++が危なかろうが、自分のやりたい計算をするだけみたいな用途には向いてるよな
どうみても簡単で早いし・・・・
どうみても簡単で早いし・・・・
167デフォルトの名無しさん
2021/04/19(月) 16:57:54.64ID:QZprAv/b >>155
C/C++は雑に書けるというより、Rustが想定してないでけで
本当は安全なプログラムも思った通りに書くことが出来る。
RustはRustが想定している範囲内でしか書けないので面倒なことになる。
C/C++は雑に書けるというより、Rustが想定してないでけで
本当は安全なプログラムも思った通りに書くことが出来る。
RustはRustが想定している範囲内でしか書けないので面倒なことになる。
168デフォルトの名無しさん
2021/04/19(月) 17:00:14.68ID:QZprAv/b169デフォルトの名無しさん
2021/04/19(月) 17:08:36.65ID:QZprAv/b AIの機械学習は計算が重いのに言語としては遅いところのPythonのAIは遅くはない。
なぜなら計算部分はC/C++で書かれたライブラリを呼び出して使ってるだけだから。
同様にRustがベンチマークで遅くないのは、実はunsafeモードで書かれたライブラリ
を使ってるせいもある。だからそのベンチマークだけでC/C++と同程度の速さ
であることの証明にはならない。
なぜなら計算部分はC/C++で書かれたライブラリを呼び出して使ってるだけだから。
同様にRustがベンチマークで遅くないのは、実はunsafeモードで書かれたライブラリ
を使ってるせいもある。だからそのベンチマークだけでC/C++と同程度の速さ
であることの証明にはならない。
170デフォルトの名無しさん
2021/04/19(月) 17:33:10.17ID:QqvLWpkW >>169
具体的に何のベンチマークのことを言っているの?
具体的に何のベンチマークのことを言っているの?
171デフォルトの名無しさん
2021/04/19(月) 17:37:07.25ID:QqvLWpkW unsafeがライブラリに隠蔽されていてかつ性能が出ることはRustのコンセプトが正しかったことの証明になるのでは?
172デフォルトの名無しさん
2021/04/19(月) 17:58:35.97ID:eG8AP0Ht 今月のWEB+DB PRESSに載ってる簡易的なRDBMSをRustで実装する記事結構いいぞ
RDBMSの仕組みを学ぶことが主眼でRustの解説は最低限なんだけど
Rustでよく使うパターンが
RDBMSの仕組みを学ぶことが主眼でRustの解説は最低限なんだけど
Rustでよく使うパターンが
173デフォルトの名無しさん
2021/04/19(月) 17:59:44.87ID:cPEAzkUm 「じゃあC++使えばいいよ」で済む質問を何度投下すれば気が済むのか
174デフォルトの名無しさん
2021/04/19(月) 18:02:01.96ID:Nl1mmVW4 だって入れ食いなんだもん…
175デフォルトの名無しさん
2021/04/19(月) 18:15:13.40ID:zaOVVmA+ >>173
リトマス試験紙なんよ
C++で苦労した奴は文句は言わない。Rustが何をしてくれようとしてるのか分かるから。
C++ニワカは文句を言う。Rustが何をしてくれようとしてるのか分からないから。
リトマス試験紙なんよ
C++で苦労した奴は文句は言わない。Rustが何をしてくれようとしてるのか分かるから。
C++ニワカは文句を言う。Rustが何をしてくれようとしてるのか分からないから。
176デフォルトの名無しさん
2021/04/19(月) 18:56:00.14ID:7a+3hK+O >>171
言ってる意味がまるでわからんのだが。
言ってる意味がまるでわからんのだが。
177デフォルトの名無しさん
2021/04/19(月) 19:29:57.41ID:OqiIdPZa 大半の人は、C/C++で苦労も何もしてないだろう
何が危ないのかも理解しないまま、危険なコードや穴の空きやすいコードを書いてるだけだ
何が危ないのかも理解しないまま、危険なコードや穴の空きやすいコードを書いてるだけだ
178デフォルトの名無しさん
2021/04/19(月) 19:51:48.28ID:iY2hw6vD C/C++でメモリをぶっ壊して数日絶望するところまでがチュートリアル
179デフォルトの名無しさん
2021/04/19(月) 19:59:51.22ID:sjEpEGTN メモリぶっ壊すのは絶望ではない、C++の日常だ
180デフォルトの名無しさん
2021/04/19(月) 20:10:50.91ID:hAOdtYDs181デフォルトの名無しさん
2021/04/19(月) 20:11:49.67ID:sjEpEGTN アマチュア君にはそう見えるんだね
182デフォルトの名無しさん
2021/04/19(月) 20:13:49.42ID:cPEAzkUm さすがに日常ではないかな……
構造体の初期化にmemset使うようなC言語上がりのやつはどうだか知らんけど
構造体の初期化にmemset使うようなC言語上がりのやつはどうだか知らんけど
183デフォルトの名無しさん
2021/04/19(月) 20:16:58.02ID:swd16GZO 毎日のようにRustスレで繰り返し同じ事をグチグチ言ってる自称C++使い達はよっぽど暇なんだなぁって思う
184デフォルトの名無しさん
2021/04/19(月) 20:21:28.79ID:7a+3hK+O c/c++でそんだけ壊れるならrustでもunsafe使ってぶっ壊れまくるだろ。。
エアプ丸出しすぎるわ
エアプ丸出しすぎるわ
185デフォルトの名無しさん
2021/04/19(月) 20:21:54.23ID:iY2hw6vD 引数チェックのないライブラリ等で引数を誤ったりすると
パッと見正しく見えるのでかなり面倒なことになる
パッと見正しく見えるのでかなり面倒なことになる
186デフォルトの名無しさん
2021/04/19(月) 21:31:37.98ID:LNECVJtJ AddressSanitizerを使ったことのないものだけが石を投げよ
187デフォルトの名無しさん
2021/04/19(月) 22:14:40.51ID:w0HdGBDs 伸びてると思ったら。次からワッチョイ付けろよ。
188デフォルトの名無しさん
2021/04/20(火) 00:56:58.25ID:h4Yrn7zO https://trends.google.com/trends/explore?date=today%205-y&geo=US&q=%2Fm%2F0dsbpg6,%2Fm%2F02p97,Python,Java,%2Fm%2F0jgqg
Google Trends での Rustと他の言語とのトレンド比較。
これを見る限り、Rust言語は全く流行ってないようだ。
Google Trends での Rustと他の言語とのトレンド比較。
これを見る限り、Rust言語は全く流行ってないようだ。
189デフォルトの名無しさん
2021/04/20(火) 00:59:14.52ID:h4Yrn7zO Python>Java>=JS>C++>>>>Rust
190デフォルトの名無しさん
2021/04/20(火) 01:00:58.56ID:P7hWVPU6 そんな超メジャー言語と比較されるようになったのか
191デフォルトの名無しさん
2021/04/20(火) 01:04:41.62ID:h4Yrn7zO >>190
逆にそんなマイナーな言語なのに書籍が出たりtwitterでRustとWasmが
対になって出たりしてたのか。
Rustを試してる人は書籍や雑誌記事を書いて食っていくかか、難しくて新しい言語
を知ることで自分の社会的評価(?)を上げようとしているのか。
逆にそんなマイナーな言語なのに書籍が出たりtwitterでRustとWasmが
対になって出たりしてたのか。
Rustを試してる人は書籍や雑誌記事を書いて食っていくかか、難しくて新しい言語
を知ることで自分の社会的評価(?)を上げようとしているのか。
192デフォルトの名無しさん
2021/04/20(火) 01:11:58.24ID:P7hWVPU6193デフォルトの名無しさん
2021/04/20(火) 02:00:40.62ID:1YS4Hj5E >>161
雑に書いたコードだって自分で言ってんだろボケが
雑に書いたコードだって自分で言ってんだろボケが
194デフォルトの名無しさん
2021/04/20(火) 08:34:25.33ID:A+mNu4wy195デフォルトの名無しさん
2021/04/20(火) 10:41:16.90ID:MbK31k7w なんか無駄なところに手を出しちゃったみたいになってる若い人が発狂してんのかね。
別にrustで学んだことは無駄にはならんよ。
現場でrust強要するのはクソだが。
別にrustで学んだことは無駄にはならんよ。
現場でrust強要するのはクソだが。
196デフォルトの名無しさん
2021/04/20(火) 11:46:33.55ID:UmXg6L/G 5chに若い人なんかいないよ
197デフォルトの名無しさん
2021/04/20(火) 19:43:34.07ID:jXnHABO7 なるほどそれで皆C++の話ばかりするのか
198デフォルトの名無しさん
2021/04/20(火) 21:08:17.70ID:i+94ZV2W C++もそれだけ枯れたか
199デフォルトの名無しさん
2021/04/21(水) 11:52:12.19ID:/JxRHm/B C++ニワカのLinusはpanicは認めないと言う話をしてるのにアロケーターだけの問題だ
「それだけでしょ、分かってるやつ居なすぎ」とまとめる
範囲外のインデックスアクセスでもpanicするし、Debugなら整数のオーバーフローでも
panicする(なぜかReleaseだとpanicしない)とんでもないアホの勘違いはJavaを持って
きて検査例外と非検査例外の話をし出す。せっかくResult/OptionがあるのにRustの文化と
なっているpanicを通常は捕捉しないと言うものをKernelに持ち込むなと言う話。
範囲外アクセスで即座に既存のC/Kernelならレジスタを保存してダンプするような
Segment fault例外トラップなどが働くのに、panicでスタック巻き戻し実行が起こるのは
絶対的に受け入れられない言うとる
Cの悪名高きsetjmpや、C++のRTL/動的例外テーブルの議論を見てるようだ
検査例外と非検査例外の話をし出すアホはもう来るな
「それだけでしょ、分かってるやつ居なすぎ」とまとめる
範囲外のインデックスアクセスでもpanicするし、Debugなら整数のオーバーフローでも
panicする(なぜかReleaseだとpanicしない)とんでもないアホの勘違いはJavaを持って
きて検査例外と非検査例外の話をし出す。せっかくResult/OptionがあるのにRustの文化と
なっているpanicを通常は捕捉しないと言うものをKernelに持ち込むなと言う話。
範囲外アクセスで即座に既存のC/Kernelならレジスタを保存してダンプするような
Segment fault例外トラップなどが働くのに、panicでスタック巻き戻し実行が起こるのは
絶対的に受け入れられない言うとる
Cの悪名高きsetjmpや、C++のRTL/動的例外テーブルの議論を見てるようだ
検査例外と非検査例外の話をし出すアホはもう来るな
200デフォルトの名無しさん
2021/04/21(水) 12:24:14.02ID:dj6DJThv ++うんこ華麗にスルーして、やっぱリーナス見る目有るわ神だろ
201デフォルトの名無しさん
2021/04/21(水) 12:54:12.00ID:KSNXGwT5 別にそこまで褒めることでもないんだけどね。。
ttps://lkml.org/
の他の議論に比べて明らかに議論のレベルが低いわけで。。
ttps://lkml.org/
の他の議論に比べて明らかに議論のレベルが低いわけで。。
202デフォルトの名無しさん
2021/04/21(水) 13:38:37.86ID:T0Zi2n6U >>199
なんか何言ってるのか分からない部分が有るな。
なんか何言ってるのか分からない部分が有るな。
203デフォルトの名無しさん
2021/04/21(水) 17:38:16.65ID:l2lL4TPp js-sys見てたらJavaScript側の型の継承関係をDerefで表現しててびびった
こういうの普通なん?
こういうの普通なん?
204デフォルトの名無しさん
2021/04/21(水) 17:58:04.79ID:tLndpRqR205デフォルトの名無しさん
2021/04/21(水) 18:42:16.83ID:KSNXGwT5 >>204
問題はそういう言語の問題まで行かず、カーネルが備えるべきところってな議論で止まってるって部分だけどね。
歴史という意味ではそもそもカーネルに対する歴史観が不足してる連中しかrustにはいないということになる。
問題はそういう言語の問題まで行かず、カーネルが備えるべきところってな議論で止まってるって部分だけどね。
歴史という意味ではそもそもカーネルに対する歴史観が不足してる連中しかrustにはいないということになる。
206デフォルトの名無しさん
2021/04/21(水) 22:06:45.67ID:2oKQsBoE プロセスがスローし、誰も補足しなかった例外を
最終的に捕捉してそのプロセスを終了させるのはOS(ことによったらカーネル)の仕事である
一方、カーネルが仮に例外をスローしてしまったら誰が最終的な捕捉の任を負うのか
について今今のOS論には目下定説が無い
Linux(リーナス)は「カーネルは何があっても例外をスローすんなハゲ、」という
古典的な立場
のやつ、
最終的に捕捉してそのプロセスを終了させるのはOS(ことによったらカーネル)の仕事である
一方、カーネルが仮に例外をスローしてしまったら誰が最終的な捕捉の任を負うのか
について今今のOS論には目下定説が無い
Linux(リーナス)は「カーネルは何があっても例外をスローすんなハゲ、」という
古典的な立場
のやつ、
207デフォルトの名無しさん
2021/04/21(水) 23:10:54.58ID:/dktUqXg 機械語に例外なんてねーよ
いい加減なこと言ってんじゃねーや
いい加減なこと言ってんじゃねーや
208デフォルトの名無しさん
2021/04/21(水) 23:43:21.15ID:NQ0xHQya >>206 CPUの例外と言語上の例外との区別が付いてないみたいね。
209デフォルトの名無しさん
2021/04/22(木) 00:18:18.68ID:41g4gqqa >>203
javascriptでメソッドとか探すときにプロトタイプを遡っていく動きがあるけど
それをRustのドット演算子(.)がメソッド使える型になるまで自動で参照解決する仕様で
模倣したんだと思う
演算子の特殊な拡張は正規表現とか構文解析のライブラリでたまに見かけるけど
どちらかと言えばトリッキーな手法
javascriptでメソッドとか探すときにプロトタイプを遡っていく動きがあるけど
それをRustのドット演算子(.)がメソッド使える型になるまで自動で参照解決する仕様で
模倣したんだと思う
演算子の特殊な拡張は正規表現とか構文解析のライブラリでたまに見かけるけど
どちらかと言えばトリッキーな手法
210デフォルトの名無しさん
2021/04/22(木) 02:40:36.34ID:hZdbeIl+ panic上等のredox!
セキュリティホール開けるよりマシという理由だった。
>>203
アンチパターンだから通常のコードでは使うな。
トレイトメソッド呼べないからクソって所まではすでに
githubのissuesやrust internalsで合意が有る。
js-sysはffi(バインダ)だから仕方ない。
セキュリティホール開けるよりマシという理由だった。
>>203
アンチパターンだから通常のコードでは使うな。
トレイトメソッド呼べないからクソって所まではすでに
githubのissuesやrust internalsで合意が有る。
js-sysはffi(バインダ)だから仕方ない。
211はちみつ餃子 ◆8X2XSCHEME
2021/04/22(木) 02:53:02.19ID:3zTCC3Br >>203
ガイドライン的には Deref はスマートポインタだけにしとけってことになってる。
https://rust-lang.github.io/api-guidelines/predictability.html#only-smart-pointers-implement-deref-and-derefmut-c-deref
ガイドライン的には Deref はスマートポインタだけにしとけってことになってる。
https://rust-lang.github.io/api-guidelines/predictability.html#only-smart-pointers-implement-deref-and-derefmut-c-deref
212デフォルトの名無しさん
2021/04/22(木) 05:58:54.39ID:WQGVMWvQ 例外の最終的な捕捉をOSの仕事、と書いたのは語弊があったスマンカッタ、
正確に言えば言語のランタイムが最終的に捕捉してプロセスを自発的に終了する
(スタックのアンワインドは言語依存性が強いのでそうなっている
しかしプロセスが自発的にexit()したら誰がそれを処理するのかというとOSやんけ;;;
カーネルの中で例外を生じられたら誰が終了を担保するのかについて
OS論的に定説が無いのは真
>>208
いじょ
正確に言えば言語のランタイムが最終的に捕捉してプロセスを自発的に終了する
(スタックのアンワインドは言語依存性が強いのでそうなっている
しかしプロセスが自発的にexit()したら誰がそれを処理するのかというとOSやんけ;;;
カーネルの中で例外を生じられたら誰が終了を担保するのかについて
OS論的に定説が無いのは真
>>208
いじょ
213デフォルトの名無しさん
2021/04/22(木) 06:34:32.34ID:WQGVMWvQ で、別の観点の話をする、
OSがpanic上等というのはそれはそれでも良いが、
とにかくスタックのアンワインド処理は言語依存性が強いので
例外が通過する関数(ゼロコストの奴も含む)の巻き戻しのためには
関数のアドレスとスタックのアンワインド方法の対応表をランタイムが把握せねばならない
というわけでカーネル内の例外を認めると、その例外を最終的に捕捉する奴より
上の関数を全部同一言語・同一コンパイラで書かねばならないという縛りが生じる
現実にはそれで問題など生じないかしらんが、とにかくレイヤー分けに縛りが生じる
Redoxの一部をC++(等)で書くことは事実上不可能に、
OSがpanic上等というのはそれはそれでも良いが、
とにかくスタックのアンワインド処理は言語依存性が強いので
例外が通過する関数(ゼロコストの奴も含む)の巻き戻しのためには
関数のアドレスとスタックのアンワインド方法の対応表をランタイムが把握せねばならない
というわけでカーネル内の例外を認めると、その例外を最終的に捕捉する奴より
上の関数を全部同一言語・同一コンパイラで書かねばならないという縛りが生じる
現実にはそれで問題など生じないかしらんが、とにかくレイヤー分けに縛りが生じる
Redoxの一部をC++(等)で書くことは事実上不可能に、
214デフォルトの名無しさん
2021/04/22(木) 13:01:11.46ID:hZdbeIl+215デフォルトの名無しさん
2021/04/22(木) 13:21:02.53ID:EDkBlaoV Linux界隈といえばちょうど「マージしたパッチが研究目的にわざと脆弱性を含んだものだったことが発覚して激おこで送ってきた奴らの大学出禁にする」みたいな面白いことが起こってる模様
216デフォルトの名無しさん
2021/04/22(木) 13:49:41.54ID:I9diyMZ1 どうせお前らはOS書かないんだからどっちでもいいじゃん
217デフォルトの名無しさん
2021/04/22(木) 15:39:04.46ID:VwSZJGdV linuxの騒動の話はさすがにスレチ
218デフォルトの名無しさん
2021/04/22(木) 21:04:10.86ID:ndVhN6HU Cコンパイラゼミ消失問題を思い出した
https://twitter.com/rui314/status/1384422532363657221
https://twitter.com/5chan_nel (5ch newer account)
https://twitter.com/rui314/status/1384422532363657221
https://twitter.com/5chan_nel (5ch newer account)
219デフォルトの名無しさん
2021/04/22(木) 23:08:37.40ID:y/lG5X/l 研究目的だろうがそうでなかろうがわざと脆弱性を含むパッチを簡単にマージできている、という状況が問題なんであって
腹たつから大学出禁にしたった、とやったところで根本的な問題は何も解決しないんだけどlinuxのメンテナンスしてる連中とか
linusを筆頭にとか老害頭ばっかりだから自分がスッとすれはそれでいいんだろうな
腹たつから大学出禁にしたった、とやったところで根本的な問題は何も解決しないんだけどlinuxのメンテナンスしてる連中とか
linusを筆頭にとか老害頭ばっかりだから自分がスッとすれはそれでいいんだろうな
220デフォルトの名無しさん
2021/04/22(木) 23:21:38.67ID:5b2Tg2Qr 1) 善意でやってくれてる連中にケチつけんな
2) じゃあお前が根本的な解決とやらをやれ
3) もしくはその根本的な解決方法を彼らに教えてやれ
2) じゃあお前が根本的な解決とやらをやれ
3) もしくはその根本的な解決方法を彼らに教えてやれ
221デフォルトの名無しさん
2021/04/22(木) 23:33:32.83ID:Bg0clzlT しーぷらぷらあきらめてどろっぷあうとした
ちんちんぶらぶらまるはだかなひとたちが
らすとすぱぁとをきめるスレ
ちんちんぶらぶらまるはだかなひとたちが
らすとすぱぁとをきめるスレ
222デフォルトの名無しさん
2021/04/22(木) 23:52:38.76ID:KHhdvM96 rust厨八つ当たりw
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- テレビ朝日 本社から男性が転落し死亡。関連会社社員か 当たった通行人が左肩軽傷 [阿弥陀ヶ峰★]
- テレビ朝日本社から20~30代の関連会社社員とみられる男性が転落し死亡 六本木けやき坂通りの通行人にはけが人なし [少考さん★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★3 [少考さん★]
- 日本、G7への中国招待を懸念 議長国フランスに慎重な対応要請 [どどん★]
- 【サッカー】日本代表、FIFAランキング“4位”の強豪イングランドとの対戦が正式決定! 来年3月に聖地ウェンブリーで激突へ [久太郎★]
- 千晴におちんちん舐めてもらいたい♥
- 姉は貧乳で妹は巨乳ってパターンよくあるよな
- 【悲報】ゆうパック配達員、配達中に人妻に抱きつき無理矢理キス「好意があると思ってた」 [566475398]
- ひまだねー
- 【悲報】ジャップ、日中戦争に賛成が5割弱...軍歌の音が聞こえる... [856698234]
- もしかして、おまえらって俺の事をナメてる?
