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://mevius.5ch.net/test/read.cgi/tech/1507970294/
探検
Rust Part5
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/02/11(日) 20:07:24.54ID:ri7dLd1B304デフォルトの名無しさん
2018/04/01(日) 21:55:16.18ID:9alzQdGn305デフォルトの名無しさん
2018/04/02(月) 11:44:35.64ID:z3JOGYz+ 生ポインタ使えることがC++の唯一のメリットなのに
それを非推奨にするなら別の言語使ったほうがマシだろ
それを非推奨にするなら別の言語使ったほうがマシだろ
306デフォルトの名無しさん
2018/04/03(火) 12:33:46.66ID:GZlQK3q7 RustがC++に実用面で勝ってることなんかある?
307デフォルトの名無しさん
2018/04/03(火) 13:06:14.98ID:cmHjEB2c 勝っているかどうかは知らんが
cargo/crates.io相当のものがないから
新規アプリをC++で書く気はしなくなってしまった。
もしかして最近は便利になってたりするんだろうか。
cargo/crates.io相当のものがないから
新規アプリをC++で書く気はしなくなってしまった。
もしかして最近は便利になってたりするんだろうか。
308デフォルトの名無しさん
2018/04/03(火) 17:54:07.91ID:lesCWZwY 全称命題にするからすぐ反論される
309デフォルトの名無しさん
2018/04/03(火) 21:15:38.01ID:zqNShNDp ペチパーのわしでも書けるのが勝ってる
310デフォルトの名無しさん
2018/04/03(火) 21:18:30.15ID:BzNmSsTz しかしインスタンスを変に共有しなけりゃ解放タイミングを
いちいち気にしなくていいって発想は面白い。
いちいち気にしなくていいって発想は面白い。
311デフォルトの名無しさん
2018/04/03(火) 23:40:54.16ID:K5huRztI いや、それ当たり前のことだから。
312デフォルトの名無しさん
2018/04/04(水) 00:15:13.34ID:e/ecM7t7313デフォルトの名無しさん
2018/04/07(土) 01:03:26.54ID:T+RwBbo7 参照カウントガベージコレクションにもスマートポインタにも興味ないrust信者すごいね
314デフォルトの名無しさん
2018/04/07(土) 06:53:26.51ID:k/xupSTU GCに興味ないのはともかく
BoxとかRcとかモロにスマートポインタだから興味ないとか以前の問題なんだが?
BoxとかRcとかモロにスマートポインタだから興味ないとか以前の問題なんだが?
315デフォルトの名無しさん
2018/04/07(土) 07:02:17.22ID:sb7KGbUH というかなんで今になって参照カウンタGCなんて超素朴なGC実装を引き合いに出すのかが分からん
Goですらそんなもん使ってねえぞ
Goですらそんなもん使ってねえぞ
316デフォルトの名無しさん
2018/04/07(土) 07:10:17.71ID:sb7KGbUH ……まさかとは思うがC++のshared_ptrのことを指して参照カウントGCと称してないよな?
RustではRcとかArcがそれに該当するから、この文脈でも完全に的はずれになるが
RustではRcとかArcがそれに該当するから、この文脈でも完全に的はずれになるが
317デフォルトの名無しさん
2018/04/10(火) 11:37:36.43ID:pRwunYlM318デフォルトの名無しさん
2018/04/12(木) 01:27:42.33ID:JdbozTc/ 久しぶりに見に来たらアンチが帰ってきてるじゃん。
せっかくだから、おれも反論レスを書き込むことにする。
せっかくだから、おれも反論レスを書き込むことにする。
319デフォルトの名無しさん
2018/04/12(木) 01:28:00.22ID:JdbozTc/320デフォルトの名無しさん
2018/04/12(木) 01:28:37.08ID:JdbozTc/ >>299
unsafeなんてC FFIしようとか考えない限りあまり使うことないよ
tokio-coreとかhyperとかhtml5everとかのソースコード見てきなよ
unsafe使ってる箇所なんて10箇所あるかないかってところだから。
コード全域に気を配らなきゃならないのか、たった10箇所程度に気を付けてれば良いのか、
どちらが楽(安全)なのかは火を見るよりも明らかだよね
unsafeなんてC FFIしようとか考えない限りあまり使うことないよ
tokio-coreとかhyperとかhtml5everとかのソースコード見てきなよ
unsafe使ってる箇所なんて10箇所あるかないかってところだから。
コード全域に気を配らなきゃならないのか、たった10箇所程度に気を付けてれば良いのか、
どちらが楽(安全)なのかは火を見るよりも明らかだよね
321デフォルトの名無しさん
2018/04/12(木) 01:30:08.73ID:JdbozTc/ >>303
これに関しては自分がC FFIのコードを滅多に書かないから「そうだったっけ?」くらいにしか考えなかったけどよく考えたら全然違うよね。
まず、値渡しなら引数・戻り値ともに何の問題もない。そのまま渡せばいい。
ポインタ渡し(Box<T>)だった場合はCの関数の引数が所有権か借用のどちらを欲してるのかを確認して、
所有権を欲しがってるならBox::into_raw(x)で所有権を渡せばいいし、
借用が必要ならx.as_ref() as *const _ もしくはx.as_mut() as *mut _で渡せばいい。
戻り値の方ではC側から所有権が渡されてるはずだからBox::from_raw(px)でBox<T>に戻せばOK。
文字列(String)の場合はCStringに変換してから後はBox<T>と同様にinto_raw, from_raw使えばいいだけ。
Vec<T>とかを渡そうとする場合はx.as_ptr()またはx.as_mut_ptr()と場合によってはmem::forget(x)が必要になるんじゃないかな?
受け取る場合はVec::from_raw_parts(px, len, cap)を使えばいいはず。(前述のとおりC FFIはあまり詳しくはないので間違ってたら指摘して下さい)
unsafeの中に何を書けば良いのかはC側のどんな関数を呼ぶのか次第で変わってくるけど、少なくともDropトレイトに関しては全く必要ない。
Box<T>やVec<T>等にあらかじめ実装されてるDropトレイトに任せればいいだけ。むしろ君はDropトレイト使って一体何する気だったのか…?
これに関しては自分がC FFIのコードを滅多に書かないから「そうだったっけ?」くらいにしか考えなかったけどよく考えたら全然違うよね。
まず、値渡しなら引数・戻り値ともに何の問題もない。そのまま渡せばいい。
ポインタ渡し(Box<T>)だった場合はCの関数の引数が所有権か借用のどちらを欲してるのかを確認して、
所有権を欲しがってるならBox::into_raw(x)で所有権を渡せばいいし、
借用が必要ならx.as_ref() as *const _ もしくはx.as_mut() as *mut _で渡せばいい。
戻り値の方ではC側から所有権が渡されてるはずだからBox::from_raw(px)でBox<T>に戻せばOK。
文字列(String)の場合はCStringに変換してから後はBox<T>と同様にinto_raw, from_raw使えばいいだけ。
Vec<T>とかを渡そうとする場合はx.as_ptr()またはx.as_mut_ptr()と場合によってはmem::forget(x)が必要になるんじゃないかな?
受け取る場合はVec::from_raw_parts(px, len, cap)を使えばいいはず。(前述のとおりC FFIはあまり詳しくはないので間違ってたら指摘して下さい)
unsafeの中に何を書けば良いのかはC側のどんな関数を呼ぶのか次第で変わってくるけど、少なくともDropトレイトに関しては全く必要ない。
Box<T>やVec<T>等にあらかじめ実装されてるDropトレイトに任せればいいだけ。むしろ君はDropトレイト使って一体何する気だったのか…?
322デフォルトの名無しさん
2018/04/12(木) 01:30:27.15ID:JdbozTc/ Rustのアンチするのは一向に構わんが、せめて嘘をつくのはやめようね。
323デフォルトの名無しさん
2018/04/12(木) 03:23:54.50ID:XYZqcSuW C FFIとやらを使うためにはRustの知識だけでなくCの知識も必要
Rustだけ学べばいいなんてことはない
Rustだけ学べばいいなんてことはない
324デフォルトの名無しさん
2018/04/12(木) 06:41:03.77ID:1NMGlh89 >>323
cの関数呼ぶんだから当然だろ
cの関数呼ぶんだから当然だろ
325デフォルトの名無しさん
2018/04/12(木) 09:05:15.80ID:IekpLPdE326デフォルトの名無しさん
2018/04/12(木) 11:33:57.87ID:6MGFsFO1 >>325
Rust側でDropしないためにDropの実装を上書きする必要があるということ?
Rust側でDropしないためにDropの実装を上書きする必要があるということ?
327デフォルトの名無しさん
2018/04/12(木) 12:23:34.05ID:IekpLPdE328デフォルトの名無しさん
2018/04/12(木) 13:14:59.37ID:JdbozTc/ >>325
>>303は「メモリリーク」って書いてあるからヒープに確保されたメモリの解放に関しては
Dropトレイトを実装する必要性なんか全く無いってことを>>321で説明してる。
>>325の言ってる「リソース」ってのはファイルとかソケットとかのことを言ってるんだよね
そっちはメモリリークとはまた別の話になるので状況によるんじゃないかな…
ただ、OSが提供してるリソース(ファイルやソケット)くらいなら、File, TcpListenerとかには
Windows用とUnix用にそれぞれinto_raw_xxx(), from_raw_xxx(), as_raw_xxx()とかが用意されてるから
それを使えば後のことはFile, TcpListenerのdrop実装に任せてしまって問題ないはず。
C側(ライブラリ)で独自に実装されてるリソース(close等の後処理が必要な実装)の場合は
close部分をRustのDropトレイトの実装として移植する必要はあるだろうね。
(もう一度言うけど、自分は普段はC FFIを使わないから詳しくはないので、間違ってたら指摘して下さい)
>>303は「メモリリーク」って書いてあるからヒープに確保されたメモリの解放に関しては
Dropトレイトを実装する必要性なんか全く無いってことを>>321で説明してる。
>>325の言ってる「リソース」ってのはファイルとかソケットとかのことを言ってるんだよね
そっちはメモリリークとはまた別の話になるので状況によるんじゃないかな…
ただ、OSが提供してるリソース(ファイルやソケット)くらいなら、File, TcpListenerとかには
Windows用とUnix用にそれぞれinto_raw_xxx(), from_raw_xxx(), as_raw_xxx()とかが用意されてるから
それを使えば後のことはFile, TcpListenerのdrop実装に任せてしまって問題ないはず。
C側(ライブラリ)で独自に実装されてるリソース(close等の後処理が必要な実装)の場合は
close部分をRustのDropトレイトの実装として移植する必要はあるだろうね。
(もう一度言うけど、自分は普段はC FFIを使わないから詳しくはないので、間違ってたら指摘して下さい)
329デフォルトの名無しさん
2018/04/12(木) 15:11:14.26ID:UiqgOhpn330デフォルトの名無しさん
2018/04/12(木) 17:39:03.84ID:JdbozTc/ >>329
ちょっと言ってる意味がわからない
Cでmallocされたものであっても所有権ごと渡されていれば解放の責任はRustにある
ていうか、Rust側で勝手に解放しちゃいけないと言ってるのに
Dropトレイトの実装でfreeしたらやっぱりRust側で勝手に解放しちゃってるじゃん
言ってること矛盾してない?
CとRustで型のメモリレイアウトが一致してればあとはBox型に任せるだけだよ
Cから渡されてくるポインタの型のメモリレイアウトが公開されていなければ
(つまりvoidポインタだったりオペーク構造体(オペークポインタ)だったなら)話は別だけど。
その場合はRustはハンドルをもらうだけでいかなる操作(メモリの解放(free)も含む)もC FFIでC側に
頼むしかない(メモリレイアウトがわからない限りはRust側ではどうあがいても何も出来ない)ので
Dropトレイト実装してdrop時にC側にメモリの解放処理も頼む必要がある
ちょっと言ってる意味がわからない
Cでmallocされたものであっても所有権ごと渡されていれば解放の責任はRustにある
ていうか、Rust側で勝手に解放しちゃいけないと言ってるのに
Dropトレイトの実装でfreeしたらやっぱりRust側で勝手に解放しちゃってるじゃん
言ってること矛盾してない?
CとRustで型のメモリレイアウトが一致してればあとはBox型に任せるだけだよ
Cから渡されてくるポインタの型のメモリレイアウトが公開されていなければ
(つまりvoidポインタだったりオペーク構造体(オペークポインタ)だったなら)話は別だけど。
その場合はRustはハンドルをもらうだけでいかなる操作(メモリの解放(free)も含む)もC FFIでC側に
頼むしかない(メモリレイアウトがわからない限りはRust側ではどうあがいても何も出来ない)ので
Dropトレイト実装してdrop時にC側にメモリの解放処理も頼む必要がある
331デフォルトの名無しさん
2018/04/12(木) 18:12:43.26ID:B4Vmqq7H FFIの場合jemallocかシステムのmallocかの違い問題になることありそう
332デフォルトの名無しさん
2018/04/12(木) 21:02:25.76ID:EBEN0Rpp >その場合はRustはハンドルをもらうだけでいかなる操作(メモリの解放(free)も含む)もC FFIでC側に
>頼むしかない(メモリレイアウトがわからない限りはRust側ではどうあがいても何も出来ない)ので
>Dropトレイト実装してdrop時にC側にメモリの解放処理も頼む必要がある
だからDropトレイトを意識的に実装せにゃならんと始めから言ってるだろうに。
このタイプは絶対仕事でモメるわ。
>頼むしかない(メモリレイアウトがわからない限りはRust側ではどうあがいても何も出来ない)ので
>Dropトレイト実装してdrop時にC側にメモリの解放処理も頼む必要がある
だからDropトレイトを意識的に実装せにゃならんと始めから言ってるだろうに。
このタイプは絶対仕事でモメるわ。
333デフォルトの名無しさん
2018/04/12(木) 22:43:32.09ID:JdbozTc/ >>322
だったら「Rust側からはメモリレイアウトが分からないようなvoidポインタや
オペーク構造体がC側から渡された場合は」という前提条件をきちんと書け。
条件を何も書かずに「drop trait を明示的に書かなきゃならん」とだけ書かれれば
全ての場合で必要だと言っているようにしか見えない。
あと、>>321で「全く」と書いてしまったことは悪かったと思っている
>>321を書いてる時点は上記のような可能性に気づいていなかった…申し訳ない。
お前みたいに「特定の条件下でしか適用されないこと」に対して条件を書かずに結論だけ書いて
「自分はきちんと伝えた」とか思っちゃってるキチガイとの仕事とかこっちの方から願い下げだから。
だったら「Rust側からはメモリレイアウトが分からないようなvoidポインタや
オペーク構造体がC側から渡された場合は」という前提条件をきちんと書け。
条件を何も書かずに「drop trait を明示的に書かなきゃならん」とだけ書かれれば
全ての場合で必要だと言っているようにしか見えない。
あと、>>321で「全く」と書いてしまったことは悪かったと思っている
>>321を書いてる時点は上記のような可能性に気づいていなかった…申し訳ない。
お前みたいに「特定の条件下でしか適用されないこと」に対して条件を書かずに結論だけ書いて
「自分はきちんと伝えた」とか思っちゃってるキチガイとの仕事とかこっちの方から願い下げだから。
334デフォルトの名無しさん
2018/04/12(木) 22:50:55.21ID:JdbozTc/336デフォルトの名無しさん
2018/04/12(木) 23:08:05.77ID:9OO0KoJN >>330
「勝手に」の部分が曖昧だったので正確に書くと、
Rustはメモリ解放すべきタイミングは知っている
(すなわちCから受け取ったポインタのlifetimeが切れたとき)
Rustはメモリ解放の方法は知らない
(なぜならCのmallocがシステムのmallocなのかjemallocなのか別の何かなのか知るすべがないから)
なので方法について教えるためにdropを実装する。
(このdropでCのfreeを呼べば、mallocと同じメモリアロケータが保証される)
ちなみにメモリアロケータ間の互換性はないので、
例えばlibcでmallocしてjemallocでfreeすると多分SEGVする。
コード例は以下でもどうぞ。
https://stackoverflow.com/questions/31486519/how-do-i-free-a-char-allocated-via-ffi-in-rust
「勝手に」の部分が曖昧だったので正確に書くと、
Rustはメモリ解放すべきタイミングは知っている
(すなわちCから受け取ったポインタのlifetimeが切れたとき)
Rustはメモリ解放の方法は知らない
(なぜならCのmallocがシステムのmallocなのかjemallocなのか別の何かなのか知るすべがないから)
なので方法について教えるためにdropを実装する。
(このdropでCのfreeを呼べば、mallocと同じメモリアロケータが保証される)
ちなみにメモリアロケータ間の互換性はないので、
例えばlibcでmallocしてjemallocでfreeすると多分SEGVする。
コード例は以下でもどうぞ。
https://stackoverflow.com/questions/31486519/how-do-i-free-a-char-allocated-via-ffi-in-rust
337デフォルトの名無しさん
2018/04/12(木) 23:35:57.15ID:JdbozTc/ >>336
マジか…mallocとjemallocは混在できないのか…
そうなると、C側でmallocされてれば必ずC側にfreeしてもらうしかないということか…
じゃあ今まで俺が書いた方法じゃダメなケースもあるじゃん…すまん。
自分の無知を晒す羽目にはなったが、むしろ今知れてよかったわ。
でも、そうなると新たな疑問が…
マジか…mallocとjemallocは混在できないのか…
そうなると、C側でmallocされてれば必ずC側にfreeしてもらうしかないということか…
じゃあ今まで俺が書いた方法じゃダメなケースもあるじゃん…すまん。
自分の無知を晒す羽目にはなったが、むしろ今知れてよかったわ。
でも、そうなると新たな疑問が…
338デフォルトの名無しさん
2018/04/13(金) 00:47:00.07ID:AYGoZS+y jemallocじゃなくてシステムのアロケーター使うオプションだかfeatureだか使えば良いかな
339337
2018/04/13(金) 01:19:50.99ID:rxyiIXLh >>336
間違いの指摘と情報提供のお礼言うの忘れてた。Thanks!
あと、これってRustでのC FFI に限った話じゃないよね?
C同士でさえもアロケータに何を使ってるか次第で同じ問題が発生する。
Cは時々使ってたのに(しかも仕事で)これを知らなかったのはヤバいな…
恐らく今まではたまたま同じアロケータを使ってたから問題が起きてなかっただけか…
戻り値で文字列(char *)が来た時とかこっちで勝手にfreeしてたぞ…(^_^;)
まあ、どのアロケータ使ってるかなんて誰も気にも留めてなかったし大丈夫だろうけど、
今後は気を付けないとな…
間違いの指摘と情報提供のお礼言うの忘れてた。Thanks!
あと、これってRustでのC FFI に限った話じゃないよね?
C同士でさえもアロケータに何を使ってるか次第で同じ問題が発生する。
Cは時々使ってたのに(しかも仕事で)これを知らなかったのはヤバいな…
恐らく今まではたまたま同じアロケータを使ってたから問題が起きてなかっただけか…
戻り値で文字列(char *)が来た時とかこっちで勝手にfreeしてたぞ…(^_^;)
まあ、どのアロケータ使ってるかなんて誰も気にも留めてなかったし大丈夫だろうけど、
今後は気を付けないとな…
340デフォルトの名無しさん
2018/04/13(金) 01:26:39.63ID:V+3RqgGh すべての有用なライブラリがRust製にならない限り
Rustだけを学べばよいという状況は訪れずCやC++の習得も必須
Rustだけを学べばよいという状況は訪れずCやC++の習得も必須
341デフォルトの名無しさん
2018/04/13(金) 02:09:57.24ID:zBD4nIN6 >>339
どういたしまして。
C同士の場合は普通glibcへの動的リンクだし
LD_PRELOADとかでjemallocなんかに差し替えても
プログラム全体で差し替わるから特に問題にはならないかと。
もしメモリアロケータを静的リンクしたライブラリとかを使っていればまずいはず。
ただそういう場合はリソースハンドルっぽいAPIになりがちなので
そのままfreeしようとは思わないかもしれない。
どういたしまして。
C同士の場合は普通glibcへの動的リンクだし
LD_PRELOADとかでjemallocなんかに差し替えても
プログラム全体で差し替わるから特に問題にはならないかと。
もしメモリアロケータを静的リンクしたライブラリとかを使っていればまずいはず。
ただそういう場合はリソースハンドルっぽいAPIになりがちなので
そのままfreeしようとは思わないかもしれない。
342デフォルトの名無しさん
2018/04/13(金) 02:17:49.88ID:I2PL3qG3 >>340
そりゃそうだろ、なにいってんだ
そりゃそうだろ、なにいってんだ
343デフォルトの名無しさん
2018/04/13(金) 02:33:17.17ID:nqEsOLBj やくに立たねー結局cか。rustって趣味だな。
344デフォルトの名無しさん
2018/04/13(金) 04:00:10.77ID:V+3RqgGh C/C++だけ覚える
or
RustとC/C++を覚える
学習コスト高すぎRust
or
RustとC/C++を覚える
学習コスト高すぎRust
345デフォルトの名無しさん
2018/04/13(金) 10:22:17.48ID:w0WUHq34 >>343
趣味でモジラの栄養やるとかどんなドマゾだよ
趣味でモジラの栄養やるとかどんなドマゾだよ
346デフォルトの名無しさん
2018/04/13(金) 10:26:05.50ID:w0WUHq34 今の会話見るだけでもRustがいかに欠陥言語かわかるのに
それでもRust使うって言うんだからなあ
全部C/C++で書く方が遥かに効率いいしバグも出んわ
それでもRust使うって言うんだからなあ
全部C/C++で書く方が遥かに効率いいしバグも出んわ
347デフォルトの名無しさん
2018/04/13(金) 11:29:35.51ID:EHHg9a+/ C覚えるの必須当たり前ってんなら構文もっとC系に寄せれば良かったのに。
348デフォルトの名無しさん
2018/04/13(金) 12:06:18.44ID:ybbP8EF+ 今までの流れからその結論は極端すぎるだろ
もう少し工夫しろ
もう少し工夫しろ
349デフォルトの名無しさん
2018/04/13(金) 12:27:54.41ID:zH6rmEat いつのまにか、FFI使うことが前提になってる流れって、rustをdisりたい勢の必死さがうかがえて、ある意味、面白い。
350デフォルトの名無しさん
2018/04/13(金) 12:52:00.31ID:Lj3R2dXy351デフォルトの名無しさん
2018/04/13(金) 13:00:11.55ID:w0WUHq34 Cの資産に寄生しないとろくなもん作れないのに
そのCとの連携部分が腐ってるってことじゃん
使いもんにならねえって評価は妥当だと思うが?
それともPure Rustでまともなもん作れるつもりか?
そのCとの連携部分が腐ってるってことじゃん
使いもんにならねえって評価は妥当だと思うが?
それともPure Rustでまともなもん作れるつもりか?
352デフォルトの名無しさん
2018/04/13(金) 17:38:51.06ID:l4JsQkL9 まずまともなもんを先に定義してくれ
353デフォルトの名無しさん
2018/04/13(金) 18:09:45.57ID:Z44eD8et バグらない
動く
実用的
上記3点の実績がある
動く
実用的
上記3点の実績がある
354デフォルトの名無しさん
2018/04/13(金) 18:37:13.42ID:rxyiIXLh 実用的・実積も曖昧だな
どの程度を実用的で実積があると呼ぶのか具体例を提示してくれ
突き詰めていくと「バグらない」も程度によりけりだしな
Excelだってバグるときゃバグるし…
どの程度を実用的で実積があると呼ぶのか具体例を提示してくれ
突き詰めていくと「バグらない」も程度によりけりだしな
Excelだってバグるときゃバグるし…
355デフォルトの名無しさん
2018/04/13(金) 18:48:56.96ID:lEd4ahw7 本スレは相変わらず過疎だしまじ終わったなこの言語
356デフォルトの名無しさん
2018/04/13(金) 19:00:16.55ID:vyE43Z1D 話に入れないからって「………結局駄目!」ってダサすぎない?
357デフォルトの名無しさん
2018/04/13(金) 19:21:19.79ID:EHHg9a+/ jsのファミコンエミュレータをrustで実装し直したらパフォーマンス負けたらしいwww
358デフォルトの名無しさん
2018/04/13(金) 19:27:43.59ID:a8AOaj4F >>357
JSに負けるとか草しか生えんなwwwwwww
JSに負けるとか草しか生えんなwwwwwww
359デフォルトの名無しさん
2018/04/13(金) 19:31:48.55ID:a8AOaj4F >>354
Linuxくらいバグらないならいいよ
Linuxくらいバグらないならいいよ
360デフォルトの名無しさん
2018/04/13(金) 20:22:47.30ID:rxyiIXLh >>357
噂に尾ひれがつく瞬間を目の当たりにして草
多分これ↓のことだろ
http://blog.bokuweb.me/entry/2018/02/08/101522
誰かC x wasmで書き直してみろよ。きっと似たような結果になるから
>>359
ついにLinuxと同レベルじゃないと認めないとか言い始めたぞ…
噂に尾ひれがつく瞬間を目の当たりにして草
多分これ↓のことだろ
http://blog.bokuweb.me/entry/2018/02/08/101522
誰かC x wasmで書き直してみろよ。きっと似たような結果になるから
>>359
ついにLinuxと同レベルじゃないと認めないとか言い始めたぞ…
361デフォルトの名無しさん
2018/04/13(金) 20:58:47.99ID:Ek+y1xD6 >>357,358
ブラウザ JS版 Wasm版
Chrome 63 4.36ms 5.68ms
Firefox 58 5.76ms 3.98ms
Safari 11 9.98ms 4.21ms
う〜ん草しか生えんね 草草草の草ァ!だね
ブラウザ JS版 Wasm版
Chrome 63 4.36ms 5.68ms
Firefox 58 5.76ms 3.98ms
Safari 11 9.98ms 4.21ms
う〜ん草しか生えんね 草草草の草ァ!だね
362デフォルトの名無しさん
2018/04/13(金) 21:29:03.20ID:a8AOaj4F >>361
wasmじゃなくてRustと比べてから言えよ
wasmじゃなくてRustと比べてから言えよ
363デフォルトの名無しさん
2018/04/13(金) 21:40:19.55ID:Ek+y1xD6 >>362
草しか生えんわwww
草しか生えんわwww
364デフォルトの名無しさん
2018/04/13(金) 22:58:07.23ID:LXloKsM4 まあメモリの管理モデルが違う言語同士でやりとりすれば
色々苦労するのは当たり前なんだよね。
それなのに「rustは勝手に解放してくれる」とか言い張っちゃう信者が有害な訳だよ。
rustが悪いというよりか、こういう馬鹿が多いところが問題。
色々苦労するのは当たり前なんだよね。
それなのに「rustは勝手に解放してくれる」とか言い張っちゃう信者が有害な訳だよ。
rustが悪いというよりか、こういう馬鹿が多いところが問題。
365デフォルトの名無しさん
2018/04/13(金) 23:04:17.07ID:bso+BPDq Haskellは副作用が無いとか参照透過性があるって言った時に
C FFIを持ち出して反論するのと同様の不毛さを感じる
C FFIを持ち出して反論するのと同様の不毛さを感じる
366デフォルトの名無しさん
2018/04/14(土) 07:00:49.94ID:xdB8fLqn 不毛?現実によくあることなのにね。。
言語の一番下ではアセンブラが動いてるんだから、そことどう調和もしくは隠蔽させるかってのは
コンピュータ言語にとって本質でしょうが。
言語の一番下ではアセンブラが動いてるんだから、そことどう調和もしくは隠蔽させるかってのは
コンピュータ言語にとって本質でしょうが。
367デフォルトの名無しさん
2018/04/14(土) 07:18:52.94ID:S65yHOqM は?何で一番下が機械語じゃなくてアセンブラなの馬鹿なの?
368デフォルトの名無しさん
2018/04/14(土) 09:16:33.44ID:/jFvD9M/ コンピュータ言語w
369デフォルトの名無しさん
2018/04/14(土) 11:34:49.77ID:+NzeE6vg アセンブラと機械語は1:1で訳せるから…
370デフォルトの名無しさん
2018/04/14(土) 11:47:39.37ID:oZ68B8i3 アセンブリやろ
371デフォルトの名無しさん
2018/04/14(土) 13:58:04.39ID:dXnZwWyG 結局Rustはサーバ向けでもコマンドツール向けでもGUI向けでも組み込み向けでもない
って事実はほんと覆らんよ
って事実はほんと覆らんよ
372デフォルトの名無しさん
2018/04/14(土) 14:12:11.55ID:9z5cq9ls 話に入れないからって「………結局駄目!」ってダサすぎない?
373デフォルトの名無しさん
2018/04/14(土) 14:55:11.55ID:42ccGSN6 jsのファミコンエミュレータをrustで実装し直したらパフォーマンス負けたらしいwww
374デフォルトの名無しさん
2018/04/14(土) 15:21:13.70ID:TDyE7icd >>372
悔しかったら反論してみたらぁ?
悔しかったら反論してみたらぁ?
375デフォルトの名無しさん
2018/04/14(土) 15:23:55.88ID:xdB8fLqn376デフォルトの名無しさん
2018/04/14(土) 15:34:36.03ID:TDyE7icd 上の流れ素直に読んでも、
メモリ管理も全部C側で完結させるのが一番いいって結論にしかならんぞ?
Rustのいいところなんぞ皆無だ
メモリ管理も全部C側で完結させるのが一番いいって結論にしかならんぞ?
Rustのいいところなんぞ皆無だ
377デフォルトの名無しさん
2018/04/14(土) 15:44:33.95ID:TDyE7icd というかコンパイラにメモリ管理任せるのが無理だろ。FFIのためにいちいちDrop定義するとか非効率でしかない
メモリ管理はGCに任せるか完全手動にするかの二択なのに、無理矢理そこにヘンテコリンなソリューションもどき持ち込んで混乱引き起こしてるだけじゃん
メモリ管理はGCに任せるか完全手動にするかの二択なのに、無理矢理そこにヘンテコリンなソリューションもどき持ち込んで混乱引き起こしてるだけじゃん
378デフォルトの名無しさん
2018/04/14(土) 15:50:41.81ID:TDyE7icd Rustの提案するエセソリューションは機械語のレベルと相性が悪い
CやC++のほうがまだまともなアプローチしてる
CやC++のほうがまだまともなアプローチしてる
379デフォルトの名無しさん
2018/04/14(土) 15:53:50.88ID:LmbQudMt380デフォルトの名無しさん
2018/04/14(土) 15:55:07.64ID:TDyE7icd >>379
ほとんどのコンパイラで採用されてない仕様書上にしかない機能なんざ知らんよ
ほとんどのコンパイラで採用されてない仕様書上にしかない機能なんざ知らんよ
381デフォルトの名無しさん
2018/04/14(土) 15:58:27.76ID:TDyE7icd 実際混乱引き起こしてるまともじゃない方法なのは上の流れで自明だろ
382デフォルトの名無しさん
2018/04/14(土) 16:02:24.43ID:LmbQudMt >>380
よろしい。そんな君にはJavaがおすすめだ。そっちで元気にやりたまえ。
よろしい。そんな君にはJavaがおすすめだ。そっちで元気にやりたまえ。
383デフォルトの名無しさん
2018/04/14(土) 16:05:01.76ID:75zALjkM 以前も言われてたけど「ひまわり学級の子が普通の授業に出て暴れてる」って表現が実に的確で草
384デフォルトの名無しさん
2018/04/14(土) 16:07:01.72ID:TDyE7icd 間違ったものを間違った奴が流行らせようとしてるんだからそれには「違う」って言っとかないとダメだろ
話にならんと放置したらいずれ手遅れになるほど蔓延する
そうならないうちに叩いておくべきなんだよ
話にならんと放置したらいずれ手遅れになるほど蔓延する
そうならないうちに叩いておくべきなんだよ
385デフォルトの名無しさん
2018/04/14(土) 16:10:39.48ID:w273LxVR 混乱引き起こしてるのは違いないけどさ
「俺の頭の中で混乱を引き起こしてる」って正確に書こうよ
「俺の頭の中で混乱を引き起こしてる」って正確に書こうよ
386デフォルトの名無しさん
2018/04/14(土) 16:11:44.32ID:TDyE7icd >>385
上のFFI絡みの流れは俺じゃないけど?
上のFFI絡みの流れは俺じゃないけど?
387デフォルトの名無しさん
2018/04/14(土) 16:15:30.43ID:w273LxVR 完全手動でメモリ管理するのは混乱起きないからいいよね〜
388デフォルトの名無しさん
2018/04/14(土) 16:21:52.10ID:TDyE7icd389デフォルトの名無しさん
2018/04/14(土) 16:27:01.78ID:nFvlFlcl >>375
上のやり取りは俺じゃないけど?
散々間違いがあったら指摘してくれって書いてたのがデタラメを振りまいた?
間違いの指摘に礼を言って終えるところに、鳴りを潜めていたアンチがウキウキで「混乱を引き起こしたRust!!!」と喚き立てた
このスレでも何回もやってる流れじゃんクソダセー
上のやり取りは俺じゃないけど?
散々間違いがあったら指摘してくれって書いてたのがデタラメを振りまいた?
間違いの指摘に礼を言って終えるところに、鳴りを潜めていたアンチがウキウキで「混乱を引き起こしたRust!!!」と喚き立てた
このスレでも何回もやってる流れじゃんクソダセー
390デフォルトの名無しさん
2018/04/14(土) 16:38:44.62ID:TDyE7icd はいはい内ゲバですね
ほんとくだらん言語
ほんとくだらん言語
391デフォルトの名無しさん
2018/04/14(土) 16:43:14.18ID:nFvlFlcl >>390
内にいるつもりなんだお前
内にいるつもりなんだお前
392デフォルトの名無しさん
2018/04/14(土) 16:44:00.69ID:nFvlFlcl インタプリタへの丸投げ>完全手動でメモリ管理>コンパイラへの丸投げ
実行開始までの混乱しない順だなどう考えても
実行開始までの混乱しない順だなどう考えても
393デフォルトの名無しさん
2018/04/14(土) 16:47:43.87ID:TDyE7icd394デフォルトの名無しさん
2018/04/14(土) 17:00:21.56ID:LmbQudMt >>393
スマポが何かを知らないヤツがC++を語り始めたぞ…
スマポが何かを知らないヤツがC++を語り始めたぞ…
395デフォルトの名無しさん
2018/04/14(土) 17:00:54.52ID:nFvlFlcl396デフォルトの名無しさん
2018/04/14(土) 17:03:21.15ID:LmbQudMt397デフォルトの名無しさん
2018/04/14(土) 17:17:27.65ID:TDyE7icd398デフォルトの名無しさん
2018/04/14(土) 17:24:46.46ID:Syz4zWn3 解放の仕方を実装したら、後はコードのどの場所で何回確保しても自動で解放される事が分かってないっぽいね
399デフォルトの名無しさん
2018/04/14(土) 17:31:29.95ID:LmbQudMt >>398
だってRAIIもスマポも知らないんだもん。しょうがないじゃん
だってRAIIもスマポも知らないんだもん。しょうがないじゃん
400デフォルトの名無しさん
2018/04/14(土) 17:34:05.03ID:nFvlFlcl401デフォルトの名無しさん
2018/04/14(土) 17:50:25.61ID:TDyE7icd >>400
今の説明でわからんなら一生わからんよ
今の説明でわからんなら一生わからんよ
402デフォルトの名無しさん
2018/04/14(土) 17:56:25.03ID:LmbQudMt >>401
あっ! 逃げたww
あっ! 逃げたww
403デフォルトの名無しさん
2018/04/14(土) 18:04:42.44ID:nFvlFlcl Q. Rustの何がどう機械語との相性が悪く、それに対してC/C++のまともなアプローチの具体例を教えて
A. 結局中途半端にしか自動化できないから無意味で、それなら自分で管理した方が結果的に良い
Rustアンチ君との最後のやり取りがこれなのか…?悲しい
A. 結局中途半端にしか自動化できないから無意味で、それなら自分で管理した方が結果的に良い
Rustアンチ君との最後のやり取りがこれなのか…?悲しい
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 自民・麻生太郎 副総裁 石破政権の1年は「どよーん」 高市政権の発足で「何となく明るくなった」「世の中のことが決まり動いている」 [Hitzeschleier★]
- 東京都「都民の税金1.5兆円が国に奪われている」「全国に分配されている」に地方民ブチギレ [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ [蚤の市★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 【27歳会社員】「自慰行為に使うために」コインランドリーの乾燥機から24歳女性の下着など計11点(時価8万2080円相当)盗んだ疑い [nita★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★3
- 麻生太郎が石破政権の1年を酷評「どよーんとして何も動かない感じだったな。それに引き換え高市政権は物事が動いている」 [597533159]
- 【速報】室井佑月、米山隆一との離婚を決意wwwwwwwwwwwwwwwwwwww [802034645]
- 箱根そばのうまさは異常
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★4
- 官僚「台湾有事についての質問か、『政府として逐一答えない』と…(カタカタカタ)」高市「私1人で答弁できるわよ!」 [972432215]
