プログラミング言語 Rust 3 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2017/05/21(日) 14:04:29.55ID:9L9dm7b/
Mozillaがリリースした、プログラミング言語「Rust」について語るスレです。

http://www.rust-lang.org/
https://github.com/rust-lang/rust

Servo
https://servo.org/
https://github.com/servo/servo

◆前スレ
プログラミング言語 Rust 2
http://echo.2ch.net/test/read.cgi/tech/1478023960
2017/05/31(水) 09:46:53.00ID:Kcuasmjx
>>94
>>78

若者も老人もいるんだよなぁ
2017/05/31(水) 12:19:43.42ID:WjnJkecI
本当のおっさんや老害はRustスレなんてこないだろ。
ワイは偉そうに古参風を吹かせてた>>77だがまだビンビンの学生やで。
2017/05/31(水) 12:22:43.65ID:FbhpYS54
ワイ周辺だと学生はそれなりに見る
よくはてなブログに書いてる人も学生でしょ
2017/05/31(水) 12:27:53.72ID:xgELgHJk
そりゃ、おっさんの大多数は新しい言語が嫌いだからね
2017/05/31(水) 12:38:49.91ID:WjnJkecI
それな
2017/05/31(水) 12:55:16.23ID:IqYufuRr
年取ると守りに入ってしまっていかんな
2017/05/31(水) 18:15:57.61ID:xNKvRsij
まだ2chは若者に人気だったのか
slackとかじゃないの
102デフォルトの名無しさん
垢版 |
2017/05/31(水) 23:54:17.31ID:H5pMSxMU
>>83
ランタイムなんてリンクしなけりゃ済む話
2017/05/31(水) 23:59:15.13ID:8BExUPKw
no_stdか……
2017/06/01(木) 10:52:08.55ID:AXJF1Amn
それランタイムじゃなくライブラリ
no_mangleでマングル名消してもランタイムはリンク解消できないだろうねぇ
2017/06/01(木) 12:56:34.33ID:5JdW7IAM
#![no_std]すればliballocとlibpanic_unwindはlibstdは勝手に外れなかったっけ?
libcoreはliballocにリンクしていないし#![needs_panic_runtime]もしてない
2017/06/01(木) 13:33:54.90ID:TwQiYK+8
Rustランタイムって具体的には何してくれるの?
ファイナライザ呼び出しとパニック時のスタックダンプ表示?
2017/06/01(木) 13:39:40.72ID:AXJF1Amn
ttps://doc.rust-lang.org/book/no-stdlib.html
最小限のmain関数だけにしても、C言語+clangでビルドするバイナリ相当までは削れんなぁ

Rustマングル名の解読とか、C言語へのブリッジなんかも入ってるんでない
str型はno_stdでも使えるようだから、この辺の一部プリミティブ型のラッピングもしてるかな
2017/06/01(木) 14:25:43.96ID:y1VaJ38E
ランタイム気になるのはOS書く時くらいでしょ
2017/06/01(木) 14:27:32.75ID:y1VaJ38E
あとOS無しの環境でプログラム動かす時とかもそうだけど
要するにそういうときだけ
2017/06/01(木) 15:23:27.31ID:TxD0ndLo
その辺の整備は優先度低いだろうからな。
トレイト境界の特殊化とか知恵の輪みたいな型システムのサポートとかもっとやることがある
2017/06/01(木) 15:36:56.97ID:SoMrAbTt
IoTブームを考えると、組み込み系が一番Rustを活かせる場だと思う
パフォーマンスが良いし、アップデート出来ない環境で脆弱性の心配が減るのも良い
メモリフットポイントも、先行事例を見るにまあぼちぼちなんとかなってるようだ
2017/06/01(木) 16:49:21.04ID:84f6kPv5
新興言語が使い物にならないのはSwiftが証明しちゃってるしな。
学習コストが高いし、仕様変更も多すぎて管理コストがかさむ。
仕事では使い物にならない。

