プログラミング言語 Rust

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
Mozillaがリリースした、プログラミング言語「Rust」について語るスレです。

http://www.rust-lang.org/
2デフォルトの名無しさん:2012/01/25(水) 20:09:28.45
もうJavaの亜種はおなかいっぱい
3デフォルトの名無しさん:2012/01/25(水) 20:52:58.74
なんでこんなネガティブな名前なの
4デフォルトの名無しさん:2012/01/25(水) 21:03:34.50
次世代Mozillaというキラーアプリを書くための言語ってことで
相当期待していいんじゃないの。
5デフォルトの名無しさん:2012/01/25(水) 21:56:42.64
これ、BLISSと同じ式言語なのな。

6デフォルトの名無しさん:2012/01/26(木) 02:15:43.94
チュートリアルぱっと眺めてみたけどmodとかifaceとか予約語のセンスの
悪い省略っぷりだけで流行らない臭いがプンプンした。
今時IDEで入力するからそんな中途半端な省略いらんだろ。
7デフォルトの名無しさん:2012/01/26(木) 02:32:43.15
>>6
fnとかダセェw
8デフォルトの名無しさん:2012/01/26(木) 02:33:52.49
Fnキーかと思った
9デフォルトの名無しさん:2012/01/26(木) 04:26:12.06
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
10デフォルトの名無しさん:2012/01/26(木) 08:08:35.07
予約語があえて一般名とかぶらないようにする利点のひとつに
変数名などに一般名を利用した時にかぶらない、というのがある。
11デフォルトの名無しさん:2012/01/26(木) 23:47:15.02
キーワードとかは最初取っ付きにくいかもするけど、なかなか良さげな感じ。
12デフォルトの名無しさん:2012/01/27(金) 04:10:03.22
Hello, World見た瞬間に駄目だわこれおもたわ
いまどきfu[Enter]でfunctionが出るIDEもあるのにな。fmtも蹴り飛ばしたくなる。

> Rust's alt construct is a generalized, cleaned-up version of C's switch construct.
>
> alt my_number {
> 0 { std::io::println("zero"); }
> 1 | 2 { std::io::println("one or two"); }
> 3 to 10 { std::io::println("three to ten"); }
> _ { std::io::println("something else"); }
> }

これがcleaned-up versionってどんな美的センスだよ。
いらん独自性を発揮してgdgdになっとるわ。

まあ名前通りの言語のようだな。
いかにも言語オタが考えた感じ。これ以上0.1秒も関わりたくない。
13デフォルトの名無しさん:2012/01/27(金) 04:21:56.48
名前省略自体は個人的にはぜんぜんオッケーなのだけど
functionならfnかfunがよかったな。それはさておき

std::io::println("one or two");

IPv6アドレスみたいでステキ
14デフォルトの名無しさん:2012/01/27(金) 13:48:49.83
::の多用はダサい。
15デフォルトの名無しさん:2012/01/27(金) 17:40:31.63
>>12
>いまどきfu[Enter]でfunctionが出るIDEもあるのにな。fmtも蹴り飛ばしたくなる。
入力が楽になることよりも、見た目が見やすくなることのほうが大事だろ。
「function」なんて自己主張が強すぎる。「fn」や「def」ぐらい短い方が控えめで見やすい。
callback(x, y, function() { ... } ) // JS
より
callback(x, y) { ... } # Ruby
のほうがだんぜん読みやすいしな。
16デフォルトの名無しさん:2012/01/27(金) 17:47:45.51
変数名をよく短い形で書くから嫌だな
17デフォルトの名無しさん:2012/01/27(金) 19:58:14.45
defは良いがfnはねえよ
18デフォルトの名無しさん:2012/01/27(金) 19:59:47.77
昔のLispの本を見ると時々たまに見かける
19デフォルトの名無しさん:2012/01/27(金) 20:51:32.20
fnなんて中途半端はやめてfにしろよ
20デフォルトの名無しさん:2012/01/27(金) 21:44:38.89
これってネイティブコンパイラ?
21デフォルトの名無しさん:2012/01/28(土) 00:44:54.49
ぶっちゃけ昔のBASICみたいで私は好きよ
22デフォルトの名無しさん:2012/02/07(火) 01:29:54.05
マルチコア、メニーコア時代
これは、ひょっとするかも知れないね
23デフォルトの名無しさん:2012/02/09(木) 19:28:30.25
見た目の話ばっかりじゃねぇか
24デフォルトの名無しさん:2012/02/14(火) 05:37:02.70
Goの勢いが異常だったのか

go
http://pc12.2ch.net/test/read.cgi/tech/1257920595/
>1 デフォルトの名無しさん 2009/11/11(水) 15:23:15
Go part3
http://pc12.2ch.net/test/read.cgi/tech/1259072043
>1 デフォルトの名無しさん 2009/11/24(火) 23:14:03 /
25デフォルトの名無しさん:2012/02/16(木) 00:24:45.10
まぁ、まだバージョンも0.1だし。

俺法則だとソフトウェアはメジャーバージョンが3あたりが丁度良い。
26デフォルトの名無しさん:2012/03/17(土) 18:05:57.64
>>24
Goはあのマスコットキャラがきもい
27デフォルトの名無しさん:2012/03/17(土) 18:13:32.34
28デフォルトの名無しさん:2012/03/18(日) 11:10:53.28
>>24
Goはコンセプトが明快かつ独自性もあったからな
そしてあのGoogleが、あのRob Pikeがという話題性も付随してたし
だがRustは「数多提案されたCの代替の一つだろ?」で済んでしまう
見た目の話に終始してるのも、Cの代替として使いやすいのか?という視点で見られているからだし
29デフォルトの名無しさん:2012/03/24(土) 01:56:34.48
Goスレ落ちてたからもう見限る
これ流行るか?
30デフォルトの名無しさん:2012/03/24(土) 02:24:39.97
Firefoxに載ってからが勝負だろ
そのためにはDartにコケてもらわないとな
31デフォルトの名無しさん:2012/03/24(土) 10:23:58.67
いや、DartとRustは全く用途が違うんだが…
32デフォルトの名無しさん:2012/03/24(土) 16:57:17.00
Mozillaがリリースってだけで勘違いしちゃったんだろうね
33デフォルトの名無しさん:2012/03/24(土) 21:18:54.50
FirefoxのバックエンドがRustで書かれるようになるってのは何年後なんだろうな
34デフォルトの名無しさん:2012/03/25(日) 05:39:43.79
コアプロジェクトで無いとはいえ3年掛かってようやくv0.1という
歩みの遅さを見れば、そんな日は来ないと思えるわな
35デフォルトの名無しさん:2012/05/16(水) 01:47:27.44
完成度は高いんだけどなぁ
36デフォルトの名無しさん:2012/05/20(日) 12:33:46.53
https://github.com/mozilla/servo
コンパイラ以外の実用例が出てきたな
37デフォルトの名無しさん:2012/05/23(水) 15:55:37.46
Note that Servo is a research project, it may or may not become an actual product.
まあ元々それのために作ってたもんだしな
38デフォルトの名無しさん:2012/07/01(日) 03:26:06.09
0.3マダァ?
39デフォルトの名無しさん:2012/07/07(土) 09:31:58.43
40デフォルトの名無しさん:2012/07/13(金) 10:35:38.10
41デフォルトの名無しさん:2012/08/06(月) 13:59:02.80
作者Graydon Hoareへのインタビュー
http://www.infoq.com/news/2012/08/Interview-Rust

