1 名前:デフォルトの名無しさん [2017/05/21(日) 14:04:29.55 ID:9L9dm7b/.net] Mozillaがリリースした、プログラミング言語「Rust」について語るスレです。 www.rust-lang.org/ https://github.com/rust-lang/rust Servo https://servo.org/ https://github.com/servo/servo ◆前スレ プログラミング言語 Rust 2 echo.2ch.net/test/read.cgi/tech/1478023960
369 名前:デフォルトの名無しさん [2017/07/29(土) 17:41:05.57 ID:mj0H/MXI.net] >>362 最初から最後までメモリ安全じゃなくてもいいんじゃない? 適材適所で使い分ければ。 マルチスレッド問題はアプリ側に多い問題かなーって。 デバドラ最下層になると、そもそもマルチスレッド要件が無かったり、メモリイメージが生で見える触れる方が融通があって便利だったりするし。 ドメイン境界で考えて、rustを適用する範囲内で潔白なのが重要と思ってる。 この潔白さは、開発者の人数が多いドメイン(アプリ)で、真価を発揮するんじゃないかなと。
370 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 18:00:00.71 ID:SaJE2wIQ.net] racer + flycheck-rust でマクロ補完って無理? println!とかwrite!とか毎回全部打つのがダルい
371 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 18:10:49.31 ID:DIZfrj77.net] >>363 結局cには勝てないのか。 rustってgcがないからメモリイメージを直接いじりやすいのかと思ってたよ。 redoxとかも結局c++に頼ってたりするんかな?
372 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 18:13:03.21 ID:DIZfrj77.net] >>363 あと最初から最後までメモリ安全のほうが良くない? 少なくともメモリ関連のバグを撲滅できるんであればrustの価値はあると思うんだ。 逆にできないならrustの存在意義ってなんだろ。 goは並行処理が言語機能に組み込まれてる。 rustはメモリ安全が売りだと思うんだけど、 そこってなかなか地味な売りな気がして
373 名前:デフォルトの名無しさん [2017/07/29(土) 18:57:22.38 ID:mj0H/MXI.net] >>365 Cに頼る→負けてるって事じゃないと思うけどね。 実際アセンブリ言語はなくならないわけだし。 CPU の高機能化、メモリの大容量化、プログラムの大規模化、があって、開発効率を高めるために、プログラムの大部分がC言語に置き換わったわけじゃん。 で、マルチコア全盛の時代になって、正常稼働面での重大要因としてメモリ安全性が注目されてrustが生まれたのだから、メモリ安全のメリットの大きいところだけrustに置き換わるってのが、普通の流れじゃないのかなーと思うよ。 別にCを駆逐する必要はないしょ。
374 名前:デフォルトの名無しさん [2017/07/29(土) 19:02:32.30 ID:mj0H/MXI.net] >>366 そもそも、ハードに近い層でのメモリ安全性って何?って話だと思うんだ。 で、メモリ安全の話が出てこない領域なのだから、rustの出番が無いって事で良いんじゃない?
375 名前:デフォルトの名無しさん [2017/07/29(土) 19:05:29.70 ID:mj0H/MXI.net] >>361 むしろC++をうまく使うために、rustの意味論(セマンティクス)を勉強して欲しい、って思う。
376 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 19:59:14.72 ID:DIZfrj77.net] goができたのはgoogle社内のc++プロジェクトの置き換えのためだけどrustってどんな動機でできたの?。 まさかブラウザ開発のため?
377 名前:346 mailto:sage [2017/07/29(土) 20:14:02.81 ID:DdYvAide.net] >>347 キャッシュを無効にして毎回警告を出すにはどうしたら良いでしょうか?
378 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 20:22:55.12 ID:OScYBSe+.net] >>369 俺もRustはじめてからC++が少しよく書けるようになりました
379 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 21:18:30.65 ID:ZD4o/AdV.net] >>355 へー、monorepo用だからモノノケとな mercurialをベースに仮想ファイルサーバーにする予定とは、なかなか壮大な計画だ
380 名前:351 mailto:sage [2017/07/29(土) 21:52:24.31 ID:Xgmp5DuD.net] レスありがとうございます >>355 ,358-359 なるほど。やはり並列処理時の安全性を担保する機能なのですね 組み込みでRTOSもどきを作って並列処理させるなんて場合には有効なのかな >>360 構文上罠が多いC/C++の代替となる言語を探していてRustを検討しています なのでC/C++を使わずにC/C++相当のことを行いたいです 警告もエラーも無しに動作だけがおかしいとか勘弁して欲しいです 他にDも検討していますが何となく新しい方が何かと便利かなと思ったり・・・
381 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 03:44:39.97 ID:m1nsIIH9.net] 以前にこのスレであったら良いと言われていたOptionのEntry風APIが実装されて、しかも既にstabilizeされている std: Stabilize `option_entry` feature ・ rust-lang/rust@ee064c3 https://github.com/rust-lang/rust/commit/ee064c380652fb7e40c1620fd74fb1406989d009
382 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 08:00:41.23 ID:eSrcFrA9.net] >やはり並列処理時の安全性を担保する機能なのですね race condition の解消はあくまでもメモリ安全の一部でしかない
383 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 08:02:46.70 ID:eSrcFrA9.net] >
384 名前:他にDも検討していますが何となく新しい方が何かと便利かなと思ったり Dが検討対象に入って、かつ、低水準用途なの? 意味わからんな [] [ここ壊れてます]
385 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 08:03:42.92 ID:NzSybo/S.net] 351からは実際にプログラム組んだことの無い人の気配がプンプンしてる。
386 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 11:40:03.02 ID:sZ4wntzb.net] cargo check のメッセージが加工しづらい https://github.com/rust-lang/rust/issues/42653これ追加されて欲しい
387 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 16:21:42.29 ID:vygP638r.net] たぶんnode.js育ちの人だと思うけど、実質1行ないし3行で完結してるクレートが出てきてるね
388 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 17:42:42.26 ID:cNiju5gN.net] clippyインストールできないclippyインストールできないclippyインストールできない clippyインストールできないclippyインストールできないclippyインストールできない clippyインストールできないclippyインストールできないclippyインストールできない 修正したコミットがが日曜の夜にコミットするって作者が言ってるけど遅すぎ 👀 Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
389 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 19:43:29.15 ID:IhAKIxVt.net] CランタイムをスタティックリンクしたくてRUSTFLAGSに以下のフラグを設定しています。 RUSTFLAGS='-C target-feature=+crt-static' これを環境変数で設定するのではなくCargo.tomlで指定するにはどうすればいいんでしょうか? doc.crates.io/config.html を参考に下のように書いてみたのですが効いてないようでした。 [build] rustflags = ["-C target-feature=+crt-static"] オプションの書き方が違っているんですかね?
390 名前:デフォルトの名無しさん [2017/07/30(日) 19:51:11.45 ID:m1nsIIH9.net] ["-C", "target-feature=+crt-static"] でどうかしら
391 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 20:00:04.61 ID:IhAKIxVt.net] うーん、このへん試してみたんですけどだめなんですよね。 ["-C", "target-feature=+crt-static"] ["target-feature", "+crt-static"]
392 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 22:39:37.27 ID:KR/rniwV.net] >>381 一時的に古いnightly使えば良いのでは
393 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 23:38:44.64 ID:dsY+op8E.net] まだruct学んで2日目だけど これパッケージ入れる時のコンパイルが長いね 補完強化のためにracer入れようとしたらsyntax_syntaxから全然進まなくてCTRL+C押しちゃったよ 基本的なものを覚えるだけならパッケージなんて入れなくても良さそうだけど ステップアップしたときにそれなりのスペックのPC持ってないと学習するのが厳しい言語って感じ
394 名前:351 mailto:sage [2017/07/31(月) 01:33:05.73 ID:0NH1HYUL.net] >>377 C/C++より判りやすく罠が少なくC/C++で出来ることは全て出来る言語を探しています >>378 ネイティブに動くプログラムで一番経験があるのはアセンブラ(組み込み)です C/C++はなんの警告もなくメモリがぶっ壊れるし、どこが壊しているのかも判りにくいし 苦手です
395 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 09:17:51.12 ID:nR0sqwYk.net] アセンブラは型がないぶんさらにメモリ壊しやすいと思うが
396 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 13:44:43.25 ID:luO5NyKL.net] ライフタイムもコンパイル時に検査してライフタイムの外側からアクセスする処理もコンパイルエラーにするって これって結局 全部ローカル変数になるってこと? プログラム全体を通してアクセスする変数はmain関数で用意したローカル変数だからmain関数を抜けたあとは全部開放しちゃうからメモリリークも起きない? cとかでもやろうと思えばできるって事? cでmallocとかfreeを使わず、 全部変数定義してつかえばrustと同じ?
397 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 16:54:10.50 ID:RkZnFpRc.net] メモリに限らずリソース確保全般を行わないプログラムって何ができるのか 可変サイズの入力を受け取るならmallocがほ
398 名前:ぼ必須じゃない? 1行MAX_LENGTH文字までのテキストしか処理しないとか? [] [ここ壊れてます]
399 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 17:16:32.22 ID:CRPdTSOK.net] rustってどんな分野に向いてるのかいまいちわからないんだけど webに使うのはおすすめできる?
400 名前:351 mailto:sage [2017/07/31(月) 19:18:45.74 ID:S3S/4XWd.net] C/C++は言語仕様的にメモリの破壊を誘発しやすいと思っているんだけどそう思うのは自分だけなのだろうか >>388 プロジェクトやプログラムの規模という要素もあるけどメモリを自由に管理できるアセンブラの方が見通しが良く メモリ破壊に関するリスクも制御しやすいと思う。人間が理解しやすいように並べることも出来るし もしメモリを壊した時もC/C++より何が起きるかを予測しやすいと思う 個人的にはメモリアクセスの規約を登録できてコンパイル時にそれをチェックしてくれると嬉しいんだけどな
401 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 19:24:58.57 ID:nTqL7k1O.net] アセンブリ的な観点でCの挙動が予想できないと言っているようならRustなんて余計に抽象的で分かりづらいと思うのだが Volatile関連の制御とかだって面倒なだけだし
402 名前:351 mailto:sage [2017/07/31(月) 21:28:38.42 ID:S3S/4XWd.net] >>393 C/C++はメモリマップを意識しないと安全を確保できないけど、マッピングするのはコンパイラでありリンカでありOS そのような状態で想定しないメモリアクセスが起きた時の挙動を予想することは自分には出来ないです C/C++でバリバリ書いている人はこの程度出来て当たり前なのかな
403 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 22:26:49.07 ID:nR0sqwYk.net] C/C++というレベルじゃなくて LinuxのABIやldのリンカスクリプトがわからんレベルの人と予想
404 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 18:09:39.02 ID:TrH0Acv/.net] >>391 いわゆるWebアプリを書く言語としてはおすすめしない。
405 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 18:17:25.28 ID:TrH0Acv/.net] >>392 C/C++に慣れていないだけでは。 もしくは動的なメモリ確保を想定していないとか。
406 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 18:21:43.31 ID:TrH0Acv/.net] >>394 (わりと一般的な)OS上で動かす限り、アセンブリ言語で書いても リンカとローダが介在することには変わりないと思うけど。
407 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 18:52:10.83 ID:8J/offgv.net] >>351 はOS無しと言っている
408 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 19:26:38.99 ID:A6tuVNB3.net] >>351 OSなしアセンブラを必要とする層で使える汎用高級言語を探してるならRustは適さないからお帰り そういう言語が存在する気はしないけど夢追い人っぽいから応援はしてるよ
409 名前:351 mailto:sage [2017/08/01(火) 19:28:04.99 ID:ascdikyg.net] 新しめのプログラミング言語は十中八九メモリの安全を謳っているけどこれってC/C++でメモリの破壊や メモリアクセス違反を多発させる事例が多いからと思っているけど違うのかな これらの低減を目的にC/C++の代替言語としてRustやDなどを検討するっておかしな事なのだろうか
410 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 21:16:08.18 ID:PIQ133u2.net] >>400 まじかーgcがないってOS無しで動かせる唯一の言語だと思ってたから残念 例えばESP8266とかESP32で使えたらいいとか思ってたよ。 webが利用用途じゃないって残念すぎるな。 そうするとrust使ってる層って仕事でc++を使ってる組み込み関係の層が 趣味的に触る言語ってことかな。
411 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 22:02:02.77 ID:A6tuVNB3.net] お前の中ではGC有無とOS要否は直結するのか(驚愕 ESPがどういうチップセット構成なのか知らんけど ARM CPUならクロスコンパイルして動かせるんじゃね 多分、同じ程度の努力でGC載ってるGoも動くと思うけど
412 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 22:04:43.31 ID:H6BRQUwS.net] cargo checkすると warning: the option `Z` is unstable というメッセージが出るそうなんですがこのメッセージを出す方法を教えて頂けませんか?
413 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 22:04:54.04 ID:8J/offgv.net] Webに関してはそれなりに精力的に開発されているから将来的には使い物になる可能性もある crates.ioとかだってRust製だしね
414 名前:351 mailto:sage [2017/08/01(火) 22:43:53.38 ID:ncmaIafS.net] >>402 ググるとラズパイ(タダのLinuxだが)向けコードをRustで書いてみたとか、プレステ1用のコードをRustで書いてみた とか出てくるんだよね。自分が組み込みに使えるんじゃないかと思ったのもその辺が目にとまったから 昔よりかなり良くなっているとは言え汎用機と比べるとデバッグ手段は限定されるし、コンパイル時にコードの妥当性が ある程度保たれるというのはメリットだと思う 組み込みで「どこかのメモリを壊しているようだが皆目見当が付かない」なんて事態は可能な限り回避したいしね
415 名前:デフォルトの名無しさん [2017/08/02(水) 00:38:23.97 ID:Oyyz61S9.net] >>400 いや、そういう用途向けでしょ。 実際にOSの実装に用いられてるし。
416 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 00:46:25.26 ID:9o+N0qJU.net] 上の人はOSを書こうとしているんじゃなくてOS無しのままコードを書くつもりなんでないの? 言い換えると、extern crate coreすら出来ないやつ
417 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 01:03:22.66 ID:OoZ5R2Ag.net] なんか勘違いしてる人がいるね Rustが強いのは「ちゃんとラップしてあげれば」どんな環境でも「安全に」動かせること 例えばとあるレジスタを触っているときに他のレジスタを触れないようにするとかも(場合によってはコンパイルエラーのレベルで)できる ただこのラップするっていうのが一番面倒で、そこで安全を担保できなければ=unsafe祭りならむしろCのが楽とも言える ちょっとググったらArduinoでRustを動かすためのライブラリもあるからその辺り参考にすると良さそう >>408 OS書くのもOS無しで書くのも変わらないと思うんだけど、coreを含められないってどういう状況? libcoreは何にも依存してないからそんな状況ありえないと思ってた
418 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 01:08:41.51 ID:CN84q205.net] アセンブリ君
419 名前:351 mailto:sage [2017/08/02(水) 01:16:10.65 ID:Qb6MNIfM.net] あー・・・何となく判ってきた。組み込みでそのようなコードを書くのか判っている人からレスが付いていたのか
420 名前:デフォルトの名無しさん [2017/08/02(水) 01:21:03.63 ID:E8GFzbft.net] >>396 >>405 今は使い物にならないって事? 向いてると思って趣味のWEBアプリに採用したけどやめたほうがいいのかな Golangは古臭すぎて使う気起きないし 正直速度はどうでもいいけど構文が好き
421 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 01:21:20.56 ID:Hth04IJp.net] coreだって何にも依存しないというわけではない、けれどそれは自分で用意すれば良いしね rust_begin_panicとかをどうやって用意するのかは知らないけど
422 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 01:22:27.24 ID:/y5AMSWR.net] RustでもOS書けるでしょ (もちろんCと同じく最低限のアセンブラはいるが) ぐぐればいろいろ見つかるぞ
423 名前:351 mailto:sage [2017/08/02(水) 01:38:12.16 ID:Qb6MNIfM.net] >>411 ミスった。訂正 × 組み込みでそのようなコードを書くのか判っている人 ○ 組み込みでどのようなコードを書くのか判っていない人 >>409 >例えばとあるレジスタを触っているときに他のレジスタを触れないようにするとかも(場合によってはコンパイルエラーのレベルで)できる そういう話を聞きたかった。レジスタの操作順までコンパイラレベルで面倒を見てくれたらありがたいと思う xに値を書き込む時はyのnビットを1にしてからxへ書き込むとかあるしな。その定義を作る気力があるかはともかくとして >そこで安全を担保できなければ=unsafe祭りならむしろCのが楽とも言える ペリフェラルレジスタだけunsafeにしてすればと思ったけどそう単純な話ではないのかな もちろん入力値のチェックは必要になるだろうけど
424 名前:デフォルトの名無しさん [2017/08/02(水) 02:29:19.43 ID:OoZ5R2Ag.net] >>413 確かにmemcpyとかあるね、忘れてた まあこの辺りはCでも間違いなく自分で書くとこなので大したコストじゃないね > rust_begin_panic 組み込みならシリアルにでもログ出して無限ループとかが普通かな? こういうのはOS系のプロジェクトがとても参考になる >>415 > その定義を作る気力があるかはともかくとして 実行時チェックなら多少楽になるだろうしそこは(精神的)コストとの相談だね > ペリフェラルレジスタだけunsafeにしてすればと思ったけどそう単純な話ではないのかな 個人的にはunsafe使い始めると至る所で使うようになっちゃうのでお勧めしない Rustの思想的にも未定義の挙動を許すunsafeはできるだけ避けるべきだしね そんなの気にせずチェックしたいとこだけチェックさせるLint的な使い方もありっちゃあり
425 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 07:02:07.94 ID:nq2BG13A.net] redoxのアセンブラで書いてる所すらもrust(高級言語)で書きたいって夢を語ってるんじゃないの? 結局何がしたいのか分からんな・・・ そこについては諦めているなら既に実用化されているし そこを追っているならチップ毎のクロスコンパイラ作りを頑張れとしか言いようがねぇよ
426 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 08:11:06.98 ID:Oyyz61S9.net] >>415 レジスタまで意識する用途なら、高級言語を使わないのが正解では > xに値を書き込む時はyのnビットを1にしてからxへ書き込むとかあるしな。 それこそボード固有の話になるので。 高級言語でやるとしたら機能レベルで関数化して中身はインラインアセンブリで頑張るとか。 何れにせよ言語レベルで対応する話ではないな。
427 名前:デフォルトの名無しさん [2017/08/02(水) 10:50:44.07 ID:AyM7Pnm7.net] >>412 >向いてると思って趣味のWEBアプリに採用した やってみたら良いと思う。 仮にミスマッチだったとしても、過程や結果を公開すれば、色んな人の役に立つ。
428 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 12:12:53.41 ID:m0LDca1I.net] rustっていまのところ 何にも向いてないということか。 golangみたいにgoといえば並列処理!みたいなウリがないとなかなか厳しいな。 とりあえずwebはgoでいいや。
429 名前:デフォルトの名無しさん [2017/08/02(水) 12:21:18.09 ID:E8GFzbft.net] >>419 webアプリ作るならunsafe必須とか? cもc++も触った事ないからunsafeだけは無理なんだけど…
430 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 12:56:49.05 ID:qhSfUKHc.net] 変なチューニングに走らない限りはunsafeは不要 ただしRailsでいうところのDoorkeeperやPaperclipみたいな便利ツールが少ないからそのあたりは自力でどうにかする必要がある あと、現状で主要なフレームワークはみんなsynchronous。ただしRocketはそう遠くない将来にasync対応しそう。Ironはそもそもやる気があるのか分からん
431 名前:デフォルトの名無しさん [2017/08/02(水) 15:19:15.45 ID:E8GFzbft.net] >>422 unsafeは不要なのか、よかった Railsは使ったことないから分からない 今まではNode.jsでexpress使ってたからそのまで分厚いフレームワークは使ったことない rustってイベントループじゃなくてスレッドだよね?10K問題はどうなの?
432 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 16:38:11.64 ID:I334RkfN.net] goでいいや、という人はまさにgoでよいのでは。 goではいやだ、という人むけ。
433 名前:デフォルトの名無しさん [2017/08/02(水) 16:42:18.62 ID:E8GFzbft.net] goとかいうmapもnull安全もないうんこは絶対NG
434 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 17:58:49.69 ID:m0LDca1I.net] goが嫌だと言うなら kotlinという選択肢もある。 これだとアンドロイドアプリももれなく使えるようになるし、 null安全だし。 何よりideが既にある
435 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 18:06:51.08 ID:5BVbLnR+.net] 過疎だからいいけどrustの話しようぜ
436 名前:デフォルトの名無しさん [2017/08/02(水) 18:07:43.92 ID:E8GFzbft.net] kotlinもscalaもjvm言語だからあまりnull安全じゃない
437 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 19:54:07.78 ID:7vYFqN5x.net] rustはno_coreにしてベアメタルでリージョンにメモリ管理やってもらうだけに全振りすればいいよ! え?ヒープ使いたい?rustc_privateでalloc系をだな。 アセンブリもcpu毎にアセンブラ用意するのが面倒くさいからrustのinline asm使おうぜ。 >>404 そのまんま。 cargo checkはZオプション付けてるだけだから「Zオプションは安定してないから注意しろよ」ということ。 >>428 言ってる意味がわからない。
438 名前:351 mailto:sage [2017/08/02(水) 20:02:49.43 ID:5dN3nnfV.net] >>416 unsafeを使わないと任意のアドレスを読み書きできない(=レジスタにアクセス出来ない)と思っていたけど他の手があるのか
439 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 20:28:52.05 ID:xy+LcKRk.net] 本格的にOS無しの世界に入ったことが無いから適当だけど、関数型プログラミングの道具が使える、とか?>Rustのメリット 代数的データ型とかラムダ式orクロージャが簡単に扱えるとか。 趣旨から外れるけど、Cの世界に入れるのと同じような感じでRustの世界に入ることができるのも個人的には良いと思ってる
440 名前:デフォルトの名無しさん [2017/08/02(水) 20:31:53.85 ID:E8GFzbft.net] >>429 javaのライブラリ使える代わりにjavaライブラリはnull安全じゃないよって事
441 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 20:54:36.60 ID:Hth04IJp.net] >>429 >cargo checkはZオプション付けてるだけ 補足するなら、これは非標準のcargo-checkサブコマンドの挙動であって、 標準のcargo checkは--emit metadataを使っているから警告は出ない
442 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 21:09:38.43 ID:FxAsS3hN.net] >>429 >>433 普通に使ってれば表示されないメッセージなんですね cargo checkが出力するエラーや警告などをもう少し調べたいんですけど これってどこに乗ってるんでしょうか? cargoのリポジトリクローンしてから適当なエラーでgrepしてもヒットしないんです
443 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 22:00:58.19 ID:7vYFqN5x.net] >>432 VMじゃなくてライブラリの話ね。 ceylonみたいなjavaとのシームレスな通信を捨ててるJVM言語はどうだろうか? >>434 cargo-checkっていうthaad partyのサブコマンドがあるんだけど、 後にcargo自身に全く同じサブコマンド名でちょっと違うコマンドが追加されたの。 だからcargo-checkの方つかってるはず。 `cargo install --list`してみ。 ttps://github.com/rsolomo/cargo-check
444 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 22:13:46.45 ID:h6wu2BXI.net] 物騒なpartyのサブコマンドだな
445 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 22:28:55.57 ID:Hth04IJp.net] THAAD partyワロタ
446 名前:デフォルトの名無しさん [2017/08/03(木) 00:45:37.29 ID:InlYWDxN.net] >>430 unsafeを使わないとできないってのはその通りだけど > もちろん入力値のチェックは必要になるだろうけど って処理を含めた関数を作ってunsafeな部分を支配下に含めることでunsafeでない処理にするってことが言いたかった 例えるとmallocの戻り値チェックを入れてOption<&mut T>を返す関数を作ってラップすることでunsafeでなくするって感じ これを面倒くさがるとぬるぽに遭遇するがちゃんとラップすればガッが「一切」必要なくなるわけだ でも今度はfreeしてない問題が発生するからスマポ作って・・・と徐々に面倒くさくなってきて > コストとの相談 >>431 ライフタイムとか借用とかの安全機能抜きにしてもパターンマッチとか他の言語機能で見てもRustは魅力的だよな ・・・まずい、mainにunsafe付けてBetter CとしてRustを使う世界もありな気がしてきたぞ
447 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 04:52:30.89 ID:dQPpbAHc.net] Java の参照は、Nullable だから、 Kotlin で扱う場合、すべて、Nullable にすると面倒 そこで、Kotlin では、Platform Type (下の3) と言うものを作った String 変数型に、Null 代入時、 1. String で、実行時に、IllegalStateException 2. String? で、Nullable だからOK 3. 型を省略(String!) で、実行時に、デリファレンスでヌルポ
448 名前:1. は、インスタンスにアクセスする前に、代入時にエラー。 3. は、1よりひどく、インスタンスにアクセスして、ヌルポ [] [ここ壊れてます]
449 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 07:06:29.97 ID:l/KHeBEE.net] Kotlin信者が必死だなw JVM要する時点で組み込み/低レイヤーに向かねーんだよ、土俵が別次元だ馬鹿 Android ARTはJVMじゃない?そのランタイムサイズ、Rustのランタイムサイズの何倍になってるのか分かってんの?
450 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 08:03:17.08 ID:eYqeDR4x.net] スレチ削除申請頼む
451 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 08:29:31.88 ID:hrCRy9t8.net] 組み込みスレ?
452 名前:デフォルトの名無しさん [2017/08/03(木) 08:39:41.14 ID:563u4f2I.net] >>441 いちいちスレチだけでレス削除してくれるほど運営も暇じゃねーよ 板違いのスレも最近は「落ちるまで放置してね」の方針なのに
453 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 10:32:34.73 ID:TRkbUvPZ.net] rust 1.21.0使ってますが英語苦手なので日本語ページ見てます https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/if.html このページの一番最後 「else のない if では、その値は常に () となります」とあるので let x = 0; let y = if x == 1 { 1 }; println!("{}", y); って書いたんですけどbuildしてもエラーになります error[E0317]: if may be missing an else clause ()になりませんどうしてですか?
454 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 10:33:20.99 ID:WxFDmNeE.net] >>440 ちなみにkotlin/native 開発中だからそれでrustと同じ土俵に立てるよ。 llvmの中間コード吐けるようになる。 rustより学習コストは低くて関数型チックな言語構文使ってるから kotlin vs rustが勃発するな。 問題はandroid開発者を取り込めるからユーザー数は圧倒的 IDEも標準が存在する。 という点で色々rustは不利。 rustはwebAssenbryあたりで本領発揮できればいいんだけど。
455 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 10:35:36.32 ID:WxFDmNeE.net] >>444 エラーメッセージ観るとelse節がないって怒ってるね yに代入するんだからelseないと値が不定になるでしょ
456 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 10:39:45.44 ID:WxFDmNeE.net] >>444 ごめんちゃんと読んでなかった fn main() { let x = 5; let y = if x == 5 { () }; println!("{:?}",y) } これだと動くよね。型を() に統一しないとダメなんじゃない
457 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 10:52:53.58 ID:TRkbUvPZ.net] >>447 なるほどそういうことですか 省略しないほうがいいですね ありがとうございました
458 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 16:58:16.30 ID:cu622efE.net] IntelliJ Rustプラグインが、(IDEの)公式プラグイン化した ついでにちょっとおせっかいな表示も始めた 関数呼び出し部分に仮引数名を補完表示とか、省略された型宣言を補完表示とか
459 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 22:02:43.27 ID:l/KHeBEE.net] 有料化しなきゃどうでもいいかな
460 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 22:11:43.17 ID:ztpCIQ/J.net] JetBrainsが開発に参加しているというだけでもそれなりに心強い
461 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 09:17:26.55 ID:plGTqVJg.net] あのプラグインの作者、前にPR出したらクッソ丁寧なダメ出ししてくれた PRコメントの数倍のレスが返ってきてビビったわ 引き続きコミュニティベースで発展するといいのう、MozillaもJetBrainsもあんま要らんことするでないぞ
462 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 11:05:40.90 ID:ZGf6UrbU.net] >>452 個人的には language server protocolをちゃんと
463 名前:用意してくれたほうが幸せ。 vscodeで使いたいんで。 http://qiita.com/atsushieno/items/ce31df9bd88e98eec5c4 https://github.com/rust-lang-nursery/rls [] [ここ壊れてます]
464 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 22:55:37.21 ID:KlM1Xeqg.net] >>444 ,446,447,448 型が一致してないからや。 if式のelse句省略して戻り値の型にunitが推論されるのに thenの方の戻り値の型がunit以外になるからエラーになる。 たぶん、rustc --explain 0317すればクソ丁寧に教えてくれる
465 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 02:43:30.26 ID:WbpcX2VW.net] Windows用のtar.gzを落としてきて適当に解凍 .\rust\binへパスを張って >rustc hello.rs error[E0463]: can't find crate for `std` error: aborting due to previous error(s) > えぇぇー・・・・w .\rustcの中を見てもライブラリらしき物が見あたらないのでどこにいるのかと探したら .\rust-std-i686-pc-windows-msvcの下にいた。.\rustc\libの下に移動したらコンパイルは 通ったがリンカがないと怒り出す 面倒なのでVC++のコマンドプロンプトからパスを張ってようやくコンパイル&リンクに成功 無事に実行出来た というか実行ファイルがかなりでかいな。100KBくらいある。全部込みじゃしゃーないか あと-vや-C link-args=が無視されているように見える
466 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 02:47:41.52 ID:Q+GU1zzP.net] そもそも今日日tar.gzなんてどこから落としてきたんだっていう
467 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 03:11:33.75 ID:WbpcX2VW.net] 他のインストール方法ー→スタンドアロンなインストーラーにビルド済みを固めたtar.gzがある
468 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 07:15:49.71 ID:49wfyY1x.net] 何らかの信念があって、rustupを避けてるわけ?
469 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 16:01:00.22 ID:WbpcX2VW.net] オンラインによるインストールは可能な限り避けるようにしている。あとで環境の再現が必要になった時に詰む可能性がある