Rust Part5

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/02/11(日) 20:07:24.54ID:ri7dLd1B
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/
334デフォルトの名無しさん
垢版 |
2018/04/12(木) 22:50:55.21ID:JdbozTc/
>>331
そこは自分も同じことを思った。
mallocとjemallocの実装の中身とか見たことないけど、混在してても問題ないのかな?
335デフォルトの名無しさん
垢版 |
2018/04/12(木) 22:54:07.42ID:JdbozTc/
>>333 訂正
>>322>>332
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
337デフォルトの名無しさん
垢版 |
2018/04/12(木) 23:35:57.15ID:JdbozTc/
>>336
マジか…mallocとjemallocは混在できないのか…
そうなると、C側でmallocされてれば必ずC側にfreeしてもらうしかないということか…
じゃあ今まで俺が書いた方法じゃダメなケースもあるじゃん…すまん。
自分の無知を晒す羽目にはなったが、むしろ今知れてよかったわ。
でも、そうなると新たな疑問が…
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してたぞ…(^_^;)
まあ、どのアロケータ使ってるかなんて誰も気にも留めてなかったし大丈夫だろうけど、
今後は気を付けないとな…
340デフォルトの名無しさん
垢版 |
2018/04/13(金) 01:26:39.63ID:V+3RqgGh
すべての有用なライブラリがRust製にならない限り
Rustだけを学べばよいという状況は訪れずCやC++の習得も必須
2018/04/13(金) 02:09:57.24ID:zBD4nIN6
>>339
どういたしまして。

C同士の場合は普通glibcへの動的リンクだし
LD_PRELOADとかでjemallocなんかに差し替えても
プログラム全体で差し替わるから特に問題にはならないかと。
もしメモリアロケータを静的リンクしたライブラリとかを使っていればまずいはず。
ただそういう場合はリソースハンドルっぽいAPIになりがちなので
そのままfreeしようとは思わないかもしれない。
2018/04/13(金) 02:17:49.88ID:I2PL3qG3
>>340
そりゃそうだろ、なにいってんだ
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
2018/04/13(金) 10:22:17.48ID:w0WUHq34
>>343
趣味でモジラの栄養やるとかどんなドマゾだよ
2018/04/13(金) 10:26:05.50ID:w0WUHq34
今の会話見るだけでもRustがいかに欠陥言語かわかるのに
それでもRust使うって言うんだからなあ
全部C/C++で書く方が遥かに効率いいしバグも出んわ
2018/04/13(金) 11:29:35.51ID:EHHg9a+/
C覚えるの必須当たり前ってんなら構文もっとC系に寄せれば良かったのに。
2018/04/13(金) 12:06:18.44ID:ybbP8EF+
今までの流れからその結論は極端すぎるだろ
もう少し工夫しろ
2018/04/13(金) 12:27:54.41ID:zH6rmEat
いつのまにか、FFI使うことが前提になってる流れって、rustをdisりたい勢の必死さがうかがえて、ある意味、面白い。
2018/04/13(金) 12:52:00.31ID:Lj3R2dXy
>>339
CのfreeはNULLなら何もしないと保証されてるけど
解放済みアドレスへのfreeはセグフォ発生するぞ
2018/04/13(金) 13:00:11.55ID:w0WUHq34
Cの資産に寄生しないとろくなもん作れないのに
そのCとの連携部分が腐ってるってことじゃん

使いもんにならねえって評価は妥当だと思うが?
それともPure Rustでまともなもん作れるつもりか?
2018/04/13(金) 17:38:51.06ID:l4JsQkL9
まずまともなもんを先に定義してくれ
2018/04/13(金) 18:09:45.57ID:Z44eD8et
バグらない
動く
実用的
上記3点の実績がある
2018/04/13(金) 18:37:13.42ID:rxyiIXLh
実用的・実積も曖昧だな
どの程度を実用的で実積があると呼ぶのか具体例を提示してくれ