"it seems a long time ago when @sayrer and I agreed to invest in
 @rustlang. But it was not, in Internet time."
https://twitter.com/BrendanEich/status/231566448017948672
42デフォルトの名無しさん:2012/08/11(土) 02:31:50.01
http://www.infoq.com/jp/news/2012/08/Interview-Rust
日本語版。
英語併記するくらいなら原語に統一すればいいのに
43デフォルトの名無しさん:2012/08/22(水) 13:46:06.71
最近 Perl みたいな記号地獄になりつつある
44デフォルトの名無しさん:2012/08/23(木) 14:28:35.10
45デフォルトの名無しさん:2012/08/29(水) 03:39:36.89
46デフォルトの名無しさん:2012/09/01(土) 19:29:13.78
47デフォルトの名無しさん:2012/09/20(木) 01:17:13.40
~"UNIQUE STRINGS EVERYWHERE" は見直すつもりなさそう
Mozillaに腱鞘炎が流行する日も遠くないな
48デフォルトの名無しさん:2012/09/24(月) 11:43:06.43
49デフォルトの名無しさん:2012/10/01(月) 13:17:32.11
https://github.com/mozilla/servo/blob/master/src/servo/gfx/geometry.rs

ぱっと見は整理されてるような
個人的にgoよりは見やすくかんじたが
Cとのバインディングとかはやり難そうかな
50デフォルトの名無しさん:2012/10/01(月) 18:26:43.02
"This four-post series on Rust is intended to introduce you to the language,
to teach you about Rust's cool language features"
http://winningraceconditions.blogspot.jp/2012/09/rust-0-index-and-conclusion.html
51デフォルトの名無しさん:2012/10/13(土) 17:50:46.65
月曜に0.4出るってよ
52デフォルトの名無しさん:2012/10/16(火) 17:20:09.68
53デフォルトの名無しさん:2012/10/17(水) 17:37:54.93
* Syntax
* All keywords are now strict and may not be used as identifiers anywhere
* Keyword removal: 'again', 'import', 'export', 'check', 'new', 'owned', 'send', 'of', 'with', 'to', 'class'.
* Classes are replaced with simpler structs
* Explicit method self types
* `ret` became `return` and `alt` became `match`
* `import` is now `use`; `use is now `extern mod`
* `extern mod { ... }` is now `extern { ... }`
* `use mod` is the recommended way to import modules
* `pub` and `priv` replace deprecated export lists
* The syntax of `match` pattern arms now uses fat arrow (=>)
* `main` no longer accepts an args vector; use `os::args` instead

かなり変わったな。チュートリアルもなんだか縮小したし、一通り勉強してみたけど、
仕様が落ち着くまで離れとくか。
54デフォルトの名無しさん:2012/10/20(土) 20:59:13.37
互換性がなくなるような変更はなるべく0.4に詰め込んだみたいなこと言ってたけど、
0.2のときもそんなこと言ってたし今後もモリモリ変化しそうだな
55デフォルトの名無しさん:2012/12/22(土) 20:08:12.52
[rust-dev] Rust 0.5 released

Version 0.5 (December 2012)
---------------------------

* ~900 changes, numerous bugfixes

忍法帖のせいでリンク貼れねぇ。。。
56デフォルトの名無しさん:2013/02/02(土) 00:24:16.59
保守

それなりにユーザー増えてきたね
www.reddit.com/r/rust/
57デフォルトの名無しさん:2013/02/23(土) 03:01:37.29
let a = vec::filter([~"foo", ~"bar"], |&x| { str::starts_with(x, ~"f") });
な感じのコードを書いたときに出てくる
warning: instantiating copy type parameter with a not implicitly copyable type
の意味と解決法を教えてください
58デフォルトの名無しさん:2013/02/24(日) 21:22:56.45
>>57
Rust 0.5だとvec::filterの第1引数はコピー可能な値の配列でなければならない
~str型の値は暗黙的にコピーできないから明示的にcopy修飾子を書く必要があるんだけど、
そうしてないから警告が出てる
次に出るRust 0.6からはvec::filterの定義が変わって、配列の値がコピー可能である必要はなくなった

解決方法は、|&x|のあたりにcopyを書く(どこに書くかは忘れた)か、
incomingブランチのsrc/libcore/vec.rsからvec::filterをコピペして使うとか
59デフォルトの名無しさん:2013/02/24(日) 21:39:10.10
補足
Rust 0.6ではvec::filteredとvec::filterに分かれてる
vec::filteredは配列の各要素をコピーして返す(0.5のvec::filterと同じ)
0.6のvec::filterは配列のオーナーシップが移動するようになってて、要素はコピーされない

オーナーシップが移動ってことはつまり、
渡せるのは~[T]だけで@[T]は不可、んで渡した配列はそれ以降参照できなくなる
60デフォルトの名無しさん:2013/02/24(日) 22:28:47.69
ありがとうございます
所有権についてはC++で少しやったつもりでいましたが
なかなかどうして精進が足りませんね
61デフォルトの名無しさん:2013/02/28(木) 22:58:06.05
>all Rust executables require a MinGW installation at runtime
もしかしてwindowsでバイナリ配るのハードル高い
62デフォルトの名無しさん:2013/03/28(木) 14:29:15.85
最近触りだしたけど、いい言語だな
63デフォルトの名無しさん:2013/04/01(月) 02:47:35.67
64デフォルトの名無しさん:2013/04/04(木) 14:37:04.74
rust 0.6 なんか面白そうだと思って拾ってみた。コンパイル終わらない…。
でもこれ、C/C++ に文法が似てるって嘘だと思う。{} を使うって以外は、全然違うじゃん。
65デフォルトの名無しさん:2013/04/04(木) 21:01:21.86
文法だけは似てるとおもう
66デフォルトの名無しさん:2013/04/04(木) 21:03:52.14
HaskellやらMLやらErlangやらに比べれば似てるよねってことだよ

[rust-dev] Rust 0.6 released
mail.mozilla.org/pipermail/rust-dev/2013-April/003427.html
67デフォルトの名無しさん:2013/04/04(木) 21:14:22.06
* Syntax changes
* The self type parameter in traits is now spelled `Self`
* The `self` parameter in trait and impl methods must now be explicitly named (for example: `fn f(&self) { }`). Implicit self is deprecated.
* Static methods no longer require the `static` keyword and instead are distinguished by the lack of a `self` parameter
* Replaced the `Durable` trait with the `'static` lifetime
* The old closure type syntax with the trailing sigil has been removed in favor of the more consistent leading sigil
* `super` is a keyword, and may be prefixed to paths
* Trait bounds are separated with `+` instead of whitespace
* Traits are implemented with `impl Trait for Type` instead of `impl Type: Trait`
* Lifetime syntax is now `&'l foo` instead of `&l/foo`
* The `export` keyword has finally been removed
* The `move` keyword has been removed (see "Semantic changes")
* The interior mutability qualifier on vectors, `[mut T]`, has been removed. Use `&mut [T]`, etc.
* `mut` is no longer valid in `~mut T`. Use inherited mutability
* `fail` is no longer a keyword. Use `fail!()`
* `assert` is no longer a keyword. Use `assert!()`
* `log` is no longer a keyword. use `debug!`, etc.
* 1-tuples may be represented as `(T,)`
* Struct fields may no longer be `mut`. Use inherited mutability, `@mut T`, `core::mut` or `core::cell`
* `extern mod { ... }` is no longer valid syntax for foreign function modules. Use extern blocks: `extern { ... }`
* Newtype enums removed. Use tuple-structs.
こりゃまた随分と
68デフォルトの名無しさん:2013/04/05(金) 23:28:45.01
頑張ってんね
69デフォルトの名無しさん:2013/04/06(土) 20:51:22.53
リリースノートに載ってないけどしれっと pure キーワードがなくなってる
70デフォルトの名無しさん:2013/04/06(土) 21:07:52.13
borrowed pointerとmutabilityの扱いが変わったおかげで、
pureがいらなくなった
71デフォルトの名無しさん:2013/04/10(水) 00:53:09.94
セミコロンがあると値がnilになるってのは、
バグの温床になりそうだなー
72デフォルトの名無しさん:2013/04/10(水) 09:07:44.24
おれも仕様読んでちょっと気になったが、コンパイルでほぼチェックできるんじゃないのかね?
73デフォルトの名無しさん:2013/04/10(水) 12:33:33.44
最近触ってなかったけど、セミコロンがあると返ってくるのはvoidじゃなかったか
74デフォルトの名無しさん:2013/04/10(水) 13:04:25.52
ブロックの最後の式に;が付いてる場合は、
そのブロックが値を持たない(=voidを返すなの?)って話だよね?
75デフォルトの名無しさん:2013/04/10(水) 13:22:24.50
() と書いて nil = void だったか。