IoTはなんだかんだいってバックエンドCフロントエンドECMAScriptが主流になるんじゃないかな。
2017/06/01(木) 16:57:13.59ID:Ic6OT1NI
IoTもう終息してきてない?
2017/06/01(木) 18:07:25.12ID:b0AgrCqp
マングリングなんかはコンパイル時に解決してるのでは
strはただのデータと長さのペアの構造体
ランタイムとはなんなのか
2017/06/01(木) 18:32:06.24ID:AXJF1Amn
解決してないから、場合によってはno_mangleが必要なわけでな
プログラムロード時に展開して処理中はオーバーヘッドないだろうけども

IoTブームを考えるとRustの選択肢はありだろうけど
流行りを無視したら性能良く容量少ないバイナリ吐くCかギリギリC++かなぁ
ガチな組み込みは老人ばかりでC/C++で難なく安全なコード書くし
組み込み系の仕事やってると業務での採用提案は現実的には思えんわ
2017/06/01(木) 19:44:54.46ID:KprYmBPJ
>>115
ガチ組み込みでもC++使うんだ。
自動車とかだとCのみだよね。
家電とか?
117デフォルトの名無しさん
垢版 |
2017/06/01(木) 23:17:34.13ID:Co5NqntP
>>116
自動車は普通にc++使ってる部分もあるよ。
2017/06/01(木) 23:38:13.83ID:0ZYBTIzB
ハードウェアは未だにZ80が現役のパチンコでもZ80要らないところなら色々使うで。
ソフト部分がjavaかC#か、最近はunityだから格差が大きい。
こういうニッチなところならrustのno_coreも入り込めるかも
2017/06/01(木) 23:39:53.34ID:0ZYBTIzB
ごめん言い忘れた。
いまだにC++使わないのなんか軍事兵器くらいやで戦闘機のOSとか
2017/06/01(木) 23:46:55.28ID:GrGj5OGG
そんなの持ち出す前にlinuxでしょ
2017/06/02(金) 00:20:19.49ID:u7OL4GIc
F-35はC++が使われてるんじゃなかったか
2017/06/02(金) 00:22:55.55ID:1X/05mt0
お前らやたら詳しいな……
2017/06/02(金) 00:25:26.45ID:/gLRnObz
その辺はAdaが使われてる印象だったんだがCも使われてんのか。
2017/06/02(金) 00:54:37.65ID:UJQ0OGfD
今、MISRA Cを使ってるようなところが、Rust向きだと思う
2017/06/02(金) 01:43:12.50ID:USk3zPix
飛行機なんかはメモリ確保命令は使わずに上書きでやりくりするんでしょ?
リアルタイム性が要求されるから決定的瞬間にアロケーションや解放なんて処理始まったら死ゾ
2017/06/02(金) 02:00:16.87ID:/gLRnObz
>>125
そうならばメモリアクセス安全に寄ったRustは不向きの用途だな。
専用ランタイム作らん限り。
2017/06/02(金) 06:39:31.02ID:eD3LHIkq
>>123
組み込み業界、Ada使うくらいなら素直にアセンブラ使うわw