突き詰めていくと「バグらない」も程度によりけりだしな
Excelだってバグるときゃバグるし…
2018/04/13(金) 18:48:56.96ID:lEd4ahw7
本スレは相変わらず過疎だしまじ終わったなこの言語
2018/04/13(金) 19:00:16.55ID:vyE43Z1D
話に入れないからって「………結局駄目!」ってダサすぎない?
2018/04/13(金) 19:21:19.79ID:EHHg9a+/
jsのファミコンエミュレータをrustで実装し直したらパフォーマンス負けたらしいwww
2018/04/13(金) 19:27:43.59ID:a8AOaj4F
>>357
JSに負けるとか草しか生えんなwwwwwww
2018/04/13(金) 19:31:48.55ID:a8AOaj4F
>>354
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と同レベルじゃないと認めないとか言い始めたぞ…
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

う〜ん草しか生えんね 草草草の草ァ!だね
2018/04/13(金) 21:29:03.20ID:a8AOaj4F
>>361
wasmじゃなくてRustと比べてから言えよ
2018/04/13(金) 21:40:19.55ID:Ek+y1xD6
>>362
草しか生えんわwww
2018/04/13(金) 22:58:07.23ID:LXloKsM4
まあメモリの管理モデルが違う言語同士でやりとりすれば
色々苦労するのは当たり前なんだよね。
それなのに「rustは勝手に解放してくれる」とか言い張っちゃう信者が有害な訳だよ。
rustが悪いというよりか、こういう馬鹿が多いところが問題。
2018/04/13(金) 23:04:17.07ID:bso+BPDq
Haskellは副作用が無いとか参照透過性があるって言った時に
C FFIを持ち出して反論するのと同様の不毛さを感じる
2018/04/14(土) 07:00:49.94ID:xdB8fLqn
不毛?現実によくあることなのにね。。
言語の一番下ではアセンブラが動いてるんだから、そことどう調和もしくは隠蔽させるかってのは
コンピュータ言語にとって本質でしょうが。
2018/04/14(土) 07:18:52.94ID:S65yHOqM
は?何で一番下が機械語じゃなくてアセンブラなの馬鹿なの?
2018/04/14(土) 09:16:33.44ID:/jFvD9M/
コンピュータ言語w
2018/04/14(土) 11:34:49.77ID:+NzeE6vg
アセンブラと機械語は1:1で訳せるから…
2018/04/14(土) 11:47:39.37ID:oZ68B8i3
アセンブリやろ
2018/04/14(土) 13:58:04.39ID:dXnZwWyG
結局Rustはサーバ向けでもコマンドツール向けでもGUI向けでも組み込み向けでもない

って事実はほんと覆らんよ
2018/04/14(土) 14:12:11.55ID:9z5cq9ls
話に入れないからって「………結局駄目!」ってダサすぎない?
2018/04/14(土) 14:55:11.55ID:42ccGSN6
jsのファミコンエミュレータをrustで実装し直したらパフォーマンス負けたらしいwww
2018/04/14(土) 15:21:13.70ID:TDyE7icd
>>372
悔しかったら反論してみたらぁ?
2018/04/14(土) 15:23:55.88ID:xdB8fLqn
>>372
メモリ管理みたいな重要なことについてデララメ振りまいて、
「理解しない奴がrust批判してる」とか言い出してる方が恥ずいわ。
2018/04/14(土) 15:34:36.03ID:TDyE7icd
上の流れ素直に読んでも、
メモリ管理も全部C側で完結させるのが一番いいって結論にしかならんぞ?

Rustのいいところなんぞ皆無だ
2018/04/14(土) 15:44:33.95ID:TDyE7icd
というかコンパイラにメモリ管理任せるのが無理だろ。FFIのためにいちいちDrop定義するとか非効率でしかない