$ cat test.rs

fn test() -> () {
io::println("2");
}

fn main() {
io::println("1");
let a : () = test();
if a == () {
io::println("3");
}
}
$ rustc test.rs
$ ./test
1
2
3

こういうのもできるのか。
76デフォルトの名無しさん:2013/04/10(水) 18:37:34.99
値を返すべきブロックからうっかりnilを返したら、
その値を使う箇所でコンパイル時に型エラーが出るから問題ないよ
77デフォルトの名無しさん:2013/04/20(土) 16:47:37.45
法則発動でオワコン
78デフォルトの名無しさん:2013/04/20(土) 18:08:39.74
じゃあAndroidはいまごろ瀕死になってないと
79デフォルトの名無しさん:2013/04/24(水) 22:18:08.03
あくまで一サプライヤーとして利用するなら法則も回避できるのだがFirefoxOSはどうなるか。。。
80デフォルトの名無しさん:2013/04/25(木) 06:57:16.70
そもそもオープンソースの協力者の一つでしかないし。
81デフォルトの名無しさん:2013/06/16(日) 00:12:12.46
ほっしゅほっしゅ
82デフォルトの名無しさん:2013/07/05(金) NY:AN:NY.AN
83デフォルトの名無しさん:2013/07/12(金) NY:AN:NY.AN
84デフォルトの名無しさん:2013/07/14(日) NY:AN:NY.AN
もう諦めて寝るわ。1.0になったら起こしてくれ
85デフォルトの名無しさん:2013/07/14(日) NY:AN:NY.AN
一目ゴミっすね。
86デフォルトの名無しさん:2013/07/15(月) NY:AN:NY.AN
土方にはゴミにしか見えんだろうな
87デフォルトの名無しさん:2013/07/18(木) NY:AN:NY.AN
わかりやすい日本語解説きたで
http://gifnksm.hatenablog.jp/entry/2013/07/15/170736
88デフォルトの名無しさん:2013/07/20(土) NY:AN:NY.AN
早く1.0になってクレヨン
89デフォルトの名無しさん:2013/07/22(月) NY:AN:NY.AN
mut 周りがよく分からんな。 C++ でいう
int* const
int const*
みたいな区別はない(0.2 くらいのときはあった気がするけど)んだよね。
90デフォルトの名無しさん:2013/07/22(月) NY:AN:NY.AN
>>89
昔は構造体のフィールドに mut をつけて、そこだけミュータブルにすることはできたね。

今は、データの所有者のミュータビリティが継承されるという仕様だから、
データの一部だけがミュータブルということはなくて、
全部ミュータブルかイミュータブルの2つしかない。

ただし、例外が @ で表されるマネージドボックス。
これは所有者が複数いるので、所有者のミュータビリティを継承するのでは無く、
ボックス自体がミュータブルかイミュータブルかの属性をもっている (@ と @mut)。
なので、@ を使えば C++ でいう例のようなことは一応できる。

Rust では @ の使用をできるだけ避けようという風潮があるから、
C++ と同じ事をやる目的で @ を使うのはあまり推奨されないとは思う。
91デフォルトの名無しさん:2013/07/23(火) NY:AN:NY.AN
>>90
分かりやすい説明ありがとう。 @-ptr が mutability を継承しないという点が分かってなくて
コード書いていて混乱した。って Tutorial にも書いてあるね。最近読み返してなかった。すまん。
92デフォルトの名無しさん:2013/07/23(火) NY:AN:NY.AN
あと、
(~[0]).push(1); // OK
(@mut [0]).push(1); // NG
メモリの再配置が行われる可能性のある操作が @mut [T] で不可能なのは
考えてみればそうなのだけど、ちょっとびっくりする。
93デフォルトの名無しさん:2013/09/27(金) 21:30:47.89
94デフォルトの名無しさん:2013/10/25(金) 06:37:23.40
C++でいいような気がしてきた
95デフォルトの名無しさん:2013/10/25(金) 23:47:33.48
いつなったら1.0になるのよ?
96デフォルトの名無しさん:2013/10/27(日) 14:59:23.36
あまりに大きな変更は2.0に持ち越すとか言ってる1.0はそう遠くないと思う、半年とか1年以内には

>>94
GCを言語コアからライブラリに追い出すことが決まったあたりから、
競合のDやGoよりもシステム寄りの、ちょうど今C++が占めてるニッチを奪おうぜって流れになった
http://pcwalton.github.io/blog/2013/06/02/removing-garbage-collection-from-the-rust-language/
97デフォルトの名無しさん:2013/11/28(木) 00:01:30.48
死ねバカwwwwwwwwwwwwwwwwwwwwwwww

死ねwwwwwwwwwwwwwwwwwwwwwwww


