Mozillaがリリースした、プログラミング言語「Rust」について語るスレです。
http://www.rust-lang.org/
https://github.com/rust-lang/rust
Servo
https://servo.org/
https://github.com/servo/servo
◆前スレ
プログラミング言語 Rust 2
http://echo.2ch.net/test/read.cgi/tech/1478023960
プログラミング言語 Rust 3 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/05/21(日) 14:04:29.55ID:9L9dm7b/352デフォルトの名無しさん
2017/07/29(土) 12:41:44.44ID:cTpvw2dC vim + project.vim + rust.vimもいいぞ
コード量が多いと流石にIntelliJ使うけど
コード量が多いと流石にIntelliJ使うけど
353デフォルトの名無しさん
2017/07/29(土) 12:52:24.62ID:U9LihKmk IDEAとvscodeってどっちがおすすすめ?
354デフォルトの名無しさん
2017/07/29(土) 12:52:42.83ID:U9LihKmk おすすめ?
355デフォルトの名無しさん
2017/07/29(土) 14:45:43.16ID:3C62sBLB >>313
噂をすればなんとやら
facebookexperimental/mononoke: A Mercurial source control server, specifically designed to support large monorepos.
https://github.com/facebookexperimental/mononoke
>>351
メモリ安全性以外での所有権の活用例としては、すでにボディを書き込み始めたHTTPレスポンスに新たにヘッダを書き込めないことを静的に保証する、とかいうのがある
https://docs.rs/hyper/0.10/hyper/server/index.html#an-aside-write-status
ヘッダを書き込んだレスポンスの所有権を奪って、ボディだけを書き込める型にして返している
https://docs.rs/hyper/0.10/hyper/server/response/struct.Response.html#method.start
噂をすればなんとやら
facebookexperimental/mononoke: A Mercurial source control server, specifically designed to support large monorepos.
https://github.com/facebookexperimental/mononoke
>>351
メモリ安全性以外での所有権の活用例としては、すでにボディを書き込み始めたHTTPレスポンスに新たにヘッダを書き込めないことを静的に保証する、とかいうのがある
https://docs.rs/hyper/0.10/hyper/server/index.html#an-aside-write-status
ヘッダを書き込んだレスポンスの所有権を奪って、ボディだけを書き込める型にして返している
https://docs.rs/hyper/0.10/hyper/server/response/struct.Response.html#method.start
356デフォルトの名無しさん
2017/07/29(土) 16:04:35.17ID:OScYBSe+ もののけ
357デフォルトの名無しさん
2017/07/29(土) 16:29:29.84ID:PuR8d8Sj ideaのrustプラギンはメソッドチェインが深くなるとハイライトされなくなって、リネームとかも取りこぼすことがある。それ以外はよくできてて満足
358デフォルトの名無しさん
2017/07/29(土) 16:43:27.84ID:mj0H/MXI >>351
所有と借用は、設計の考え方として言語問わず有効なので、コンパイラに強制されるのはかなり嬉しい。
と言うのも、所有を考えないで動的メモリを使ったプログラムは、シングルスレッドであっても、ライフタイム問題を起こしやすいんだよね。
他人にヤラれると殺意がわく。
所有と借用は、設計の考え方として言語問わず有効なので、コンパイラに強制されるのはかなり嬉しい。
と言うのも、所有を考えないで動的メモリを使ったプログラムは、シングルスレッドであっても、ライフタイム問題を起こしやすいんだよね。
他人にヤラれると殺意がわく。
359デフォルトの名無しさん
2017/07/29(土) 16:55:38.17ID:mj0H/MXI >>351
借用に関しては、不意の同期漏れ防止と思ってる。
ご存知の通り、マルチスレッドでは、同じオブジェクトを触るときに同期処理を入れないと、データ破壊しちゃうじゃん?
C言語だと、この危険な状態がデフォルトで、気付くかどうかは人間次第。
でも、rustはコンパイラがその危険な状態を防いでくれると言うだけだと思う。
借用に関しては、不意の同期漏れ防止と思ってる。
ご存知の通り、マルチスレッドでは、同じオブジェクトを触るときに同期処理を入れないと、データ破壊しちゃうじゃん?
C言語だと、この危険な状態がデフォルトで、気付くかどうかは人間次第。
でも、rustはコンパイラがその危険な状態を防いでくれると言うだけだと思う。
360デフォルトの名無しさん
2017/07/29(土) 17:08:36.25ID:mj0H/MXI >>351
最後、OS無しはどうかなー。
自分ならこうするかなっていうテキトーな意見だけど、生メモリアクセスが必要な部分(デバドラとか)はC/C++で書いて、アプリ部をrustで書いてFFIバインドかなー。
最後、OS無しはどうかなー。
自分ならこうするかなっていうテキトーな意見だけど、生メモリアクセスが必要な部分(デバドラとか)はC/C++で書いて、アプリ部をrustで書いてFFIバインドかなー。
361デフォルトの名無しさん
2017/07/29(土) 17:23:05.64ID:H7MJnrUX Rustの素晴らしさを理解するにはC++を理解する必要がある?
362デフォルトの名無しさん
2017/07/29(土) 17:27:03.96ID:DIZfrj77363デフォルトの名無しさん
2017/07/29(土) 17:41:05.57ID:mj0H/MXI >>362
最初から最後までメモリ安全じゃなくてもいいんじゃない?
適材適所で使い分ければ。
マルチスレッド問題はアプリ側に多い問題かなーって。
デバドラ最下層になると、そもそもマルチスレッド要件が無かったり、メモリイメージが生で見える触れる方が融通があって便利だったりするし。
ドメイン境界で考えて、rustを適用する範囲内で潔白なのが重要と思ってる。
この潔白さは、開発者の人数が多いドメイン(アプリ)で、真価を発揮するんじゃないかなと。
最初から最後までメモリ安全じゃなくてもいいんじゃない?
適材適所で使い分ければ。
マルチスレッド問題はアプリ側に多い問題かなーって。
デバドラ最下層になると、そもそもマルチスレッド要件が無かったり、メモリイメージが生で見える触れる方が融通があって便利だったりするし。
ドメイン境界で考えて、rustを適用する範囲内で潔白なのが重要と思ってる。
この潔白さは、開発者の人数が多いドメイン(アプリ)で、真価を発揮するんじゃないかなと。
364デフォルトの名無しさん
2017/07/29(土) 18:00:00.71ID:SaJE2wIQ racer + flycheck-rust でマクロ補完って無理?
println!とかwrite!とか毎回全部打つのがダルい
println!とかwrite!とか毎回全部打つのがダルい
365デフォルトの名無しさん
2017/07/29(土) 18:10:49.31ID:DIZfrj77366デフォルトの名無しさん
2017/07/29(土) 18:13:03.21ID:DIZfrj77 >>363
あと最初から最後までメモリ安全のほうが良くない?
少なくともメモリ関連のバグを撲滅できるんであればrustの価値はあると思うんだ。
逆にできないならrustの存在意義ってなんだろ。
goは並行処理が言語機能に組み込まれてる。
rustはメモリ安全が売りだと思うんだけど、
そこってなかなか地味な売りな気がして
あと最初から最後までメモリ安全のほうが良くない?
少なくともメモリ関連のバグを撲滅できるんであればrustの価値はあると思うんだ。
逆にできないならrustの存在意義ってなんだろ。
goは並行処理が言語機能に組み込まれてる。
rustはメモリ安全が売りだと思うんだけど、
そこってなかなか地味な売りな気がして
367デフォルトの名無しさん
2017/07/29(土) 18:57:22.38ID:mj0H/MXI >>365
Cに頼る→負けてるって事じゃないと思うけどね。
実際アセンブリ言語はなくならないわけだし。
CPU の高機能化、メモリの大容量化、プログラムの大規模化、があって、開発効率を高めるために、プログラムの大部分がC言語に置き換わったわけじゃん。
で、マルチコア全盛の時代になって、正常稼働面での重大要因としてメモリ安全性が注目されてrustが生まれたのだから、メモリ安全のメリットの大きいところだけrustに置き換わるってのが、普通の流れじゃないのかなーと思うよ。
別にCを駆逐する必要はないしょ。
Cに頼る→負けてるって事じゃないと思うけどね。
実際アセンブリ言語はなくならないわけだし。
CPU の高機能化、メモリの大容量化、プログラムの大規模化、があって、開発効率を高めるために、プログラムの大部分がC言語に置き換わったわけじゃん。
で、マルチコア全盛の時代になって、正常稼働面での重大要因としてメモリ安全性が注目されてrustが生まれたのだから、メモリ安全のメリットの大きいところだけrustに置き換わるってのが、普通の流れじゃないのかなーと思うよ。
別にCを駆逐する必要はないしょ。
368デフォルトの名無しさん
2017/07/29(土) 19:02:32.30ID:mj0H/MXI369デフォルトの名無しさん
2017/07/29(土) 19:05:29.70ID:mj0H/MXI >>361
むしろC++をうまく使うために、rustの意味論(セマンティクス)を勉強して欲しい、って思う。
むしろC++をうまく使うために、rustの意味論(セマンティクス)を勉強して欲しい、って思う。
370デフォルトの名無しさん
2017/07/29(土) 19:59:14.72ID:DIZfrj77 goができたのはgoogle社内のc++プロジェクトの置き換えのためだけどrustってどんな動機でできたの?。
まさかブラウザ開発のため?
まさかブラウザ開発のため?
372デフォルトの名無しさん
2017/07/29(土) 20:22:55.12ID:OScYBSe+ >>369
俺もRustはじめてからC++が少しよく書けるようになりました
俺もRustはじめてからC++が少しよく書けるようになりました
373デフォルトの名無しさん
2017/07/29(土) 21:18:30.65ID:ZD4o/AdV374351
2017/07/29(土) 21:52:24.31ID:Xgmp5DuD375デフォルトの名無しさん
2017/07/30(日) 03:44:39.97ID:m1nsIIH9 以前にこのスレであったら良いと言われていたOptionのEntry風APIが実装されて、しかも既にstabilizeされている
std: Stabilize `option_entry` feature ・ rust-lang/rust@ee064c3
https://github.com/rust-lang/rust/commit/ee064c380652fb7e40c1620fd74fb1406989d009
std: Stabilize `option_entry` feature ・ rust-lang/rust@ee064c3
https://github.com/rust-lang/rust/commit/ee064c380652fb7e40c1620fd74fb1406989d009
376デフォルトの名無しさん
2017/07/30(日) 08:00:41.23ID:eSrcFrA9 >やはり並列処理時の安全性を担保する機能なのですね
race condition の解消はあくまでもメモリ安全の一部でしかない
race condition の解消はあくまでもメモリ安全の一部でしかない
377デフォルトの名無しさん
2017/07/30(日) 08:02:46.70ID:eSrcFrA9 >他にDも検討していますが何となく新しい方が何かと便利かなと思ったり
Dが検討対象に入って、かつ、低水準用途なの?
意味わからんな
Dが検討対象に入って、かつ、低水準用途なの?
意味わからんな
378デフォルトの名無しさん
2017/07/30(日) 08:03:42.92ID:NzSybo/S 351からは実際にプログラム組んだことの無い人の気配がプンプンしてる。
379デフォルトの名無しさん
2017/07/30(日) 11:40:03.02ID:sZ4wntzb cargo check のメッセージが加工しづらい
https://github.com/rust-lang/rust/issues/42653これ追加されて欲しい
https://github.com/rust-lang/rust/issues/42653これ追加されて欲しい
380デフォルトの名無しさん
2017/07/30(日) 16:21:42.29ID:vygP638r たぶんnode.js育ちの人だと思うけど、実質1行ないし3行で完結してるクレートが出てきてるね
381デフォルトの名無しさん
2017/07/30(日) 17:42:42.26ID:cNiju5gN clippyインストールできないclippyインストールできないclippyインストールできない
clippyインストールできないclippyインストールできないclippyインストールできない
clippyインストールできないclippyインストールできないclippyインストールできない
修正したコミットがが日曜の夜にコミットするって作者が言ってるけど遅すぎ 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
clippyインストールできないclippyインストールできないclippyインストールできない
clippyインストールできないclippyインストールできないclippyインストールできない
修正したコミットがが日曜の夜にコミットするって作者が言ってるけど遅すぎ 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
382デフォルトの名無しさん
2017/07/30(日) 19:43:29.15ID:IhAKIxVt CランタイムをスタティックリンクしたくてRUSTFLAGSに以下のフラグを設定しています。
RUSTFLAGS='-C target-feature=+crt-static'
これを環境変数で設定するのではなくCargo.tomlで指定するにはどうすればいいんでしょうか?
http://doc.crates.io/config.html を参考に下のように書いてみたのですが効いてないようでした。
[build]
rustflags = ["-C target-feature=+crt-static"]
オプションの書き方が違っているんですかね?
RUSTFLAGS='-C target-feature=+crt-static'
これを環境変数で設定するのではなくCargo.tomlで指定するにはどうすればいいんでしょうか?
http://doc.crates.io/config.html を参考に下のように書いてみたのですが効いてないようでした。
[build]
rustflags = ["-C target-feature=+crt-static"]
オプションの書き方が違っているんですかね?
383デフォルトの名無しさん
2017/07/30(日) 19:51:11.45ID:m1nsIIH9 ["-C", "target-feature=+crt-static"]
でどうかしら
でどうかしら
384デフォルトの名無しさん
2017/07/30(日) 20:00:04.61ID:IhAKIxVt うーん、このへん試してみたんですけどだめなんですよね。
["-C", "target-feature=+crt-static"]
["target-feature", "+crt-static"]
["-C", "target-feature=+crt-static"]
["target-feature", "+crt-static"]
385デフォルトの名無しさん
2017/07/30(日) 22:39:37.27ID:KR/rniwV >>381
一時的に古いnightly使えば良いのでは
一時的に古いnightly使えば良いのでは
386デフォルトの名無しさん
2017/07/30(日) 23:38:44.64ID:dsY+op8E まだruct学んで2日目だけど
これパッケージ入れる時のコンパイルが長いね
補完強化のためにracer入れようとしたらsyntax_syntaxから全然進まなくてCTRL+C押しちゃったよ
基本的なものを覚えるだけならパッケージなんて入れなくても良さそうだけど
ステップアップしたときにそれなりのスペックのPC持ってないと学習するのが厳しい言語って感じ
これパッケージ入れる時のコンパイルが長いね
補完強化のためにracer入れようとしたらsyntax_syntaxから全然進まなくてCTRL+C押しちゃったよ
基本的なものを覚えるだけならパッケージなんて入れなくても良さそうだけど
ステップアップしたときにそれなりのスペックのPC持ってないと学習するのが厳しい言語って感じ
387351
2017/07/31(月) 01:33:05.73ID:0NH1HYUL388デフォルトの名無しさん
2017/07/31(月) 09:17:51.12ID:nR0sqwYk アセンブラは型がないぶんさらにメモリ壊しやすいと思うが
389デフォルトの名無しさん
2017/07/31(月) 13:44:43.25ID:luO5NyKL ライフタイムもコンパイル時に検査してライフタイムの外側からアクセスする処理もコンパイルエラーにするって
これって結局
全部ローカル変数になるってこと?
プログラム全体を通してアクセスする変数はmain関数で用意したローカル変数だからmain関数を抜けたあとは全部開放しちゃうからメモリリークも起きない?
cとかでもやろうと思えばできるって事?
cでmallocとかfreeを使わず、
全部変数定義してつかえばrustと同じ?
これって結局
全部ローカル変数になるってこと?
プログラム全体を通してアクセスする変数はmain関数で用意したローカル変数だからmain関数を抜けたあとは全部開放しちゃうからメモリリークも起きない?
cとかでもやろうと思えばできるって事?
cでmallocとかfreeを使わず、
全部変数定義してつかえばrustと同じ?
390デフォルトの名無しさん
2017/07/31(月) 16:54:10.50ID:RkZnFpRc メモリに限らずリソース確保全般を行わないプログラムって何ができるのか
可変サイズの入力を受け取るならmallocがほぼ必須じゃない?
1行MAX_LENGTH文字までのテキストしか処理しないとか?
可変サイズの入力を受け取るならmallocがほぼ必須じゃない?
1行MAX_LENGTH文字までのテキストしか処理しないとか?
391デフォルトの名無しさん
2017/07/31(月) 17:16:32.22ID:CRPdTSOK rustってどんな分野に向いてるのかいまいちわからないんだけど
webに使うのはおすすめできる?
webに使うのはおすすめできる?
392351
2017/07/31(月) 19:18:45.74ID:S3S/4XWd C/C++は言語仕様的にメモリの破壊を誘発しやすいと思っているんだけどそう思うのは自分だけなのだろうか
>>388
プロジェクトやプログラムの規模という要素もあるけどメモリを自由に管理できるアセンブラの方が見通しが良く
メモリ破壊に関するリスクも制御しやすいと思う。人間が理解しやすいように並べることも出来るし
もしメモリを壊した時もC/C++より何が起きるかを予測しやすいと思う
個人的にはメモリアクセスの規約を登録できてコンパイル時にそれをチェックしてくれると嬉しいんだけどな
>>388
プロジェクトやプログラムの規模という要素もあるけどメモリを自由に管理できるアセンブラの方が見通しが良く
メモリ破壊に関するリスクも制御しやすいと思う。人間が理解しやすいように並べることも出来るし
もしメモリを壊した時もC/C++より何が起きるかを予測しやすいと思う
個人的にはメモリアクセスの規約を登録できてコンパイル時にそれをチェックしてくれると嬉しいんだけどな
393デフォルトの名無しさん
2017/07/31(月) 19:24:58.57ID:nTqL7k1O アセンブリ的な観点でCの挙動が予想できないと言っているようならRustなんて余計に抽象的で分かりづらいと思うのだが
Volatile関連の制御とかだって面倒なだけだし
Volatile関連の制御とかだって面倒なだけだし
394351
2017/07/31(月) 21:28:38.42ID:S3S/4XWd >>393
C/C++はメモリマップを意識しないと安全を確保できないけど、マッピングするのはコンパイラでありリンカでありOS
そのような状態で想定しないメモリアクセスが起きた時の挙動を予想することは自分には出来ないです
C/C++でバリバリ書いている人はこの程度出来て当たり前なのかな
C/C++はメモリマップを意識しないと安全を確保できないけど、マッピングするのはコンパイラでありリンカでありOS
そのような状態で想定しないメモリアクセスが起きた時の挙動を予想することは自分には出来ないです
C/C++でバリバリ書いている人はこの程度出来て当たり前なのかな
395デフォルトの名無しさん
2017/07/31(月) 22:26:49.07ID:nR0sqwYk C/C++というレベルじゃなくて
LinuxのABIやldのリンカスクリプトがわからんレベルの人と予想
LinuxのABIやldのリンカスクリプトがわからんレベルの人と予想
396デフォルトの名無しさん
2017/08/01(火) 18:09:39.02ID:TrH0Acv/ >>391
いわゆるWebアプリを書く言語としてはおすすめしない。
いわゆるWebアプリを書く言語としてはおすすめしない。
397デフォルトの名無しさん
2017/08/01(火) 18:17:25.28ID:TrH0Acv/398デフォルトの名無しさん
2017/08/01(火) 18:21:43.31ID:TrH0Acv/399デフォルトの名無しさん
2017/08/01(火) 18:52:10.83ID:8J/offgv >>351はOS無しと言っている
400デフォルトの名無しさん
2017/08/01(火) 19:26:38.99ID:A6tuVNB3401351
2017/08/01(火) 19:28:04.99ID:ascdikyg 新しめのプログラミング言語は十中八九メモリの安全を謳っているけどこれってC/C++でメモリの破壊や
メモリアクセス違反を多発させる事例が多いからと思っているけど違うのかな
これらの低減を目的にC/C++の代替言語としてRustやDなどを検討するっておかしな事なのだろうか
メモリアクセス違反を多発させる事例が多いからと思っているけど違うのかな
これらの低減を目的にC/C++の代替言語としてRustやDなどを検討するっておかしな事なのだろうか
402デフォルトの名無しさん
2017/08/01(火) 21:16:08.18ID:PIQ133u2 >>400
まじかーgcがないってOS無しで動かせる唯一の言語だと思ってたから残念
例えばESP8266とかESP32で使えたらいいとか思ってたよ。
webが利用用途じゃないって残念すぎるな。
そうするとrust使ってる層って仕事でc++を使ってる組み込み関係の層が
趣味的に触る言語ってことかな。
まじかーgcがないってOS無しで動かせる唯一の言語だと思ってたから残念
例えばESP8266とかESP32で使えたらいいとか思ってたよ。
webが利用用途じゃないって残念すぎるな。
そうするとrust使ってる層って仕事でc++を使ってる組み込み関係の層が
趣味的に触る言語ってことかな。
403デフォルトの名無しさん
2017/08/01(火) 22:02:02.77ID:A6tuVNB3 お前の中ではGC有無とOS要否は直結するのか(驚愕
ESPがどういうチップセット構成なのか知らんけど
ARM CPUならクロスコンパイルして動かせるんじゃね
多分、同じ程度の努力でGC載ってるGoも動くと思うけど
ESPがどういうチップセット構成なのか知らんけど
ARM CPUならクロスコンパイルして動かせるんじゃね
多分、同じ程度の努力でGC載ってるGoも動くと思うけど
404デフォルトの名無しさん
2017/08/01(火) 22:04:43.31ID:H6BRQUwS cargo checkすると
warning: the option `Z` is unstable
というメッセージが出るそうなんですがこのメッセージを出す方法を教えて頂けませんか?
warning: the option `Z` is unstable
というメッセージが出るそうなんですがこのメッセージを出す方法を教えて頂けませんか?
405デフォルトの名無しさん
2017/08/01(火) 22:04:54.04ID:8J/offgv Webに関してはそれなりに精力的に開発されているから将来的には使い物になる可能性もある
crates.ioとかだってRust製だしね
crates.ioとかだってRust製だしね
406351
2017/08/01(火) 22:43:53.38ID:ncmaIafS >>402
ググるとラズパイ(タダのLinuxだが)向けコードをRustで書いてみたとか、プレステ1用のコードをRustで書いてみた
とか出てくるんだよね。自分が組み込みに使えるんじゃないかと思ったのもその辺が目にとまったから
昔よりかなり良くなっているとは言え汎用機と比べるとデバッグ手段は限定されるし、コンパイル時にコードの妥当性が
ある程度保たれるというのはメリットだと思う
組み込みで「どこかのメモリを壊しているようだが皆目見当が付かない」なんて事態は可能な限り回避したいしね
ググるとラズパイ(タダのLinuxだが)向けコードをRustで書いてみたとか、プレステ1用のコードをRustで書いてみた
とか出てくるんだよね。自分が組み込みに使えるんじゃないかと思ったのもその辺が目にとまったから
昔よりかなり良くなっているとは言え汎用機と比べるとデバッグ手段は限定されるし、コンパイル時にコードの妥当性が
ある程度保たれるというのはメリットだと思う
組み込みで「どこかのメモリを壊しているようだが皆目見当が付かない」なんて事態は可能な限り回避したいしね
407デフォルトの名無しさん
2017/08/02(水) 00:38:23.97ID:Oyyz61S9408デフォルトの名無しさん
2017/08/02(水) 00:46:25.26ID:9o+N0qJU 上の人はOSを書こうとしているんじゃなくてOS無しのままコードを書くつもりなんでないの?
言い換えると、extern crate coreすら出来ないやつ
言い換えると、extern crate coreすら出来ないやつ
409デフォルトの名無しさん
2017/08/02(水) 01:03:22.66ID:OoZ5R2Ag なんか勘違いしてる人がいるね
Rustが強いのは「ちゃんとラップしてあげれば」どんな環境でも「安全に」動かせること
例えばとあるレジスタを触っているときに他のレジスタを触れないようにするとかも(場合によってはコンパイルエラーのレベルで)できる
ただこのラップするっていうのが一番面倒で、そこで安全を担保できなければ=unsafe祭りならむしろCのが楽とも言える
ちょっとググったらArduinoでRustを動かすためのライブラリもあるからその辺り参考にすると良さそう
>>408
OS書くのもOS無しで書くのも変わらないと思うんだけど、coreを含められないってどういう状況?
libcoreは何にも依存してないからそんな状況ありえないと思ってた
Rustが強いのは「ちゃんとラップしてあげれば」どんな環境でも「安全に」動かせること
例えばとあるレジスタを触っているときに他のレジスタを触れないようにするとかも(場合によってはコンパイルエラーのレベルで)できる
ただこのラップするっていうのが一番面倒で、そこで安全を担保できなければ=unsafe祭りならむしろCのが楽とも言える
ちょっとググったらArduinoでRustを動かすためのライブラリもあるからその辺り参考にすると良さそう
>>408
OS書くのもOS無しで書くのも変わらないと思うんだけど、coreを含められないってどういう状況?
libcoreは何にも依存してないからそんな状況ありえないと思ってた
410デフォルトの名無しさん
2017/08/02(水) 01:08:41.51ID:CN84q205 アセンブリ君
411351
2017/08/02(水) 01:16:10.65ID:Qb6MNIfM あー・・・何となく判ってきた。組み込みでそのようなコードを書くのか判っている人からレスが付いていたのか
412デフォルトの名無しさん
2017/08/02(水) 01:21:03.63ID:E8GFzbft413デフォルトの名無しさん
2017/08/02(水) 01:21:20.56ID:Hth04IJp coreだって何にも依存しないというわけではない、けれどそれは自分で用意すれば良いしね
rust_begin_panicとかをどうやって用意するのかは知らないけど
rust_begin_panicとかをどうやって用意するのかは知らないけど
414デフォルトの名無しさん
2017/08/02(水) 01:22:27.24ID:/y5AMSWR RustでもOS書けるでしょ
(もちろんCと同じく最低限のアセンブラはいるが)
ぐぐればいろいろ見つかるぞ
(もちろんCと同じく最低限のアセンブラはいるが)
ぐぐればいろいろ見つかるぞ
415351
2017/08/02(水) 01:38:12.16ID:Qb6MNIfM >>411ミスった。訂正
× 組み込みでそのようなコードを書くのか判っている人
○ 組み込みでどのようなコードを書くのか判っていない人
>>409
>例えばとあるレジスタを触っているときに他のレジスタを触れないようにするとかも(場合によってはコンパイルエラーのレベルで)できる
そういう話を聞きたかった。レジスタの操作順までコンパイラレベルで面倒を見てくれたらありがたいと思う
xに値を書き込む時はyのnビットを1にしてからxへ書き込むとかあるしな。その定義を作る気力があるかはともかくとして
>そこで安全を担保できなければ=unsafe祭りならむしろCのが楽とも言える
ペリフェラルレジスタだけunsafeにしてすればと思ったけどそう単純な話ではないのかな
もちろん入力値のチェックは必要になるだろうけど
× 組み込みでそのようなコードを書くのか判っている人
○ 組み込みでどのようなコードを書くのか判っていない人
>>409
>例えばとあるレジスタを触っているときに他のレジスタを触れないようにするとかも(場合によってはコンパイルエラーのレベルで)できる
そういう話を聞きたかった。レジスタの操作順までコンパイラレベルで面倒を見てくれたらありがたいと思う
xに値を書き込む時はyのnビットを1にしてからxへ書き込むとかあるしな。その定義を作る気力があるかはともかくとして
>そこで安全を担保できなければ=unsafe祭りならむしろCのが楽とも言える
ペリフェラルレジスタだけunsafeにしてすればと思ったけどそう単純な話ではないのかな
もちろん入力値のチェックは必要になるだろうけど
416デフォルトの名無しさん
2017/08/02(水) 02:29:19.43ID:OoZ5R2Ag >>413
確かにmemcpyとかあるね、忘れてた
まあこの辺りはCでも間違いなく自分で書くとこなので大したコストじゃないね
> rust_begin_panic
組み込みならシリアルにでもログ出して無限ループとかが普通かな?
こういうのはOS系のプロジェクトがとても参考になる
>>415
> その定義を作る気力があるかはともかくとして
実行時チェックなら多少楽になるだろうしそこは(精神的)コストとの相談だね
> ペリフェラルレジスタだけunsafeにしてすればと思ったけどそう単純な話ではないのかな
個人的にはunsafe使い始めると至る所で使うようになっちゃうのでお勧めしない
Rustの思想的にも未定義の挙動を許すunsafeはできるだけ避けるべきだしね
そんなの気にせずチェックしたいとこだけチェックさせるLint的な使い方もありっちゃあり
確かにmemcpyとかあるね、忘れてた
まあこの辺りはCでも間違いなく自分で書くとこなので大したコストじゃないね
> rust_begin_panic
組み込みならシリアルにでもログ出して無限ループとかが普通かな?
こういうのはOS系のプロジェクトがとても参考になる
>>415
> その定義を作る気力があるかはともかくとして
実行時チェックなら多少楽になるだろうしそこは(精神的)コストとの相談だね
> ペリフェラルレジスタだけunsafeにしてすればと思ったけどそう単純な話ではないのかな
個人的にはunsafe使い始めると至る所で使うようになっちゃうのでお勧めしない
Rustの思想的にも未定義の挙動を許すunsafeはできるだけ避けるべきだしね
そんなの気にせずチェックしたいとこだけチェックさせるLint的な使い方もありっちゃあり
417デフォルトの名無しさん
2017/08/02(水) 07:02:07.94ID:nq2BG13A redoxのアセンブラで書いてる所すらもrust(高級言語)で書きたいって夢を語ってるんじゃないの?
結局何がしたいのか分からんな・・・
そこについては諦めているなら既に実用化されているし
そこを追っているならチップ毎のクロスコンパイラ作りを頑張れとしか言いようがねぇよ
結局何がしたいのか分からんな・・・
そこについては諦めているなら既に実用化されているし
そこを追っているならチップ毎のクロスコンパイラ作りを頑張れとしか言いようがねぇよ
418デフォルトの名無しさん
2017/08/02(水) 08:11:06.98ID:Oyyz61S9 >>415
レジスタまで意識する用途なら、高級言語を使わないのが正解では
> xに値を書き込む時はyのnビットを1にしてからxへ書き込むとかあるしな。
それこそボード固有の話になるので。
高級言語でやるとしたら機能レベルで関数化して中身はインラインアセンブリで頑張るとか。
何れにせよ言語レベルで対応する話ではないな。
レジスタまで意識する用途なら、高級言語を使わないのが正解では
> xに値を書き込む時はyのnビットを1にしてからxへ書き込むとかあるしな。
それこそボード固有の話になるので。
高級言語でやるとしたら機能レベルで関数化して中身はインラインアセンブリで頑張るとか。
何れにせよ言語レベルで対応する話ではないな。
419デフォルトの名無しさん
2017/08/02(水) 10:50:44.07ID:AyM7Pnm7420デフォルトの名無しさん
2017/08/02(水) 12:12:53.41ID:m0LDca1I rustっていまのところ
何にも向いてないということか。
golangみたいにgoといえば並列処理!みたいなウリがないとなかなか厳しいな。
とりあえずwebはgoでいいや。
何にも向いてないということか。
golangみたいにgoといえば並列処理!みたいなウリがないとなかなか厳しいな。
とりあえずwebはgoでいいや。
421デフォルトの名無しさん
2017/08/02(水) 12:21:18.09ID:E8GFzbft422デフォルトの名無しさん
2017/08/02(水) 12:56:49.05ID:qhSfUKHc 変なチューニングに走らない限りはunsafeは不要
ただしRailsでいうところのDoorkeeperやPaperclipみたいな便利ツールが少ないからそのあたりは自力でどうにかする必要がある
あと、現状で主要なフレームワークはみんなsynchronous。ただしRocketはそう遠くない将来にasync対応しそう。Ironはそもそもやる気があるのか分からん
ただしRailsでいうところのDoorkeeperやPaperclipみたいな便利ツールが少ないからそのあたりは自力でどうにかする必要がある
あと、現状で主要なフレームワークはみんなsynchronous。ただしRocketはそう遠くない将来にasync対応しそう。Ironはそもそもやる気があるのか分からん
423デフォルトの名無しさん
2017/08/02(水) 15:19:15.45ID:E8GFzbft >>422
unsafeは不要なのか、よかった
Railsは使ったことないから分からない
今まではNode.jsでexpress使ってたからそのまで分厚いフレームワークは使ったことない
rustってイベントループじゃなくてスレッドだよね?10K問題はどうなの?
unsafeは不要なのか、よかった
Railsは使ったことないから分からない
今まではNode.jsでexpress使ってたからそのまで分厚いフレームワークは使ったことない
rustってイベントループじゃなくてスレッドだよね?10K問題はどうなの?
424デフォルトの名無しさん
2017/08/02(水) 16:38:11.64ID:I334RkfN goでいいや、という人はまさにgoでよいのでは。
goではいやだ、という人むけ。
goではいやだ、という人むけ。
425デフォルトの名無しさん
2017/08/02(水) 16:42:18.62ID:E8GFzbft goとかいうmapもnull安全もないうんこは絶対NG
426デフォルトの名無しさん
2017/08/02(水) 17:58:49.69ID:m0LDca1I goが嫌だと言うなら
kotlinという選択肢もある。
これだとアンドロイドアプリももれなく使えるようになるし、
null安全だし。
何よりideが既にある
kotlinという選択肢もある。
これだとアンドロイドアプリももれなく使えるようになるし、
null安全だし。
何よりideが既にある
427デフォルトの名無しさん
2017/08/02(水) 18:06:51.08ID:5BVbLnR+ 過疎だからいいけどrustの話しようぜ
428デフォルトの名無しさん
2017/08/02(水) 18:07:43.92ID:E8GFzbft kotlinもscalaもjvm言語だからあまりnull安全じゃない
429デフォルトの名無しさん
2017/08/02(水) 19:54:07.78ID:7vYFqN5x430351
2017/08/02(水) 20:02:49.43ID:5dN3nnfV >>416
unsafeを使わないと任意のアドレスを読み書きできない(=レジスタにアクセス出来ない)と思っていたけど他の手があるのか
unsafeを使わないと任意のアドレスを読み書きできない(=レジスタにアクセス出来ない)と思っていたけど他の手があるのか
431デフォルトの名無しさん
2017/08/02(水) 20:28:52.05ID:xy+LcKRk 本格的にOS無しの世界に入ったことが無いから適当だけど、関数型プログラミングの道具が使える、とか?>Rustのメリット
代数的データ型とかラムダ式orクロージャが簡単に扱えるとか。
趣旨から外れるけど、Cの世界に入れるのと同じような感じでRustの世界に入ることができるのも個人的には良いと思ってる
代数的データ型とかラムダ式orクロージャが簡単に扱えるとか。
趣旨から外れるけど、Cの世界に入れるのと同じような感じでRustの世界に入ることができるのも個人的には良いと思ってる
432デフォルトの名無しさん
2017/08/02(水) 20:31:53.85ID:E8GFzbft >>429
javaのライブラリ使える代わりにjavaライブラリはnull安全じゃないよって事
javaのライブラリ使える代わりにjavaライブラリはnull安全じゃないよって事
433デフォルトの名無しさん
2017/08/02(水) 20:54:36.60ID:Hth04IJp >>429
>cargo checkはZオプション付けてるだけ
補足するなら、これは非標準のcargo-checkサブコマンドの挙動であって、
標準のcargo checkは--emit metadataを使っているから警告は出ない
>cargo checkはZオプション付けてるだけ
補足するなら、これは非標準のcargo-checkサブコマンドの挙動であって、
標準のcargo checkは--emit metadataを使っているから警告は出ない
434デフォルトの名無しさん
2017/08/02(水) 21:09:38.43ID:FxAsS3hN435デフォルトの名無しさん
2017/08/02(水) 22:00:58.19ID:7vYFqN5x436デフォルトの名無しさん
2017/08/02(水) 22:13:46.45ID:h6wu2BXI 物騒なpartyのサブコマンドだな
437デフォルトの名無しさん
2017/08/02(水) 22:28:55.57ID:Hth04IJp THAAD partyワロタ
438デフォルトの名無しさん
2017/08/03(木) 00:45:37.29ID:InlYWDxN >>430
unsafeを使わないとできないってのはその通りだけど
> もちろん入力値のチェックは必要になるだろうけど
って処理を含めた関数を作ってunsafeな部分を支配下に含めることでunsafeでない処理にするってことが言いたかった
例えるとmallocの戻り値チェックを入れてOption<&mut T>を返す関数を作ってラップすることでunsafeでなくするって感じ
これを面倒くさがるとぬるぽに遭遇するがちゃんとラップすればガッが「一切」必要なくなるわけだ
でも今度はfreeしてない問題が発生するからスマポ作って・・・と徐々に面倒くさくなってきて > コストとの相談
>>431
ライフタイムとか借用とかの安全機能抜きにしてもパターンマッチとか他の言語機能で見てもRustは魅力的だよな
・・・まずい、mainにunsafe付けてBetter CとしてRustを使う世界もありな気がしてきたぞ
unsafeを使わないとできないってのはその通りだけど
> もちろん入力値のチェックは必要になるだろうけど
って処理を含めた関数を作ってunsafeな部分を支配下に含めることでunsafeでない処理にするってことが言いたかった
例えるとmallocの戻り値チェックを入れてOption<&mut T>を返す関数を作ってラップすることでunsafeでなくするって感じ
これを面倒くさがるとぬるぽに遭遇するがちゃんとラップすればガッが「一切」必要なくなるわけだ
でも今度はfreeしてない問題が発生するからスマポ作って・・・と徐々に面倒くさくなってきて > コストとの相談
>>431
ライフタイムとか借用とかの安全機能抜きにしてもパターンマッチとか他の言語機能で見てもRustは魅力的だよな
・・・まずい、mainにunsafe付けてBetter CとしてRustを使う世界もありな気がしてきたぞ
439デフォルトの名無しさん
2017/08/03(木) 04:52:30.89ID:dQPpbAHc Java の参照は、Nullable だから、
Kotlin で扱う場合、すべて、Nullable にすると面倒
そこで、Kotlin では、Platform Type (下の3) と言うものを作った
String 変数型に、Null 代入時、
1. String で、実行時に、IllegalStateException
2. String? で、Nullable だからOK
3. 型を省略(String!) で、実行時に、デリファレンスでヌルポ
1. は、インスタンスにアクセスする前に、代入時にエラー。
3. は、1よりひどく、インスタンスにアクセスして、ヌルポ
Kotlin で扱う場合、すべて、Nullable にすると面倒
そこで、Kotlin では、Platform Type (下の3) と言うものを作った
String 変数型に、Null 代入時、
1. String で、実行時に、IllegalStateException
2. String? で、Nullable だからOK
3. 型を省略(String!) で、実行時に、デリファレンスでヌルポ
1. は、インスタンスにアクセスする前に、代入時にエラー。
3. は、1よりひどく、インスタンスにアクセスして、ヌルポ
440デフォルトの名無しさん
2017/08/03(木) 07:06:29.97ID:l/KHeBEE Kotlin信者が必死だなw
JVM要する時点で組み込み/低レイヤーに向かねーんだよ、土俵が別次元だ馬鹿
Android ARTはJVMじゃない?そのランタイムサイズ、Rustのランタイムサイズの何倍になってるのか分かってんの?
JVM要する時点で組み込み/低レイヤーに向かねーんだよ、土俵が別次元だ馬鹿
Android ARTはJVMじゃない?そのランタイムサイズ、Rustのランタイムサイズの何倍になってるのか分かってんの?
441デフォルトの名無しさん
2017/08/03(木) 08:03:17.08ID:eYqeDR4x スレチ削除申請頼む
442デフォルトの名無しさん
2017/08/03(木) 08:29:31.88ID:hrCRy9t8 組み込みスレ?
443デフォルトの名無しさん
2017/08/03(木) 08:39:41.14ID:563u4f2I444デフォルトの名無しさん
2017/08/03(木) 10:32:34.73ID:TRkbUvPZ 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
()になりませんどうしてですか?
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
()になりませんどうしてですか?
445デフォルトの名無しさん
2017/08/03(木) 10:33:20.99ID:WxFDmNeE >>440
ちなみにkotlin/native 開発中だからそれでrustと同じ土俵に立てるよ。
llvmの中間コード吐けるようになる。
rustより学習コストは低くて関数型チックな言語構文使ってるから
kotlin vs rustが勃発するな。
問題はandroid開発者を取り込めるからユーザー数は圧倒的
IDEも標準が存在する。
という点で色々rustは不利。
rustはwebAssenbryあたりで本領発揮できればいいんだけど。
ちなみにkotlin/native 開発中だからそれでrustと同じ土俵に立てるよ。
llvmの中間コード吐けるようになる。
rustより学習コストは低くて関数型チックな言語構文使ってるから
kotlin vs rustが勃発するな。
問題はandroid開発者を取り込めるからユーザー数は圧倒的
IDEも標準が存在する。
という点で色々rustは不利。
rustはwebAssenbryあたりで本領発揮できればいいんだけど。
446デフォルトの名無しさん
2017/08/03(木) 10:35:36.32ID:WxFDmNeE447デフォルトの名無しさん
2017/08/03(木) 10:39:45.44ID:WxFDmNeE >>444
ごめんちゃんと読んでなかった
fn main() {
let x = 5;
let y = if x == 5 { () };
println!("{:?}",y)
}
これだと動くよね。型を() に統一しないとダメなんじゃない
ごめんちゃんと読んでなかった
fn main() {
let x = 5;
let y = if x == 5 { () };
println!("{:?}",y)
}
これだと動くよね。型を() に統一しないとダメなんじゃない
448デフォルトの名無しさん
2017/08/03(木) 10:52:53.58ID:TRkbUvPZ449デフォルトの名無しさん
2017/08/03(木) 16:58:16.30ID:cu622efE IntelliJ Rustプラグインが、(IDEの)公式プラグイン化した
ついでにちょっとおせっかいな表示も始めた
関数呼び出し部分に仮引数名を補完表示とか、省略された型宣言を補完表示とか
ついでにちょっとおせっかいな表示も始めた
関数呼び出し部分に仮引数名を補完表示とか、省略された型宣言を補完表示とか
450デフォルトの名無しさん
2017/08/03(木) 22:02:43.27ID:l/KHeBEE 有料化しなきゃどうでもいいかな
451デフォルトの名無しさん
2017/08/03(木) 22:11:43.17ID:ztpCIQ/J JetBrainsが開発に参加しているというだけでもそれなりに心強い
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★4 [Hitzeschleier★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 自民・麻生太郎副総裁 石破政権の1年は「どよーん」 高市政権発足で「何となく明るくなった」「世の中のことが決まり動いている」★2 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- ゆたぼん 二重手術を報告「めちゃくちゃ気に入っています」 [muffin★]
- コウメ太夫のネタ考えたから評価してくれ
- トランプ、G7に代わるcore 5を発表 [805596214]
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- vipこのままでいいの?なんか盛り上げる方法ないの?
- 【悲報】日本共産党、ツイッター速報にブチギレ法的措置WWWWWWWWWWWWWWWWWWWWWWWWWWWW [935793931]
- 木曜日のんなっしょい❗(・o・🍬)仕放題スレ🏡