メモリ管理はGCに任せるか完全手動にするかの二択なのに、無理矢理そこにヘンテコリンなソリューションもどき持ち込んで混乱引き起こしてるだけじゃん
2018/04/14(土) 15:50:41.81ID:TDyE7icd
Rustの提案するエセソリューションは機械語のレベルと相性が悪い
CやC++のほうがまだまともなアプローチしてる
2018/04/14(土) 15:53:50.88ID:LmbQudMt
>>377
うおっ!
ここにきてまさかのRAIIを否定し始めるとか予想外すぎたわ!
お前C++のスマポってなにか知ってる?
2018/04/14(土) 15:55:07.64ID:TDyE7icd
>>379
ほとんどのコンパイラで採用されてない仕様書上にしかない機能なんざ知らんよ
2018/04/14(土) 15:58:27.76ID:TDyE7icd
実際混乱引き起こしてるまともじゃない方法なのは上の流れで自明だろ
2018/04/14(土) 16:02:24.43ID:LmbQudMt
>>380
よろしい。そんな君にはJavaがおすすめだ。そっちで元気にやりたまえ。
2018/04/14(土) 16:05:01.76ID:75zALjkM
以前も言われてたけど「ひまわり学級の子が普通の授業に出て暴れてる」って表現が実に的確で草
2018/04/14(土) 16:07:01.72ID:TDyE7icd
間違ったものを間違った奴が流行らせようとしてるんだからそれには「違う」って言っとかないとダメだろ
話にならんと放置したらいずれ手遅れになるほど蔓延する
そうならないうちに叩いておくべきなんだよ
2018/04/14(土) 16:10:39.48ID:w273LxVR
混乱引き起こしてるのは違いないけどさ
「俺の頭の中で混乱を引き起こしてる」って正確に書こうよ
2018/04/14(土) 16:11:44.32ID:TDyE7icd
>>385
上のFFI絡みの流れは俺じゃないけど?
2018/04/14(土) 16:15:30.43ID:w273LxVR
完全手動でメモリ管理するのは混乱起きないからいいよね〜
2018/04/14(土) 16:21:52.10ID:TDyE7icd
>>387
コンパイラに丸投げするよりは良いな
混乱しないって意味だとGCが一番だが
2018/04/14(土) 16:27:01.78ID:nFvlFlcl
>>375
上のやり取りは俺じゃないけど?
散々間違いがあったら指摘してくれって書いてたのがデタラメを振りまいた?
間違いの指摘に礼を言って終えるところに、鳴りを潜めていたアンチがウキウキで「混乱を引き起こしたRust!!!」と喚き立てた
このスレでも何回もやってる流れじゃんクソダセー
2018/04/14(土) 16:38:44.62ID:TDyE7icd
はいはい内ゲバですね
ほんとくだらん言語
2018/04/14(土) 16:43:14.18ID:nFvlFlcl
>>390
内にいるつもりなんだお前
2018/04/14(土) 16:44:00.69ID:nFvlFlcl
インタプリタへの丸投げ>完全手動でメモリ管理>コンパイラへの丸投げ
実行開始までの混乱しない順だなどう考えても
2018/04/14(土) 16:47:43.87ID:TDyE7icd
>>391
外から内ゲバ眺めてやっぱこの言語くだらねって思ってるだけ
C++の(後方互換維持のための苦しい構文追加以外)なにが悪いんだか
2018/04/14(土) 17:00:21.56ID:LmbQudMt
>>393
スマポが何かを知らないヤツがC++を語り始めたぞ…
2018/04/14(土) 17:00:54.52ID:nFvlFlcl
>>378
ていうかこれ知りたい
Rustの何が(例:MIR)どう機械語との相性が悪く
それに対してC/C++のまともなアプローチの具体例を教えて
2018/04/14(土) 17:03:21.15ID:LmbQudMt
>>395
代弁してやろう。
「自力で頑張る」