死ねwwwwwwwwwwwwwwwwwwwwwwww


死ねwwwwwwwwwwwwwwwwwwwwwwww

ゴミwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

ゴミゴミゴミwwwwwwwwwwwwゴミゴミゴミwwwwwwwwwwww

ゴミwwwwwwwwwwwwゴミゴミゴミwwwwwwwwwwwwwwwwww
死ねゴミwwwwwwwwwwwwwwwwwwwwwwwwコラwwwwwwwwwwww
死ねコラゴミwwwwwwwwwwwwwwwwww
98デフォルトの名無しさん:2014/01/04(土) 23:59:41.80
ゴミではない
錆だ
99デフォルトの名無しさん:2014/01/06(月) 06:20:11.18
C4のレシピってゾンビからドロップしますか?
100デフォルトの名無しさん:2014/01/10(金) 22:48:46.46
0.9来たか
101デフォルトの名無しさん:2014/01/17(金) 11:19:41.93
https://github.com/mozilla/rust/blob/0.9/RELEASES.txt
http://www.rust-lang.org/
http://sourceforge.jp/magazine/14/01/15/203000

0.9になっても結構変更あるな。Managed boxes (@) が非推奨てw
102デフォルトの名無しさん:2014/01/17(金) 11:37:16.72
103デフォルトの名無しさん:2014/01/17(金) 12:00:54.65
Rust on rails、トップシェアになる
104デフォルトの名無しさん:2014/01/17(金) 12:01:44.79
「レール上の錆」か……
105デフォルトの名無しさん:2014/01/18(土) 20:24:08.48
あと1年もこの調子で変更すんの?
とっとと1.0出してよ
106デフォルトの名無しさん:2014/01/19(日) 13:30:19.84
おい、台本ちゃんと読めよ そこの台詞は
「けっノロマめ、俺がフォークして先に1.0を立ち上げちまったぜ」
だろ
107デフォルトの名無しさん:2014/01/26(日) 22:35:01.51
どちらかというと v1.0 以降の破壊的変更の方に期待してしまう(マゾ)。
108デフォルトの名無しさん:2014/01/26(日) 22:46:55.05
良く訓練されたD言語erのような性癖だな
109デフォルトの名無しさん:2014/01/26(日) 22:49:10.16
Feature gate なんて大義名分があるんだからいくらでも破壊的変更してきそうだよな
ワクワクする
110デフォルトの名無しさん:2014/02/21(金) 19:40:13.77
rust速いらしいけどgoに比べて並列化し辛いから結局goのが速いって聞いてんですけどそんな感じなの?
111デフォルトの名無しさん:2014/02/21(金) 22:04:36.27
シングルスレッド遅い言語はどんなに並列化しても無駄
112デフォルトの名無しさん:2014/02/22(土) 04:50:05.65
>>110
その手の、Erlangっぽい並列処理は、ライブラリレベルで実装可能。
Scala/JavaのAkkaがその実例。
113デフォルトの名無しさん:2014/03/17(月) 11:54:37.97 ID:JigeyuIH
破壊的変更が毎週たくさんあるね
114デフォルトの名無しさん:2014/03/30(日) 07:00:36.43 ID:aNkl6/ok
次期バージョンは0.10かね
115デフォルトの名無しさん:2014/04/14(月) 02:41:46.21 ID:AgBD4gFn
v0.10 is coming.
http://www.rust-lang.org/
https://github.com/mozilla/rust/blob/master/RELEASES.txt

・@ ポインタを remove
・do キーワードを remove
・etc...
116デフォルトの名無しさん:2014/05/20(火) 18:12:57.71 ID:C/Dx8g+V
なんでこの手の言語(といっても某Dくらいしか思いつかんけど)って1.0が遠いん
117デフォルトの名無しさん:2014/05/21(水) 09:58:53.67 ID:Fj6ednoX
なんで1.0が出てから始めないん
118デフォルトの名無しさん:2014/06/09(月) 22:39:55.58 ID:nLviVS/4
DとかGoとかポストC気取ってるくせにCを駆逐する気がない言語より頑張って欲しい
119デフォルトの名無しさん:2014/06/12(木) 00:32:07.72 ID:e6x9cJlC
頑張って欲しいけど、1.0 が遅いから Swift に浮気しちゃうぜ
120デフォルトの名無しさん:2014/07/06(日) 20:45:53.22 ID:8W/9eoDc
rustでRAIIはどう実現したら良いのでしょうか
121デフォルトの名無しさん:2014/07/09(水) 09:47:39.31 ID:ICY9ltLE
v0.11 is coming.
http://www.rust-lang.org/
https://github.com/mozilla/rust/blob/master/RELEASES.txt

・構造体のフィールドがデフォルトで private に
・private enum 変数が不許可に
・priv キーワードを remove
・`use foo, bar, baz;` シンタックスが remove
・……
122デフォルトの名無しさん:2014/07/26(土) 21:14:51.31 ID:fwCKMr/Y
Rust言語の明日は何処だ
123デフォルトの名無しさん:2014/08/08(金) 02:51:15.07 ID:lSQPAJbI
C++を駆逐するなら大歓迎だ
124デフォルトの名無しさん:2014/08/10(日) 14:07:48.02 ID:FUhgKhzg
>>123
俺も同意。
Rust頑張れ。
125デフォルトの名無しさん:2014/08/10(日) 15:13:03.34 ID:rgbQez8I
それならDとGoに勝たないといけない
おれはRustに頑張って欲しいから早く1.0だして欲しいけど、もう手遅れな気はしてる
126デフォルトの名無しさん:2014/08/10(日) 15:30:16.69 ID:AMGvL8Wx
DはともかくGoは厳しかろうなあ
127デフォルトの名無しさん:2014/08/10(日) 16:15:08.44 ID:559thib6
GoではC++の駆逐はできないと思う。
たとえば、goでOSを作れるかというとそうではない
128デフォルトの名無しさん:2014/08/10(日) 18:47:02.34 ID:mPHamUGI
C++の代わりになるのはCで作られたlibやDLLを直接呼べなくてはならないが
Dはヘッダーファイル作ればできるけど
Goは問題外だった。
rustってどうやんの?
129デフォルトの名無しさん:2014/08/10(日) 20:21:22.22 ID:7WLKXo+Z
extern "C" とかつけて関数宣言すると、Cの関数が呼び出せる。
呼び出し時の余計なオーバーヘッドとかは今はなくなってるはず
130デフォルトの名無しさん:2014/08/12(火) 23:54:09.61 ID:pueQuLPm
次のC++17までに実用になってなかったら逆に駆逐されるな
131デフォルトの名無しさん:2014/08/13(水) 16:43:46.11 ID:450ISMpY
>>129
おお、良いぞ。そんな感じで十分だ。
C++は規格化に関わってる連中が(ここだけの話)キモいので駆逐してほしい
132デフォルトの名無しさん:2014/08/20(水) 17:02:00.56 ID:cYiGvIKn
C++で中間コード吐き出すコンパイラ作ったほうが喜ばれる
133デフォルトの名無しさん:2014/09/17(水) 09:15:58.87 ID:y1+4ScdQ
134デフォルトの名無しさん:2014/09/19(金) 01:19:00.42 ID:oDXr8xMe
はよ 1.0 になれ
135デフォルトの名無しさん:2014/09/25(木) 22:01:45.45 ID:/UWIY2F4
Mozillaは永遠にベータ版しか出さん連中だから無理
136デフォルトの名無しさん:2014/10/10(金) 08:24:39.99 ID:iwp7TUt6
137デフォルトの名無しさん:2014/10/10(金) 12:32:52.94 ID:tQ87SuYa
1.0コネー
138デフォルトの名無しさん:2014/10/12(日) 00:12:55.83 ID:wVymFFZ9
だいぶ見ないうちにもはや別言語になっとる。
es6みたいにどうせ新機能使ったら互換性なくなるのにbreak the webとか抜かして右往左往し続けて
仕様がコロコロ変更されるより元から破壊的変更上等だけどバージョンが安定しないな。
139デフォルトの名無しさん:2014/10/12(日) 23:09:08.17 ID:fD2p7D4P
moveって名前の関数つくれないんだ?
140デフォルトの名無しさん:2014/10/13(月) 01:56:12.89 ID:NYVg+AhM
moveはキーワードだから、使えない
141デフォルトの名無しさん:2014/10/21(火) 13:03:52.26 ID:4Y1dgKOT
仕様が安定するのはいつですか
142デフォルトの名無しさん:2014/10/29(水) 00:30:10.05 ID:uvk5/wlk
&strとstringやっぱめんどくさい。
せめてリテラルの中に変数値埋め込むような書式が欲しいけどそれだとそもそも&strにならない。
もう文字列リテラルはstringにしてくれよ
143デフォルトの名無しさん:2014/10/29(水) 08:02:03.12 ID:PJ7XKhhs
文字列リテラル書く度にメモリの動的確保するのは、
さすがに発狂ものだろ
slicing_syntax使えば、.as_slice()が[]になるし、それで我慢してくれ
144デフォルトの名無しさん:2014/10/29(水) 08:43:24.44 ID:Seh2VPHk
stringといえばcoreutilsのコード読んでて思ったんですが
https://github.com/uutils/coreutils/blob/master/src/cat/cat.rs