>>119
他言語へのAPI公開のため最近はまたC言語が流行ってるやぞ
RustもGoもSwiftもC言語とのI/FはあるけどC++とのI/Fはないから、流行りに合わせてCにしとこってのはままある
まぁRustはbindgenとかいう変態ツールでC++マングル名を回避する荒業に出てるからなくても困らんのだけども
2017/06/02(金) 07:33:26.58ID:3O32wZtM
>>125
ATS2 みたいな機能を Rust も組み込めば良いのに。
2017/06/02(金) 09:15:56.51ID:PNLF+z5i
C++でextern Cじゃいかんのけ?
130デフォルトの名無しさん
垢版 |
2017/06/02(金) 10:26:55.70ID:f93mDoXl
cとのI/Fではc++が最強か
2017/06/02(金) 16:42:33.09ID:IZaDrWj5
>>117
そーなんだ。俺がやってたのはもう10年くらい前だからさすがにかわったのか
132デフォルトの名無しさん
垢版 |
2017/06/02(金) 17:04:48.35ID:Lx2HMXf/
impl Into<[u8]> for Hoge {
これがエラーになってしまうのですが、どうやればInto<[u8]>を実装できるのでしょうか?
impl<T: [u8]> Into<T> for Hoge {
これも試してみたのですがシンタックスエラーになってしまいました。
2017/06/02(金) 18:53:59.81ID:ymoR0uYq
>>132
ttps://play.rust-lang.org/?gist=33ccca08ebe70d32141ce8cdaeddd76e&version=stable&backtrace=0
配列の長さが固定なら参照にしなくてもいいけど、多分可変長なんだろうからlifetime使わざるを得ない気がする

このスレでtokio, tokio言うからどんなものよと使ってみてるけどムツカシイ・・・
クライアントのサンプルコード少なすぎる、futuresの在り様が掴めなくて苦しいぜよ
2017/06/02(金) 20:26:56.32ID:ymoR0uYq
tokio好きのエロい人、ボスケテ
ttps://play.rust-lang.org/?gist=1efad716955551cd68c21b0183b9f942&version=stable&backtrace=0

これで実行すると、リクエスト送信 => レスポンス受信 => リクエスト送信、みたいな動きになる
sendとsend_allで二回送信してるんだろうから分からいでもないんだけど
リクエスト送信 => レスポンス受信、の動きにするにはどうすりゃいいの
2017/06/03(土) 19:09:45.21ID:MHNPbMg7
logとかrandとか、標準ライブラリではないけと、ほぼ公式ライブラリ化してるcrateのリストって、どこかにある?
2017/06/03(土) 20:41:56.30ID:x4F2VVph
brson / stdx
2017/06/03(土) 22:00:53.66ID:MHNPbMg7
>>136
いい感じだね
Authors欄がThe Rust Project Developersになってるcrateのリストが
公式サイトのどこかにあるかなと思ったけど無いなあ
2017/06/03(土) 22:03:30.78ID:LvdfU0KG
>>137
https://github.com/rust-lang-nursery
2017/06/03(土) 22:21:40.86ID:MHNPbMg7
>>138
これや!
2017/06/04(日) 03:40:08.07ID:fD7zpG1M
そういうのがstdに無いのが不便で仕方ないんだがどうしてそうなったの
2017/06/04(日) 03:45:59.28ID:79UOiFpQ
>>140
それもう100回くらい語られてる
https://blog.rust-lang.org/2017/05/05/libz-blitz.html#batteries-included
2017/06/04(日) 03:50:33.29ID:fD7zpG1M
>>141
FAQにも無いように見えたしググり方も分からなかったんや
ありがとナス
143132
垢版 |
2017/06/04(日) 10:44:11.97ID:rLXx1OCs
>>133
そこにもlifetime指定できたのですね。ありがとうございます!
2017/06/04(日) 14:04:24.56ID:W9jPbq7z
C++のとき=で右辺の状態が変わるのが人間の直観によろしくないと
非常に明白な結論が出てるのに
なんで変えなかったんですかね

思考が著しく阻害される
2017/06/04(日) 16:24:39.76ID:8nnj2TqC
記号が <- だったらよかったのにって?

まあ慣れだと思うけど。
2017/06/04(日) 16:28:32.85ID:Ukp5iwZo
それを言い出したら左辺の状態が変わるのも"直感によろしくない"しなあ
147デフォルトの名無しさん
垢版 |
2017/06/04(日) 16:42:30.55ID:qUWZGkRh
>>145
代入ってよく使うのに2文字はだるすぎ
慣れれば=でも問題ない
2017/06/04(日) 16:58:15.24ID:2L30Nwvk
お前ら非常に明白な結論になんてことを・・・
149デフォルトの名無しさん
垢版 |
2017/06/04(日) 17:07:01.45ID:zptvcWS6
>>51
valgrindの扱えない 一般のuse-after-free って何だ?
2017/06/04(日) 19:25:09.29ID:rwHtuE7A
>>149
メモリ以外も含めたリソースの解放後の使用って意味じゃね?ファイルとか
2017/06/04(日) 21:24:44.90ID:Ukp5iwZo
>>150
ファイルに関してはValgrindには--track-fds=yesがあるから例として微妙では
もうちょっとドメイン固有なもの、例えばSerdeでDeserializerを2回使うのを防ぐとかの方がありがたみが強そう
2017/06/04(日) 21:40:25.92ID:qOHu1i3Q
valgrindみたいな実行時チェックとコンパイル時の静的チェック比較してどうするの
2017/06/06(火) 00:41:45.73ID:eZ7grxii
https://docs.rs/try/1.0.0/try/

>Since the introduction of the ? operator, its supporters have preffered its use, ignoring the valid criticism of the ? operator almost hiding the error propagation operation.

彼は一体誰と戦っているのだろう……
2017/06/06(火) 02:28:52.15ID:LS7abRGk
というか、try!をdeprecateする話なんてあったか?
Rust 1.13以前をサポートするcrate(特にnursery系)ではバリバリ現役じゃん
2017/06/06(火) 13:02:17.27ID:29cDHiwu
そういや、crates.ioに公開されてるものって
対応してるrustcのバージョンが不明確だな
2017/06/06(火) 21:24:51.99ID:LrtFpx4M
案の定、誰もtokioを使ったことない感じでスルーされつつ自己解決した
ttps://play.rust-lang.org/?gist=42a8464afde50942d9a162f3d1cfe9c0&version=stable&backtrace=0

futuresのAPI分かりづらいよ
zero-costとかそう言う所じゃないレイヤーのI/F設計が頭おかしい気がする
いや、気がするだけでzero-costに注視した場合にそうならざるを得なかったのかもしれんが

とりあえず、奥深いと言うかなんと言うか、tokio及びfuturesの闇の深さが分かったのでちょっと遊ぼう
tokioはstd:netのラッパーで本当に早いの?な感じだったけど、futuresの方は中々に面白い
2017/06/06(火) 21:31:18.02ID:eZ7grxii
mioは本質的にstd::netを使ってなくねなどと重箱の隅を突いてみる
2017/06/06(火) 21:39:21.98ID:LrtFpx4M
tokioもサーバサイドで使うぶんには効率的よ?と直前のレスをちゃぶ台返し

エアプログラミングで卓上で論じる分には楽しいけど、実際使ってみようとしたらドキュメント少なすぎるだろ
futuresのtutorialみたらtokio.ioに飛ばされてスッゲーあっさりとしか書かれてないでやんの
2017/06/07(水) 10:48:52.84ID:oMhdv7bq
な?Rustってまともに使える言語じゃないだろ?
だからもう騙されるのは終わりにしようぜ。
2017/06/07(水) 13:01:49.86ID:AvS1SMln
ソース読めばいいよ
2017/06/07(水) 19:59:59.87ID:CD/BPHg5
言語じゃなくライブラリの問題なんだよなぁ、言語仕様で躓いたPG(笑)はスクリプト言語にでもおかえり

ソース追い回しても分かんなかったよ, crate futuresのソースがC++のマクロ地獄みたいなの
解決したらそりゃそうだと納得なんだが、sink.and_thenのErrとstream.into_future().and_thenのErrが一致しないのは罠だと思った
お前ら両方ともtrait Futureのand_thenなのに違う型をツラっと返すなよな・・・
sinkから作ったFutureとstream(のinto_future)から作ったFutureがand_thenで連結できないのかと悩んだよ
2017/06/07(水) 20:19:54.47ID:xcCDpPBC
むしろ同じエラー型しか返せないとしたら面倒臭いわな
例えばfutures_cpupoolで常にio::Errorしか返せないとかだったら扱いにくいのなんのって
2017/06/07(水) 20:43:02.03ID:CD/BPHg5
Futureの操作元(今回はStream)をエラー時にも返したい時がある的な振る舞いは未だに理解できんぞ
sinkはErrでstreamは(Err, Stream)とかイミフ、どうせなら両方ともタプルにしてくれよ
2017/06/07(水) 20:44:49.12ID:aNYsG6oK
それはそうだが、StreamFuture::Errorの型はあれはちょっとなあ……
所有権を返したいってのはなんとなく分かるが
2017/06/07(水) 20:46:10.36ID:aNYsG6oK
>>164>>162宛てな
2017/06/08(木) 02:32:18.91ID:+DWZ9aoq
reqwest、HTTPヘッダやMIMEタイプまでそれぞれ別個にタイプセーフとかクレイジーだな、いい意味で
いや、hyperのせいか
2017/06/09(金) 01:32:14.88ID:eJzwOC8V
Announcing Rust 1.18 - The Rust Programming Language Blog
https://blog.rust-lang.org/2017/06/08/Rust-1.18.html

pub(restricted)と構造体フィールドの自動並び替えがstabilized
2017/06/09(金) 07:32:46.19ID:2Ut1GWuy
時報が少し賢くなってるwww
2017/06/09(金) 12:48:15.05ID:BBPKL/bd
>>167
ありがとう。
これからも頑張って。
2017/06/09(金) 13:10:04.93ID:+ro9fQGu
pijulってなんだよgitだけでいいだろ
2017/06/09(金) 14:25:21.34ID:2Ut1GWuy
gitよりmercurialが好きです(半ギレ

pijul(とdarcs)は初めて存在を知ったけどほーって感じ
Pull Requestはサービスプロバイダに依存するから、VCS自体にPR管理機能を持つのは良いのかもねぇ
2017/06/09(金) 14:42:06.85ID:8C3OvAmi
pgr
2017/06/09(金) 15:36:57.58ID:CZ4YsNdD
Rustはgithubに依存しすぎだろ
GoogleやMicrosoftも似たようなサービス始めるみたいだし、もっと中立的になった方がいい
174デフォルトの名無しさん
垢版 |
2017/06/09(金) 15:39:14.20ID:F1/ud66B
goもかなり依存してないか?
2017/06/09(金) 15:44:08.83ID:+ro9fQGu
github依存度で言ったらGoよりましじゃないかな?自前でcrates.io持ってるし。
まあgithubに依存してなくてもやらかしたnpm見てるとgithub依存も最悪ではないみたいに思ってしまうがな。

というかgithub以外のまともなホスティングサービスがないのが悪い
2017/06/09(金) 15:49:49.79ID:CZ4YsNdD
Scala/JavaのIvyみたいに、crates.io互換鯖を自由に立てられるようにしようとか
crates.ioのログインにgithubアカウント以外も使えるようにしようとかの動きは無いのかな?
2017/06/09(金) 15:51:15.80ID:+ro9fQGu
まあそれはともかく、gitとhgのサポートが既にあるのに
pijulとかいうまだまともに使えないVCSをwritten in Rustってだけで突っ込むのは
内輪のノリがきつすぎてイタい子なんだなあって感想
2017/06/09(金) 15:52:47.94ID:CZ4YsNdD
>>177
Haskellのdarcs優遇と同じ現象だな
2017/06/09(金) 16:00:58.60ID:+ro9fQGu
>>178
ghcすらdarcsを捨てたと言うのにな。

というか今気づいたけどcargoってSubversion対応してねえのか。pijulとやらより
そっち先じゃねえの?
2017/06/09(金) 16:13:07.06ID:2Ut1GWuy
>>175
bitbucketがあるだろ!!(今度こそマジギレ

sourceforgeのgitサポートがもう少し早ければ幾つかの連立もあったろうけど
sourceforgeは遅れるわGoogle Codeはへっぽこだわでgithub+git一強になったこのご時世は嫌だねぇ

pijulが強制されるわけでもなく、今まで通りcrates.ioホスティングがデフォルトだからgithub(git)に依存してないでしょ
個人的には面白いVCSだとは思うけど、率先して採用するプロジェクトはなさそう
2017/06/09(金) 16:17:48.77ID:CZ4YsNdD
cargoのdependenciesにbitbucketのmercurialを書けるようにするissueは、前に見かけた気がする
たしか、やる気がないわけではないけど、使いやすいライブラリが無い的な返答だったような
直にリンクするとGPLになるとか
2017/06/09(金) 17:16:09.17ID:oDUXzovh
vcs指定すると何がいいの?
2017/06/09(金) 20:27:02.60ID:eJzwOC8V
>>177
内輪云々というか、たまたま気が向いた人がPRを送ってきたから受け入れたってだけの話じゃないの?
それを言い出したら標準ライブラリだってredoxサポートのためのコードがたくさんあるし
2017/06/09(金) 21:39:26.49ID:OWaLz7yy
>>181
普通にrepositoryのURI指定でhg://bitbucket.org/hoge/hageみたいにしとけば動いた覚えがあるぞ
githubもgit://github.com/hoge/hageにするし、VCS, 接続サーバを意識してなくないかな

今更subversionやcvsを使う気は無いけど、誰かPR出してみようぜ
rejectされるなりacceptされるなり、どっちに転んでも笑い話だと思う
2017/06/10(土) 04:46:24.86ID:8idv0Ky2
pijul(ピフル)試してみた
・ドキュメント無さすぎ
・パッチのハッシュがクソ長いし、指定時に省略できない
・SSH周りがいろいろおかしい。agent使えないとか
・エラーメッセージが全く役に立たない。コード読んで初めて原因が分かる感じ
・現在のバージョンを特定するタグ、IDのようなものが未実装
・複数ファイルの追加は一つずつ指定する必要がある。ディレクトリ一括とかダメ
・ワーキングディレクトリ内の未追加ファイルを一覧するコマンドが無い。要記憶力
・ワーキングディレクトリ内の状態を一覧するコマンドが無い
・ファイルとして受け取ったパッチの取り込みを行うコマンドが無いので、自分で.pijulディレクトリの中にコピーするらしい

結論:実用にはあと2年は待ちたい。すぐ使いたいならdarcs使え
2017/06/10(土) 08:42:42.56ID:V34f+MUj
>>185
こんなVCSサポートに入れるとかRustが実用考えて作られてないのがようわかるわ。
2017/06/10(土) 10:47:52.24ID:FHASBQwb
pijul対応はpijulの開発者たちがドッグードするためなんじゃないの
pijul自体がpijulで管理されてるからcargoサポートがないと不便そう
2017/06/10(土) 11:06:43.94ID:Ha8NmJTT
何かRustディスることに血道を上げてる粘着がおるな
自分の言葉で批判しようとするとフルボッコにされるから、最近は他人のまともな批判に乗っかってせせこましいレスしかできなくなってるが
>>159とか>>186とか
2017/06/10(土) 11:21:32.40ID:J2O0ntFQ
触れなくていいんすよ
2017/06/10(土) 13:46:58.55ID:AacmqL/b
Cと++は今世紀いっぱいは現役だからな
それ以外は覚える価値なし
2017/06/10(土) 14:23:08.91ID:8idv0Ky2
>>187
取り込まれたPR見れば分かるけど、VCSサポートって言っても、cargo newの後に
自動で pijul init を呼ぶだけの処理しかしてない

Mercurialのサポートとほとんど同じレベルだが、Mercurialの場合は hg init 呼んだ後に
さらに .hgignore ファイルも追加してくれるとこだけが違う
尚、この自動で追加される .hgignore は文法ミスってて使えない
2017/06/10(土) 14:50:16.11ID:8RIzdpJs
もうgitでいいよ
2017/06/10(土) 16:38:35.42ID:V34f+MUj
なんでお前らはこんな文法はゴミクズ、コンパイラはエラーしか吐かない、ライブラリはカス未満の
クソモジラの息がかかってる言語なんてありがたがってるのか本気でわからんのだが
モジラから金もらってる以外の理由あんの?
2017/06/10(土) 16:43:45.87ID:FHASBQwb
>>191
git://みたいにpijul://みたいなプロトコルのサポートも入ったのかと思ってたけど
initだけなら大した話ではないわな
それぐらいならsvnだろうがcvsだろうが
PR出したら簡単に取り込まれそう
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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