以上
2018/04/14(土) 17:17:27.65ID:TDyE7icd
>>395
結局解放処理は自分で書くんだろ?
メモリ上の確保のされ方はコンパイラにはわからないんだから

結局中途半端にしか自動化できないから無意味で、それなら自分で管理した方が結果的に良いって話
2018/04/14(土) 17:24:46.46ID:Syz4zWn3
解放の仕方を実装したら、後はコードのどの場所で何回確保しても自動で解放される事が分かってないっぽいね
2018/04/14(土) 17:31:29.95ID:LmbQudMt
>>398
だってRAIIもスマポも知らないんだもん。しょうがないじゃん
2018/04/14(土) 17:34:05.03ID:nFvlFlcl
>>397
C FFIとかの一部分で解放処理を書くんだよ
お前が言ってる通り「手動」だしお前の好きな「手動」でよかったな
中途半端にとは言っても機能するし「無意味」と言い切るには典型すぎる誤謬

>>395にまともに答えてくれる?どう相性が悪いの?どんなアプローチ?
2018/04/14(土) 17:50:25.61ID:TDyE7icd
>>400
今の説明でわからんなら一生わからんよ
2018/04/14(土) 17:56:25.03ID:LmbQudMt
>>401
あっ! 逃げたww
2018/04/14(土) 18:04:42.44ID:nFvlFlcl
Q. Rustの何がどう機械語との相性が悪く、それに対してC/C++のまともなアプローチの具体例を教えて
A. 結局中途半端にしか自動化できないから無意味で、それなら自分で管理した方が結果的に良い

Rustアンチ君との最後のやり取りがこれなのか…?悲しい
2018/04/14(土) 23:45:32.28ID:lczq2IdA
いい加減ワッチョイスレに移動しようぜ
405デフォルトの名無しさん
垢版 |
2018/04/14(土) 23:54:45.22ID:LmbQudMt
>>404
実際問題ワッチョイは過疎る
2018/04/15(日) 03:16:54.39ID:8wseEBgk
>>404
YOUがワッチョイのほうで話題ageれば
2018/04/15(日) 09:21:32.45ID:eccSQZbu
ここはネタスレだからこれでいいよ

まともな話題ないし
2018/04/15(日) 10:16:53.40ID:pCFT19cL
ワッチョイは運営が管理を放棄するための口実
409デフォルトの名無しさん
垢版 |
2018/04/15(日) 10:33:02.44ID:E1b18XLI
ワッチョイあった方が良い派です
2018/04/15(日) 11:32:28.09ID:fK7P6CAL
いちおう指摘しておくと以下にわっちょい付きのスレはある。
https://mevius.5ch.net/test/read.cgi/tech/1514107621/l50
2018/04/15(日) 14:26:16.16ID:WuS7UUJE
そう思うんなら勝手にそっちでやってくれ
いちいちこっちに宣伝しないでよろしい
2018/04/15(日) 14:57:22.17ID:eccSQZbu
せめてスレ立てたやつくらいはあっち書き込んでくれよ。
ワッチョイスレ(本スレ)には俺しかいない。
2018/04/15(日) 15:05:21.27ID:6SePuRaV
人が集まってる(勝ち残った)方が本スレ
2018/04/15(日) 16:17:50.87ID:vLrea5+q
アンチスレの方が人多いっていい加減認めようぜ
415デフォルトの名無しさん
垢版 |
2018/04/15(日) 20:40:55.33ID:oxsxYGoa
>>414
いちおうアンチスレも存在するんだぜ
http://mevius.5ch.net/test/read.cgi/tech/1509028624/
2018/04/15(日) 21:13:20.51ID:0BluVJwA
>>384
大元に言わないで、ここでグダってる時点で説得力無いけどな。
2018/04/16(月) 09:16:50.73ID:fU1aO3Gb
英語で説明する気力がないんだろ
2018/04/21(土) 15:59:38.16ID:GAOK2TS0
それもあるが日本語の記事でrustマンセーしてるやつは大抵バカっていうのもある。
2018/04/21(土) 18:22:00.01ID:u/5OPPGG
会話になってないし
時間おいたところで>>395に答えなくてもいいことにはならないからね
2018/04/22(日) 12:28:50.40ID:fDht+F2y
もう答えた
>>397
421デフォルトの名無しさん
垢版 |
2018/04/22(日) 15:34:45.59ID:4jEar62+
自分から「機械語のレベルと相性が悪い(>>378)」と言ってるのに
「具体的にはどういうこと?(>>395)」と聞かれて、
その返答(>>397)に機械語のことが一切出てこないのは流石に草
2018/04/22(日) 20:55:11.63ID:jr6NU+gW
英語で説明する以前に日本語でのコミュニケーションに難ありなのか
日本語ネイティブじゃない方なのかな
2018/04/22(日) 22:58:46.99ID:lYpO0H1A
機械語との相性のいいC,C++のソリューションって、機械語バイト列を関数ポインタにキャストして呼び出すとかじゃないの?
そんなことRustでできるようになって欲しくはないな。
2018/04/22(日) 23:13:49.80ID:KagmHCpN
できるよ
推奨してないけど
2018/04/23(月) 00:45:39.39ID:Fi1E6adA
JITとかそういう用途?
2018/04/24(火) 00:26:37.67ID:IHcLIR+Z
rustで書かれたjitなかったっけ?