> let show_nonprint = matches.opts_present(["A".to_string(), "e".to_string(), "t".to_string(), "v".to_string()]);

こういういちいちto_string()してるコードもうちょっと上手く書けませんかね
145デフォルトの名無しさん:2014/10/29(水) 21:06:45.55 ID:GrpYtfpz
これの解決方法を教えてください
http://melpon.org/wandbox/permlink/Ce549z8Z26NYtfpj
146デフォルトの名無しさん:2014/12/13(土) 09:03:40.20 ID:BbKnnj5O
Rust 1.0: Scheduling the trains
http://blog.rust-lang.org/2014/12/12/1.0-Timeline.html

はよ
147デフォルトの名無しさん:2015/01/05(月) 00:17:31.79 ID:62ndYAiq
公式のGuideに従って Hello, world! コンパイルしたら600kBくらいのができたんだけど、これ何が入ってるの?
たしかGoもこんなだったっけw
148デフォルトの名無しさん:2015/01/05(月) 23:04:03.12 ID:XrgG4/ce
>>147
標準ライブラリが静的リンクされてる。
jemallocとかサイズでかいらしい。
-C lto つけてリンク時最適化有効にすると若干サイズ縮むはず
149デフォルトの名無しさん:2015/01/09(金) 16:50:57.81 ID:1ny7jOif
ガイドページの右下に出てる
Rust 1.0.0-nightly
ea6f65c5f
って何?
150デフォルトの名無しさん:2015/01/09(金) 21:31:25.08 ID:ecLcmkaN
ドキュメントのバージョンだよ。
151デフォルトの名無しさん:2015/01/10(土) 09:03:15.68 ID:qZSZ4EVX
1.0のalpha来てた
もうすぐ安定するんだと思うとなんだか感動する
152デフォルトの名無しさん:2015/01/10(土) 09:25:29.41 ID:aqSa96PR
楽しみだね。
153デフォルトの名無しさん:2015/01/10(土) 10:50:52.48 ID:VYrUioRX
Guessing Gameまで来たら
↓が変な感じがする。値を返すかcontinueで離脱。例外みたいなノリなんだろうか

let num = match input_num {
Some(num) => num,
None => {
println!("Please input a number!");
continue;
}
};
154デフォルトの名無しさん:2015/01/12(月) 07:44:13.71 ID:V9nd0xt7
見てきたけど
uint に変換できない場合
None が返って来て、
もう一度 loop の最初からやり直し
なだけじゃないか?
Option で返って来るのに慣れてないのかな?

