17/05/21 14:04:29.55 9L9dm7b/.net
Mozillaがリリースした、プログラミング言語「Rust」について語るスレです。
URLリンク(www.rust-lang.org)
URLリンク(github.com)
Servo
URLリンク(servo.org)
URLリンク(github.com)
◆前スレ
プログラミング言語 Rust 2
スレリンク(tech板)
2:デフォルトの名無しさん
17/05/21 14:09:00.98 hU2RwKDa.net
おつ
3:デフォルトの名無しさん
17/05/21 15:12:44.23 2E7Z41P0.net
s:
4:デフォルトの名無しさん
17/05/21 15:16:07.66 cLRuMlqp.net
self.thank(1);
5:デフォルトの名無しさん
17/05/21 23:18:14.90 rlx7fyr1.net
いつの間にか、公式サイトが日本語で表示されるようになっとる!
6:デフォルトの名無しさん
17/05/23 15:31:11.02 NL1m8GyN.net
日本語だと特に「システムプログラミング言語」って何かバズワード臭く聞こえるなあ
7:デフォルトの名無しさん
17/05/23 17:17:58.00 XcuL8oqn.net
そらRust自体が元々が言語としてまともに機能してない欠陥品なんだからバズワード頼りになるのは当然よ
8:デフォルトの名無しさん
17/05/23 18:18:14.39 fz0kg0Hd.net
>>7
プログラミング言語いくつか知ってれば他の言語なんて多少解説読むだけですぐ理解できるぜ、みたいなのをぶち壊してくる言語よね
慣れれば生産性が高いのは分かるけど、チーム開発にはとても適用できない……
9:デフォルトの名無しさん
17/05/23 19:11:09.91 1Q8iu32F.net
C++ std::unique_ptrを使い倒してればすぐ理解できるぜ?(白目
事細かなエコシステムや凶悪なボローチェッカは慣れたら愛すべき馬鹿として愛せるけど、他人に勧めるものじゃないよな
まぁRustじゃないといけないケースってのは少ないから、好事家の中で流行ってれば良いと思って使ってる
10:デフォルトの名無しさん
17/05/23 20:03:50.20 n1SS9OPs.net
俺はコーディング規約でガチガチにしないと使えないC++よりチーム開発に向いてると思うけど。
11:デフォルトの名無しさん
17/05/23 20:09:42.82 tcrYM/HP.net
コンパイルが通らない時に、相談できる人がチームに居ればね
12:デフォルトの名無しさん
17/05/23 20:44:41.89 XgxPLO7Q.net
alexcrichton、いつもissueのopen/closeの操作をミスりまくってて笑う
13:デフォルトの名無しさん
17/05/23 21:52:49.96 sJY6yDAU.net
Rustをある程度緩く使えるライブラリ…
Rust使う意味あるか?
14:デフォルトの名無しさん
17/05/24 00:09:41.07 8Z1z+g0P.net
Rustのborrow checkerに勝てるレベルのやつはそもそもRustなんて使わずにC++使ってりゃいいしな。
15:デフォルトの名無しさん
17/05/24 00:22:10.07 6yksy5B1.net
いや、気を使うの面倒だからborrow checkerに任せたいわw
どうせC++でもValgrindなりそれに類するツールでチェックするわけだし、言語仕様で縛ってくれるのは楽だ
16:デフォルトの名無しさん
17/05/24 00:37:53.57 D5tT9Iz6.net
C++でチーム開発したことないやつもいそうだしな。
C++から来たやつと、関数型とかから来たやつで感想も違うみたいだし
17:デフォルトの名無しさん
17/05/24 00:50:41.45 pRDkrxzx.net
If it compiles, it worksが概ね成立するのは魅力だよな
18:デフォルトの名無しさん
17/05/24 06:11:06.95 +DimD/vP.net
tokioが代表だけど、tokeiとかhayakuとか、謎日本語名crateが幾つか有るのは
中二病開発者が多いから?
19:デフォルトの名無しさん
17/05/24 09:10:30.78 Sn2/MSJK.net
外人の日本語タトゥー的な…
hayakuは「端役」にも読めるが
20:デフォルトの名無しさん
17/05/24 10:35:29.34 MMUszNj4.net
>>18
Rust使ってるクズなんて中二病患者とモジカス工作員だけなんだから妥当だろ。
21:デフォルトの名無しさん
17/05/24 13:06:58.00 1nGlF3E4.net
メンヘラは特定の言葉に執着があるからNGしやすい。
22:デフォルトの名無しさん
17/05/24 20:37:17.74 pRDkrxzx.net
kuchikiなんてのもあるな
あとコミッターに@BurntSushiとか@mitsuhikoみたいなのがいる
@briansmithはアイコンが「ス」だし
23:デフォルトの名無しさん
17/05/24 20:56:34.76 +DimD/vP.net
ところで、Boxをboxキーワードにする件はどうなったん?
24:デフォルトの名無しさん
17/05/24 21:30:26.80 FIIUGQKl.net
そんなどうでもいいことよりクロージャがまともに使えない問題とトレイト境界の問題(これら結構重なる部分あるけど)はいつ解決するの?
25:デフォルトの名無しさん
17/05/26 08:01:17.73 1zFjO363.net
昨日のRust入門者の集いは、50人ぐらい集まったのか
少し前のScalaぐらいの盛り上がりある?
26:デフォルトの名無しさん
17/05/26 10:35:47.30 f/19a4oq.net
やっぱ本当に入門したいやつは勝手にずかずか入ってくるよなー
27:デフォルトの名無しさん
17/05/26 10:36:07.10 f/19a4oq.net
わざわざ集まって入ることない
28:デフォルトの名無しさん
17/05/26 11:11:47.24 lITgTAs
29:g.net
30:デフォルトの名無しさん
17/05/26 11:40:08.52 PvbJKgcc.net
こいつ同じことずっと言ってんな。糖質はしつこい。
31:デフォルトの名無しさん
17/05/26 11:41:35.93 lITgTAsg.net
>>29
Rustなんてありがたがる信者に糖質言われるならむしろ本望だな。
32:デフォルトの名無しさん
17/05/26 11:50:37.94 lITgTAsg.net
少なくとも俺が、Rustはまともに物がつくれないコンセプト崩壊の欠陥言語、っていってることについて、このスレの住民はなんら答を出していない。
ベンチマークの結果が良いとか悪いとか以前にまともにコードが書けない言語のどこがC++の後継言語だ?
C++で書いたバグのないコード(Valgrindチェック済み)をRustに移植してもコンパイルが通らないって時点でお察しなんだよ。
33:デフォルトの名無しさん
17/05/26 11:53:07.95 fYEpqUiH.net
そしてこの顔真っ赤である
34:デフォルトの名無しさん
17/05/26 12:02:24.21 xRlJL6be.net
だって、このスレにいる奴はRustコードが書けるから答えも何もないし・・・
なんでこんなに長いこと必死にRust否定を続けてるのか分からんかったけど
自分がRustコードが書けなくて、第二のコードが書けなくて傷つく奴が出ないように、という正義感からだったのか
プログラミング言語の学習コストなんてあってないようなものだ、みたいなプライドを打ち砕かれた可哀想な子なんだな
35:あ
17/05/26 12:08:45.87 uOeVRBLK.net
>>31
cppで書いたコードはcppで使えばいいのでは?
俺が書いたcのコードは、'a'bつけたのと、ポインタインクリメントやめたくらいで割と素直に移植できたけど。
バグが無いってのは、今まで俺事故ったことねえって言う奴くらい、どう正しいか証明するの大変な事だよ。
そういえば、valgrind、スタック変数の境界チェックできるようになったの?
36:デフォルトの名無しさん
17/05/26 12:30:25.06 8eg+gckK.net
>>34
experimentalだがSGCheckが使えるな。
37:あ
17/05/26 13:22:40.22 uOeVRBLK.net
>>35
おお、そうなのか。
ちゃんと動けばそこそこ良さそうと思ってたし、見てみようかな。
クソ遅いのももう少しマシになってくれてれば良いんだが…。あれも知らんだけなのかな。
38:デフォルトの名無しさん
17/05/26 19:23:44.69 JcK0B0rB.net
キチガイにもやさしいここの住民好き
39:デフォルトの名無しさん
17/05/27 02:31:59.03 SSsXXMTN.net
公式HPでシステムプログラミング言語、って書いてあるのが読めないで、なんちゃってアプリ作ろうとしたんじゃないかな?
40:デフォルトの名無しさん
17/05/27 02:59:10.15 CDShuPAP.net
結構、Webアプリを作ろうとしてる人が多い感
41:デフォルトの名無しさん
17/05/27 03:03:11.16 lxNSMSh+.net
サーバーサイドRustとか素敵やん
42:デフォルトの名無しさん
17/05/27 06:03:06.96 2NZ16S+U.net
web系だとライブラリのマッシュアップって感じが普通だからライブラリ不足が不満になるのかな。
43:デフォルトの名無しさん
17/05/27 06:48:55.16 3w92Yrys.net
それ以前に、コンパイルの通るコードが書けなくて挫折してるんでしょ
サーバフロントエンドのマッシュアップだとHTTP I/Fで特に支障は出ないと思うぞ
バックエンドだとライブラリ側がC I/Fが提供してるならさほど面倒はなかった
44:デフォルトの名無しさん
17/05/27 06:55
45::11.90 ID:41DJlv/7.net
46:デフォルトの名無しさん
17/05/27 09:42:53.30 CDShuPAP.net
JavaScriptしか知りませんって人が入門してるらしいけど、全員投げ出すと思うわ。
C/C++経験者しか残らんだろう。
47:デフォルトの名無しさん
17/05/27 10:07:55.57 2NZ16S+U.net
第二言語がRustだったら絶望するよな
第5言語くらいじゃないと
48:デフォルトの名無しさん
17/05/27 10:09:10.22 2NZ16S+U.net
>>43
C++に不満なときこれで置き換える。
ネットワーク系だったらGoのがいいかも。
49:デフォルトの名無しさん
17/05/27 10:11:29.38 mjlYjLQ6.net
guiアプリ作る時はrust的にはやっぱxul使うの?
50:デフォルトの名無しさん
17/05/27 10:15:34.31 CDShuPAP.net
PHPerをScalaに大ジャンプさせようとして大やけどしたチャットワークの悲劇に学ぶべき。
51:デフォルトの名無しさん
17/05/27 10:45:11.15 41DJlv/7.net
>>46
なるほどー
RubyとかPythonのC拡張の部分をRustで置き換えたりあるいは機械学習や分散処理らへんでRustが有用にはならないだろうか
52:デフォルトの名無しさん
17/05/27 11:04:04.64 1jZ1Mh3o.net
GUIと言えば、GTKの中の人がRustに乗り気で、既に一部置換が始まってるというのが面白い
53:デフォルトの名無しさん
17/05/27 12:44:23.89 SP+5JLSB.net
Valgrindといっても、あれが扱えるのはメモリ関連だけで一般のuse-after-freeは対処できるわけではないよなあ
例えば`hyper::server::response::Response`のようないわゆるsession type(URLリンク(deterministic.space))も、
ownershipのおかげで安全性を静的に保証できている
54:デフォルトの名無しさん
17/05/27 13:58:45.99 V3R8pPgP.net
お前らってRust以外に何の言語を使ってるの?
55:デフォルトの名無しさん
17/05/27 14:32:09.69 Nnf9Y/EU.net
>>52
C++, python
むかしLisp
かじったのはruby, java , javascript, objective-c
56:デフォルトの名無しさん
17/05/27 15:51:40.38 gV6nh4ij.net
>>43
OSとかミドルウェアとかそういうの向け。あと組み込み。
ネイティブの速度が必要だけど、CとかC++やって苦労した人向け。
57:デフォルトの名無しさん
17/05/27 17:16:38.79 3w92Yrys.net
C/C++で苦労した人は更に苦労すると思う(名推理
前スレで上がってたベンチマーク、C/C++勢がキレて追い抜いてるかと思ったけど更新されずなのな
URLリンク(benchmarksgame.alioth.debian.org)
流行ってるベンチマークでもないから別にそれ自体はおかしくないんだけど
他のRustで最適化されてないヤツはどうなのよと実装し直してみたら普通にトップスコアが出るな
この程度の簡易な処理だと性能良い言語だなぁと見直した、実用時に活かせるかは別問題だけど
58:デフォルトの名無しさん
17/05/27 17:37:25.20 2NZ16S+U.net
>>55
同程度のエキスパートのチームだとして、やっぱC++より苦労するかなぁ?
59:デフォルトの名無しさん
17/05/27 21:36:50.13 0kaExwmN.net
ベンチマークの順位はそこまで気にならないが、そこのコードでrayonとfutures使っているのを見て触らないとと思った
60:デフォルトの名無しさん
17/05/28 01:37:36.40 CAN6hjyr.net
>>52
Java,C/C++,C#
政治的、宗教的な意味�
61:№「はなく只で使えるものを探していた結果
62:デフォルトの名無しさん
17/05/28 02:34:25.88 /SKdZHom.net
>>52
C、Ruby
それと使い込んではいないけどJava、JavaScript、Common Lisp
63:デフォルトの名無しさん
17/05/28 19:51:05.68 vySQPNuk.net
焼寿司さんが日本語ツイートにリプ付けてるの見かけたけど、日本語分かるんかな?
Google翻訳かな
64:デフォルトの名無しさん
17/05/28 22:41:06.63 9sPyoVkk.net
>>55
一番上のjavaがまだ最適化の余地があるのが気になる
けどガシガシ書きたくないからあんなもんだろうな。
65:デフォルトの名無しさん
17/05/29 08:05:31.35 aIZDJONO.net
スカイプはどんな言語で作られてるの?
66:デフォルトの名無しさん
17/05/29 13:10:22.27 yBvsn9Ro.net
>>53>>58>>59
やっぱりみんな何かしらC系言語の素養はあるのか
67:デフォルトの名無しさん
17/05/29 13:24:18.34 R8bGfh1Z.net
LSI C試食版には足を向けて寝れないね
68:デフォルトの名無しさん
17/05/29 17:17:49.50 XCGSI9yY.net
うお懐かしいなw
69:デフォルトの名無しさん
17/05/29 22:06:22.42 kppw5p5H.net
やはり、better Cなのか
70:デフォルトの名無しさん
17/05/29 22:27:54.48 hRcE5cRH.net
better cはgoでしょ
cは関係ない
71:デフォルトの名無しさん
17/05/29 23:46:05.71 2+2L65e+.net
ほんとぉ?
72:デフォルトの名無しさん
17/05/29 23:49:43.56 4qLs+IkO.net
Goがbetter C……?
73:デフォルトの名無しさん
17/05/29 23:59:14.77 L9ed4gjc.net
obj-cやc++の立場は、、、
goがbetter cってのは、rustがbetter cってのと同じくらい不可思議だなw
74:デフォルトの名無しさん
17/05/30 03:08:14.82 IqZ8KgLG.net
やはり、better Cなのか
75:デフォルトの名無しさん
17/05/30 07:29:11.22 f0HoldrK.net
ごめんGo知らずに適当に言ったわ。
Goはなんなの
76:デフォルトの名無しさん
17/05/30 07:58:02.99 hxsHc/tN.net
いやGoスレいけよ
77:デフォルトの名無しさん
17/05/30 10:45:37.44 gxWnkgCC.net
god bless c
78:デフォルトの名無しさん
17/05/30 12:54:00.95 IWC/1tpu.net
もうcでいいじゃん
メモリーリークさせる馬鹿に合わせる必要なんかなかったんだよ
79:デフォルトの名無しさん
17/05/30 13:03:48.77 cUShYlMs.net
>>75
Rustはバカには使えない
バカはCを使わせてもまともには書けない
Cをまともに書けるならRustなんて不自由な言語はなくても問題ない
よってRustは不要
80:デフォルトの名無しさん
17/05/30 14:53:42.47 jV/RuSAE.net
長年C/C++やってた連中は始めから眼中になかっただろ。
Swiftしかり、新しいものに飛びつくのはいつも歴史を学ばない若い連中。
81:デフォルトの名無しさん
17/05/30 15:46:56.49 zOXcPiC1.net
C/C++より(なぜか)性能良いから、borrow checkerに勝てるなら良い言語だがなぁ
問題は、若者も老害もborrow checkerに勝てないから使えない
学習曲線の改善を今年の目標に掲げてたはずだけど、どうにもなる気がしねぇwww
82:デフォルトの名無しさん
17/05/30 16:21:27.71 3rG32g2E.net
2chなんて年寄りしか見てないからここの意見なんて全くあてにならんよなー
ここ見てない若い人のほうがメインなユーザーだろうし
83:デフォルトの名無しさん
17/05/30 16:41:31.26 xHXzQ5Z2.net
>>79
ワイ16歳
84:デフォルトの名無しさん
17/05/30 17:25:14.81 KVzaPBtZ.net
俺15だし
85:デフォルトの名無しさん
17/05/30 17:52:40.62 cUShYlMs.net
>>78
C++はどっこい、Cにはまだ及ばない。
86:デフォルトの名無しさん
17/05/30 18:35:38.41 PZbBKLpD.net
ちゆ 12歳(おっさん感
Cに比べりゃC++, Rustはランタイムの分のオーバーヘッドが絶対的に存在するから
そこを引き合いに出すならどうやっても勝てんしな
実用性のあるコードを書いた時の性能はどうだかねぇ
87:デフォルトの名無しさん
17/05/30 18:40:13.37 xHXzQ5Z2.net
>>83
性能はそこまで気にしなくても良い気もする
最近のPC高性能だし
ネイティブでメモリ管理出来るってだけでそこらへんの言語よりは速いし
88:デフォルトの名無しさん
17/05/30 19:06:48.72 2KYBWSXG.net
学習曲線の改善って何をするんだ?
89:デフォルトの名無しさん
17/05/30 19:07:46.03 reqRzc0L.net
まあプロダクションでのパフォーマンスはServoとQuantumが示してくれるでしょ
>>85
Non-lexical lifetime以外よく分からない
90:デフォルトの名無しさん
17/05/30 20:40:00.58 XaqH7Fx5.net
Cで書くには煩雑なものを相手にしたときに、
実際Rustがどんだけの結果を出せるか、
というのがみんなの興味だろう。
ちっさいサンプルプログラムみたいなんをコンパイルして、
それでベンチマークテストして結果比較したって、
そんなもんは誰も嬉しくはないし驚きも無い。
オーバーヘッドの一点のみで語りつくせるんなら、
バイナリエディタと機械語でOSだって作れる。
それはオーバーヘッドの無い、最速最軽量だろうね。
91:デフォルトの名無しさん
17/05/30 21:45:35.31 NwY5b/Ke.net
librsvgの移植が、中規模コードの実践例として参考になりそう
URLリンク(people.gnome.org)
92:デフォルトの名無しさん
17/05/30 21:54:14.25 re3tYRpg.net
free挿入するよりcopying gcの方が速いし
無駄なオーバーヘッドなくそうとしたらlibstdの実装みたいに
raw pointerだらけになるからそんなこと気にしなくていいよ。
jitのおかげでロジックそのまま書いても速いなんてことが
起こらないから将来、最適化は必要になるだろうけど過剰な最適化は必要ない。
抽象度の高いまま低レベルな領域でも書けるからいいんだよ。
javaだと整数型の型を揃えようとするからバイト列の操作とか苦手だけどrustはそういうのないのよ。
93:デフォルトの名無しさん
17/05/30 23:04:32.49 xHXzQ5Z2.net
>>87
ベンチマークって基本そういう系多いからね
ファイルアクセスとか考えたら速度ほとんど変わらないのに
94:デフォルトの名無しさん
17/05/31 01:36:02.83 /NtvNHJE.net
ベンチマークはオーバーヘッドが無視できるよう(特定)処理を大量回数ループさせてる
という意味が分かってないから、そういうこと言っちゃうんだろうねぇ
もっと勉強しろ、若造どもが
95:デフォルトの名無しさん
17/05/31 01:44:33.93 8BExUPKw.net
オーダが同じでもオブジェクト生成や関数呼び出し等々のオーバーヘッドは係数部分に効いてるんやで
96:デフォルトの名無しさん
17/05/31 02:15:05.25 /NtvNHJE.net
Rustはzero-cost abstractionだのコンパイラによる関数最適化でC言語とさして変わりないんやで^^
VMだと係数にもろに影響するやがな
97:デフォルトの名無しさん
17/05/31 09:42:28.64 OQ401SVi.net
>>91
だから若造はいないんだって。
Cとか言い出す老人しかいないの。
98:デフォルトの名無しさん
17/05/31 09:46:53.00 Kcuasmjx.net
>>94
>>78
若者も老人もいるんだよなぁ
99:デフォルトの名無しさん
17/05/31 12:19:43.42 WjnJkecI.net
本当のおっさんや老害はRustスレなんてこないだろ。
ワイは偉そうに古参風を吹かせてた>>77だがまだビンビンの学生やで。
100:デフォルトの名無しさん
17/05/31 12:22:43.65 FbhpYS54.net
ワイ周辺だと学生はそれなりに見る
よくはてなブログに書いてる人も学生でしょ
101:デフォルトの名無しさん
17/05/31 12:27:53.72 xgELgHJk.net
そりゃ、おっさんの大多数は新しい言語が嫌いだからね
102:デフォルトの名無しさん
17/05/31 12:38:49.91 WjnJkecI.net
それな
103:デフォルトの名無しさん
17/05/31 12:55:16.23 IqYufuRr.net
年取ると守りに入ってしまっていかんな
104:デフォルトの名無しさん
17/05/31 18:15:57.61 xNKvRsij.net
まだ2chは若者に人気だったのか
slackとかじゃないの
105:デフォルトの名無しさん
17/05/31 23:54:17.31 H5pMSxMU.net
>>83
ランタイムなんてリンクしなけりゃ済む話
106:デフォルトの名無しさん
17/05/31 23:59:15.13 8BExUPKw.net
no_stdか……
107:デフォルトの名無しさん
17/06/01 10:52:08.55 AXJF1Amn.net
それランタイムじゃなくライブラリ
no_mangleでマングル名消してもランタイムはリンク解消できないだろうねぇ
108:デフォルトの名無しさん
17/06/01 12:56:34.33 5JdW7IAM.net
#![no_std]すればliballocとlibpanic_unwindはlibstdは勝手に外れなかったっけ?
libcoreはliballocにリンクしていないし#![needs_panic_runtime]もしてない
109:デフォルトの名無しさん
17/06/01 13:33:54.90 TwQiYK+8.net
Rustランタイムって具体的には何してくれるの?
ファイナライザ呼び出しとパニック時のスタックダンプ表示?
110:デフォルトの名無しさん
17/06/01 13:39:40.72 AXJF1Amn.net
URLリンク(doc.rust-lang.org)
最小限のmain関数だけにしても、C言語+clangでビルドするバイナリ相当までは削れんなぁ
Rustマングル名の解読とか、C言語へのブリッジなんかも入ってるんでない
str型はno_stdでも使えるようだから、この辺の一部プリミティブ型のラッピングもしてるかな
111:デフォルトの名無しさん
17/06/01 14:25:43.96 y1VaJ38E.net
ランタイム気になるのはOS書く時くらいでしょ
112:デフォルトの名無しさん
17/06/01 14:27:32.75 y1VaJ38E.net
あとOS無しの環境でプログラム動かす時とかもそうだけど
要するにそういうときだけ
113:デフォルトの名無しさん
17/06/01 15:23:27.31 TxD0ndLo.net
その辺の整備は優先度低いだろうからな。
トレイト境界の特殊化とか知恵の輪みたいな型システムのサポートとかもっとやることがある
114:デフォルトの名無しさん
17/06/01 15:36:56.97 SoMrAbTt.net
IoTブームを考えると、組み込み系が一番Rustを活かせる場だと思う
パフォーマンスが良いし、アップデート出来ない環境で脆弱性の心配が減るのも良い
メモリフットポイントも、先行事例を見るにまあぼちぼちなんとかなってるようだ
115:デフォルトの名無しさん
17/06/01 16:49:21.04 84f6kPv5.net
新興言語が使い物にならないのはSwiftが証明しちゃってるしな。
学習コストが高いし、仕様変更も多すぎて管理コストがかさむ。
仕事では使い物にならない。
IoTはなんだかんだいってバックエンドCフロントエンドECMAScriptが主流になるんじゃないかな。
116:デフォルトの名無しさん
17/06/01 16:57:13.59 Ic6OT1NI.net
IoTもう終息してきてない?
117:デフォルトの名無しさん
17/06/01 18:07:25.12 b0AgrCqp.net
マングリングなんかはコンパイル時に解決してるのでは
strはただのデータと長さのペアの構造体
ランタイムとはなんなのか
118:デフォルトの名無しさん
17/06/01 18:32:06.24 AXJF1Amn.net
解決してないから、場合によってはno_mangleが必要なわけでな
プログラムロード時に展開して処理中はオーバーヘッドないだろうけども
IoTブームを考えるとRustの選択肢はありだろうけど
流行りを無視したら性能良く容量少ないバイナリ吐くCかギリギリC++かなぁ
ガチな組み込みは老人ばかりでC/C++で難なく安全なコード書くし
組み込み系の仕事やってると業務での採用提案は現実的には思えんわ
119:デフォルトの名無しさん
17/06/01 19:44:54.46 KprYmBPJ.net
>>115
ガチ組み込みでもC++使うんだ。
自動車とかだとCのみだよね。
家電とか?
120:デフォルトの名無しさん
17/06/01 23:17:34.13 Co5NqntP.net
>>116
自動車は普通にc++使ってる部分もあるよ。
121:デフォルトの名無しさん
17/06/01 23:38:13.83 0ZYBTIzB.net
ハードウェアは未だにZ80が現役のパチンコでもZ80要らないところなら色々使うで。
ソフト部分がjavaかC#か、最近はunityだから格差が大きい。
こういうニッチなところならrustのno_coreも入り込めるかも
122:デフォルトの名無しさん
17/06/01 23:39:53.34 0ZYBTIzB.net
ごめん言い忘れた。
いまだにC++使わないのなんか軍事兵器くらいやで戦闘機のOSとか
123:デフォルトの名無しさん
17/06/01 23:46:55.28 GrGj5OGG.net
そんなの持ち出す前にlinuxでしょ
124:デフォルトの名無しさん
17/06/02 00:20:19.49 u7OL4GIc.net
F-35はC++が使われてるんじゃなかったか
125:デフォルトの名無しさん
17/06/02 00:22:55.55 1X/05mt0.net
お前らやたら詳しいな……
126:デフォルトの名無しさん
17/06/02 00:25:26.45 /gLRnObz.net
その辺はAdaが使われてる印象だったんだがCも使われてんのか。
127:デフォルトの名無しさん
17/06/02 00:54:37.65 UJQ0OGfD.net
今、MISRA Cを使ってるようなところが、Rust向きだと思う
128:デフォルトの名無しさん
17/06/02 01:43:12.50 USk3zPix.net
飛行機なんかはメモリ確保命令は使わずに上書きでやりくりするんでしょ?
リアルタイム性が要求されるから決定的瞬間にアロケーションや解放なんて処理始まったら死ゾ
129:デフォルトの名無しさん
17/06/02 02:00:16.87 /gLRnObz.net
>>125
そうならばメモリアクセス安全に寄ったRustは不向きの用途だな。
専用ランタイム作らん限り。
130:デフォルトの名無しさん
17/06/02 06:39:31.02 eD3LHIkq.net
>>123
組み込み業界、Ada使うくらいなら素直にアセンブラ使うわw
>>119
他言語へのAPI公開のため最近はまたC言語が流行ってるやぞ
RustもGoもSwiftもC言語とのI/FはあるけどC++とのI/Fはないから、流行りに合わせてCにしとこってのはままある
まぁRustはbindgenとかいう変態ツールでC++マングル名を回避する荒業に出てるからなくても困らんのだけども
131:デフォルトの名無しさん
17/06/02 07:33:26.58 3O32wZtM.net
>>125
ATS2 みたいな機能を Rust も組み込めば良いのに。
132:デフォルトの名無しさん
17/06/02 09:15:56.51 PNLF+z5i.net
C++でextern Cじゃいかんのけ?
133:デフォルトの名無しさん
17/06/02 10:26:55.70 f93mDoXl.net
cとのI/Fではc++が最強か
134:デフォルトの名無しさん
17/06/02 16:42:33.09 IZaDrWj5.net
>>117
そーなんだ。俺がやってたのはもう10年くらい前だからさすがにかわったのか
135:デフォルトの名無しさん
17/06/02 17:04:48.35 Lx2HMXf/.net
impl Into<[u8]> for Hoge {
これがエラーになってしまうのですが、どうやればInto<[u8]>を実装できるのでしょうか?
impl<T: [u8]> Into<T> for Hoge {
これも試してみたのですがシンタックスエラーになってしまいました。
136:デフォルトの名無しさん
17/06/02 18:53:59.81 ymoR0uYq.net
>>132
URLリンク(play.rust-lang.org)
配列の長さが固定なら参照にしなくてもいいけど、多分可変長なんだろうからlifetime使わざるを得ない気がする
このスレでtokio, tokio言うからどんなものよと使ってみてるけどムツカシイ・・・
クライアントのサンプルコード少なすぎる、futuresの在り様が掴めなくて苦しいぜよ
137:デフォルトの名無しさん
17/06/02 20:26:56.32 ymoR0uYq.net
tokio好きのエロい人、ボスケテ
URLリンク(play.rust-lang.org)
138:9f942&version=stable&backtrace=0 これで実行すると、リクエスト送信 => レスポンス受信 => リクエスト送信、みたいな動きになる sendとsend_allで二回送信してるんだろうから分からいでもないんだけど リクエスト送信 => レスポンス受信、の動きにするにはどうすりゃいいの
139:デフォルトの名無しさん
17/06/03 19:09:45.21 MHNPbMg7.net
logとかrandとか、標準ライブラリではないけと、ほぼ公式ライブラリ化してるcrateのリストって、どこかにある?
140:デフォルトの名無しさん
17/06/03 20:41:56.30 x4F2VVph.net
brson / stdx
141:デフォルトの名無しさん
17/06/03 22:00:53.66 MHNPbMg7.net
>>136
いい感じだね
Authors欄がThe Rust Project Developersになってるcrateのリストが
公式サイトのどこかにあるかなと思ったけど無いなあ
142:デフォルトの名無しさん
17/06/03 22:03:30.78 LvdfU0KG.net
>>137
URLリンク(github.com)
143:デフォルトの名無しさん
17/06/03 22:21:40.86 MHNPbMg7.net
>>138
これや!
144:デフォルトの名無しさん
17/06/04 03:40:08.07 fD7zpG1M.net
そういうのがstdに無いのが不便で仕方ないんだがどうしてそうなったの
145:デフォルトの名無しさん
17/06/04 03:45:59.28 79UOiFpQ.net
>>140
それもう100回くらい語られてる
URLリンク(blog.rust-lang.org)
146:デフォルトの名無しさん
17/06/04 03:50:33.29 fD7zpG1M.net
>>141
FAQにも無いように見えたしググり方も分からなかったんや
ありがとナス
147:132
17/06/04 10:44:11.97 rLXx1OCs.net
>>133
そこにもlifetime指定できたのですね。ありがとうございます!
148:デフォルトの名無しさん
17/06/04 14:04:24.56 W9jPbq7z.net
C++のとき=で右辺の状態が変わるのが人間の直観によろしくないと
非常に明白な結論が出てるのに
なんで変えなかったんですかね
思考が著しく阻害される
149:デフォルトの名無しさん
17/06/04 16:24:39.76 8nnj2TqC.net
記号が <- だったらよかったのにって?
まあ慣れだと思うけど。
150:デフォルトの名無しさん
17/06/04 16:28:32.85 Ukp5iwZo.net
それを言い出したら左辺の状態が変わるのも"直感によろしくない"しなあ
151:デフォルトの名無しさん
17/06/04 16:42:30.55 qUWZGkRh.net
>>145
代入ってよく使うのに2文字はだるすぎ
慣れれば=でも問題ない
152:デフォルトの名無しさん
17/06/04 16:58:15.24 2L30Nwvk.net
お前ら非常に明白な結論になんてことを・・・
153:デフォルトの名無しさん
17/06/04 17:07:01.45 zptvcWS6.net
>>51
valgrindの扱えない 一般のuse-after-free って何だ?
154:デフォルトの名無しさん
17/06/04 19:25:09.29 rwHtuE7A.net
>>149
メモリ以外も含めたリソースの解放後の使用って意味じゃね?ファイルとか
155:デフォルトの名無しさん
17/06/04 21:24:44.90 Ukp5iwZo.net
>>150
ファイルに関してはValgrindには--track-fds=yesがあるから例として微妙では
もうちょっとドメイン固有なもの、例えばSerdeでDeserializerを2回使うのを防ぐとかの方がありがたみが強そう
156:デフォルトの名無しさん
17/06/04 21:40:25.92 qOHu1i3Q.net
valgrindみたいな実行時チェックとコンパイル時の静的チェック比較してどうするの
157:デフォルトの名無しさん
17/06/06 00:41:45.73 eZ7grxii.net
URLリンク(docs.rs)
>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.
彼は一体誰と戦っているのだろう……
158:デフォルトの名無しさん
17/06/06 02:28:52.15 LS7abRGk.net
というか、try!をdeprecateする話なんてあったか?
Rust 1.13以前をサポートするcrate(特にnursery系)ではバリバリ現役じゃん
159:デフォルトの名無しさん
17/06/06 13:02:17.27 29cDHiwu.net
そういや、crates.ioに公開されてるものって
対応してるrustcのバージョンが不明確だな
160:デフォルトの名無しさん
17/06/06 21:24:51.99 LrtFpx4M.net
案の定、誰もtokioを使ったことない感じでスルーされつつ自己解決した
URLリンク(play.rust-lang.org)
futuresのAPI分かりづらいよ
zero-costとかそう言う所じゃないレイヤーのI/F設計が頭おかしい気がする
いや、気がするだけでzero-costに注視した場合にそうならざるを得なかったのかもしれんが
とりあえず、奥深いと言うかなんと言うか、tokio及びfuturesの闇の深さが分かったのでちょっと遊ぼう
tokioはstd:netのラッパーで本当に早いの?な感じだったけど、futuresの方は中々に面白い
161:デフォルトの名無しさん
17/06/06 21:31:18.02 eZ7grxii.net
mioは本質的にstd::netを使ってなくねなどと重箱の隅を突いてみる
162:デフォルトの名無しさん
17/06/06 21:39:21.98 LrtFpx4M.net
tokioもサーバサイドで使うぶんには効率的よ?と直前のレスをちゃぶ台返し
エアプログラミングで卓上で論じる分には楽しいけど、実際使ってみようとしたらドキュメント少なすぎるだろ
futuresのtutorialみたらtokio.ioに飛ばされてスッゲーあっさりとしか書かれてないでやんの
163:デフォルトの名無しさん
17/06/07 10:48:52.84 oMhdv7bq.net
な?Rustってまともに使える言語じゃないだろ?
だからもう騙されるのは終わりにしようぜ。
164:デフォルトの名無しさん
17/06/07 13:01:49.86 AvS1SMln.net
ソース読めばいいよ
165:デフォルトの名無しさん
17/06/07 19:59:59.87 CD/BPHg5.net
言語じゃなくライブラリの問題なんだよなぁ、言語仕様で躓いた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で連結できないのかと悩んだよ
166:デフォルトの名無しさん
17/06/07 20:19:54.47 xcCDpPBC.net
むしろ同じエラー型しか返せないとしたら面倒臭いわな
例えばfutures_cpupoolで常にio::Errorしか返せないとかだったら扱いにくいのなんのって
167:デフォルトの名無しさん
17/06/07 20:43:02.03 CD/BPHg5.net
Futureの操作元(今回はStream)をエラー時にも返したい時がある的な振る舞いは未だに理解できんぞ
sinkはErrでstreamは(Err, Stream)とかイミフ、どうせなら両方ともタプルにしてくれよ
168:デフォルトの名無しさん
17/06/07 20:44:49.12 aNYsG6oK.net
それはそうだが、StreamFuture::Errorの型はあれはちょっとなあ……
所有権を返したいってのはなんとなく分かるが
169:デフォルトの名無しさん
17/06/07 20:46:10.36 aNYsG6oK.net
>>164は>>162宛てな
170:デフォルトの名無しさん
17/06/08 02:32:18.91 +DWZ9aoq.net
reqwest、HTTPヘッダやMIMEタイプまでそれぞれ別個にタイプセーフとかクレイジーだな、いい意味で
いや、hyperのせいか
171:デフォルトの名無しさん
17/06/09 01:32:14.88 eJzwOC8V.net
Announcing Rust 1.18 - The Rust Programming Language Blog
URLリンク(blog.rust-lang.org)
pub(restricted)と構造体フィールドの自動並び替えがstabilized
172:デフォルトの名無しさん
17/06/09 07:32:46.19 2Ut1GWuy.net
時報が少し賢くなってるwww
173:デフォルトの名無しさん
17/06/09 12:48:15.05 BBPKL/bd.net
>>167
ありがとう。
これからも頑張って。
174:デフォルトの名無しさん
17/06/09 13:10:04.93 +ro9fQGu.net
pijulってなんだよgitだけでいいだろ
175:デフォルトの名無しさん
17/06/09 14:25:21.34 2Ut1GWuy.net
gitよりmercurialが好きです(半ギレ
pijul(とdarcs)は初めて存在を知ったけどほーって感じ
Pull Requestはサービスプロバイダに依存するから、VCS自体にPR管理機能を持つのは良いのかもねぇ
176:デフォルトの名無しさん
17/06/09 14:42:06.85 8C3OvAmi.net
pgr
177:デフォルトの名無しさん
17/06/09 15:36:57.58 CZ4YsNdD.net
Rustはgithubに依存しすぎだろ
GoogleやMicrosoftも似たようなサービス始めるみたいだし、もっと中立的になった方がいい
178:デフォルトの名無しさん
17/06/09 15:39:14.20 F1/ud66B.net
goもかなり依存してないか?
179:デフォルトの名無しさん
17/06/09 15:44:08.83 +ro9fQGu.net
github依存度で言ったらGoよりましじゃないかな?自前でcrates.io持ってるし。
まあgithubに依存してなくてもやらかしたnpm見てるとgithub依存も最悪ではないみたいに思ってしまうがな。
というかgithub以外のまともなホスティングサービスがないのが悪い
180:デフォルトの名無しさん
17/06/09 15:49:49.79 CZ4YsNdD.net
Scala/JavaのIvyみたいに、crates.io互換鯖を自由に立てられるようにしようとか
crates.ioのログインにgithubアカウント以外も使えるようにしようとかの動きは無いのかな?
181:デフォルトの名無しさん
17/06/09 15:51:15.80 +ro9fQGu.net
まあそれはともかく、gitとhgのサポートが既にあるのに
pijulとかいうまだまともに使えないVCSをwritten in Rustってだけで突っ込むのは
内輪のノリがきつすぎてイタい子なんだなあって感想
182:デフォルトの名無しさん
17/06/09 15:52:47.94 CZ4YsNdD.net
>>177
Haskellのdarcs優遇と同じ現象だな
183:デフォルトの名無しさん
17/06/09 16:00:58.60 +ro9fQGu.net
>>178
ghcすらdarcsを捨てたと言うのにな。
というか今気づいたけどcargoってSubversion対応してねえのか。pijulとやらより
そっち先じゃねえの?
184:デフォルトの名無しさん
17/06/09 16:13:07.06 2Ut1GWuy.net
>>175
bitbucketがあるだろ!!(今度こそマジギレ
sourceforgeのgitサポートがもう少し早ければ幾つかの連立もあったろうけど
sourceforgeは遅れるわGoogle Codeはへっぽこだわでgithub+git一強になったこのご時世は嫌だねぇ
pijulが強制されるわけでもなく、今まで通りcrates.ioホスティングがデフォルトだからgithub(git)に依存してないでしょ
個人的には面白いVCSだとは思うけど、率先して採用するプロジェクトはなさそう
185:デフォルトの名無しさん
17/06/09 16:17:48.77 CZ4YsNdD.net
cargoのdependenciesにbitbucketのmercurialを書けるようにするissueは、前に見かけた気がする
たしか、やる気がないわけではないけど、使いやすいライブラリが無い的な返答だったような
直にリンクするとGPLになるとか
186:デフォルトの名無しさん
17/06/09 17:16:09.17 oDUXzovh.net
vcs指定すると何がいいの?
187:デフォルトの名無しさん
17/06/09 20:27:02.60 eJzwOC8V.net
>>177
内輪云々というか、たまたま気が向いた人がPRを送ってきたから受け入れたってだけの話じゃないの?
それを言い出したら標準ライブラリだってredoxサポートのためのコードがたくさんあるし
188:デフォルトの名無しさん
17/06/09 21:39:26.49 OWaLz7yy.net
>>181
普通にrepositoryのURI指定でhg://bitbucket.org/hoge/hageみたいにしとけば動いた覚えがあるぞ
githubもgit://github.com/hoge/hageにするし、VCS, 接続サーバを意識してなくないかな
今更subversionやcvsを使う気は無いけど、誰かPR出してみようぜ
rejectされるなりacceptされるなり、どっちに転んでも笑い話だと思う
189:デフォルトの名無しさん
17/06/10 04:46:24.86 8idv0Ky2.net
pijul(ピフル)試してみた
・ドキュメント無さすぎ
・パッチのハッシュがクソ長いし、指定時に省略できない
・SSH周りがいろいろおかしい。agent使えないとか
・エラーメッセージが全く役に立たない。コード読んで初めて原因が分かる感じ
・現在のバージョンを特定するタグ、IDのようなものが未実装
・複数ファイルの追加は一つずつ指定する必要がある。ディレクトリ一括とかダメ
・ワーキングディレクトリ内の未追加ファイルを一覧するコマンドが無い。要記憶力
・ワーキングディレクトリ内の状態を一覧するコマンドが無い
・ファイルとして受け取ったパッチの取り込みを行うコマンドが無いので、自分で.pijulディレクトリの中にコピーするらしい
結論:実用にはあと2年は待ちたい。すぐ使いたいならdarcs使え
190:デフォルトの名無しさん
17/06/10 08:42:42.56 V34f+MUj.net
>>185
こんなVCSサポートに入れるとかRustが実用考えて作られてないのがようわかるわ。
191:デフォルトの名無しさん
17/06/10 10:47:52.24 FHASBQwb.net
pijul対応はpijulの開発者たちがドッグードするためなんじゃないの
pijul自体がpijulで管理されてるからcargoサポートがないと不便そう
192:デフォルトの名無しさん
17/06/10 11:06:43.94 Ha8NmJTT.net
何かRustディスることに血道を上げてる粘着がおるな
自分の言葉で批判しようとするとフルボッコにされるから、最近は他人のまともな批判に乗っかってせせこましいレスしかできなくなってるが
>>159とか>>186とか
193:デフォルトの名無しさん
17/06/10 11:21:32.40 J2O0ntFQ.net
触れなくていいんすよ
194:デフォルトの名無しさん
17/06/10 13:46:58.55 AacmqL/b.net
Cと++は今世紀いっぱいは現役だからな
それ以外は覚える価値なし
195:デフォルトの名無しさん
17/06/10 14:23:08.91 8idv0Ky2.net
>>187
取り込まれたPR見れば分かるけど、VCSサポートって言っても、cargo newの後に
自動で pijul init を呼ぶだけの処理しかしてない
Mercurialのサポートとほとんど同じレベルだが、Mercurialの場合は hg init 呼んだ後に
さらに .hgignore ファイルも追加してくれるとこだけが違う
尚、この自動で追加される .hgignore は文法ミスってて使えない
196:デフォルトの名無しさん
17/06/10 14:50:16.11 8RIzdpJs.net
もうgitでいいよ
197:デフォルトの名無しさん
17/06/10 16:38:35.42 V34f+MUj.net
なんでお前らはこんな文法はゴミクズ、コンパイラはエラーしか吐かない、ライブラリはカス未満の
クソモジラの息がかかってる言語なんてありがたがってるのか本気でわからんのだが
モジラから金もらってる以外の理由あんの?
198:デフォルトの名無しさん
17/06/10 16:43:45.87 FHASBQwb.net
>>191
git://みたいにpijul://みたいなプロトコルのサポートも入ったのかと思ってたけど
initだけなら大した話ではないわな
それぐらいならsvnだろうがcvsだろうが
PR出したら簡単に取り込まれそう
199:デフォルトの名無しさん
17/06/10 16:47:08.14 FHASBQwb.net
そういえばsvnはgit init相当の処理はないから
cargo newの時にやることないな
cvsもよく知らないけど同じかな
200:デフォルトの名無しさん
17/06/10 17:28:38.55 gUDVFMBt.net
釣られないクマー
201:デフォルトの名無しさん
17/06/10 17:34:28.98 IftbJTTs.net
ああ、ほんとそんだけなのか。
pijulリポジトリやhgリポジトリからもcargoとってこれるとかではないんだな。
202:デフォルトの名無しさん
17/06/10 19:20:36.29 SnVZVp11.net
--vcs=gitすると.gitignoreも出来るんだね
203:デフォルトの名無しさん
17/06/10 19:29:45.37 IftbJTTs.net
ところでThe BookがSecondEdition出てるんだけどこれいつからあるんだっけ
204:デフォルトの名無しさん
17/06/10 19:50:13.72 8idv0Ky2.net
誰か、本のレビューしてくれ
この本はこういう人向き~とか
The Rust Programming Language
URLリンク(www.nostarch.com)
Mastering Rust
URLリンク(www.packtpub.com)
205:デフォルトの名無しさん
17/06/10 20:32:21.64 IftbJTTs.net
>>200
上の方まさに「The Book」のSecond Editionの書籍版じゃん。
206:デフォルトの名無しさん
17/06/11 01:53:28.37 X3vCZvzy.net
食事する哲学者は、なんでThe Bookから消されてしまったんや
207:デフォルトの名無しさん
17/06/11 15:06:17.17 qjl5AbWq.net
>>202
それ、俺も思った。
何でだろう?
208:デフォルトの名無しさん
17/06/11 15:56:53.70 vIRnRvxr.net
哲学者達がお腹一杯になったから
209:デフォルトの名無しさん
17/06/11 16:22:24.76 VsqhFcB6.net
トンチが効いててちょっと面白かった
210:デフォルトの名無しさん
17/06/11 22:30:10.43 X3vCZvzy.net
Second Editionはどういう意図か知らないけど、
"str".to_string()
"str".to_owned()
の代わりに
String::from("str")
を全面的に使うようにしてるね
211:デフォルトの名無しさん
17/06/11 23:46:31.76 XI3qvjLJ.net
String("str")みたいなコストラクタは無いの?
212:デフォルトの名無しさん
17/06/11 23:49:50.77 9OY4agMx.net
Stringはtuple structでない
213:デフォルトの名無しさん
17/06/12 00:27:33.38 My6TEn1j.net
URLリンク(crates.io)
このcrate、めっちゃダウンロードされてて草生える
214:デフォルトの名無しさん
17/06/12 00:29:50.55 MzCSF4Ch.net
容赦なくて草
215:デフォルトの名無しさん
17/06/14 09:57:33.18 XYFguvYM.net
Tokio対応したHyperがリリースされたな
これからWebフレームワークも対応していくのだろうか
216:デフォルトの名無しさん
17/06/15 18:41:09.39 mn+yn6ig.net
pijul試してたら、なんかいつの間にかファイルが壊れて、テキストとバイナリがまぜこぜになったファイルが出来てしまった
217:デフォルトの名無しさん
17/06/16 09:06:23.46 ktTRVxgn.net
またpijulが使い物にならないからrustはだめとか言うおっさんがくるぞ
218:デフォルトの名無しさん
17/06/16 10:33:05.72 HCcCUJCK.net
わざわざ呼ぶなバカ
219:デフォルトの名無しさん
17/06/17 06:54:44.86 yZgGFQR1.net
Why are there so many Madoka references in Rust's codebase?
URLリンク(www.reddit.com)
アイコン見てれば、容易に想像できることだが
220:デフォルトの名無しさん
17/06/19 14:55:59.38 86sO1ieZ.net
もしかして盾の歯車?
221:デフォルトの名無しさん
17/06/21 20:28:41.11 LG7VVo4P.net
crates.ioで、中身無しで名前だけ(たくさん)抑えてる人が居るね
222:デフォルトの名無しさん
17/06/21 20:52:10.55 0v4/pNjF.net
crates.ioはスクワッティングし放題だしなあ
URLリンク(doc.crates.io)
223:デフォルトの名無しさん
17/06/21 21:04:58.61 LG7VVo4P.net
rustって名前のcrate登録しようと思ったら、とっくに取られてた
224:デフォルトの名無しさん
17/06/22 19:34:29.89 eBYfVtnR.net
そのうちcratesトロール出てくるぞ
225:デフォルトの名無しさん
17/06/24 00:33:06.17 61WeFMfR.net
更新止まったの除くとcrates.io使ってるのあんまりないよ。
ホスティング直接探しに行くとrustのライブラリ結構ある。
それより依存型が欲しい。
226:デフォルトの名無しさん
17/06/24 00:34:41.77 l9zy63QW.net
>crates.io使ってるのあんまりないよ。
ドユコト?
227:デフォルトの名無しさん
17/06/24 06:06:00.68 cy4Nwj8p.net
>>221
依存型欲しいねー
228:デフォルトの名無しさん
17/06/27 21:33:58.01 IXk9A5/e.net
なんでalloca()できないの?
229:デフォルトの名無しさん
17/06/27 21:52:44.33 b1cqibPI.net
URLリンク(github.com)
230:デフォルトの名無しさん
17/06/27 22:56:55.59 IIq+ol+w.net
>>225
どゆこと?
より一般化してUnsized Rvaluesにしたけど、Openのまま3か月放置?
231:デフォルトの名無しさん
17/06/28 01:29:39.37 9yiSXbVJ.net
>>226
関連するissueがまだopenのままに見える
232:デフォルトの名無しさん
17/06/28 11:14:29.14 +O8L6XqQ.net
瑕疵担保責任(かしたんぽせきにん)
瑕疵担保責任のポイント
民法改正で事実上期限が「無制限」になった
バグや設計のミスなどは、瑕疵担保責任
納品物に不具合があれば損害賠償を請求される可能性もある
不具合を指摘されたらすぐに行動をとるべし
軽微なミスでも先延ばししない
URLリンク(www.atmarkit.co.jp)
URLリンク(itpro.nikkeibp.co.jp)
改正法では欠陥に気付いてから1年以内にITベンダーに通知すれば、
通知後5年以内は修正や報酬の減額などを求められるとしている
全ベンダーが泣いた民法改正案を解説しよう その1
URLリンク(www.atmarkit.co.jp)
URLリンク(www.atmarkit.co.jp)
URLリンク(www.atmarkit.co.jp)
ポイント1:修補や損害賠償、契約解除の期限がなくなる
従来あった「瑕疵担保期間は引き渡しから1年」という考えはなくなる。
条文にある通り、注文者は成果物が契約の目的に適合しないことを発見したら、
その「発見したときから1年以内」ならさまざまな請求ができる。発見が10年後なら、
11年後まで請求可能なのだ。
もっとも、現実のユーザーとベンダーの関係でも、たとえ契約書に「瑕疵担保責任期間は納品から1年と」明記されていても、
「2年目以降は不具合の修正に対応しない」と主張するベンダーはまれだ。多くの場合は、納品から何年たっても、
バグが見つかればユーザーのところに飛んで行き、無償で改修するだろう。
233:デフォルトの名無しさん
17/07/01 18:15:18.87 v+Q0wrxJ.net
Futuresに詳しい人教えて
Zero-costを謳ってTraitでコスト削減してるのは理解したんだが
id_rpc(&my_server).and_then(|id| {
get_row(id)
}).map(|row| {
json::encode(row)
}).and_then(|encoded| {
write_string(my_socket, encoded)
})
ってやった場合に
AndThen x2, Map x1を初期化時に作るコストについては
実行時のコストには乗らないから度外視って理解であってる?
Aaron Turonのブログ読んでもそこは言及してないように読めるので教えてくれい
234:デフォルトの名無しさん
17/07/01 20:18:30.04 9xGm3OAZ.net
コンパイラの最適化で消えるか、消えないにしてもstackいじるだけだから無視できるほど小さいコストなんだと思う
235:デフォルトの名無しさん
17/07/02 07:08:11.19 91oxOYnU.net
んー、その擁護は微妙に納得いかないかな...
AndThen, Mapは状態変数を保持するenumを内包するstructなので消えないはずだよねぇ
まぁstackいじるだけという言い分として、ならば実行時のcallでBoxFutureを返すのはバッ
236:ドノウハウってことか BoxFutureを返すのと、Futureを実装したstructを返すのと、どっちがZero-costに近いかは測ってみるか サンプルだとBox<Future>だけど、Tokioは一律structを実装してるから、後者の方が早いんだろうけども
237:デフォルトの名無しさん
17/07/02 11:32:28.47 onBZ93I5.net
すまん、よくよく考えたら実行中にBox<Future>を返すのは動的にステートマシンのタスクを増やす行為だからNGだ
Futureを返さなきゃと.boxed()使ってたけど、素直にPollで結果を包むだけでよかった
238:デフォルトの名無しさん
17/07/04 00:00:54.04 YlAGoiwI.net
futuers-rsは
これfutuereじゃねぇじゃねーか、並列計算してないパイプラインをfutuere呼ぶなよ
↓
すぐにfutures-cpupoolを見つける
までが予定調和。
Zero-cost ~~futures and~~ streams in Rust
239:デフォルトの名無しさん
17/07/04 09:31:46.73 ETZVte8W.net
これZero-costじゃねぇじゃねーか
↓
Zero-cost(コストがないとは言ってない)
までが予定調和だったわ
下手な自作設計よりは全然コスト軽いけど鵜呑みは良くないね
240:デフォルトの名無しさん
17/07/04 10:33:24.16 CTMuvV84.net
まず future の綴を覚えるところからお願いします
241:デフォルトの名無しさん
17/07/04 12:20:45.83 J0r8gWdS.net
impl Traitじゃあかんのか?
242:デフォルトの名無しさん
17/07/04 13:09:55.73 Aj2F4wHv.net
aturon氏の記事(Zero-cost futures in Rust)を読めば"zero cost"というのは「直にステートマシンを書いたのと同様のコードにコンパイルする」という意味で言っていると分かるはずで、
状態変数があるからzero costじゃないなどという指摘は出てこないと思うのだけど
243:デフォルトの名無しさん
17/07/04 13:30:28.66 G2IB7Bn2.net
traitってGoのinterfaceに似てる
って言ったら型警察に起こられるんだろうか
244:デフォルトの名無しさん
17/07/04 14:05:06.69 At6b76le.net
>>237
?
だからコストがないって訳じゃないと理解したんだが
タスク構築のための初期化アロケーションとか、ステートマシンのための状態管理(分岐)の少量コストはあるって解説してるよな
言葉遊びによるZero-cost警察の方なら触ってスマン
245:デフォルトの名無しさん
17/07/04 16:29:36.87 H2zYYmCe.net
警察じゃなくても激おこやと思うw
246:デフォルトの名無しさん
17/07/04 16:36:55.49 o8qoMeE4.net
zero costは宣伝文句で、zero overheadくらいが妥当では
247:デフォルトの名無しさん
17/07/04 18:21:59.60 ZOpHOB0v.net
実行はゼロコストかも分からんが書くコストが青天井なので結局意味のない言語
248:デフォルトの名無しさん
17/07/04 19:19:11.80 A2FxzO1+.net
Aaron Turonのブログを引用しながら実は別の意味で言ってましたとか草
249:デフォルトの名無しさん
17/07/04 22:45:10.68 sW2FXAJU.net
javaはzero-overheadの語を使うけどrustはzero-costを使うよね。
zero-overheadだと追加の余計なコストがかからないという意味がわかるけど、
zero-costだとコストそのものがないと言っているのかzero-overheadと同じ意味で使ってるのか定かではないと思う。
250:デフォルトの名無しさん
17/07/04 22:53:04.21 Aj2F4wHv.net
Rustでzero-cost (abstraction)といったら抽象化レイヤーによるコストが0という意味だろうね
251:デフォルトの名無しさん
17/07/05 03:06:44.06 9aEWew1V.net
そもそもがC++界隈からの借用語だしな
252:デフォルトの名無しさん
17/07/05 16:39:24.43 AAYKoEFk.net
激おこな警察官が多くて誰がどの立場で何を擁護してるのかワケワカメ
とりあえずまぁfuturesやtokioを下手に使うとコストがゴリゴリ上がってくのは分かった
ステートマシン(AndThenやMap)も抽象化しきれなかったのかstructでI/F切られてるし注意して使わんとな
253:デフォルトの名無しさん
17/07/05 17:11:36.04 MzNNcf5c.net
そりゃ、真にコストゼロはありえないだろう
一般に気にされてるのは、C/C++より多いかどうかでしょ
254:デフォルトの名無しさん
17/07/05 18:08:21.50 tRZ6TMIF.net
だれかGUIライブラリ書いて
そしたら社内ツールでC#の替わりに使うで
255:デフォルトの名無しさん
17/07/05 18:41:42.95 UiQJEPDB.net
ゼロコストがabstractionにかかっていることをつい忘れちゃう
まあ普通に考えたら、futuresでもIteratorでもMapを実現したいなら値と関数は保持しないといけないし、AndThenも前と次の値を持ってないといけないよね
ラッパー構造体のコストは引数がコピーじゃなければメモリ的にもCPU的にもゼロだったはず
256:デフォルトの名無しさん
17/07/05 19:26:13.97 AAYKoEFk.net
>>248
別にC/C++と比較してコストがあるかは気にしてないぞ
C++ TemplateとRust Traitは実質同じ所に行き着くんだから比較するほどの意味もなし
>>250
IteratorやMapを抽象化できないのか?、できないならコスト削減できない不適切なLibではないのか?とは思わないのかねぇ
Rustに限らず新興言語はキーワードだけ拾って素晴らしいものだ!みたいな賛美ユーザが多いね
>>249
URLリンク(github.com)
もう動かないかもしれないけど
去年くらいのwxWidgetsが3.2.0でFFI周りのI/Fを非公開にしてwxHogeHogeが全滅した
257:デフォルトの名無しさん
17/07/05 19:35:34.06 oPOjLgnt.net
>>150
コンパイラだってバカ正直にMap構造体を用意してそこにクロージャをそのままぶち込むようなコードは生成しないんやで
258:デフォルトの名無しさん
17/07/05 19:42:23.78 LLvZvDtb.net
>>251
>IteratorやMapを抽象化できないのか?
まあ確かにHKTが欲しいと思わないこともないな
259:デフォルトの名無しさん
17/07/05 19:43:35.74 oPOjLgnt.net
>>252
安価は>>250の間違い
260:デフォルトの名無しさん
17/07/05 20:12:29.34 kX6rHoUh.net
>>249
GTKはまともに使えるっぽいけどそれじゃだめなの?
俺はgtkあんま好きじゃないからいやなんだけど
261:デフォルトの名無しさん
17/07/06 11:00:33.73 tRC1mrQq.net
>>247
>コストがゴリゴリ上がってくのは分かった
何を突然ファビョってるんだか
タスクごとのヒープアロケーション数はΘ(1)に抑えられているだろ
262:デフォルトの名無しさん
17/07/06 20:30:03.81 kH42VxHy.net
最近の公式の動きを見ていると、WebフレームワークはRocketを推していく方針に見えるな
263:デフォルトの名無しさん
17/07/07 07:02:47.03 vPLSgrbk.net
>>257
何でよりによってnightlyを要求するRocketなん?
264:デフォルトの名無しさん
17/07/10 13:13:29.86 Y8I/wQdo.net
>>256
タスク数に合わせてO(n)になってると思うんだけどそれは度外視なのかな?
265:デフォルトの名無しさん
17/07/10 13:58:50.67 mQ3pGq+a.net
オラクルがrustでコンテナランタイム作っとるってよ
266:デフォルトの名無しさん
17/07/10 19:18:17.66 l6mkv8ve.net
Building a Container Runtime in Rust | Oracle Developers Blog
URLリンク(blogs.oracle.com)
> almost all container utilities are in c or go.
> (中略)
> Rust sits at a perfect intersection of these two languages
267:デフォルトの名無しさん
17/07/11 13:53:59.15 5tKo2E+W.net
オラクルの時点でお察し案件じゃん
まあオラクルとモジラは業界のゴロ同士仲がよろしいんですなあ
268:デフォルトの名無しさん
17/07/14 04:46:26.78 TKiI+WcD.net
google という名前のcrateが上がってて、
説明文が "Google is evil"
バージョン番号が "6.6.6"
269:デフォルトの名無しさん
17/07/14 20:21:33.28 8a1VCaPH.net
Googleが悪とかやっぱモジカスだわ
270:デフォルトの名無しさん
17/07/15 17:00:03.78 U+uVxSdX.net
Rust公式がTwitterで"Rocketの新バージョンがリリースされたぜ"とか呟いてて、それに対して"Ironの何が悪いんだ"的なクソリプが付いてるの笑う
271:デフォルトの名無しさん
17/07/15 23:27:50.25 RjDGp9te.net
RustのSlackでmame氏にCでポインタとか触ったことありますか?って聞いてるやついてワロタ
272:デフォルトの名無しさん
17/07/16 13:32:06.66 FJgd8SG/.net
箸が転がったから笑った
273:デフォルトの名無しさん
17/07/16 13:33:12.21 JEFmdVs4.net
膝がワロタ
274:デフォルトの名無しさん
17/07/17 22:50:00.44 8lRCTnOP.net
関連型ってさなんでいるの?
CeylonやC#みたいにgenericsのin/outで実現できない?
275:デフォルトの名無しさん
17/07/18 13:42:50.01 NOYbJ+oD.net
>>261
ライブラリの問題とかそういう回避方法はないのかと考察したけど、goroutineの仕様上無理ぽって結論なのか
rustが最適な言語かどうかは懐疑的だけど、go以外の使える新興言語ってのは他にないし仕方ないのかねぇ
276:デフォルトの名無しさん
17/07/19 19:13:52.48 23uwxygM.net
>>269 in/outの方が劇的に良かったりするの?MSDNとか読んでもすぐに理解できなかった
277:デフォルトの名無しさん
17/07/19 22:47:17.03 UyJFKTdP.net
>>271
良くなったりするわけじゃなくて全く同じもの。
単にrustのジェネリックスに制限があるだけ。
in/outや+/-なのはjavaの境界ワイルドカード型の定義が
長いから短くなったものでキーワードにするかシギルにするかの好みの違い。
278:デフォルトの名無しさん
17/07/20 00:56:51.60 k7oT/owf.net
C#とか知らないから適当なことを言うけど、in/outって要は型パラメータの反/共変性を指定する構文ってこと?
Rustはクラスがないからあまり関係ないような気が
そもそも関連型と型パラメータは全く別物だし
279:デフォルトの名無しさん
17/07/21 01:30:42.74.net
Announcing Rust 1.19 - The Rust Programming Language Blog
URLリンク(blog.rust-lang.org)
・C互換な(untagged) unionの導入
・loopのbreakで値を返せるようになった
・値をキャプチャしないクロージャを関数ポインタ(impl Fnでなくてfn型)として扱えるようになった
280:デフォルトの名無しさん
17/07/21 03:20:29.74.net
新しい言語は早い段階から使い始めれば
バージョンアップ時は変更点だけ覚えればいいけど
バージョンアップが重なったあとから始めようとすると覚えることいっぱいすぎ
Rustよ
もっとシンプルに
281:デフォルトの名無しさん
17/07/21 08:32:20.79.net
-Zオプションが時報に無視されててワロタ
282:デフォルトの名無しさん
17/07/21 12:38:58.44.net
Cargoがhigh level過ぎでrustcがlow level過ぎな課題はいつ解決するんかな
他のビルドツールを使ったプロジェクトにrustを入れるのが今は面倒
283:デフォルトの名無しさん
17/07/21 19:27:14.18 juJaC8N3.net
ていうか時報の反応速度が高くて笑う
まさかリリースの度に待機してるのか?
284:デフォルトの名無しさん
17/07/22 07:37:27.49 m9up21PD.net
> ・loopのbreakで値を返せるようになった
遂に来たか。
285:デフォルトの名無しさん
17/07/22 14:32:40.69 IwEFmDCG.net
時報であることに使命を感じて全力待機してそう, 機械の鑑だよホント
286:デフォルトの名無しさん
17/07/22 16:14:42.22 Jfa6LaZA.net
誉め言葉として受け取っておく
287:デフォルトの名無しさん
17/07/22 16:20:13.34 rGyFmqNE.net
>>281
誰だお前
288:デフォルトの名無しさん
17/07/22 16:39:57.41 WZvf35Ul.net
なお、バグった機械の模様
289:デフォルトの名無しさん
17/07/22 17:02:38.46 vk3cyWgj.net
雑談の種になるよう頑張ってるんだよ、そんなあげつらうことないでしょ
290:デフォルトの名無しさん
17/07/22 17:04:33.13 vk3cyWgj.net
というかどこに行けばRustの話をしていいのか分からない。英語ならRedditがあるけど
291:デフォルトの名無しさん
17/07/22 17:05:27.55 lf8sQzDC.net
あれ、associated constsはstabilizeされたんじゃなかったのか
292:デフォルトの名無しさん
17/07/22 17:10:48.08 rGyFmqNE.net
>>286
現行のbetaではfeature gateが外れているから次のstableに乗るはず
293:デフォルトの名無しさん
17/07/22 17:42:07.41 Oi7t7NSG.net
rust-jpのSlackとか?
ところでLLしか触ったことなかった俺も最近Rust使い始めてみたんだけど、有識者から見てRustで1番理解が大変なの(あるいは抑えておかなきゃならないとこ…)はどのあたりなのか教えて欲しい。
294:デフォルトの名無しさん
17/07/22 18:20:40.76 RlMkEmCd.net
>>288
トレイト
ムーブ
参照(borrowing)
Javaも触ったことないならトレイトは最初難しそう
295:デフォルトの名無しさん
17/07/22 20:18:18.76 s9rnd8yr.net
slackの質問に対するリアクションありすぎてこわい
296:デフォルトの名無しさん
17/07/22 20:29:54.52 Oi7t7NSG.net
>>289
ありがとう
公式のチュートリアルみたいなやつ進めてるんだけど今のところトレイトオブジェクトらへんでちょっと理解に苦しんでる
297:デフォルトの名無しさん
17/07/24 12:10:36.01 1TXRI9Gx.net
rustって現場で使われ始めてるの?
メモリ管理周りのメンタルモデルって他の言語に応用利いたりする?
コードがきれいになるとか?
始めるモチベが欲しい。
298:デフォルトの名無しさん
17/07/24 12:28:38.82 zGGIqffP.net
C++ほど辛くない
299:デフォルトの名無しさん
17/07/24 14:12:02.33 K7WDOtB+.net
>>292
1.クソコードをコンパイルさせてくれない
2.コンパイル通すの少し大変だけど実行時エラーが本当に出ない
3. 速い
4.パッケージマネージャーがよくできてる
1は本当に大きくて、自分のコードとコンパイラが喧嘩になると大抵自分のアーキテクチャが悪く、直すとちゃんと正しい実装になって感動する。つまり正しいコードが書けるようになる
300:デフォルトの名無しさん
17/07/24 14:19:11.38 1TXRI9Gx.net
>>294
もう一つ。仕事で使ってたりする?
goのcliツールはよく見るんだけど
rust製って何が有名なのかね?
ブラウザ以外で
301:デフォルトの名無しさん
17/07/24 16:50:51.12 emVJufwa.net
仕事で使ってるかは別としてcliツールは作りやすい印象
302:デフォルトの名無しさん
17/07/24 17:05:29.37 gGn38L0V.net
ripgrepしか紹介できないんだがなんかないのか
303:デフォルトの名無しさん
17/07/24 17:19:06.22 5AMOakOe.net
redoxosのシェルやエディタはunix用としてもビルドできるし
有名かは別として
304:デフォルトの名無しさん
17/07/24 18:24:11.57 v7SfrUaR.net
ripgrepはもちろんだが、tokeiも便利だよ
ion-shellもよく出来てる
305:デフォルトの名無しさん
17/07/24 18:47:46.45 xH7iVUfu.net
URLリンク(github.com)
306:デフォルトの名無しさん
17/07/24 19:32:19.52 TrXPl61y.net
tokei のレポジトリにある使用例
URLリンク(asciinema.org)
を見てみたら、F* と Ur/Web がカウントされていたので「あっ(察し」事案だった
307:デフォルトの名無しさん
17/07/24 23:36:39.90 mh/Tz+0K.net
確かにcliは書きやすくて社内で使ってるサポートツール類はほとんどRust製。
小さいツールだと関係者も少なくて説得しやすいし。
URLリンク(www.rust-lang.org)
こことか見ててもそういうパターンが多いように見える。
さすがに大規模なプロダクションコードをいきなり
置き換えとか無理だろうし。
308:デフォルトの名無しさん
17/07/24 23:43:54.02 Dtg+FNV7.net
Rustである旨味なさそうだけど学習用?
309:デフォルトの名無しさん
17/07/25 06:07:27.53 5XPEt11J.net
おお、色々情報ありがとう。
今のところgoのcliツールのほうが目立ってるのは、単純に1.0のリリース時期の違いによるものなのかな。
redox は気になるなー。rustのメモリ管理の仕組みからいってバグが少ないosになるのかな。ちょっと試してみたいかも。reduxと名前が似てるのがなんかやだけど
310:デフォルトの名無しさん
17/07/25 10:59:30.41 ULTUdplU.net
goのツールをパクって速いのを作ればいいのか?
goのツールは何があるの?
311:デフォルトの名無しさん
17/07/25 11:37:29.68 5XPEt11J.net
俺が知ってるのは
peco、ghq 辺りかな。
ghqは常用してるけど最近重くなってきてるからぜひrustで軽くなるならして欲しい。
多分gitにアクセスしてる部分がボトルネックな気がするけど。
312:デフォルトの名無しさん
17/07/25 11:45:28.60 5XPEt11J.net
あとgitをrustで書き直したらはやくなるとかないかね。
ライナスに喧嘩売ることになるかもだけど。
それをきっかけにlinuxをcにこだわるのをやめてくれるかもw
313:デフォルトの名無しさん
17/07/25 12:39:25.58 fQ81IbD6.net
pecoもghqもすでにrust版あるよ
314:デフォルトの名無しさん
17/07/25 13:18:07.15 E8ESHMbJ.net
wasmがもっと成熟すれば...
315:デフォルトの名無しさん
17/07/25 14:21:47.66 5XPEt11J.net
>>308
へー。リンク下さい
316:デフォルトの名無しさん
17/07/25 16:53:49.81 qEbQGi9S.net
>>310
URLリンク(crates.io)
URLリンク(crates.io)
317:デフォルトの名無しさん
17/07/25 17:33:21.29 CUwpfKAw.net
skimええやん
318:デフォルトの名無しさん
17/07/25 17:38:52.31 qu0St3oz.net
>>307
Facebookが社内向けにMercurial(Python + C)をRustで一部?書き直したら速かったらしい
俺も、社内向けツールを前任者がgoで書いたのを幾つかRustに移植してる
ただの練習素材として移植してたけど、2~3倍速くなったよ
319:デフォルトの名無しさん
17/07/25 19:00:41.47 FbhHJVqk.net
「Rust 1.19」リリース。union(共用体)をサポート
URLリンク(www.publickey1.jp)
320:デフォルトの名無しさん
17/07/25 20:32:46.37 5XPEt11J.net
>>313
おおー。魅力的な話だね。
メモリの使用量もrustだと減るようなきがするんだけどそのへんどうかな。
321:デフォルトの名無しさん
17/07/25 21:45:29.88 7Ef69C7C.net
rustは今の日本だと凄腕のプログラマが使ってるところはちょいちょい見かけるな。
もっとwebの人たちがたくさん布教すればいいんだろうけど、やっぱrust自体が難しいのかね。
C++とよくセットで名前が出てくるから、ビビる人が多いのかなーとも思う
322:デフォルトの名無しさん
17/07/25 22:11:08.39 FfK5LQFv.net
最近真面目に勉強し始めたけど潜在的に難解なバグを生み出す汚いコードを平気で書く人だと
コンパイルが通らないので辛いと思う。
若干煽り気味に言えばPHPやRailsだけやってプログラミングを分かった気になってちゃんと勉強してない人には無理。
323:デフォルトの名無しさん
17/07/25 22:21:26.92 5XPEt11J.net
ios -> objc, swift
android -> kotlin,java
web frontend -> typescript, javascript
web backend -> go,ruby,php
ってイメージだがrustはどこに入るの?
324:デフォルトの名無しさん
17/07/25 23:01:36.50 w/P80i1O.net
webassemblyの今後の成熟具合によっては、
web frontendに食い込んでいくかも
325:デフォルトの名無しさん
17/07/26 02:52:39.50 mSfCdN7l.net
>>318
希望的観測で言えば、
今までC/C++で書かれていたようなもの全てと、今goで書かれているものの半分 -> rust
WebAssemblyをほんとに必要としてるのは、ごく一部の人だと思う
326:デフォルトの名無しさん
17/07/26 08:56:45.29 ENBFGRGX.net
>>320
例えばc++ でUE4って書かれてるけど
そこをrustでってのはあるのかな?
ゲームエンジンとかはc++ってイメージだけどそれがrustでどうなるのか興味あるなー。
c++よりバグが少なくなってメモリ使用量も減るなら
家庭用ゲーム機とかの性能向上に役立ちそうだけど。
327:デフォルトの名無しさん
17/07/26 10:26:21.34 ENBFGRGX.net
URLリンク(rust-lang-ja.github.io)
このチュートリアルもうちょいなんとかならないのか
クロージャー周りの説明が抜けてるからなんだかふわっと触って終了みたいな感じになるんだけども。シンタックスの方から学んだほうがしっくりする。
328:デフォルトの名無しさん
17/07/26 12:59:44.03 TL1HhZT+.net
>>321
ゲームエンジンそのものがRustで書かれているのでなければ移行はないと思ってる
自分は据え置き開発だけど、ライブラリやツールやアセットパイプライン含めてC++ならそのまま利用する方が楽だし、ゲーム会社ならC++の資産やノウハウも蓄積されてる
329:デフォルトの名無しさん
17/07/26 16:21:03.85 G2QlGkU/.net
>>323
環境的にc++14使うくらいは許されてるの?
330:デフォルトの名無しさん
17/07/26 18:20:47.88 1Yp0AYo7.net
>>324
基本C++11かな
部分的に14の機能も使えるかも
そのうち使えるようになると思われる
331:デフォルトの名無しさん
17/07/26 18:36:05.35 0VRUk0dC.net
>>320はゲームエンジンそのものがrustにならんかのーって話じゃないの
その上っ面はC++のままで良いんでない
332:デフォルトの名無しさん
17/07/26 19:49:44.76 FgKZS4eT.net
>>322
最新ではその項無くなったよ
333:デフォルトの名無しさん
17/07/27 00:05:30.43 YcR0VV5Q.net
>>327
なんややっぱりそうなんだ。
やっててあんまり面白いとも思えなかったしね。
今シンタックスのところを読んでるけど、goより学習コストは高いなーと思った。
メモリ管理のメンタルモデルは学習を避けることができないから、尚の事学習コストは高いよね。
使い始めに関してはc++より難しいんと違う?
334:デフォルトの名無しさん
17/07/27 00:15:56.27 YcR0VV5Q.net
goを学習するモチベーションとなったのはgoroutineで並列処理を簡単に書けるからだったんだよね。
phpのバッチ処理を学習期間は2,3日で
goで並列処理を書けるようになった。
まぁ書けたってだけでgoの流儀って独特だから、その後の深淵に結構はまっていったんだけど。
深層学習の為のpython。
iosのためのswift。
みたくrustの始めるきっかけとなる分野ってなんかないのかな?
rustを書きはじめる皆さんのきっかけを教えてください。
335:デフォルトの名無しさん
17/07/27 08:45:36.82 alz7xNNS.net
>>329
社内でのC++開発に疲れて代替を探して。
ブライベートで使って、社内もこれにしたいと妄想する。そして誰も社内でRust使えない。
336:デフォルトの名無しさん
17/07/27 09:07:26.49 alz7xNNS.net
>>313
Rustにしちゃって、あなたの後任が困るとか、そういうことはないの?
社内でもRust認められてる?
337:デフォルトの名無しさん
17/07/27 10:08:19.56 JZl+5b/l.net
コードに問題があればcargo runでエラーが出ますけど
ビルドせずチェックだけを行う方法ないですか?
あと定番のlintツールも教えてください
338:デフォルトの名無しさん
17/07/27 11:54:01.80 NVUZFqS5.net
cargo check
clippy
339:デフォルトの名無しさん
17/07/27 12:47:34.70 tmRnr4Iu.net
>>331
前任者も認められてたからgo使ったわけじゃなく、goがもっとマイナーだった頃に勝手に使ってただけだし
俺も存在するかどうかわからない後任者など気にしてない
うちは大きな会社じゃないので、何を採用するかはプロジェクトリーダー次第
340:デフォルトの名無しさん
17/07/27 14:28:39.09 MedrFN4m.net
是非rust使ってレポートしてほしい
341:デフォルトの名無しさん
17/07/27 21:27:35.77 YcR0VV5Q.net
rustって課題を解いていく感じの学習サイトってないすかね?
goとかjsだとあるんだけど、、、
342:デフォルトの名無しさん
17/07/28 00:41:42.43 eqr+g7ZD.net
rusr by example 本家
URLリンク(rustbyexample.com)<)
343:デフォルトの名無しさん
17/07/28 08:34:02.73 O7VztC89.net
>>337
わぉ。ありがとうございます。普通にあってよかった
344:デフォルトの名無しさん
17/07/28 10:12:39.22 APGd6g7o.net
nightlyって頻繁に更新ありますか?
モバイルに接続してるのであんまり通信したくないからstable選んだんですけど
clippyがnightlyでしかインストールできないのつらい
345:デフォルトの名無しさん
17/07/28 13:36:38.25 IiZPJKRx.net
てすと
346:デフォルトの名無しさん
17/07/28 17:20:05.54 HRHd+c6j.net
cargo checkだと全てのrsファイルをチェックするので
cargo check hoge.rsみたいに特定のファイルを指定してチェックする方法ありませんか?
347:デフォルトの名無しさん
17/07/28 17:54:04.02 ABEdHekZ.net
Stableでは無理
Incremental compilationの安定化を待ちなされ
348:デフォルトの名無しさん
17/07/28 18:24:34.83 cPwtoBYF.net
>>342
あ、そのモジュールが他のモジュールに全く依存していない場合はrustc hoge.rs --crate-type=lib --emit=metadataが一応使えるんだった
ただしこれはカレントディレクトリにゴミをまき散らすからあまりおすすめできない
349:デフォルトの名無しさん
17/07/28 21:55:20.59 3/dxxKLW.net
REPLが欲しいんですが安定したやつないかな
350:デフォルトの名無しさん
17/07/28 22:25:19.67 kWrQnfQi.net
目の前の便利な箱で調べること出来ない教えて君は
実はRustで作った人工知能試験で動作試験してるんじゃなかろうな
351:デフォルトの名無しさん
17/07/28 22:36:44.17 GOfdf3yM.net
いまbookやってるんですけど
fn main() {
let x = 1;
println!("Hello")
}
これ1回目buildすると
warning: unused variable: `x`
--> src/main.rs:2:9
|
2 | let x = 1;
| ^
|
= note: #[warn(unused_variables)] on by default
って出るのですが、2回目buildするとこの警告が出なくなる
なんででしょうか?
352:デフォルトの名無しさん
17/07/28 22:40:19.95 jE9FvNjp.net
コンパイルの結果がキャッシュされているから
353:デフォルトの名無しさん
17/07/29 00:47:07.63 DIZfrj77.net
rustってまだ安定してない感じ?
開発環境は何がおすすめなんです?
vscodeを試したけどあんまりrustに対応してない感が
354:デフォルトの名無しさん
17/07/29 02:31:25.76 ZD4o/AdV.net
>>348
俺はIntelliJ派だから
355:デフォルトの名無しさん
17/07/29 02:34:36.68 7woiJ3eO.net
そうですか
356:デフォルトの名無しさん
17/07/29 10:51:47.46 Xgmp5DuD.net
Rustについて調べているのですが2点ほど質問です
・所有権、借用権ってどのようなケースを想定した機能なのか?
並行処理を行うコードを書く時には同期ミスによる破壊を防止できて便利そうだけど上手い活用ケースを想像できない
・OS無しで動かす
357:コードを書くケースでRustが謳うメリットはどの程度いかせるのか? メモリマップドレジスタへアクセスするためにunsafeと生ポインタを多用することになる このようなケースでコンパイル時の安全性の検査条件などはカスタマイズできたりするのか
358:デフォルトの名無しさん
17/07/29 12:41:44.44 cTpvw2dC.net
vim + project.vim + rust.vimもいいぞ
コード量が多いと流石にIntelliJ使うけど
359:デフォルトの名無しさん
17/07/29 12:52:24.62 U9LihKmk.net
IDEAとvscodeってどっちがおすすすめ?
360:デフォルトの名無しさん
17/07/29 12:52:42.83 U9LihKmk.net
おすすめ?
361:デフォルトの名無しさん
17/07/29 14:45:43.16 3C62sBLB.net
>>313
噂をすればなんとやら
facebookexperimental/mononoke: A Mercurial source control server, specifically designed to support large monorepos.
URLリンク(github.com)
>>351
メモリ安全性以外での所有権の活用例としては、すでにボディを書き込み始めたHTTPレスポンスに新たにヘッダを書き込めないことを静的に保証する、とかいうのがある
URLリンク(docs.rs)
ヘッダを書き込んだレスポンスの所有権を奪って、ボディだけを書き込める型にして返している
URLリンク(docs.rs)
362:デフォルトの名無しさん
17/07/29 16:04:35.17 OScYBSe+.net
もののけ
363:デフォルトの名無しさん
17/07/29 16:29:29.84 PuR8d8Sj.net
ideaのrustプラギンはメソッドチェインが深くなるとハイライトされなくなって、リネームとかも取りこぼすことがある。それ以外はよくできてて満足
364:デフォルトの名無しさん
17/07/29 16:43:27.84 mj0H/MXI.net
>>351
所有と借用は、設計の考え方として言語問わず有効なので、コンパイラに強制されるのはかなり嬉しい。
と言うのも、所有を考えないで動的メモリを使ったプログラムは、シングルスレッドであっても、ライフタイム問題を起こしやすいんだよね。
他人にヤラれると殺意がわく。
365:デフォルトの名無しさん
17/07/29 16:55:38.17 mj0H/MXI.net
>>351
借用に関しては、不意の同期漏れ防止と思ってる。
ご存知の通り、マルチスレッドでは、同じオブジェクトを触るときに同期処理を入れないと、データ破壊しちゃうじゃん?
C言語だと、この危険な状態がデフォルトで、気付くかどうかは人間次第。
でも、rustはコンパイラがその危険な状態を防いでくれると言うだけだと思う。
366:デフォルトの名無しさん
17/07/29 17:08:36.25 mj0H/MXI.net
>>351
最後、OS無しはどうかなー。
自分ならこうするかなっていうテキトーな意見だけど、生メモリアクセスが必要な部分(デバドラとか)はC/C++で書いて、アプリ部をrustで書いてFFIバインドかなー。
367:デフォルトの名無しさん
17/07/29 17:23:05.64 H7MJnrUX.net
Rustの素晴らしさを理解するにはC++を理解する必要がある?
368:デフォルトの名無しさん
17/07/29 17:27:03.96 DIZfrj77.net
>>360
メモリ安全にかけるのがrustなら
最初から最後までrustで書けるべきじゃない?
369:デフォルトの名無しさん
17/07/29 17:41:05.57 mj0H/MXI.net
>>362
最初から最後までメモリ安全じゃなくてもいいんじゃない?
適材適所で使い分ければ。
マルチスレッド問題はアプリ側に多い問題かなーって。
デバドラ最下層になると、そもそもマルチスレッド要件が無かったり、メモリイメージが生で見える触れる方が融通があって便利だったりするし。
ドメイン境界で考えて、rustを適用する範囲内で潔白なのが重要と思ってる。
この潔白さは、開発者の人数が多いドメイン(アプリ)で、真価を発揮するんじゃないかなと。
370:デフォルトの名無しさん
17/07/29 18:00:00.71 SaJE2wIQ.net
racer + flycheck-rust でマクロ補完って無理?
println!とかwrite!とか毎回全部打つのがダルい
371:デフォルトの名無しさん
17/07/29 18:10:49.31 DIZfrj77.net
>>363
結局cには勝てないのか。
rustってgcがないからメモリイメージを直接いじりやすいのかと思ってたよ。
redoxとかも結局c++に頼ってたりするんかな?
372:デフォルトの名無しさん
17/07/29 18:13:03.21 DIZfrj77.net
>>363
あと最初から最後までメモリ安全のほうが良くない?
少なくともメモリ関連のバグを撲滅できるんであればrustの価値はあると思うんだ。
逆にできないならrustの存在意義ってなんだろ。
goは並行処理が言語機能に組み込まれてる。
rustはメモリ安全が売りだと思うんだけど、
そこってなかなか地味な売りな気がして
373:デフォルトの名無しさん
17/07/29 18:57:22.38 mj0H/MXI.net
>>365
Cに頼る→負けてるって事じゃないと思うけどね。
実際アセンブリ言語はなくならないわけだし。
CPU の高機能化、メモリの大容量化、プログラムの大規模化、があって、開発効率を高めるために、プログラムの大部分がC言語に置き換わったわけじゃん。
で、マルチコア全盛の時代になって、正常稼働面での重大要因としてメモリ安全性が注目されてrustが生まれたのだから、メモリ安全のメリットの大きいところだけrustに置き換わるってのが、普通の流れじゃないのかなーと思うよ。
別にCを駆逐する必要はないしょ。
374:デフォルトの名無しさん
17/07/29 19:02:32.30 mj0H/MXI.net
>>366
そもそも、ハードに近い層でのメモリ安全性って何?って話だと思うんだ。
で、メモリ安全の話が出てこない領域なのだから、rustの出番が無いって事で良いんじゃない?
375:デフォルトの名無しさん
17/07/29 19:05:29.70 mj0H/MXI.net
>>361
むしろC++をうまく使うために、rustの意味論(セマンティクス)を勉強して欲しい、って思う。
376:デフォルトの名無しさん
17/07/29 19:59:14.72 DIZfrj77.net
goができたのはgoogle社内のc++プロジェクトの置き換えのためだけどrustってどんな動機でできたの?。
まさかブラウザ開発のため?
377:346
17/07/29 20:14:02.81 DdYvAide.net
>>347
キャッシュを無効にして毎回警告を出すにはどうしたら良いでしょうか?
378:デフォルトの名無しさん
17/07/29 20:22:55.12 OScYBSe+.net
>>369
俺もRustはじめてからC++が少しよく書けるようになりました
379:デフォルトの名無しさん
17/07/29 21:18:30.65 ZD4o/AdV.net
>>355
へー、monorepo用だからモノノケとな
mercurialをベースに仮想ファイルサーバーにする予定とは、なかなか壮大な計画だ
380:351
17/07/29 21:52:24.31 Xgmp5DuD.net
レスありがとうございます
>>355,358-359
なるほど。やはり並列処理時の安全性を担保する機能なのですね
組み込みでRTOSもどきを作って並列処理させるなんて場合には有効なのかな
>>360
構文上罠が多いC/C++の代替となる言語を探していてRustを検討しています
なのでC/C++を使わずにC/C++相当のことを行いたいです
警告もエラーも無しに動作だけがおかしいとか勘弁して欲しいです
他にDも検討していますが何となく新しい方が何かと便利かなと思ったり・・・
381:デフォルトの名無しさん
17/07/30 03:44:39.97 m1nsIIH9.net
以前にこのスレであったら良いと言われていたOptionのEntry風APIが実装されて、しかも既にstabilizeされている
std: Stabilize `option_entry` feature ・ rust-lang/rust@ee064c3
URLリンク(github.com)
382:デフォルトの名無しさん
17/07/30 08:00:41.23 eSrcFrA9.net
>やはり並列処理時の安全性を担保する機能なのですね
race condition の解消はあくまでもメモリ安全の一部でしかない
383:デフォルトの名無しさん
17/07/30 08:02:46.70 eSrcFrA9.net
>
384:他にDも検討していますが何となく新しい方が何かと便利かなと思ったり Dが検討対象に入って、かつ、低水準用途なの? 意味わからんな
385:デフォルトの名無しさん
17/07/30 08:03:42.92 NzSybo/S.net
351からは実際にプログラム組んだことの無い人の気配がプンプンしてる。
386:デフォルトの名無しさん
17/07/30 11:40:03.02 sZ4wntzb.net
cargo check のメッセージが加工しづらい
URLリンク(github.com)これ追加されて欲しい
387:デフォルトの名無しさん
17/07/30 16:21:42.29 vygP638r.net
たぶんnode.js育ちの人だと思うけど、実質1行ないし3行で完結してるクレートが出てきてるね
388:デフォルトの名無しさん
17/07/30 17:42:42.26 cNiju5gN.net
clippyインストールできないclippyインストールできないclippyインストールできない
clippyインストールできないclippyインストールできないclippyインストールできない
clippyインストールできないclippyインストールできないclippyインストールできない
修正したコミットがが日曜の夜にコミットするって作者が言ってるけど遅すぎ 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
389:デフォルトの名無しさん
17/07/30 19:43:29.15 IhAKIxVt.net
CランタイムをスタティックリンクしたくてRUSTFLAGSに以下のフラグを設定しています。
RUSTFLAGS='-C target-feature=+crt-static'
これを環境変数で設定するのではなくCargo.tomlで指定するにはどうすればいいんでしょうか?
URLリンク(doc.crates.io) を参考に下のように書いてみたのですが効いてないようでした。
[build]
rustflags = ["-C target-feature=+crt-static"]
オプションの書き方が違っているんですかね?
390:デフォルトの名無しさん
17/07/30 19:51:11.45 m1nsIIH9.net
["-C", "target-feature=+crt-static"]
でどうかしら
391:デフォルトの名無しさん
17/07/30 20:00:04.61 IhAKIxVt.net
うーん、このへん試してみたんですけどだめなんですよね。
["-C", "target-feature=+crt-static"]
["target-feature", "+crt-static"]
392:デフォルトの名無しさん
17/07/30 22:39:37.27 KR/rniwV.net
>>381
一時的に古いnightly使えば良いのでは
393:デフォルトの名無しさん
17/07/30 23:38:44.64 dsY+op8E.net
まだruct学んで2日目だけど
これパッケージ入れる時のコンパイルが長いね
補完強化のためにracer入れようとしたらsyntax_syntaxから全然進まなくてCTRL+C押しちゃったよ
基本的なものを覚えるだけならパッケージなんて入れなくても良さそうだけど
ステップアップしたときにそれなりのスペックのPC持ってないと学習するのが厳しい言語って感じ
394:351
17/07/31 01:33:05.73 0NH1HYUL.net
>>377
C/C++より判りやすく罠が少なくC/C++で出来ることは全て出来る言語を探しています
>>378
ネイティブに動くプログラムで一番経験があるのはアセンブラ(組み込み)です
C/C++はなんの警告もなくメモリがぶっ壊れるし、どこが壊しているのかも判りにくいし
苦手です
395:デフォルトの名無しさん
17/07/31 09:17:51.12 nR0sqwYk.net
アセンブラは型がないぶんさらにメモリ壊しやすいと思うが
396:デフォルトの名無しさん
17/07/31 13:44:43.25 luO5NyKL.net
ライフタイムもコンパイル時に検査してライフタイムの外側からアクセスする処理もコンパイルエラーにするって
これって結局
全部ローカル変数になるってこと?
プログラム全体を通してアクセスする変数はmain関数で用意したローカル変数だからmain関数を抜けたあとは全部開放しちゃうからメモリリークも起きない?
cとかでもやろうと思えばできるって事?
cでmallocとかfreeを使わず、
全部変数定義してつかえばrustと同じ?
397:デフォルトの名無しさん
17/07/31 16:54:10.50 RkZnFpRc.net
メモリに限らずリソース確保全般を行わないプログラムって何ができるのか
可変サイズの入力を受け取るならmallocがほ
398:ぼ必須じゃない? 1行MAX_LENGTH文字までのテキストしか処理しないとか?
399:デフォルトの名無しさん
17/07/31 17:16:32.22 CRPdTSOK.net
rustってどんな分野に向いてるのかいまいちわからないんだけど
webに使うのはおすすめできる?
400:351
17/07/31 19:18:45.74 S3S/4XWd.net
C/C++は言語仕様的にメモリの破壊を誘発しやすいと思っているんだけどそう思うのは自分だけなのだろうか
>>388
プロジェクトやプログラムの規模という要素もあるけどメモリを自由に管理できるアセンブラの方が見通しが良く
メモリ破壊に関するリスクも制御しやすいと思う。人間が理解しやすいように並べることも出来るし
もしメモリを壊した時もC/C++より何が起きるかを予測しやすいと思う
個人的にはメモリアクセスの規約を登録できてコンパイル時にそれをチェックしてくれると嬉しいんだけどな
401:デフォルトの名無しさん
17/07/31 19:24:58.57 nTqL7k1O.net
アセンブリ的な観点でCの挙動が予想できないと言っているようならRustなんて余計に抽象的で分かりづらいと思うのだが
Volatile関連の制御とかだって面倒なだけだし
402:351
17/07/31 21:28:38.42 S3S/4XWd.net
>>393
C/C++はメモリマップを意識しないと安全を確保できないけど、マッピングするのはコンパイラでありリンカでありOS
そのような状態で想定しないメモリアクセスが起きた時の挙動を予想することは自分には出来ないです
C/C++でバリバリ書いている人はこの程度出来て当たり前なのかな
403:デフォルトの名無しさん
17/07/31 22:26:49.07 nR0sqwYk.net
C/C++というレベルじゃなくて
LinuxのABIやldのリンカスクリプトがわからんレベルの人と予想
404:デフォルトの名無しさん
17/08/01 18:09:39.02 TrH0Acv/.net
>>391
いわゆるWebアプリを書く言語としてはおすすめしない。
405:デフォルトの名無しさん
17/08/01 18:17:25.28 TrH0Acv/.net
>>392
C/C++に慣れていないだけでは。
もしくは動的なメモリ確保を想定していないとか。
406:デフォルトの名無しさん
17/08/01 18:21:43.31 TrH0Acv/.net
>>394
(わりと一般的な)OS上で動かす限り、アセンブリ言語で書いても
リンカとローダが介在することには変わりないと思うけど。
407:デフォルトの名無しさん
17/08/01 18:52:10.83 8J/offgv.net
>>351はOS無しと言っている
408:デフォルトの名無しさん
17/08/01 19:26:38.99 A6tuVNB3.net
>>351
OSなしアセンブラを必要とする層で使える汎用高級言語を探してるならRustは適さないからお帰り
そういう言語が存在する気はしないけど夢追い人っぽいから応援はしてるよ
409:351
17/08/01 19:28:04.99 ascdikyg.net
新しめのプログラミング言語は十中八九メモリの安全を謳っているけどこれってC/C++でメモリの破壊や
メモリアクセス違反を多発させる事例が多いからと思っているけど違うのかな
これらの低減を目的にC/C++の代替言語としてRustやDなどを検討するっておかしな事なのだろうか
410:デフォルトの名無しさん
17/08/01 21:16:08.18 PIQ133u2.net
>>400
まじかーgcがないってOS無しで動かせる唯一の言語だと思ってたから残念
例えばESP8266とかESP32で使えたらいいとか思ってたよ。
webが利用用途じゃないって残念すぎるな。
そうするとrust使ってる層って仕事でc++を使ってる組み込み関係の層が
趣味的に触る言語ってことかな。
411:デフォルトの名無しさん
17/08/01 22:02:02.77 A6tuVNB3.net
お前の中ではGC有無とOS要否は直結するのか(驚愕
ESPがどういうチップセット構成なのか知らんけど
ARM CPUならクロスコンパイルして動かせるんじゃね
多分、同じ程度の努力でGC載ってるGoも動くと思うけど
412:デフォルトの名無しさん
17/08/01 22:04:43.31 H6BRQUwS.net
cargo checkすると
warning: the option `Z` is unstable
というメッセージが出るそうなんですがこのメッセージを出す方法を教えて頂けませんか?
413:デフォルトの名無しさん
17/08/01 22:04:54.04 8J/offgv.net
Webに関してはそれなりに精力的に開発されているから将来的には使い物になる可能性もある
crates.ioとかだってRust製だしね
414:351
17/08/01 22:43:53.38 ncmaIafS.net
>>402
ググるとラズパイ(タダのLinuxだが)向けコードをRustで書いてみたとか、プレステ1用のコードをRustで書いてみた
とか出てくるんだよね。自分が組み込みに使えるんじゃないかと思ったのもその辺が目にとまったから
昔よりかなり良くなっているとは言え汎用機と比べるとデバッグ手段は限定されるし、コンパイル時にコードの妥当性が
ある程度保たれるというのはメリットだと思う
組み込みで「どこかのメモリを壊しているようだが皆目見当が付かない」なんて事態は可能な限り回避したいしね
415:デフォルトの名無しさん
17/08/02 00:38:23.97 Oyyz61S9.net
>>400
いや、そういう用途向けでしょ。
実際にOSの実装に用いられてるし。
416:デフォルトの名無しさん
17/08/02 00:46:25.26 9o+N0qJU.net
上の人はOSを書こうとしているんじゃなくてOS無しのままコードを書くつもりなんでないの?
言い換えると、extern crate coreすら出来ないやつ
417:デフォルトの名無しさん
17/08/02 01:03:22.66 OoZ5R2Ag.net
なんか勘違いしてる人がいるね
Rustが強いのは「ちゃんとラップしてあげれば」どんな環境でも「安全に」動かせること
例えばとあるレジスタを触っているときに他のレジスタを触れないようにするとかも(場合によってはコンパイルエラーのレベルで)できる
ただこのラップするっていうのが一番面倒で、そこで安全を担保できなければ=unsafe祭りならむしろCのが楽とも言える
ちょっとググったらArduinoでRustを動かすためのライブラリもあるからその辺り参考にすると良さそう
>>408
OS書くのもOS無しで書くのも変わらないと思うんだけど、coreを含められないってどういう状況?
libcoreは何にも依存してないからそんな状況ありえないと思ってた
418:デフォルトの名無しさん
17/08/02 01:08:41.51 CN84q205.net
アセンブリ君
419:351
17/08/02 01:16:10.65 Qb6MNIfM.net
あー・・・何となく判ってきた。組み込みでそのようなコードを書くのか判っている人からレスが付いていたのか
420:デフォルトの名無しさん
17/08/02 01:21:03.63 E8GFzbft.net
>>396
>>405
今は使い物にならないって事?
向いてると思って趣味のWEBアプリに採用したけどやめたほうがいいのかな
Golangは古臭すぎて使う気起きないし
正直速度はどうでもいいけど構文が好き
421:デフォルトの名無しさん
17/08/02 01:21:20.56 Hth04IJp.net
coreだって何にも依存しないというわけではない、けれどそれは自分で用意すれば良いしね
rust_begin_panicとかをどうやって用意するのかは知らないけど
422:デフォルトの名無しさん
17/08/02 01:22:27.24 /y5AMSWR.net
RustでもOS書けるでしょ
(もちろんCと同じく最低限のアセンブラはいるが)
ぐぐればいろいろ見つかるぞ
423:351
17/08/02 01:38:12.16 Qb6MNIfM.net
>>411ミスった。訂正
× 組み込みでそのようなコードを書くのか判っている人
○ 組み込みでどのようなコードを書くのか判っていない人
>>409
>例えばとあるレジスタを触っているときに他のレジスタを触れないようにするとかも(場合によってはコンパイルエラーのレベルで)できる
そういう話を聞きたかった。レジスタの操作順までコンパイラレベルで面倒を見てくれたらありがたいと思う
xに値を書き込む時はyのnビットを1にしてからxへ書き込むとかあるしな。その定義を作る気力があるかはともかくとして
>そこで安全を担保できなければ=unsafe祭りならむしろCのが楽とも言える
ペリフェラルレジスタだけunsafeにしてすればと思ったけどそう単純な話ではないのかな
もちろん入力値のチェックは必要になるだろうけど
424:デフォルトの名無しさん
17/08/02 02:29:19.43 OoZ5R2Ag.net
>>413
確かにmemcpyとかあるね、忘れてた
まあこの辺りはCでも間違いなく自分で書くとこなので大したコストじゃないね
> rust_begin_panic
組み込みならシリアルにでもログ出して無限ループとかが普通かな?
こういうのはOS系のプロジェクトがとても参考になる
>>415
> その定義を作る気力があるかはともかくとして
実行時チェックなら多少楽になるだろうしそこは(精神的)コストとの相談だね
> ペリフェラルレジスタだけunsafeにしてすればと思ったけどそう単純な話ではないのかな
個人的にはunsafe使い始めると至る所で使うようになっちゃうのでお勧めしない
Rustの思想的にも未定義の挙動を許すunsafeはできるだけ避けるべきだしね
そんなの気にせずチェックしたいとこだけチェックさせるLint的な使い方もありっちゃあり
425:デフォルトの名無しさん
17/08/02 07:02:07.94 nq2BG13A.net
redoxのアセンブラで書いてる所すらもrust(高級言語)で書きたいって夢を語ってるんじゃないの?
結局何がしたいのか分からんな・・・
そこについては諦めているなら既に実用化されているし
そこを追っているならチップ毎のクロスコンパイラ作りを頑張れとしか言いようがねぇよ
426:デフォルトの名無しさん
17/08/02 08:11:06.98 Oyyz61S9.net
>>415
レジスタまで意識する用途なら、高級言語を使わないのが正解では
> xに値を書き込む時はyのnビットを1にしてからxへ書き込むとかあるしな。
それこそボード固有の話になるので。
高級言語でやるとしたら機能レベルで関数化して中身はインラインアセンブリで頑張るとか。
何れにせよ言語レベルで対応する話ではないな。
427:デフォルトの名無しさん
17/08/02 10:50:44.07 AyM7Pnm7.net
>>412
>向いてると思って趣味のWEBアプリに採用した
やってみたら良いと思う。
仮にミスマッチだったとしても、過程や結果を公開すれば、色んな人の役に立つ。
428:デフォルトの名無しさん
17/08/02 12:12:53.41 m0LDca1I.net
rustっていまのところ
何にも向いてないということか。
golangみたいにgoといえば並列処理!みたいなウリがないとなかなか厳しいな。
とりあえずwebはgoでいいや。
429:デフォルトの名無しさん
17/08/02 12:21:18.09 E8GFzbft.net
>>419
webアプリ作るならunsafe必須とか?
cもc++も触った事ないからunsafeだけは無理なんだけど…
430:デフォルトの名無しさん
17/08/02 12:56:49.05 qhSfUKHc.net
変なチューニングに走らない限りはunsafeは不要
ただしRailsでいうところのDoorkeeperやPaperclipみたいな便利ツールが少ないからそのあたりは自力でどうにかする必要がある
あと、現状で主要なフレームワークはみんなsynchronous。ただしRocketはそう遠くない将来にasync対応しそう。Ironはそもそもやる気があるのか分からん
431:デフォルトの名無しさん
17/08/02 15:19:15.45 E8GFzbft.net
>>422
unsafeは不要なのか、よかった
Railsは使ったことないから分からない
今まではNode.jsでexpress使ってたからそのまで分厚いフレームワークは使ったことない
rustってイベントループじゃなくてスレッドだよね?10K問題はどうなの?