ところでrustで書かれたウィルスとかマルウェアとかないよな。
goならMiraiで使われてたけど。
2018/04/27(金) 21:30:01.00ID:Tx6nrcMv
C/C++の弱い型付けによるキャストは機械語と関係ないだろ
Rustは強い型付けしか原則許してなくてunsafe使えば弱い型付けも出来るけど好んでする必要性はないよねー

プログラミング言語と機械語の間はC/C++もRustもLLVM IRで仲介されてるから、どっちかだけが相性良いとかなさそう
LLVM IRじゃなくGas仲介するとこう違うんだよ、くらいの反論を期待してみるテスト
2018/04/27(金) 23:30:19.86ID:AfC0onIC
>>427
フロントエンドの話してるのに、バックエンドがLLVMだから違いなどない!は、おかしいのでは?
そんなこと言い始めたら、言語仕様の優劣など語るに値しないということになってしまう。
2018/04/27(金) 23:43:23.39ID:MR18u0zM
>>427
Any使ったdowncastはunsafeじゃないけどどういうコードの話してんの?
2018/04/28(土) 16:19:50.16ID:6S6rcsk3
このRustのチャットみたいなのって公式のもの?

https://gitter.im/rust-lang/rust
2018/05/01(火) 14:27:18.61ID:riKaEN0n
rustでフォントをレンダリングしたいのですがfont-rsやfreetypeなどの設定逆引き的なサイトってありませんかね?
チュートリアル的なサイトは見つかるのですがそこから突っ込んで使用したい場合に参考になりそうな情報がみあたらないです
レンダリングされる線を任意の幅にしたいです
極細フォントを使って線幅1ピクセル×2=計2ピクセルでアンチエイリアス無しみたいな感じの結果が欲しいです
2018/05/01(火) 14:37:54.06ID:riKaEN0n
具体例を補足します
出力が2値の場合に普通にレンダリングした物を減色してしまうと線幅の不均一になったりディザが掛かってしまって
表示品質が極端に悪くなってしまうのでそれを防止したいです
たとえば「田」みたいな字をレンダリングして減色するとある線は1ピクセルだけど別の線は2ピクセルになってしまったり
交わるところに不要なドットが出現したりします
それを全て任意の線幅に統一したいです
2018/05/01(火) 14:58:24.50ID:8Qa5eQjM
ここはアンチスレなので、まともな質問はslackへどうぞ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況