例外については下記が日本語訳(ただし、前のverなので文法が違うかもしれない)
ttp://qiita.com/kondei/items/c7175ed278bb4fbd4d16
155153:2015/01/12(月) 14:05:00.11 ID:uQy2oTpW
ああなるほど、None(と言うか() のことかな?)を返してからcontinue動作したと考えればいいのか
156デフォルトの名無しさん:2015/01/12(月) 14:14:00.52 ID:smRTP4TA
そこ俺も違和感あった
HaskellやOCamlにおけるパターンマッチは条件分岐というよりも値の分解の意味合いがつよいと思うのだけど, Rustでは条件分岐としての側面が強いのかなと感じた
要するにif文ってことだよね
157デフォルトの名無しさん:2015/01/13(火) 00:20:23.58 ID:iAaaaZAE
大域脱出と見ればそんなに違和感ないと思う
bookに記載はされてないけど縦棒で複数のパターンに対応させることもできるのな
match foo {
Bar | Baz => do_X,
Huga => do_Y
_ => do_Other
}
みたいなのもいけた。無かったら嫌だなと思ってたがreferenceにはあった
158デフォルトの名無しさん:2015/01/13(火) 21:46:02.73 ID:oe8+YAa0
>>156
ガチの関数型とはなんか違うfeelingと言うか空気感を感じる
159デフォルトの名無しさん:2015/01/13(火) 22:27:52.83 ID:QfRKSulC
関数からIteratorを返す方法が分かりません
具体的には型に何書いて良いか分からない
160デフォルトの名無しさん:2015/01/14(水) 00:27:11.46 ID:e9uoW40m
>>158
Rustの良さの一つではあると思う
メモリモデルの問題で普通の関数型プログラミング言語と全く同じようには出来ない中で、なるべく関数型の良さを取り入れようという結果なんだろうな
161デフォルトの名無しさん:2015/01/14(水) 00:48:27.71 ID:MazRL5ri
>>159
関数の中身によるけど、
戻り値書かなかった場合のコンパイルエラーで出てる型名コピペすればたぶんいけると思う
162デフォルトの名無しさん:2015/01/15(木) 20:50:25.52 ID:b84/qUeG
言語が固まったらREPLの開発も再開するよね
163デフォルトの名無しさん:2015/01/15(木) 21:34:03.91 ID:E2BgZv7k
RustでREPLはめんどくさそうだな
寿命とか
でっかいひとつのスコープって考えたら別にむずかしくはないのな
164デフォルトの名無しさん:2015/01/16(金) 14:15:52.84 ID:9+9TOoEF
1.0.0-alpha をビルドしてるんだけど
configure に --libdir=/usr/lib64 を指定すると
lib.rs がコンパイルエラーになってしまう
前からこんなんだったっけ・・・
165デフォルトの名無しさん:2015/01/16(金) 22:33:39.21 ID:KEq1J0ex
ここ最近の怒涛の変更はヤバい
166デフォルトの名無しさん:2015/01/17(土) 00:15:44.35 ID:Wxv5Etsa
clayもそうだったけど、llvm使った言語のビルドってすげー時間かかるのな。ナイトリービルド落とした方がええわ。
167デフォルトの名無しさん:2015/01/17(土) 02:06:27.12 ID:CWvWtJ6X
クロージャ周りが変更されまくってて全然わからん
168デフォルトの名無しさん:2015/01/17(土) 18:17:59.12 ID:H+D/soOr
そろそろ試してみようと思ったらまだそんな感じなの?
169デフォルトの名無しさん:2015/01/17(土) 18:38:22.05 ID:rzZFM78t
これから構文の変更は極力減らすらしいし、1.0がリリースされるまでのあと2〜3ヶ月は詰めの時期だろう
ドキュメント周りは絶賛崩壊中。Rust by Exampleとか全然動かん(Issueは立ってるけど)
まあ検索しても古いブログとか引っかかりまくるからな―
なんかあったらGitHub該当レポをいちいち見に行くくらいのことをしないと勉強するのは厳しい
170デフォルトの名無しさん:2015/01/17(土) 18:40:22.92 ID:CWvWtJ6X
構文の変更はなくてもAPIの変更はあったりするんだろうか
171デフォルトの名無しさん:2015/01/17(土) 19:02:31.26 ID:P4fG3Fn9
このスレ立ったときから安定したら使ってみようと思ってたけど
もう少しらしいね
172デフォルトの名無しさん:2015/01/17(土) 19:41:57.99 ID:Om8PoyqQ
ベータのリリースサイクルでライブラリの安定化やるから、
APIはまだまだ変更されるはず
173デフォルトの名無しさん:2015/01/17(土) 20:40:08.53 ID:H+D/soOr
ベータ出てからも長そうだな...
174デフォルトの名無しさん:2015/01/19(月) 03:43:45.49 ID:b8H1tohZ
1. 全ての値、変数はそれが定義されたスコープ内で死ぬ(読み書きできなくなる)
2. ある値を殺さずスコープの外に出すには、死ぬ前に外の変数に入れるしかない
3. ただし、参照を外に出すことはできない

lifetimeの原則ってこんなもんだよね?これはまだ分かるけど、ownershipはも少し理解が必要。
マルチスレッドを学ぶときにきっと理解できると信じてる。
175デフォルトの名無しさん:2015/01/20(火) 02:47:53.78 ID:CAQhwwqz
fnで定義される関数とクロージャって区別されてるのか。fnで定義できる関数は環境を持たないクロージャとして扱うことができるけど、逆は無理なのな。
fn map<S,T> (x:Vec<S>, f:fn(S) -> T) -> Vec<T> { ... }
っていう高階関数はfnで定義される関数しか受け付けないが、
fn map<S,T,F:Fn(&S) -> T> (x:Vec<S>, f:F) -> Vec<T> { ... }
は関数もクロージャも通す。

クロージャの定義を見ればコンパイル時に環境を持たないで済むか分かると思うんだけどなあ
関数 ∈ クロージャみたいな関係なんだから、関数で済むなら関数にして欲しい
176デフォルトの名無しさん:2015/01/20(火) 07:57:01.37 ID:WTvBD7gs
unboxed closureならほぼ関数みたいに使えると思うけど。やりたいことは、boxingが必要なケース?
177デフォルトの名無しさん:2015/01/20(火) 08:02:49.45 ID:WTvBD7gs
よくわからん事を言ってしまった。
そもそも、クロージャとして扱うってどういう意味で言っている?
rustではクロージャ「型」というものは最近なくなってしまって、
ただFnを実装した型が関数のように呼び出すことが出来るだけという認識。
Fnを実装したある型が関数として定義されているか、
クロージャの構文を使って定義されているかは、
渡される側からは意識する必要がない。
178デフォルトの名無しさん:2015/01/20(火) 14:02:52.06 ID:CAQhwwqz
>>177
クロージャとして扱うってのは>>175の二番目のmap<S,T,F:Fn(&S)->T>っていう高階関数は、
fn foo(...)で定義された関数を渡すことができるし、let baz = |&:| { ... }とかやって定義したクロージャを渡すこともできる。
>>175の一番目のmap<S,T>はfnで定義した関数は渡せるけど|&:| {...}は渡せない。
つまり、関数とクロージャは別物なんだけど、クロージャを受け取る高階関数は関数も受け取れる。
それを指して「クロージャを受け取れる高階関数は、普通の関数もクロージャとして扱う」っていう意味で言った。

referenceのfunction typeの項
http://doc.rust-lang.org/reference.html#function-types
にもあるとおり、関数の型はfn(args) -> retと書けるもので、traitの実装とかではない。
一方でクロージャはFnトレイトの実装。違いは環境を持つか否か。
179デフォルトの名無しさん:2015/01/20(火) 18:02:24.49 ID:5OYX7sX+
>>178
おそらくだけど、Rustの言語仕様で閉じる範囲に関しては、すべて区別せず Fn traitに統一したい意図があると思う。
関数型が残されているのはFFIの都合かと
180デフォルトの名無しさん:2015/01/20(火) 20:43:45.16 ID:CAQhwwqz
そうなの?関数内で関数を定義できるからある程度は使えるんだけどな。

ついでに質問なんだけど、Fn traitの記法Fn(s) -> tってのはこれ専用の記法なの?
それとも一般的な記法の一例?
181デフォルトの名無しさん:2015/01/21(水) 01:12:38.06 ID:YXeDnvLj
Fn みたいな () -> を使う記法はいまのところFnとFnMutとFnOnce専用だったはず。
他にこの記法使えるとうれしい場面があるならば提案すれば使えるようになるかも。

そもそもこの記法採用されたきっかけというのが、
Fn(A. B) -> C を desugar した形式の Fn<(A, B), C> が書きにくいというのもあるけど、
Fn のdesugarした形式自体がまだfixできていないから、
ひとまずsugarだけ使えるようにして実体の表記は使えなくしようというものだったはず。

実際、Fnの戻り値型はAssociated typeで与えるようにしようとか、
Foo()-> Aの記法は Foo<Output=A> の意味にしようとか、いろいろ議論があるらしい。

