Rust part10

レス数が900を超えています。1000を超えると表示できなくなるよ。
2021/04/02(金) 21:38:04.11ID:L7IeSfpL
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/
2021/06/05(土) 09:02:04.60ID:KdS0cXcP
RustスレでC++の話題が出てしまうのはもはや運命なのか
2021/06/05(土) 09:20:03.77ID:3ILRB2eH
>>820
そりゃ better C++言語として作られたんだから当たり前でしょう
2021/06/05(土) 09:32:35.80ID:4o2YwJP1
ライフラインの書き方がとにかく見づらい
2021/06/05(土) 09:45:07.09ID:3ILRB2eH
これヤバくない?
どうやって防いだらいいんだろう?

https://github.com/lucky/bad_actor_poc
2021/06/05(土) 09:46:58.65ID:4o2YwJP1
localhostに送るだけならいくないん?
2021/06/05(土) 09:53:33.78ID:3ILRB2eH
え、マジで言ってるの?
2021/06/05(土) 10:04:24.16ID:4o2YwJP1
あおられてもダメな理由がわかりまそん
びっくりはするけど
2021/06/05(土) 11:21:46.59ID:KdS0cXcP
悪意を持ったコードをビルドしない
828デフォルトの名無しさん
垢版 |
2021/06/05(土) 12:04:01.08ID:bvIfRQLF
c++との比較はガファムが結論出してくれたからもう話すことなどない
2021/06/05(土) 12:08:54.56ID:85+uBK5B
何をみて結論だと思ってんだか。短絡的だな。
2021/06/05(土) 12:26:06.61ID:YTe/4gPS
依存するクレートの依存するクレートの依存するクレートの以下無限ループまで全部チェックしないと駄目ー?(´・ω・`)
2021/06/05(土) 12:58:14.11ID:KdS0cXcP
チェックするツールとか誰か作っていそうだね
バイナリを診断するよりは簡単だろうし
2021/06/05(土) 13:57:18.40ID:IMH8ctkE
>>826
念のためマジレスすると公開した人がいつでもlocalhostを〇国サーバーのアドレスに書き換えられるってこと
githubのオープンソースでそれやったらすぐにばれそうだけど

ビルド時ならともかくエディタ起動直後のコード解析でデータが送信されるのは盲点やね
2021/06/05(土) 14:01:47.49ID:f5S9H8yw
ビルドしなくてもファイルを開いたらコードが実行されるというのはよろしくないね

ファイルやネットワークならアクセスされる側でブロック可能だけど
メモリはサンドボックス内のみで展開・実行されるようにしないとブロックできない気がする

サンドボックス化できなければ
cargo auditやcargo crevを通して怪しいcrateだけ自分でチェックするとかかな
2021/06/05(土) 14:06:05.14ID:KdS0cXcP
vscodeやlspヤバイな
2021/06/05(土) 14:13:31.58ID:8YO6sBC6
解決方: vscode を使わない
2021/06/05(土) 14:27:34.92ID:4o2YwJP1
まったくだ
837デフォルトの名無しさん
垢版 |
2021/06/05(土) 14:48:29.61ID:uV7DnhUL
見た感じVSCode以外でもマクロが実行されるようなことをすると駄目っぽいが
2021/06/05(土) 14:52:35.33ID:4o2YwJP1
MS自身がやりたい放題だからメンタルも伝播するだろうな
2021/06/05(土) 15:03:58.08ID:85+uBK5B
>>835
それrust使わなけりゃでも良くね?
840デフォルトの名無しさん
垢版 |
2021/06/05(土) 15:09:20.73ID:uV7DnhUL
そもそもこれ本質はライブラリの信頼性って問題だと思うんだよな
Rustだけじゃなく他の言語にも言える話
2021/06/05(土) 15:22:11.73ID:85+uBK5B
お得意の静的チェックでなんとかしたら?
2021/06/05(土) 15:29:47.09ID:KdS0cXcP
中国のipアドレスは全部ブロックしておくのが正解だな
2021/06/05(土) 15:51:07.65ID:3ILRB2eH
IntelliJ/CLion でもproc_macro実行されちゃうの?
2021/06/05(土) 16:11:56.77ID:Fi/fLauk
LSPはクソ
vscodeありきの思想
2021/06/05(土) 16:32:08.49ID:6EguRj/L
LSPってHSPの親戚ですか?
2021/06/05(土) 16:43:48.73ID:KdS0cXcP
long short play モードだよ
2021/06/05(土) 16:56:48.31ID:G0EcoOQC
>>844
LSP はエディタとの連携を前提として明文化された規格にしたってだけで、
処理系にコンパイルさせた結果をエディタの表示に反映させるというのは昔から有ったんだぞ。
2021/06/05(土) 17:38:04.49ID:ftrSVS/I
>>847
> 処理系にコンパイルさせた結果をエディタの表示に反映させるというのは昔から有ったんだぞ。

いやそりゃそうだろ
その説明じゃ flycheck 等と差がない
2021/06/05(土) 18:00:21.39ID:G0EcoOQC
>>848
Rust のコードをビルドしないときでもエディタ経由で勝手にビルドする
(そのときに悪意のあるコードも走らせられるかもしれない)
という文脈の中で >>844 の発言があったので、
それは LSP が作られる前から同じような危険性はあっただろうという反論を私はしたつもり。

LSP のせいじゃなくてコンパイル時に出来ることが多い Rust のせいって話。
2021/06/05(土) 18:09:21.84ID:Fi/fLauk
はあ話になんね
こいつといいQZといい「何か物申したい」という気持ちだけで生きてるから常に空回ってんだよな
2021/06/05(土) 18:52:13.97ID:ZTm581Ue
proc-macroがwasm化されてサンドボックスで動くようになればマシになるのかね
そもそも怪しいコードが依存関係に混入しちゃう時点でcargo runなりtestなりしたらなにされるかわからん訳でproc-macroの件自体にどれくらいの影響度があるのかは分からんが
852デフォルトの名無しさん
垢版 |
2021/06/05(土) 19:44:30.63ID:uV7DnhUL
crossでx86_64-unknown-linux-gnuをtargetにクロスコンパイルしたらいいんじゃないか?
あれ確かDockerで動いてたはず
853デフォルトの名無しさん
垢版 |
2021/06/05(土) 19:45:33.78ID:uV7DnhUL
自分のPC向けにクロスコンパイル用ツールを使ってコンパイルするのがクロスコンパイルというかどうかは知らんけど
854デフォルトの名無しさん
垢版 |
2021/06/06(日) 08:03:37.51ID:W7azs2BY
>>823
特定のエディターの問題ではなく
特定のプログラミング言語の問題ではなく
自分が意図していない自動マクロ(プラグイン)を使えば自分が意図していない動作をするだけの話
大昔からあらゆる環境で起きていること
2021/06/06(日) 09:39:11.50ID:3IIg9tuB
コーディング時、ビルド時になんでもやらせようって発想が間違ってんだよ。
2021/06/06(日) 10:03:07.57ID:mKFU6ep6
マクロはやっぱ悪よな、無いと辛みが増すから仕方ないじゃなくて無くても何とか出来る仕様にすべき
857デフォルトの名無しさん
垢版 |
2021/06/06(日) 10:25:40.41ID:W7azs2BY
今回の>>823の問題に限っていえば
そもそもLSPを使う人のためのプラグインなのだからLSPのlocalhost:8080に接続に行くことは何の問題もないよね
問題としているのはSSHの秘密鍵をそこへ自動送付していること
LSPそこまで詳しくないのだけどそれはどうしても必要なことなの?
2021/06/06(日) 10:32:40.20ID:MV541K/D
LSPは、この騒動(?)と関係なくクソ
2021/06/06(日) 10:33:23.63ID:MV541K/D
快適なエディタと快適なIDEの区別がつかなくなったバカどもがゴリ押しで流行らせてる
2021/06/06(日) 11:08:51.30ID:n+sQSuEO
>>857
>LSPのlocalhost:8080に接続に行くことは何の問題もないよね

localhost:8080はLanguage Serverじゃないよ
861デフォルトの名無しさん
垢版 |
2021/06/06(日) 11:16:22.93ID:W7azs2BY
>>860
それはすまなんだ
じゃあ何が問題になってるのかな
2021/06/06(日) 12:13:20.98ID:xB3z9vbi
>>861
LSPをセットアップした状態だと「VSCodeを起動しただけで」自動ビルドが走ってしまって悪意あるprocedural macroが実行されてしまうこと
手動でビルドすれば同じことになるのでそこは問題の本質じゃなくね?とは思う
2021/06/06(日) 12:48:13.98ID:V+UU2WI7
LSPというよりrust-analyzerやrls、cargo/rustcの問題と言った方が正確かな
864デフォルトの名無しさん
垢版 |
2021/06/06(日) 14:24:19.60ID:W7azs2BY
では>>823で指摘されている問題点「自分のSSHの秘密鍵が勝手に読み出されて送信される」はどの部分がその動作を要求しているの?
本当に必要な動作なの?
2021/06/06(日) 14:29:37.79ID:LOfpkHxA
手続きマクロの展開なのでcargo checkでも起こり得る
言ってしまえばRustの言語仕様そのもの
解決策は>>851の言うようにサンドボックス化するみたいな方法しかなさそう
2021/06/06(日) 14:35:16.58ID:n+sQSuEO
>>861
macroをexpandする時に
macroの定義に書かれてる任意のコードを実行することができるって話

任意のコードの例としてSSHのキーをサーバーに送信する例が書かれてて
試す人に無害なように送信先サーバーはlocalhostになってるだけ

コード見たほうが早いかも
make_answer!がexpandされるときにread_ssh_keyが実行される
https://github.com/lucky/bad_actor_poc/blob/master/bad_actor/src/lib.rs
2021/06/06(日) 14:40:17.63ID:3IIg9tuB
このコード例はめちゃくちゃわかりやすい。問題は置いといてgoodなコードだ。
2021/06/06(日) 15:22:49.77ID:fghVy2Pw
crate-typeがproc-macroのときはffiを禁止して使用可能なextern crateを
安全性が保証されたものだけに制限するのがRustっぽいかな
proc-macro専用のstdが必要になるけどno_stdと同じ感覚でmacro_safe属性をつければいい
2021/06/06(日) 16:06:34.14ID:xR3kS6+v
そもそも普通はproc-macroなんか必要ないだろ
特殊用途以外では一律禁止してよいのでは?
2021/06/06(日) 16:20:07.52ID:V+UU2WI7
derive が使えなくなるのは結構困る
2021/06/06(日) 23:45:39.31ID:xQoKsnFB
>>843
マクロ展開すればどんな環境でもできるよ。
>>823はmulti-root workspaceの構成間違ってるから
IntelliJRustだとマクロ展開されないけど。

>>869
custom derive全部禁止だから当然thiserrorもserdeもdelegation系も禁止な。
ボイラープレート全部手書きしろよ。
2021/06/07(月) 06:02:10.08ID:k/PpyTws
頭悪い奴らばかりで議論にならぬ
趣旨と仕組みはreadme書いてあるのに。。
873デフォルトの名無しさん
垢版 |
2021/06/07(月) 13:37:53.63ID:BQ22AOvo
今勉強中なんだけど、Rustと合わせた時のgdbの使い方を教えてくれんかな
行指定でb main.rs:10みたいにブレイクポイントを指定するのってどうやるの?
>No source file named main.rs.
みたいに言われてしまって、どうやって行指定でブレイクポイントを設定するのかよくわからん
ソースのあるディレクトリがわからないのかと思って指定しても結果は変わらず・・・・
あと、ソースを表示しながらステップ実行したりってどうやるの?
2021/06/07(月) 13:52:39.17ID:C46sPHOc
vscodeでcodelldb使おう
875デフォルトの名無しさん
垢版 |
2021/06/07(月) 14:06:08.51ID:BQ22AOvo
ああ、デフォルトで-gつかないのか・・・・
でもlldbが主流っぽいし、それ使うかな
2021/06/07(月) 14:34:12.65ID:VGLcnon2
macのgdbだと今はまともに動かんぞ。
2021/06/07(月) 14:45:09.07ID:OvPzoGrd
M1になってmacの開発環境死んだ
2021/06/07(月) 15:56:52.66ID:D0MWfzjy
iPhone開発でMac必須になったことで強気に出すぎたか。
Macは滅びると思っていたらx86系になってからなぜかしぶとく生き残ってきたけど、
もうだめかもな。
879デフォルトの名無しさん
垢版 |
2021/06/07(月) 16:08:45.47ID:BQ22AOvo
lldbを試しに使ってみてるんだけどさ
これって、ステップ実行するたびに自動で毎回「memory read --size 8 --format x $sp」をやってもらうことってできないの?
gdb-pedaを使っていたときはスタックの中身が自動で見れてたんだけど、なんか似たようなのないのかな?
2021/06/07(月) 20:20:51.05ID:RuDnuZ5b
>>878
iphoneアプリ開発のためにmacが生き残ってるのは面白いと思ってる
元マカーだからほんと言うと寂しいし悲しいんだけど
881デフォルトの名無しさん
垢版 |
2021/06/07(月) 21:33:04.68ID:l0c3FfTp
rustのlinux kernel対応の話ってどうなってゆの?なんだかずいぶんと作業が難航しているうだけど
それってrustのどのあたりの言語機能が悪さをしているのかね
882デフォルトの名無しさん
垢版 |
2021/06/07(月) 21:34:18.90ID:l0c3FfTp
難航しているよう
2021/06/07(月) 23:22:49.68ID:TtFMbk6H
>>873
シンボリックデバッガはまだ有名どころのフロントエンドが
ステップ実行できる程度しか対応してないから、アブソリュートデバッガ併用になる。
シンボルでブレークポイント設定できないとか実行に問題あるとかまだ普通。
msvcツールチェインは特に。

>>877
ねねっち死んだなって思ってたけど現実もか。

>>878
世界シェア15%切ったし頼みの日本シェアすら50%切ったからもう
iPhone専用開発機も持たないだろう。
rustだとandroidほどバインディングが充実してないから開発やりずらいだろうし。
884デフォルトの名無しさん
垢版 |
2021/06/08(火) 13:22:42.82ID:NxfO+lQp
>>881 大部分がRustで書かれたRedox OSっていうOSがあるからRustでカーネルやドライバが書けないというわけではないと思う
恐らくCで書かれた過去の遺産との連携で手こずってそう
2021/06/08(火) 16:32:33.53ID:XAjWEwKV
>>883
日本でのiPhoneのシェアは、どんどん減っているはずなのに、ググると、
増えているデータになっていて、増えているのに50%を切っているというわけの
わからなさ。
記憶では、70%くらいまでいって、下がった結果、49%くらいになったはずなのに。
886デフォルトの名無しさん
垢版 |
2021/06/08(火) 17:33:30.46ID:0HakL4nG
>>884
具体的には?
2021/06/08(火) 20:08:36.67ID:3DogIzpc
いやメーリスみにいけよ。。。
2021/06/08(火) 20:44:34.79ID:iJOvL9Jr
実際の開発状況はこっち見たほうがいいかな
https://github.com/Rust-for-Linux/linux
ざっと見た感じ難航してるっていうより単にやること多いってだけに見えるけど
2021/06/08(火) 22:36:25.74ID:onwST/YK
>>885
出荷ベースだと二三年前に65%超えてて2020Q4に約49%だからそれであってるよ。

>>888
OS作ってる人らって開発環境はなんだろ?
intellijrustはデバッガ使えるIDEとツールチェインが限られるし
matklad.rust-analyzerは環境変数の扱いがめちゃくちゃで
環境変数見に行くとまともに動かないし。issueばっか増える。

お前らどうしてる?ツールチェインと環境は?
2021/06/08(火) 23:20:14.38ID:x/Of6Ttl
rustでOSてもう何回目の話だよ。。過去レスでもあされや
2021/06/09(水) 00:55:43.69ID:KzEq3JVg
>>889
cargoが-Zbuild-std対応したからビルドに特別なツールは使ってない
rust-analyzerもno_std対応してて特に支障なく動いている
(補完候補にstdが出てくることはたまにあるけど)

環境変数がおかしいというのはどういうこと?
build.rsが環境変数に依存している?
それとも env!() を使っている?
2021/06/09(水) 01:43:04.13ID:oLsQ5RHC
>>889
https://simchange.jp/post-164095/
ところが、↑のサイトも含めていくつかのサイトでは、日本ではiOSがシェアを
伸ばしていると書いてある。
2020/06 : Android:50.2%, iOS:49.7%
2019/06 : Android:60.5%, iOS:38.8%
2018/06 : Android:60.8%, iOS:37.6%
893デフォルトの名無しさん
垢版 |
2021/06/09(水) 08:17:02.86ID:k36yeEDS
元々の話はMacがM1になって開発環境として終わったという流れから
残るMacの存在価値としてiOSアプリ開発環境がありそのシェアがまだ高い(?)という話だと思うけど
多くのサービスがスマホ専用アプリを作らずにウェブアプリ(PWA)化してる状況ではシェアだけの問題ではないと思うな
2021/06/09(水) 11:25:52.58ID:oLsQ5RHC
>>893
最後の行、flutterなどのマルチプラットフォームライブラリの登場によって、
ウェブアプリからnativeアプリ型への流れが出来ているという説もあるが。
2021/06/09(水) 11:27:44.28ID:oLsQ5RHC
>>894
後継のSwiftが出来たのでObjective-Cの人気低下はともかく、そのSwiftも人気低下。
その理由が、AndroidとiOSでソースを共通化したい人が増えたからだそうだ。
SwiftはApple専用だから。
896デフォルトの名無しさん
垢版 |
2021/06/09(水) 12:30:04.46ID:eGaY+zic
lldbでpedaみたいな表示するのってこれが良いかな
便利そうだけど保守されてんのかなこれ?誰かしらん?
https://github.com/snare/voltron
2021/06/10(木) 06:56:29.59ID:A6ZEEOGF
来週ついにRocket v0.5が出るぞ
安定版Rustで動くようになる
898デフォルトの名無しさん
垢版 |
2021/06/10(木) 09:11:05.37ID:hslWe/Xh
RUSTってORM、Dieselとかいうやつしかねえの?
SQLを明記したいのでJavaでいうMybatisみたいなのをさがしているんだけど、中華の変なものしかない。
2021/06/10(木) 11:19:36.78ID:vqPt4/VO
Sqlx
2021/06/11(金) 04:26:27.44ID:tVW+Rdfi
>>897
待ってた!
2021/06/11(金) 05:32:32.03ID:O0YtPkZC
サーバー側はネイティブコードでクライアント側がwebassemblyで動くとかあるの?
2021/06/11(金) 15:51:17.70ID:ThZwz5mq
VSCodeアップデートしたら急にDo you trust the authors of the files in this folderとか聞かれてどうしたのかと思ったけど>>823みたいな奴の対策かね
2021/06/11(金) 23:04:56.42ID:gr7UCFZ6
>>898
Dieselに人が集中してる。
クレートのall-time downloadは200万超だし、
リポジトリのコミットは約4000、closed issueは約1200。
2021/06/11(金) 23:44:59.89ID:791JEOt2
>>898
rust-postgres 直接使えばええやん
905デフォルトの名無しさん
垢版 |
2021/06/12(土) 05:08:22.45ID:0lbP+PJD
wasmはあらゆる環境で使える汎用コンテナとしてすごい将来性あるみたいだね
2021/06/12(土) 15:34:21.86ID:jmn9nDiv
>>905
目的外利用だし、そういうこと言っている人がいることは知ってるが、実際にそんなに将来性があるとは思えんが。
2021/06/12(土) 15:35:41.09ID:jmn9nDiv
wasmはもともとウェブにC++を持ち込みたいというEmscriptenの情熱から
始まったものであって、そんな汎用目的のためではない。
2021/06/12(土) 15:53:35.18ID:1HODARj2
そのウェブにC++を持ち込むという夢はその後どうなったの?
2021/06/12(土) 16:29:39.50ID:wX98kbow
ブラウザでDOOMが動いた
2021/06/12(土) 16:48:34.58ID:L7rjL3/+
zoomみたいなビデオ会議アプリでwasm使ってるってっ聞いた
あとカメラを使った運転免許証認識とか
2021/06/12(土) 17:34:23.71ID:6kRi062U
当初の目的とかどうでもいいだろ
Linuxだって当初の目的は趣味のおもちゃだぞ
>>907
2021/06/12(土) 17:38:04.08ID:4jXDkOdS
もしもWebAssemblyとWASIが2008年に存在していたら、Dockerを開発する必要はなかった
ってDocketの開発者が言ってた件だな
2021/06/12(土) 17:54:20.79ID:jmn9nDiv
>>911
どうもブラウザ外使用を盛んにアピールする人は胡散臭い。
914デフォルトの名無しさん
垢版 |
2021/06/12(土) 18:32:25.93ID:l5AvwX9O
いや、M$の寡占を阻止し正しき未来を創るため立ち上がったとエリックレイモンドが言ってた。
2021/06/12(土) 20:16:21.66ID:jmn9nDiv
>>914
そいつ人類の中で2番目に嫌いなやつだわ。
一番目はストールマン。
2021/06/12(土) 20:33:14.57ID:7X99TIl2
>>915
ソフトウェア著作権を否定するあんたと同類だよ。違うのは現行の法律を尊重するかしないかだけ。
2021/06/12(土) 21:31:34.25ID:Ap+0oKF5
>>912
んなこたない。
2008年にあっても今と扱いは変わらんと思うわ。
結局何らかのコンテナを使うことになる。
OSの件でもそうだが、この界隈は大袈裟にアピールしすぎだわ。
2021/06/12(土) 21:39:22.31ID:07O/QVIU
>>917
ここでいうコンテナってなんのこと?
2021/06/12(土) 21:55:04.24ID:LAH8Z0de
Jail、OpenVZ、Solarisコンテナ、LXCみんな早すぎたのだ
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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