当面は、RFCウォッチすると議論が追えると思う。
182デフォルトの名無しさん:2015/01/21(水) 09:15:31.70 ID:mE4mMlsp
トップレベルで型注釈を強制するのはひとつの見識だとは思うんだが、
型の表記がもう少しスッキリしたマトモなものじゃないと面倒臭すぎる。
なんでそういうところはMLやHaskellを見習わなかったのか……
183デフォルトの名無しさん:2015/01/21(水) 11:29:22.51 ID:4FCeMM5/
>>182
本当だねえ。関数引数リストの中がゴミゴミしい
184デフォルトの名無しさん:2015/01/22(木) 01:22:08.93 ID:KmZyTX6h
ttps://github.com/rust-lang/rust/issues/20797?#issuecomment-69947098
associated typesを使っているtraitが拡張できん…
185デフォルトの名無しさん:2015/01/25(日) 05:05:02.45 ID:47J/10kQ
>>184の問題の再現コードは、
trait DeclaredTrait {
type Type;
}
impl DeclaredTrait for i32 {
type Type = i32;
}
struct Struct<B: DeclaredTrait> {
b: B,
b1: B::Type,
}
とあり、 Struct { b: 0, b1: 0}などとするとICEになるが、色々試した結果、Structを少し弄って
struct Struct<T, B: DeclaredTrait<Type=T>> { ...
とすれば回避できることが分かった。やったと小躍りしていたらfixされた。Oh...
186デフォルトの名無しさん:2015/01/29(木) 19:53:46.66 ID:zNgdEinm
http://arthurtw.github.io/2014/11/30/rust-borrow-lifetimes.html
borrowingについてはbookより良い説明になってる。

http://stackoverflow.com/questions/22188088/what-does-a-scoped-lifetime-in-rust-actually-mean
この解答はかなりlifetimeについて分かりやすかった。

lifetimeとsubtypingの類似性をまとめようと思ったが力尽きた。
1つの事柄を説明しようとすると別の関連項目も入れた方がいいなとかやってると膨大になる。
187デフォルトの名無しさん:2015/02/04(水) 22:01:24.98 ID:TC60WqWu
rustはじめました
バカなんですけど教えてください
fn main() {
let mut a = &1is;
let mut b = &2is;
a = b;
}
b = a だと平気なのに a = b だと叱られます。なぜですか
188デフォルトの名無しさん:2015/02/05(木) 01:26:26.56 ID:dGetvNcg
先に宣言した方がlifetimeが長くなるルールだから?
189デフォルトの名無しさん:2015/02/05(木) 01:47:21.88 ID:u4P5BLYw
nightlyなら通るよ>>187
190デフォルトの名無しさん:2015/02/05(木) 20:57:01.65 ID:xsa081YG
お二方どうも

>>188
どこで寿命尽きるのかlifetimeムズカシイです

>>189
通るのですか
しかしエラー出ます rustc 1.0.0-nightly (eaf4c5c78 2015-02-02 15:04:54 +0000)
githubのをビルドしないとダメでしょうか
面倒なのでブック読みながらバイナリの更新待ちます
191デフォルトの名無しさん:2015/02/06(金) 00:07:57.08 ID:ZZvCiYpX
今なら2015-02-04のバイナリ落ちてくるよ
192デフォルトの名無しさん:2015/02/06(金) 01:45:16.44 ID:f5aiPF8n
うーん。変わらずエラーが出ます rustc 1.0.0-nightly (ba2f13ef0 2015-02-04 20:03:55 +0000)
本来>187はコンパイル通るものですか
193192:2015/02/06(金) 01:49:34.64 ID:f5aiPF8n
エラーこんな感じで
src/main.rs:3:14: 3:17 error: borrowed value does not live long enough
src/main.rs:3 let mut b = &2is;
                 ^~~
src/main.rs:2:17: 5:2 note: reference must be valid for the block suffix following statement 0 at 2:16...
src/main.rs:2 let mut a = &1is;
src/main.rs:3 let mut b = &2is;
src/main.rs:4 a = b;
src/main.rs:5 }
src/main.rs:3:17: 5:2 note: ...but borrowed value is only valid for the block suffix following statement 1 at 3:16
src/main.rs:3 let mut b = &2is;
src/main.rs:4 a = b;
src/main.rs:5 }
194デフォルトの名無しさん:2015/02/06(金) 02:10:23.34 ID:9alBoo2L
playpenでも転けるし駄目っぽい
195デフォルトの名無しさん:2015/02/06(金) 17:39:55.66 ID:uj3RHvbm
nightlyで通ると言ってた者だが、1月24日のは通ったが、今日2月6日では通らなくなってた。
196デフォルトの名無しさん:2015/02/07(土) 01:46:20.54 ID:Gp97gMW3
やっぱりlifetimeの長い短いとちゃうかなぁ。
>let mut a = &amp;1is;
>let mut b = &amp;2is;
aの型は&amp;'i isize
bの型は&amp;'j isize
だとするとlifetimeの長さはi > jであるからaはlifetime i以上のisizeへの参照を要求する。
bのlifetimeはjであるからnot live long enoughなんじゃないかなぁ。
197デフォルトの名無しさん:2015/02/07(土) 01:46:51.82 ID:Gp97gMW3
うーん、でも
fn print_type_of<T>(_: &T) -> () {
let type_name =
unsafe {
(*std::intrinsics::get_tydesc::<T>()).name
};
println!("{}", type_name);
}

fn main() {
let mut a = &1is;
let mut b = &2is;
print_type_of(&a);
print_type_of(&b);
}
の出力は
&'static isize
&'static isize
やなぁ。
198デフォルトの名無しさん:2015/02/07(土) 08:13:43.05 ID:iwrmCGgo
print_type_of ってデバッグでしょっちゅう使うから、標準ライブラリに入ってると良いのに
199デフォルトの名無しさん:2015/02/07(土) 11:09:20.93 ID:cThHTNUW
get_tydescでlifetimeってstatic以外も出せるの?

fn main() {
let x = &1;
print_type_of(&x); // &'static i32
{
let k = &3;
print_type_of(&k); // &'static i32
}
}
200デフォルトの名無しさん:2015/02/07(土) 13:33:02.38 ID:cThHTNUW
https://github.com/rust-lang/rust/pull/21657
https://github.com/rust-lang/rust/pull/21022
何言ってるか分からん。誰か解説してください。
201デフォルトの名無しさん:2015/02/21(土) 07:04:27.61 ID:Olg1CcTP
1.0.0 あるふぁ2 来た

We’ve managed to land almost all of the features previously expected for this cycle.
The big headline here is that all major API revisions are finished: path and IO reform have landed.
At this point, all modules shipping for 1.0 are in what we expect to be their final form, modulo minor tweaks during the alpha2 cycle. See the previous post for more details.

http://blog.rust-lang.org/2015/02/20/Rust-1.0-alpha2.html

ってことは主な標準ライブラリのAPIも安定するってことか?
安定バージョン出たら使おうと思ってたからそろそろ本格的に勉強しよう
202デフォルトの名無しさん:2015/02/21(土) 07:08:43.49 ID:Olg1CcTP
rust 日本で人気ないのなんでだろ
hackernews とかでは話題になるのに
203デフォルトの名無しさん:2015/02/21(土) 07:54:16.64 ID:r4ISt4ZW
なってねーよ
Rustユーザーの声がでかいだけ
Githubのトレンド見ろよ
てかいつ1.0になるんだよ
コンパイルクソ遅せーよ
204デフォルトの名無しさん:2015/02/21(土) 08:28:43.29 ID:R5TBrCid
今見たらハッカーニュースで話題になっててワロタ
205デフォルトの名無しさん:2015/02/21(土) 11:27:04.19 ID:Fus77TES
日本人なんでいつも出遅れじゃん

半島人や大陸人ではないので念のためw
206デフォルトの名無しさん:2015/02/21(土) 11:37:56.64 ID:Fus77TES
RELEASES.md
Version 1.0.0-alpha.2 (February 2015)
ttps://github.com/rust-lang/rust/blob/master/RELEASES.md#version-100-alpha2-february-2015

本題と離れたこの辺が好き→Rust is tested against a LALR grammar
207デフォルトの名無しさん:2015/02/21(土) 18:56:18.12 ID:NoRQyCne
日本はシステム寄り言語はあまり盛り上がらない印象
フレームワークでこんなんできた、とかそういうのばっか
208デフォルトの名無しさん:2015/02/21(土) 19:05:24.66 ID:XLU71/kI
そのフレームワークにも乗り遅れてるけどな
209デフォルトの名無しさん:2015/02/21(土) 20:18:51.42 ID:4tV2h1eL
今のペースだと1.0は早くても5月の半ば
GWあたりから勉強すればいいや
210デフォルトの名無しさん:2015/02/21(土) 22:16:25.60 ID:u58zLpzB
ttps://github.com/uutils/coreutils
Cross-platform Rust rewrite of the GNU coreutils

面白そうだから時々覗いてるけど、作る宣言してやりかけか音沙汰なしが多い
211デフォルトの名無しさん:2015/02/21(土) 22:19:24.18 ID:SweHsfSk
1.0が出てからが本番
212デフォルトの名無しさん:2015/02/21(土) 22:47:20.72 ID:24QmOmn3
最近Nimとの比較記事よく見る
試したことないが速いんか
213デフォルトの名無しさん:2015/02/22(日) 05:47:39.50 ID:XKjiDtco
試せよ
馬鹿なの?
214デフォルトの名無しさん:2015/02/22(日) 08:13:00.52 ID:NjIsBkYB
やだね
215デフォルトの名無しさん:2015/02/22(日) 10:43:53.32 ID:x4NvaSP0
"「Unix in Rust」の作者がRustを捨ててNimに移行"
ttp://developers.slashdot.jp/story/15/02/20/2132207/

Nimの詳しいところは見てないけど、ソースぱっと見で括弧や大文字小文字のめりはり無くて散り散りした感じは嫌だな
その点はこっちの方がいい
216デフォルトの名無しさん:2015/02/22(日) 20:28:37.40 ID:0ELzUNxg
NimはRustよりかなり前からあったでしょ。少なくともぽっと出の新人じゃない。

Nimは高速化、拡張の手段が多い(テンプレート&マクロ, コンパイル時計算, 最適化処理)にもかかわらず、
それらを作るときに変態的な見慣れぬ処理をしているようには見えない。
この、LispのマクロがPythonの文法でやれているのがおそらく一番凄いところ。
Python人口は多いから間口は広いと思うよ。Pythonと違ってまともなスコープだし。

型システムはRustの方が見通しが立っている。Nimはちょっと独特。
そして何より、Rustは低レベルもターゲットだけど、Nimはそうじゃない。
高速 -> 低レベルってのは昨今じゃ成り立ってない。
217デフォルトの名無しさん:2015/02/22(日) 20:59:13.82 ID:LRANqcPT
あっちはGC、こっちは全手動
218デフォルトの名無しさん:2015/02/22(日) 22:12:46.57 ID:7JvXqGjL
>>217
全手動って、ほぼRAIIとレファレンスカウンタで足りてるように思うけど。
別にmalloc,freeを一々手で書いてるわけではない。
219デフォルトの名無しさん:2015/02/23(月) 00:57:37.90 ID:AFp5DLmZ
NimのGCがスレッドセーフになるのと、RustにGCが搭載されるのと、どっちが先か
220デフォルトの名無しさん:2015/02/23(月) 08:07:08.31 ID:5h1ypUSf
RustはGC搭載だったのを取り除いたんじゃなかったか
221デフォルトの名無しさん:2015/02/23(月) 19:40:30.09 ID:eyhGdPbs
RustでもDでもNimでもなんでもいいよ
俺は勝ち馬に乗りたいだけだ
共倒れになるのが一番困るんだよ
222デフォルトの名無しさん:2015/02/23(月) 21:48:25.71 ID:hrwL6DMU
勝ち馬おじさんは適当なほにゃららbindingsでも作ってオポを得てください
223デフォルトの名無しさん:2015/02/24(火) 00:16:34.89 ID:Xk/EueOy
>>220
RustのあれはGCじゃなくて今で言うところのRcだったはず
GCの一種といえば一種だけど、実装は異なるから区別したい
224デフォルトの名無しさん:2015/02/24(火) 02:31:58.07 ID:F5ABen3P
参照カウンタもオブジェクトマップも両方GCで最近の参照カウンタは実行時じゃなくてコンパイル時にやるGCじゃないやつがあるんだよ。
225デフォルトの名無しさん:2015/02/27(金) 03:23:46.29 ID:SOolYU16
Boxはownership付きのポインタだ!と気付き、ヒープに限定しなくてもいいんじゃないかと思ったんだが、
move semanticsがあるので、そんなに便利にはならないことが分かった。
うまくできているなと思う。
226デフォルトの名無しさん:2015/02/28(土) 17:38:52.88 ID:zVTmyizc
RustでC++のコードを呼び出せるようにならないかな
227デフォルトの名無しさん:2015/02/28(土) 17:40:37.54 ID:ODdhY4Z/
呼べるんじゃね
228デフォルトの名無しさん:2015/03/01(日) 14:43:26.72 ID:GK+mth0P
FFIくらいあるじゃろ
229デフォルトの名無しさん:2015/03/02(月) 19:48:54.98 ID:jKoObBcz
ServoではCのラッパー関数作ってるって書いてあった
ただそれだと関数呼び出し増えた分のオーバーヘッドがあるから、
言語を跨がった最適化を検討中だとか
230デフォルトの名無しさん:2015/03/02(月) 21:38:37.91 ID:r8lAZceI
rust自身も自分用llvmを使っていて、ビルドに超時間がかかる。
Servoは自分用rustを使っているのでもっと時間がかかるので、面倒でしょうがない。
231デフォルトの名無しさん
同じくrustcのバージョン固定してるcargoはnightlybuildのバイナリ使ってるけど、
servoはソースからコンパイルしてるの?