Rust part10at TECH
Rust part10 - 暇つぶし2ch600:デフォルトの名無しさん
21/05/13 14:22:28.44 p1C3K64x.net
防衛省が中国のハッカーとやり合える人材を募集中 年収最高2000万円
スレリンク(poverty板)

601:デフォルトの名無しさん
21/05/13 14:34:12.09 EmFUnxGS.net
クラッカーにうってつけじゃないか

602:デフォルトの名無しさん
21/05/13 15:04:14.32 67slJFqF.net
年収最低はいくらからですかね

603:デフォルトの名無しさん
21/05/13 15:10:36.53 ENK4De8l.net
最高が2000万円ってだけね。。
こういうので平気で300万円とかいい出すのが今の日本やで。

604:デフォルトの名無しさん
21/05/13 18:36:08.63 hcgdol/O.net
>>589
Windows専用のアプリを作る用途もあるのでは
一般的ではないかもだけど

605:デフォルトの名無しさん
21/05/13 18:39:15.84 oBGJ4/nI.net
Rust for Windowsを欲しがったのはMicrosoft自身だろう
既にVSのインストーラー内部などでRust使用中なので

606:デフォルトの名無しさん
21/05/13 19:27:59.33 4YggBXb4.net
rust for windowsで作る本作ってくださいお願いします

607:デフォルトの名無しさん
21/05/13 19:29:13.29 vZYCxDQa.net
>>594 Windows専用のアプリが作りたいならC#でも使えばいいと思うけど...

608:デフォルトの名無しさん
21/05/13 19:3


609:0:20.99 ID:vZYCxDQa.net



610:デフォルトの名無しさん
21/05/13 19:30:58.76 vZYCxDQa.net
おっとミスって2回書き込んでしまった
失礼

611:デフォルトの名無しさん
21/05/13 20:59:04.54 vzWwtH6K.net
>>590
そういう技術者にも射撃練習とかやらせるのだろうか?

612:デフォルトの名無しさん
21/05/13 21:40:48.09 NNemQTGQ.net
>>595
もうメジャーな用途で使われてんのか

613:デフォルトの名無しさん
21/05/13 21:45:54.80 vzWwtH6K.net
windowsもそろそろNTカーネルを捨てる時期が来るだろうし色々模索はしてるんだろうな

614:デフォルトの名無しさん
21/05/13 21:57:03.92 WjgS+eLl.net
もし仮にNTカーネル捨てたとしてLinuxカーネル一択だと思うがな

615:デフォルトの名無しさん
21/05/13 22:08:50.47 vzWwtH6K.net
Linuxへの接近はここ数年目立ってるし無くはない話だな
独占市場と過去の互換性を捨てきれるか
仮想環境で過去の互換性を維持することも考えられる

616:デフォルトの名無しさん
21/05/14 08:10:59.62 FBkeGRqg.net
>>604
NTカーネル捨てるのはビジネスとして有り得ない。
せいぜいwsl路線を強化してlinuxカーネルを取り込んでいく方向だろ。

617:デフォルトの名無しさん
21/05/14 08:37:43.19 BI4FO4HO.net
カーネルを捨てて切り替えるとか出来るわけないだろ

618:デフォルトの名無しさん
21/05/14 08:52:11.24 9b8NT0Ot.net
3才児が「ぼくはうちゅうひこうしになるんだ!」って言ってるようなもんだから生暖かく見守ってやれ

619:デフォルトの名無しさん
21/05/14 10:22:28.00 6SQ932Rj.net
OSカーネルに対するコンプレックスがすごい人がいるんだろ。
この前のlinuxドライバに関する議論でもそういうの感じるわ

620:デフォルトの名無しさん
21/05/14 11:10:24.23 bMDjGf5Y.net
rustがgolangより人気が出ると思っていいですか?

621:デフォルトの名無しさん
21/05/14 11:14:13.19 5xLewDJ4.net
>>609
Goはガーベッジコレクションがあるから?

622:デフォルトの名無しさん
21/05/14 11:29:33.68 6SQ932Rj.net
GCとランタイム速度に困ったことのある奴だけ気にすればええ。

623:デフォルトの名無しさん
21/05/14 13:23:04.93 TMXA3cLH.net
goとrustどっちが良いか迷うならgoやっといた方が潰しが効くと思う
自分はrust好きだからrust使うが

624:デフォルトの名無しさん
21/05/14 14:57:53.07 85G96vHL.net
両方やっとけ

625:デフォルトの名無しさん
21/05/14 15:16:48.50 678S/iU6.net
なんでマイナー言語のはずのgoがよく言及されるようになったのかと思っていたら、AWSで使える言語の一つになっていた。
Azureでも使えるようだ。

626:デフォルトの名無しさん
21/05/14 15:45:19.02 WB7bczPS.net
goがマイナー。。。..

627:デフォルトの名無しさん
21/05/14 15:46:03.80 BI4FO4HO.net
サーバープログラムみたいな閉じた環境で、出来るここまでと決まってて
要らないこと考えたくないなら制約された言語選んだほうが良いかもな

628:デフォルトの名無しさん
21/05/14 15:47:17.23 6SQ932Rj.net
goでほとんど問題ないんだが、それだとrustの出番なくなっちゃうからね。

629:デフォルトの名無しさん
21/05/14 16:15:48.73 1T0ViQH9.net
Go言語がマイナーならこの言語はどんだけマイナーになっちゃうのよ

630:デフォルトの名無しさん
21/05/14 16:25:56.91 Z0ePaP6y.net
goとrustの違いが分からないような知識量ならgoやった方が不幸にならないかと

631:デフォルトの名無しさん
21/05/14 16:48:29.92 678S/iU6.net
参照型はローカル変数にだけ入れて一時的な目的だけに使うことに徹してスクリプト言語の様な書き方だけに専念すればRustはスクリプト言語であるかのように使えて、習得は難しくないかも。
参照型を構造体の中に入れようとしたとたんCやC++では考える必要の無かった難しい問題が生じる。

632:デフォルトの名無しさん
21/05/14 17:00:31.58 dvkZe6EK.net
メジャー言語
c java vba

633:デフォルトの名無しさん
21/05/14 17:40:01.47 N2rlLeCr.net
Rustを勉強したら低レベルが理解出来る!!!わけねえだろ
URLリンク(www.akiradeveloper.com)

634:デフォルトの名無しさん
21/05/14 19:36:04.21 5xLewDJ4.net
例えばWeb系ならばRustがベスト
WasmでGC抱える言語をわざわざ選ぶメリットないからね

635:デフォルトの名無しさん
21/05/14 19:44:16.91 6SQ932Rj.net
こういう詐欺師が普通におるからrustは信用できんわ

636:デフォルトの名無しさん
21/05/14 19:51:45.41 WB7bczPS.net
rustに対するコンプレックスすごい人いるね

637:デフォルトの名無しさん
21/05/14 20:26:02.54 0Bqgd+6M.net
詐欺師はどこにでもいるからな
とはいえ、webならwasmは正しくないとは思うがwasmならrustは結構正しいと思う

638:デフォルトの名無しさん
21/05/14 20:32:01.67 6SQ932Rj.net
wasm,rustでまともに開発してたら絶対そんなこと思わんわ。。どいつもこいつも馬鹿すぎる

639:デフォルトの名無しさん
21/05/14 20:40:33.59 WB7bczPS.net
それで、どんなまともなものを作っているんですか

640:デフォルトの名無しさん
21/05/14 20:46:14.11 5xLewDJ4.net
>>624
とこが詐欺?
あなたはWebブラウザ上のWasmでRustではなくGoを用いているのですか?

641:デフォルトの名無しさん
21/05/14 21:18:15.11 TMXA3cLH.net
>>627
それはあなたがまともにrust使えてないだけなんじゃないですかねぇ

642:デフォルトの名無しさん
21/05/14 21:22:56.09 yxEaYkUD.net
話が具体的で説得力がある

643:デフォルトの名無しさん
21/05/14 21:38:43.40 2w1FBHD8.net
>>572
形式的に書けているのは構文規則だけで
意味規則は自然言語で書かれているやんけ

644:デフォルトの名無しさん
21/05/14 22:59:38.34 R2Ezzb7N.net
「Rustはスクリプト的に書ける」とかいう謎の言葉言う奴沢山いるけどなんぞ?
同一人物か?

645:デフォルトの名無しさん
21/05/14 23:07:50.74 TMXA3cLH.net
我々が知らないところでevcxrが流行ってるのかもしれない

646:デフォルトの名無しさん
21/05/14 23:23:46.43 72ZodHJE.net
google謹製のREPLね
エベクサ?

647:デフォルトの名無しさん
21/05/15 02:09:59.05 BphhllcO.net
>>633
Rubyと同じようなメソッドチェーンを使ったコードを見かけたから。

648:デフォルトの名無しさん
21/05/15 03:17:16.69 vuo6fbRn.net
ドットでメソッド呼び出しする言語は大概そういうライブラリ設計あるでしょ

649:デフォルトの名無しさん
21/05/15 11:05:39.24 DTE+piln.net
>>637
C++やJavaでは見たこと無い。
JSでも余り見かけない。

650:デフォルトの名無しさん
21/05/15 11:12:58.76 Y+SvMVkX.net
そもそもメソッドチェーンって「スクリプト的」なのか?

651:デフォルトの名無しさん
21/05/15 11:24:14.14 C+CtGbiq.net
前々からヤベェやつだとは思ってたが
レベルの低さが想像をはるかに超えてた

652:デフォルトの名無しさん
21/05/15 11:27:04.30 MS0dCBGJ.net
c言語みたいにcsvパーサーも自前で用意するような環境だとそらスクリプト的だろうね。

653:デフォルトの名無しさん
21/05/15 12:00:43.05 A3vQNOxR.net
unityとかUEがrustに対応しないかなあ

654:デフォルトの名無しさん
21/05/15 12:00:58.11 ZgJC7yuF.net
cargoみたいなパッケージマネージャがあるのもスクリプト的な要素のうちなのか?

655:デフォルトの名無しさん
21/05/15 12:10:16.46 MS0dCBGJ.net
cargoは低レイヤー慣れてる人からすれば邪魔でしかないけどね。

656:デフォルトの名無しさん
21/05/15 12:20:50.35 DTE+piln.net
SourceforgeなどでRustが好きといっている人の大部分はレベルが低いだろう。
そもそもこの世の中、大多数から受けるものにレベルが高いものがあったためしがない。
好きな言語ランキング上位のJS、Pythonも初心者向け言語であることは誰もが認めることだし。

657:デフォルトの名無しさん
21/05/15 12:40:11.21 UqP25wMI.net
sourceforge???
stackoverflowの調査かなんかと勘違いしたの?

658:デフォルトの名無しさん
21/05/15 12:41:57.93 ZgJC7yuF.net
>>644
どういうこと?ベアメタル向けでもcargo使うのが主流だと思っていた

659:デフォルトの名無しさん
21/05/15 12:47:56.99 ZgJC7yuF.net
>>645
使用者のレベルの高低と言語のレベル(?)の高低は一致するという主張かな?
言語のレベルが高いというのが最先端のテクノロジーを取り込むという意味ならrustの目指すところではないと思う
他の言語で実証されたコンセプトを取り込むと宣言してる(た?)はず
高レベルな言語が必要な人はこんな普及言語じゃなくてもっと尖った言語を使うか自分で作るべきなのでは

660:デフォルトの名無しさん
21/05/15 12:49:38.36 DTE+piln.net
>>646
ああ、そっちだった。
Stackoverflowも来てる人の頭の良さは一般大衆と同じくらいだから同じ。

661:デフォルトの名無しさん
21/05/15 12:53:14.42 DTE+piln.net
>>648
そういうことじゃなくて、
・Rustをほとんど使っても見てないのに勝手に「好き」と言っていることが分かってる。
・Stackoverflowのような沢山の人が集まる場所の調査では、必ずJSやPythonのような初心者向けの言語が人気となるわけだから、そこの人々が好きだと思う言語は、JSやPythonのような感覚で使えると勝手に思い込んである蓋然性が高い。
 ただし、現実はRustは実際には使ってないのに勝手に言っている。
ということ。

662:デフォルトの名無しさん
21/05/15 13:20:44.67 YOv93GRR.net
stackoverflowの調査の話なら、調査内容を勘違いしている
あれは「今Rustを使っている人が、今後もRustを使い続けたいかどうか」のアンケート結果をmost lovedと言ってるだけ
だからJSやPythonユーザの意見は入ってない
そもそもloveって言葉に語弊があるし、日本語にしたときに「人気の」とかなって余計訳がわからなくなってる

663:デフォルトの名無しさん
21/05/15 13:25:20.53 YOv93GRR.net
たぶん「最も嫌嫌使っている人が少ない言語」みたいなのが正確な気がするな

664:デフォルトの名無しさん
21/05/15 14:15:44.60 MW7lNw7H.net
「今使ってる人が次も使いたいと思うか?」ってJetBrainsの調査でも毎回入れてくる項目だな
海外のアンケートではよく見るやつ

665:デフォルトの名無しさん
21/05/15 14:17:03.39 DTE+piln.net
>>651
もし前半の通りなら、今Rustを使ってる人なんて極一握りの物好きだけだから
「love」なのは当たり前で調査結果が意味が無い。

666:デフォルトの名無しさん
21/05/15 14:19:45.06 eXXN4CKf.net
一生でどれか一つのプログラミング言語しか覚えられないとして
Rust選ぶ人いますか?
選択したとして別にその言語がいきなりマスターできるわけでなく
ただその言語しか覚えられないというだけですが

667:デフォルトの名無しさん
21/05/15 14:23:36.58 DTE+piln.net
今rustを使ってる人って、自ら進んで使おうとした人に限られるから
嫌いな人がほとんどいないのは当たり前だから、調査結果にバイアスが
掛かりすぎていることになるな。

668:はちみつ餃子
21/05/15 15:05:35.65 pVi51x8H.net
そういえば C++ でメンバ関数の評価順序に関して設計者も気づいてなかった考慮漏れが見つかった
(よくあるパターンが実際には未定義だった) って話があったな。
URLリンク(www.open-std.org)
C++17 で修正されているはずだけど。
宣言的な表現や関数的な表現をプログラミング言語に取り込む試みは数多いが
現実は順序からは逃れられぬのだ……。

669:デフォルトの名無しさん
21/05/15 15:16:25.44 HcoKJY+/.net
Rustがスクリプト的に書けるかどうかはおいといて、
個人用のツール書く言語をPythonからRustに乗り換えたっつー話は一応あるな
URLリンク(hayatoito.github.io)

670:デフォルトの名無しさん
21/05/15 15:20:52.26 DTE+piln.net
>>658
Googleがnode.jsで書いていたものをRustにしたと聞いたぞ。

671:デフォルトの名無しさん
21/05/15 15:23:50.02 TrqVEcq2.net
全部書き直すのは逆に効率悪そう
速度的にキツイ場合のみでいいんじゃないか


672:?



673:デフォルトの名無しさん
21/05/15 15:32:34.68 H/3gPTTR.net
どちらかといえば速度よりも変更頻度が動機になると思う
静的チェックツールも増えてはいるけどコンパイル型はいじる時の安心感が違う

674:はちみつ餃子
21/05/15 15:37:59.52 pVi51x8H.net
>>660
言語を跨いで呼出すときはその境界で色々な処理が挟まったりもするので、
まだらに入り乱れるような形になるとそれはそれで実行性能の足を引っ張ることもある。
状況次第なので一概には言えないけど、言語を変更すると決めたなら
そこそこ大きい単位で乗り換えるのが妥当な場合は結構あると思うよ。

675:デフォルトの名無しさん
21/05/15 17:32:17.46 jwQMP5Oj.net
>>661
それはあるね
個人用のツールだとそんなに真面目にテストも書かないから
動的型だと忘れた頃に改修したくなって詰む

676:デフォルトの名無しさん
21/05/15 18:53:39.15 IpomZGOJ.net
>>642
MSがdotnet対応のRust#出したらUnityワンチャンあるんやない?

677:デフォルトの名無しさん
21/05/15 19:10:58.08 Y+SvMVkX.net
そこはRust/CLIで。

678:デフォルトの名無しさん
21/05/15 21:52:45.98 TrqVEcq2.net
GCのあるrustに存在意義などない

679:デフォルトの名無しさん
21/05/15 22:13:28.16 Y+SvMVkX.net
GCとデストラクタが共存するC++/CLIはなかなか興味深い言語だった。

680:デフォルトの名無しさん
21/05/16 11:00:47.47 9EXRd3vl.net
RustのGCって初期はまた復活されるかもーみたいなノリじゃなかったっけ?

681:デフォルトの名無しさん
21/05/16 11:12:01.38 SPtqbmz9.net
RC関連についてはやるとか?

682:デフォルトの名無しさん
21/05/16 12:07:45.66 MDYO1Tug.net
@ pointerとか ~ pointerとかあった頃の話?

683:デフォルトの名無しさん
21/05/16 15:06:48.66 JH7fFMWR.net
>>665
確かにそっちか
>>666
GCがあるRustって言うよりはunsafeを外部リンクで呼び出してるようなもんだろ

684:デフォルトの名無しさん
21/05/17 10:53:44.01 ZSkTvtbm.net
rustが覇権を取るにはPHPみたいにドキュメントの翻訳をたくさん作ること
そしてサンプルコードを盛り込むこと

685:デフォルトの名無しさん
21/05/18 19:40:20.00 A1yOEMnk.net
>2021 Editionは2021年10月にリリースされる。今回のエディションは「Rustの使用感を大きく改善する」ものになるという
あんまり前にこんな発表しないでほしい
やる気なくなる

686:デフォルトの名無しさん
21/05/18 19:44:35.79 Gj41gD2H.net
>>673
ちゃんと発表資料見れば分かるけど、大して使用感変わらんよ
クロージャー使いまくりの人が一番恩恵を受けるかな

687:デフォルトの名無しさん
21/05/18 20:19:55.73 Z0RWJbQc.net
所有権は移動するときのほうにマークが出るべきなんじゃあ

688:デフォルトの名無しさん
21/05/19 07:47:56.56 X700JkCT.net
まぁコストかかるのはコピーだし

689:デフォルトの名無しさん
21/05/19 08:05:05.13 o3bqBTNO.net
Rustの真似をしようとする言語がないのがふしぎだ

690:デフォルトの名無しさん
21/05/19 12:30:25.52 HmkTJiD6.net
URLリンク(en.m.wikipedia.org)(programming_language)
wikipedia見ただけだけど Crystal, Elm

691:デフォルトの名無しさん
21/05/19 12:30:46.25 HmkTJiD6.net
など影響を与えた言語は列挙されてた

692:デフォルトの名無しさん
21/05/19 12:42:47.10 9T1L9lvJ.net
>>678
Elmのどこが?と思ってソースを読んだら
関数型言語なら大体持ってるEither型の名前を Result, Ok, Error にしたところがRust由来とな
うーむ持ってきたのは名前だけなのにInfluencedか

693:デフォルトの名無しさん
21/05/19 12:59:40.27 u9Tr9lyP.net
Gleam
URLリンク(gleam.run)
OwnershipやLifetimeの考え方を採用した言語はまだ聞いたことがない

694:デフォルトの名無しさん
21/05/19 13:11:21.07 bDX8SBSl.net
所有権の考え方を採用している言語としてはC++などがあります

695:デフォルトの名無しさん
21/05/19 14:00:04.90 NOe9g/vN.net
まあインスタンスの共有については何らかの言語サポートが入ってもおかしくないかもね

696:デフォルトの名無しさん
21/05/20 01:09:22.49 WwVMFHF+.net
DにもOwnership入ったとか小耳に挟んだだけなら

697:デフォルトの名無しさん
21/05/20 17:03:02.09 VKAk8Olu.net
URLリンク(forest.watch.impress.co.jp)
凄いね

698:デフォルトの名無しさん
21/05/20 17:06:31.55 13olK3Lw.net
>>685
UIがReactというのが残念

699:デフォルトの名無しさん
21/05/20 18:20:18.69 PiC1UW/o.net
逆に何ならいいんだよ

700:デフォルトの名無しさん
21/05/20 18:33:43.55 UXe9/StR.net
GUIフレームワークをRustで作るうまみあまりなさそう

701:デフォルトの名無しさん
21/05/20 19:39:25.12 QrP75Wi1.net
Rustで作ってあるなら絶対大丈夫だな!

702:デフォルトの名無しさん
21/05/20 22:57:01.82 HbCDuKW4.net
設計がクソだとダメ
ダメなヤツはなにやってもダメ

703:デフォルトの名無しさん
21/05/21 11:45:49.77 r1IBz1vL.net
>>538
(1)もちろん例外を使わずとも関数呼び出し等がエラー値を返すことで全て実現できます
(2)ところがエラー値が返ってくると毎回if文やmatch等でエラー時はそこですぐreturnする等の処理を書く必要があって面倒かつコードが醜いため例外の使用が好まれました
(3)Rustでは関数の返り値型をResult<T,E>とすることに加えて「?」オペレーター(旧try!マクロ)を使うことで(2)の処理を自動化しました
つまり関数等呼び出し毎にifやmatch等で返り値エラーチェック&returnの記述をしなくても末尾に「?」を記述するだけで済みます
これでチェーンも出来て具体的には
b = a.hage()?.hige()?.hoge()?
と書くだけでhage()でエラーが返れば早期エラーreturnしますしhige()やhoge()でエラーでも同様です
関数の返り値型がResult<T,E>であることが使用条件です
これはもちろん正常値の<T>型とエラー<E>型のenumです
これらにより関数を多段に深く呼び出していても深い所でのエラーがすぐにreturnを多段にしてエラーが戻って来ます
したがってRustでは例外を使わなくても困らないのです

704:デフォルトの名無しさん
21/05/21 13:37:02.96 J6y23PLS.net
すまんrust新参者なんだが、Rust By Exampleのコードいじって勉強してて、以下のコードが疑問に感じられた。
以下のプログラムはmain関数内のif文は実行されないとは明らかなんやが、それでもsubの行でいわゆるuse-after-freeのコンパイルエラーが出る。
これはif文が実行されなくてもdropは実行されるということなんですか?
下のコードみたいにuse-after-freeになるかならないかがif文の条件満たすかどうかによって決まるようなプログラムでも
rustでは一緒くたにuse-after-freeになるとみなされるってことなんですね?
そう考えればそこまで賢くないコンパイラですね
struct Droppable {
id: &'static i8,
}
impl Drop for Droppable {
fn drop(&mut self) {
println!("> Dropping {}", self.id);
}
}
fn sub(d: &Droppable) {
if *d.id == 0 {
drop(d);
println!("> Test {}", d.id);
}
}
fn main() {
let _a = Droppable { id: &0 };
if *_a.id == 1 {
drop(_a);
}
sub(&_a);
}

705:デフォルトの名無しさん
21/05/21 13:4


706:0:53.52 ID:J6y23PLS.net



707:デフォルトの名無しさん
21/05/21 13:44:28.52 J6y23PLS.net
Compiling playground v0.0.1 (/playground)
error[E0382]: borrow of moved value: `_a`
--> src/main.rs:22:9
|
| let _a = Droppable { id: &0 };
| -- move occurs because `_a` has type `Droppable`, which does not implement the `Copy` trait
| if *_a.id == 1 {
| drop(_a);
| -- value moved here
| }
| sub(&_a);
| ^^^ value borrowed here after move //ここでuse-after-free errorが発生!
error: aborting due to previous error
For more information about this error, try `rustc --explain E0382`.
error: could not compile `playground`
To learn more, run the command again with --verbose.
見やすくした

708:デフォルトの名無しさん
21/05/21 14:49:33.29 vx/ErwhM.net
意味のないコードだよ

709:デフォルトの名無しさん
21/05/21 14:53:16.15 PNtD97K1.net
コンパイラは別に値まで見ないからな
clippyが意味のない分岐だよと指摘してくれるのかどうかは知らんが

710:デフォルトの名無しさん
21/05/21 14:55:24.20 HgMuIEwp.net
>>692
基本的に条件分岐はpredがコンパイル時に評価できる場合でも true/false 両方あり得るものとして扱われるよ
その後の最適化フェーズであり得ないルートは除去されるだろうけど最適化の結果でコンパイルエラー差異が出ないようにする考え方なんだと思われる
無限ループ専用の構文であるloopが導入された背景もたぶんこのあたりにある

711:デフォルトの名無しさん
21/05/21 15:52:58.09 J6y23PLS.net
>>697
trueのときもdrop、falseのときもdropされるとみなされるということは、
if文によってheap領域で確保しているメモリを解放するかしないか場合分けできないってことじゃん
それって不便では?

712:デフォルトの名無しさん
21/05/21 16:14:23.61 qRzkKAr2.net
>>698 これ元のコード見てみ
これifの条件がtrueだろうがfalseだろうがsub(&_a);は実行されるやん
ifの条件がfalseのときには問題なく実行できるけど、もしifの条件がtrueになって_aがdropされてしまった後にsub(&_a);が実行されてしまうと開放された値を使うことになる
だからRustコンパイラはエラーを吐くんだよ

713:デフォルトの名無しさん
21/05/21 16:15:51.92 91Y2FzX3.net
いや、普通に場合分けはできるが…
どちらかというとifの条件を変えるたびにコンパイルが通ったり通らなかったりするほうが不便では?
そこにifがあるってことは(将来的にとか何らかの条件で)実行される可能性があるからあるんでしょ
もし絶対に実行されないことが確定してるなら書く意味ないし

714:デフォルトの名無しさん
21/05/21 16:19:22.28 91Y2FzX3.net
場合分けしたいならこんな感じで
if *_a.id == 1 {
drop(_a);
} else {
sub(&_a);
}

715:デフォルトの名無しさん
21/05/21 17:42:19.92 J6y23PLS.net
>>700
言ってる意味がさっぱりわからん
>>692のプログラムにあるとおり
現実問題、将来的に決して実行されるわけがないif文というものは存在するし
if文があるというのは実行される可能性のあるの十分条件でもなければ必要条件でもなわけでもないんやが。
ワイが言いたいのは仮にrustの型システムを無視して>>692のコードをそのままコンパイルしたとしても
if文は実行されないわけだから安全なはずなものまでを省いているというところが不思議だってことや
つまりuse-after-freeバグが現実には起きないコードまでもif文の他の条件でUAFバグが起きるがために
ひとまとめにUAFが起きる�


716:ニみなすrustコンパイラの姿勢がif文である条件のときだけfreeするコードを書くのを認めないようにみえるという ワイの感想に繋がってるわけでして



717:デフォルトの名無しさん
21/05/21 17:53:39.45 IHGXJo1X.net
use of moved valueやborrow of moved valueを
use-after-freeとして理解してるのがそもそも間違ってる
The Bookを読んでLifetimeとOwnershipを復習してくれ

718:デフォルトの名無しさん
21/05/21 18:00:55.07 J6y23PLS.net
>>692のコードをcに書き直してみたらこうなる
} Droppable;
void drop(Droppable* d) {
printf("> Dropping %d", d->id);
free(d);
}
void sub(Droppable* d) {
if (d->id == 0) {
//free(d);
printf("> Test %d", d->id);
}
}
int main() {
Droppable* _a;
_a = malloc(sizeof(Droppable));
_a->id = 0;
if (_a->id == 1) {
drop(_a);
}
sub(_a);
}

719:デフォルトの名無しさん
21/05/21 18:01:46.42 J6y23PLS.net
これはrustでは弾かれるはずの「if文のある条件のときだけヒープのある部分をfree」というコードのはずだが
安全なCのプログラムや コンパイルは通るしランタイムエラーも起こさない。
メモリ安全なプログラムの中では、cで書けるプログラムのほうがrustで書けるプログラムより広いんだね
rustはメモリ安全なcのプログラムと同等な処理を書けない部分もあって不便じゃないかっていうのが結局のところワイの疑問になるんや
じゃあrustでは「if文のある条件のときだけヒープのある部分をfree」のコードをどう書くんや?
メモリ安全性を損なってるわけでもない処理ではないはずなんやがrustのコンパイラははじくぞ?

720:デフォルトの名無しさん
21/05/21 18:03:27.13 J6y23PLS.net
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int id;
} Droppable;
void drop(Droppable* d) {
printf("> Dropping %d", d->id);
free(d);
}
void sub(Droppable* d) {
if (d->id == 0) {
//free(d);
printf("> Test %d", d->id);
}
}
int main() {
Droppable* _a;
_a = malloc(sizeof(Droppable));
_a->id = 0;
if (_a->id == 1) {
drop(_a);
}
sub(_a);
}
ほい完全版

721:デフォルトの名無しさん
21/05/21 18:06:23.36 p9FphGnI.net
>>705
unsafe使え、というかもうちょっと具体的な例じゃないと困る
今まで出された例だと「最初から絶対通らないの分かってるならif文消せばいい」としか思えないので

722:デフォルトの名無しさん
21/05/21 18:12:17.78 91Y2FzX3.net
別にわざわざCで書いてもらわなくても安全なのは分かるよ
今のRustコンパイラで通らないのはボローチェッカーが最適化前にあるからなんで
部分的にでも先に最適化すれば通るようにはできるだろう
ただそれをしたい動機が分からない
本当にifが実行される可能性が一切ないなら単に消せばいい、といしか言いようがないので

723:デフォルトの名無しさん
21/05/21 18:14:06.78 J6y23PLS.net
>>703
それただの論点そらしだよね
UAFってrustの独特なメモリ管理手法と相反する用語ではないし
use of moved valueやborrow of moved valueもUAFを阻止するためのものだよね
じゃあrustでは「if文のある条件のときだけヒープのある部分をfree」のコードをどう書くんや?

724:デフォルトの名無しさん
21/05/21 18:18:59.35 p9FphGnI.net
>>709
DroppableのメンバにBox<i8>持たせろ
仮に"drop"された後でもsubが正常に動くことが期待されているなら、そこで使うべきなのはdropではない

725:デフォルトの名無しさん
21/05/21 18:22:54.40 91Y2FzX3.net
というか >>701 で書いたif/elseの例はちゃんと「if文のある条件のときだけヒープのある部分をfree」になっているのに何か不満なのか

726:デフォルトの名無しさん
21/05/21 18:24:13.35 IHGXJo1X.net
>>709
UAFを阻止するためだけにあるものじゃないから
やり方は>>701で教えてくれてるやろ
とりあえずThe Book読んでね

727:デフォルトの名無しさん
21/05/21 18:31:38.95 p9FphGnI.net
>>709
これでどうですか?
URLリンク(play.rust-lang.org)

728:デフォルトの名無しさん
21/05/21 18:38:40.69 J6y23PLS.net
>>711
そうやん
rustって不思議やね

729:デフォルトの名無しさん
21/05/21 18:44:49.25 J6y23PLS.net
解決しました。
なにはともあれありがとうございました。>>701の方に救われました。
ここまで関わってくださった皆様まことに協力ありがとうございました。感謝いたします。

730:デフォルトの名無しさん
21/05/21 19:24:50.36 91Y2FzX3.net
「理論的に安全な任意のコードは通るべき」ってイメージだったのかな
実際にはそんなことはなくて、上の例のようなコードを通すためには色々なトレードオフがあるから
単に「理論的に安全」ってだけで無条件に実装されることはない
もっと具体的なユースケースがあって、みんなが「これは通らないと不便だよね」ってなったものが実装される
数年前に実装されたnon lexical lifetimesなんかはまさにその例だね

731:デフォルトの名無しさん
21/05/21 19:31:11.66 bfSFy0HM.net
はぎゃーん

732:デフォルトの名無しさん
21/05/21 21:43:48.32 HgMuIEwp.net
クロージャの disjoint capture が破壊的変更になるのは分かるんだけど最初からこうなってなかったのはなぜ?

733:デフォルトの名無しさん
21/05/21 22:34:26.09 vpqVq/KA.net
iter()とinto_iter()の使い分けが分からない
iter()じゃないといけない場合があるのは分かるんだが

734:デフォルトの名無しさん
21/05/21 22:49:37.59 +ok17UuV.net
into_iterは所有権を奪いItemを得ることができる
iterは&Itemを得る
他のintoで始まるものは所有権を奪うことになってる

735:デフォルトの名無しさん
21/05/21 23:22:44.96 qRzkKAr2.net
>>711 Rustコンパイラが問題視してるのは開放された値を使ってしまう可能性があることで、それが修正された >>701 のコードは問題ないから通る

736:デフォルトの名無しさん
21/05/22 00:04:28.82 yRhz4OAW.net
>>719
Rustでの変数の受け渡し方は
by (shared) reference、by mutable reference、by valueの3つなので
それに対応していろいろなものが3種類1セットになってる
イテレータならiter(), iter_mut(), into_iter()
クロージャならFn, FnMut, FnOnce
コンバージョンならAsRef, AsMut, From/Into

737:デフォルトの名無しさん
21/05/22 00:34:10.91 RuplHzwP.net
as_foo(), to_foo(), into_foo() の違いも覚えておくとよいかもね

738:デフォルトの名無しさん
21/05/22 00:45:11.88 yRhz4OAW.net
覚えておくとはいいのはそうだけど、そのセットは少し観点違うよね
URLリンク(rust-lang.github.io)

739:デフォルトの名無しさん
21/05/22 16:34:10.81 ma8sDMzI.net
Rustややこしいわぁ

740:デフォルトの名無しさん
21/05/22 20:26:18.21 UuUK8ShD.net
Rust慣れたあと他の言語行くと
良い作法が身についてて歓迎される、とかありますか?

741:デフォルトの名無しさん
21/05/22 20:30:50.12 18meLr+O.net
>>726
言語が異なれば同じことをするにも良い作法とされる方法は異なるだろうし、そんなに役に立たないかもよ。
むしろRustでは~と言い出すとかえってうるさがられる可能性も。

742:デフォルトの名無しさん
21/05/22 20:34:58.75 RuplHzwP.net
rustでは変数のshadowing当たり前のように使うけど他の言語では嫌がられそう

743:デフォルトの名無しさん
21/05/22 21:08:16.57 9BHHuuQy.net
let value = value;
とか他言語で書いたらアホだと思われるし

744:デフォルトの名無しさん
21/05/22 21:10:13.17 61y793Zl.net
Rustはメイン関数かその次の関数のローカル変数にリソースを保持する形にしがちじゃない?
他の言語だとあんまりやらない

745:デフォルトの名無しさん
21/05/23 03:12:09.36 1TnUlIAl.net
>>730
他の言語でも同じだよ
それとも禁断のグローバル変数を使う駄目パターンをRustでもしたいということ?

746:デフォルトの名無しさん
21/05/23 06:28:03.88 ApnxiBa8.net
pythonみたいな動的型付け言語ではよう見るけどさ
Rustではこんなん要らなくしてほしいわ

747:デフォルトの名無しさん
21/05/23 13:14:57.61 viOBOYhY.net
ライブラリによってはデータを持ち運ぶということが不可能だったりするからグローバル変数必須だったりするんだよな
(具体例: serenity)

748:デフォルトの名無しさん
21/05/23 13:33:01.51 1FznZ2H5.net
いや別に必須ではないだろ。

749:デフォルトの名無しさん
21/05/23 13:39:52.69 p3SEnqzU.net
log!() みたいなプログラムの各所から呼び出されるマクロや関数の実装の為には rust でも普通にグローバル変数使われているのでは
static 変数にするためには Sync が要求されたり mut にするために Mutex 使う必要があるから他の言語ほど気楽に使えないというだけで
グローバル変数そのものが禁断扱いされることはないかと
グローバル変数の濫用は他の言語同様嫌われるけどね

750:デフォルトの名無しさん
21/05/23 13:43:31.31 1TnUlIAl.net
一般的にどんな言語においても何らかの外部のライブラリを取り込む時には
何か一つのクラスとかオブジェクトとか構造体とかに閉じ込めてしまって
それ一つだけ持ち運ぶからグローバル変数を使うことは無いでしょう

751:デフォルトの名無しさん
21/05/23 16:18:03.34 ljEJPp90.net
>>735
static変数とglobal変数はスコープが違うだろ
global変数が悪とされるのは、そのスコープの広さだからね
いつどこで誰が変更するのか、また参照するのか、スコープが広ければ広いほど把握が困難になる
把握が困難になればなるほど、それだけバグを生む温床になる

752:デフォルトの名無しさん
21/05/23 18:34:32.71 1FznZ2H5.net
io周りは極論すればどう管理してもグローバルだからな。
プロジェクト毎に規約設ける以外にまともに管理する方法なんてない。

753:デフォルトの名無しさん
21/05/23 20:09:32.32 wHpcVS8W.net
>>735
そういやロガーの設定ってどこに保存されてるの?
debug!() 呼ぶたびにMutexロックしてるのかな?

754:デフォルトの名無しさん
21/05/24 12:11:21.84 1Toh/2dP.net
>>736
クラスの中に入れても、グローバル変数であることは避けられないし
どんな言語においてもグローバル変数は必要。

755:デフォルトの名無しさん
21/05/24 12:28:02.03 wwlvG9VZ.net
「:?」ってなんなんですか?
URLリンク(tourofrust.com)

756:デフォルトの名無しさん
21/05/24 12:49:55.25 KKN49LSI.net
>>741
デバッグ用のフォーマットで出力するという意味
詳しくは以下参照
URLリンク(doc.rust-lang.org)

757:デフォルトの名無しさん
21/05/24 13:24:07.35 JJaZh5wC.net
>>740
そんなことはないだろう。
確かにグローバルでも大して変わらんてものはあるけど、
loggerを引数で渡していくっていうような実装方法もある。

758:デフォルトの名無しさん
21/05/24 13:33:20.21 u2umy7DV.net
>>739
logクレートのstatic mut変数だね
ロックするのは初期化とレベル設定時だけ
出力時にロックするかどうかは実装次第

759:デフォルトの名無しさん
21/05/24 15:43:10.46 dukpbHqg.net
>>740
そのクラスの存在そのものがグローバル変数(相当)だという話?
それともそのクラスもしくはそのインスタンスをグローバル変数に入れて使うということ?
後者の意味ならば必要な範囲で引数として持ち歩けばグローバル変数を普通は使わないですよね。

760:はちみつ餃子
21/05/24 16:59:24.57 tdQ8iTTE.net
大事なのは抽象化がきちんとしているかどうか。
各部品が妥当な意味に分離されているかどうか。
グローバル変数がよくないのは色んなパーツから横断的に使われる可能性があって
部品が不必要に密結合していることの表れだからであって、
そのグローバル変数のアクセス範囲が妥当な範囲に制御されているなら問題じゃないよ。
過剰な密結合を解消せずにグローバル変数を引数に置き換えてたら
影響範囲が見えにくくなってもっと悪くなることだってありうる。
まあどういう場合なら妥当なのかってのは色々と意見はあると思うけど。

761:デフォルトの名無しさん
21/05/24 17:17:23.03 qqtJSk72.net
$_POSTはセーフ

762:デフォルトの名無しさん
21/05/24 17:21:32.94 Ig527IlE.net
>>746
まずは長くて区別しやすい名前に変えるのがスタートかね。

763:デフォルトの名無しさん
21/05/24 17:31:54.98 wwlvG9VZ.net
>>742
ありがとう!


764:なんか独特なのね



765:デフォルトの名無しさん
21/05/24 23:12:37.25 rI3Y4Uqa.net
関数型言語やったことないけど、Rustいけるかな
JavaとC++はそこそこ経験あり

766:デフォルトの名無しさん
21/05/24 23:17:37.88 zk4LoLUU.net
Java 8とかC++ 14以降くらいなら結構似たような機能も入ってるし
そこまで大変じゃない気がする

767:デフォルトの名無しさん
21/05/24 23:36:00.17 JJaZh5wC.net
c++はともかく、cくらいはやっぱ理解してた方が早道な気はする。

768:デフォルトの名無しさん
21/05/25 01:36:21.07 5vUI50kp.net
以下のような関数を作ったんですがmatchが多くてどうしようか考えていました
fn foo(x: Option<u32>, y: Option<&str>) { //実際はOptionが5個とか
let x = match x {
Some(x) => x,
None => return,
};
let y = match y {
Some(y) => y,
None => return,
};
println!("{} {}", x, y);
}
考えついたのが、次のようにする方法なのですが、
fn foo(x: Option<u32>, y: Option<&str>) -> Option<()> {
let x = x?;
let y = y?;
println!("{} {}", x, y);
Some(())
}
記載の省略のためだけに返値の型をOption<()>にして最後にSome(())つけるのがすごく気持ち悪いんですが、
返値なしのままどうにかする方法はないでしょうか

769:デフォルトの名無しさん
21/05/25 02:11:48.11 QcInQ0e9.net
if_chain使って
if_chain!{
if let Some(x) = x;
...
then { println!("{}", x); } }

770:デフォルトの名無しさん
21/05/25 02:16:51.35 Ygc8ZzR1.net
>>753
fooの型変えられないなら、戻り値Optionはクロージャないしローカル関数に留めるといいと思う
URLリンク(play.rust-lang.org)

771:デフォルトの名無しさん
21/05/25 03:00:10.05 nrKC74iS.net
Ok(())はよく使うがSome(())はないな
普通にif-letでパターンマッチするのでよくない?
if let (Some(x), Some(y)) = (x, y) {
println!("{} {}", x, y);
}

772:デフォルトの名無しさん
21/05/25 05:18:39.47 gz717nup.net
loggerを引数で渡すためには
ロギングを行うクラスFooがどこかしら(コンストラクタか個々のメソッドで)loggerを受け取る引数を持たねばならない
これ、ロギングみたいな裏方の仕事がFooのインターフェース仕様に影響しているということで、
抽象度が下がってるやんけ;;;
引き換えに得られるメリットは、Fooのインスタンスごとにloggerを切り替えられるというおおよそ現実的にありがたみが無い機能だけ

773:デフォルトの名無しさん
21/05/25 06:08:48.35 FYPKUk3M.net
>>756
それをmachでやるのがよくない?

774:デフォルトの名無しさん
21/05/25 06:23:40.79 gz717nup.net
つか機能の分離と記述の分離はトレードオフがある
1+1=2の形式的証明がどんだけの糞みたいな分量のに成り得るかを見たらワカル
どっかの抽象度をつきつめれば別のところにしわ寄せが逝く
それで良いジャマイカ人間の言語だもの、

775:デフォルトの名無しさん
21/05/25 09:01:56.56 5vUI50kp.net
皆様ありがとうございます
どうもSomeをある程度書くのは避けられない感じですね

776:デフォルトの名無しさん
21/05/25 10:09:28.07 4oEEOZjA.net
まさかstatic変数使ってるなんて、logクレートには失望したわ

777:デフォルトの名無しさん
21/05/25 10:33:41.89 bGIV0Xp5.net
>>757
ログを裏方と考えるのも偏ってるし、ログ切り替えはデバッグ目的で普通にあるわ。
別にグローバルにするという選択が間違いとも思わんがこういう決めつけ野郎は邪魔だな。

778:デフォルトの名無しさん
21/05/25 10:59:01.14 /nQyXsn+.net
サーバ側だとログを取るのが基本だし取り方も変えたくなるからlogger渡しは結構やるな
CLIとかなら雑にstaticでいいけど

779:デフォルトの名無しさん
21/05/25 13:12:03.88 CssgwvqL.net
>>761
stdも使えないじゃん

780:デフォルトの名無しさん
21/05/25 18:48:30.58 4oEEOZjA.net
>>764
なんで?

781:デフォルトの名無しさん
21/05/25 19:25:41.69 CssgwvqL.net
>>765
URLリンク(github.com)

782:デフォルトの名無しさん
21/05/25 19:39:28.48 4oEEOZjA.net
>>766
えー
これからは write() システムコールでプリントするわ

783:デフォルトの名無しさん
21/05/25 21:02:03.28 p1A5R6d8.net
stdが嫌ならcoreを使え

784:デフォルトの名無しさん
21/05/25 22:59:34.15 gz717nup.net
>>762
近代的なログシステムならタグが使えるから
記録時に分っける理由がさらさらない
だいたい並列な事象を並列なまま記録したのでは時系列の解析ができないし、
そもそも>>762がいくら「ログは裏方じゃない」と叫んだところで基準が無い
アプリケーションロジックを汚してまでか?!という議論はいつまでもつきまとう

785:デフォルトの名無しさん
21/05/26 00:00:47.75 S2nFrW0F.net
別に仕事で使ったことないならそういえばいいと思うよ。悪いことしてるわけじゃないんだから。

786:デフォルトの名無しさん
21/05/26 00:04:47.15 PLorGv/T.net
そういやLog4JでいうMDCみたいなやつはあるのかしら?

787:デフォルトの名無しさん
21/05/26 00:07:56.89 rwxZHBm1.net
お前らslog
>>760
ただのzipやん。
URLリンク(play.rust-lang.org)

788:デフォルトの名無しさん
21/05/26 08:19:13.92 AN5OxrIl.net
まあloggingオブジェクトを複数作る仕事なんなら仕方が無いな

789:デフォルトの名無しさん
21/05/26 08:29:19.07 vJAmL6Qi.net
slog見たけど、クソややこしいな

790:デフォルトの名無しさん
21/05/28 09:51:25.19 jQHjx/Sg.net
シンタックスで判断しづらいもので性的分析するって、そのうち破綻しそうだな。

791:デフォルトの名無しさん
21/05/28 09:54:11.42 S8Iz9SRl.net
エロい分析か

792:デフォルトの名無しさん
21/05/28 10:45:17.68 EKMYAKDR.net
やらC

793:デフォルトの名無しさん
21/05/29 20:28:41.06 sKXDX7XX.net
JPEG-XLのリファレンス実装作ってるチームがRustで再実装も始めてて驚いた
URLリンク(github.com)
FirefoxにJPEG-XL対応を入れるかどうか議論するチケットで
今更大量のunsafeなC++コードを入れるのはちょっと……みたいな反応をされてた事と関係あるのかもしれない

794:デフォルトの名無しさん
21/05/30 15:56:56.42 HupJBx7X.net
URLリンク(4e6.github.io)
URLリンク(www.openhub.net)
Firefox、かなりの割合でC++のコード入ってるけどこれでも減らそうとしてるのか

795:デフォルトの名無しさん
21/05/30 16:00:13.57 P46Jh5T1.net
もう9.5%も行ってるのか
と言うかfirefoxからrustは始まったから当然か

796:デフォルトの名無しさん
21/05/30 16:15:38.02 ds+xAsBi.net
でも、大量の有名なWebサービスが一時的にRubyで書いていたのに、
しばらくすると他言語に書き直した歴史がある。
アメリカ人はなぜか言語を書き直すのが好きなようだ。
Rustで書いてもまた別言語に直すかも知れない。
なお、Googleドライブなどの各社のストレージサービスを統一的なAPIで制御できる
ライブラリも何故かGoで書かれている。
メンドクサイ。

797:デフォルトの名無しさん
21/05/30 17:11:41.17 cF4puvJq.net
>>781
遅い方から速い方へ書き直すのよ
特にスクリプト言語からC++/Rustへ書き換えるとサーバー数を1/10にできるケースもあり規模によっては経費激減ね
GoもGCあるから場合によっては他へ書き換えられる対象になりうるかも
Rustが他へ書き換えられる可能性がもしあるとしたら今はまだ存在しない新たに出現する言語へ

798:デフォルトの名無しさん
21/05/31 00:35:54.04 7s+MSAY0.net
なんでClippy大先生がcargoでインストールできるクレートから外されるの?

799:デフォルトの名無しさん
21/05/31 01:50:13.82 u1BqTaEs.net
rustupでインストールできるからでは
rustcとバージョン合わせないといけないから他のcrateと同じ扱いはしづらいのでは

800:デフォルトの名無しさん
21/05/31 08:44:19.92 etoumxTf.net
Ruby on Rails の時価総額は、
Shopify が15兆円、
民泊のAirbnb が、大手ホテル3社の合計以上の10兆円、
Github が8千億円
これぐらい巨大でも、Rails で出来る。
時価総額が千億円以上になったら、Go, Elixir を考えてもよい
食べチョクは売上50億円らしいけど、
若い文系女が1人で起業したような会社は、Rails で十分
売上が千億円を超えたら、考えてもよい

801:はちみつ餃子
21/05/31 15:24:48.93 hqkxpUd6.net
ウェブシステム全体の実行コストはネットワークや IO にボトルネックが有るので
システム構成やらなんやらで工夫するのがまずやることで、
言語の速度が少しばかり速いのはそんなに効いてこないよ。
という話もよく聞くんだけど、実際のところどんなもんやろね?

802:デフォルトの名無しさん
21/05/31 16:31:16.04 slsuSMsk.net
そりゃそうね
でも実行速度だけで選ぶわけじゃないからね

803:デフォルトの名無しさん
21/05/31 19:40:04.29 mBUAbPrR.net
今まではハードにぶん投げても大丈夫だったのが
ハードの進化の鈍化でソフト側が工夫しないと駄目になりつつあるって話ってマジ?

804:デフォルトの名無しさん
21/05/31 21:37:16.00 M7WLmn8V.net
いやそこでソフトで頑張ってもほぼダメだろ。。アーキテクチャで分散化考えないとって話じゃないかね

805:はちみつ餃子
21/06/01 01:05:37.48 69wa4c/Y.net
>>788
ハードウェアがもう伸びないってことではなくて、 CPU の速度が単純に速くなるという方向ではもう伸びにくいって話。
電子の大きさは変えられないから際限なく微細化できるわけではない。
わかりやすい例で言えば今のパソコンはマルチコアが当たり前になってて複数の CPU を載せる方向で性能を上げているが、
マルチコアを想定してないソフトをマルチコアパソコンで動かしてもひとつのコアしか使わないので性能が出ない。
高価な GPU を乗せても GPU を使うプログラムになってなきゃ意味がない。
ハードウェアの総合的な性能を上げるには色んな工夫があり得て、それらを実現すると同時に
ソフトウェアは「ハードウェアに合わせて」「ハードウェアの性能を引き出すように」工夫がいる。
これは今までにも普通にやってたことで、今になって必要になったわけじゃない。
小さな変化の積み重ねなこともあれば大きな変革を迫られることもあるってだけ。

806:デフォルトの名無しさん
21/06/01 07:44:50.11 DWqq5xbS.net
後藤弘茂のWeekly海外ニュース■ Prescott/Tejasは5GHz台、65nmのNehalemは10GHz以上に
URLリンク(pc.watch.impress.co.jp)
当時は景気よかったっすね。すぐ後に爆熱で日和ったけど
そして今、300Wの時代・・・
てか並列化によるスループットの向上はこのあたりから検討されるようになっていた気が

807:デフォルトの名無しさん
21/06/01 19:29:09.48 a3oi+h5L.net
>>784 でも何故かcargoだけはcargo install cargo --forceとすれば自分でコンパイルしたもので上書きができる謎

808:デフォルトの名無しさん
21/06/04 15:33:30.83 kJqxa98Z.net
よくわからないんだけどこれ、C言語のポインタ渡しが諸悪の根源で、そこを断ちさえすればC言語も所有権概念を取り入れられるの?

809:デフォルトの名無しさん
21/06/04 15:42:09.57 03MQShFS.net
>>793
C言語において、ポインタは大発明で、それによってリンクリストやツリー構造
が簡単に実装に出来る様になった、大変重要なもの。
C言語からポインタを絶てば何も残らない。

810:デフォルトの名無しさん
21/06/04 15:48:43.92 1/rRer4v.net
Javaキチガイはポインタ使いこなせない
日本のMSの社員がソレだった
破棄忘れてやんのw

811:デフォルトの名無しさん
21/06/04 15:55:06.60 JfDLBnT5.net
RAIIなしで良いなら多少の拡張で所有権の概念取り込めるかも知れないけど
絶対スマートポインタ欲しくなるしCの表現力だと使いづらい物になりそうな気がする

812:デフォルトの名無しさん
21/06/04 16:03:03.62 KjgiO9jk.net
>>794
>C言語において、ポインタは大発明
笑笑

813:デフォルトの名無しさん
21/06/04 17:24:32.39 Lunsq3fv.net
Cと比較するのは流石に乱暴だろ
C++と比較するべき
で、C++でできなくてRustでできるものというのは現状存在しない (今後その差も埋まっていくだろうが)
C++とRustの違いはひとえにスタンスの違いだよ
自由奔放なC++か良いコードにカッチリ導いてくれるRustか
意欲的に新機能取り込んで発展してるのは両者とも同じ

814:デフォルトの名無しさん
21/06/04 17:31:18.17 AGlHvwIO.net
>>798
>C++でできなくてRustでできるものというのは現状存在しない
こういう比べ方はアホ
チューリング完全ならなんでもできるじゃんみたいなことになる
できるできないの線引きが恣意的

815:デフォルトの名無しさん
21/06/04 17:54:18.33 7u0nl5aT.net
>>799
バカアホじゃなくて、Rustでしかできないものの例を挙げてください
そうすれば一単語で反論の余地なく終わるんで

816:デフォルトの名無しさん
21/06/04 17:58:01.49 UUHTR6cx.net
C++は奇麗に描くと言うのが出来ない

817:デフォルトの名無しさん
21/06/04 18:03:48.84 Pwqe5Yy7.net
>>800
C++でできなくてRustでできるもの
から
Rustでしかできないもの
への華麗な転身www

818:デフォルトの名無しさん
21/06/04 18:16:57.72 hlBLv8XD.net
C++はMemory Safetyをコンパイル時に担保できない
Rustを使う一番の動機

819:デフォルトの名無しさん
21/06/04 18:53:59.58 nHzCWsfU.net
>>802 C++とRustの比較において「C++でできなくてRustでできるもの」と「Rustでしかできないもの」は同じ意味だから転身でもなんでもない
URLリンク(i.imgur.com)

820:デフォルトの名無しさん
21/06/04 19:11:16.95 s8nyhwnD.net
Cloudflareの画像処理責任者を名乗る人も、これ以上C++ライブラリを増やすのはイヤでござると発言してるな

821:デフォルトの名無しさん
21/06/04 19:23:30.63 4pNcWBF2.net
>>804
C++とRust以外にも言語はたくさんある

822:デフォルトの名無しさん
21/06/04 19:29:23.53 nsxzushh.net
Rustのモジュール(ファイル分割)の仕組みはC++のヘッダー+ソース(+名前空間)より扱いやすいと思う
C++は分割コンパイルが主流だった歴史的経緯があるから仕方ないけど事前の宣言が必要なのは地味に面倒くさい

823:デフォルトの名無しさん
21/06/04 19:43:15.38 nHzCWsfU.net
>>806 この会話の流れではC++とRustの比較をしていたから

824:デフォルトの名無しさん
21/06/04 19:58:10.76 4pNcWBF2.net
ライフタイムによるメモリ管理はRustオンリーだろ

825:デフォルトの名無しさん
21/06/04 20:12:39.71 s8nyhwnD.net
マイナーな環境だとC++プログラムは様々な理由でコンパイルが通らないことがよくある
Rustは基本的にはそういう事ないし、コンパイラ実装が一つしかないというのも利点に働く

826:デフォルトの名無しさん
21/06/04 20:40:42.82 CpdoeubZ.net
C++との比較を議論したいなら専用の隔離スレでどうぞ

827:デフォルトの名無しさん
21/06/04 22:02:04.46 ivUqItUs.net
>>793は言語レベルのサポートがほしいんだろ?
substructural type systemがないと無理。
>>809
MLkit,RTSJ,cyclone,ATS/ATS2。学術的にはとっくの昔に廃れたぞ。

828:デフォルトの名無しさん
21/06/04 22:04:58.58 yXI/MC9G.net
WinUIとRustやってる人いる?
同じネイティブのMFCとかと比べて、やっぱり生産性は高いんかな

829:デフォルトの名無しさん
21/06/04 22:26:52.09 I1RVdPKQ.net
メモリ関連って原因不明のバグ引き起こしやすいしトータルな目で見れば上がるんじゃないだろうか

830:デフォルトの名無しさん
21/06/04 23:27:29.47 JfDLBnT5.net
>>810
gcc-rsとかのプロジェクト始まってるけどそれはネガティブなことなのかね

831:デフォルトの名無しさん
21/06/05 06:04:54.16 uC9Joojh.net
>>810
そういえば、C++のSTLは、VSでは動くが、BSD系のLLVM用のlibc++は、
なかなか上手く動いてくれない。理由は、libc++が、その
基礎関数として滅多に使われないようなMB・WC文字変換関連や、
NAN、INFINITYなどのfloat/double調査関数など、昔ながらのC環境では
定義されて無いような(新しい)Cの関数を大量に必要としているため。
その意味で、WasmのWASIなんかは、たとえCUIだけであっても
世界共通の関数群を整備してくれるのだとしたら有りがたいかも知れない。
でもWASI自体の移植作業が必要になるから一緒か。

832:デフォルトの名無しさん
21/06/05 06:14:19.54 uC9Joojh.net
>>816
昔からCには文字種判別として、isalphaやisdigitなどがあるが、
libc++は、isalpha_l()などのlocale指定タイプを必要としていたりして
locale関連がやたらと複雑。また、その
isalpha_lなどを基礎にしてくれているならまだしも、isalpha_lが内部で使っている
文字種テーブル unsigned short _ctype[256]; も仮定していたりする。
このテーブルは、_CONTROL、_SPACE、_DIGIT、_ALPHAなどの
BIT定数とandを取ってBITが立っているかどうかで文字種を判定する。
それは環境依存なのだが、高速化のためか何故かそれを必要としている。
(C++のライブラリが欲しいのに、そのライブラリが、なぜか一般的ではない
大量のC関数や特殊なデータテーブルを必要としてしまっている。)
だから移植が進まない。
plain Cは、標準ライブラリが多くの環境である程度の互換性を持って整備されているが、
結果的にC++のSTLはなかなかそうではないようだ。

833:デフォルトの名無しさん
21/06/05 06:17:47.83 uC9Joojh.net
C++ライブラリがisalpha_lなどを用いてしまったら、速度面でC#やJavaなど
に比べた優位性が少なくなってしまうからかも知れない。
つまり高速化のためにやたらと移植性の低い方法を使っているから、
スムーズに移植が進まない。
それか単純にC++ライブラリを作る人の技術力が低いからだろうか?

834:デフォルトの名無しさん
21/06/05 06:20:08.28 uC9Joojh.net
>>801
すまんが、Rustはもっと出来ない気がする。

835:デフォルトの名無しさん
21/06/05 09:02:04.60 KdS0cXcP.net
RustスレでC++の話題が出てしまうのはもはや運命なのか

836:デフォルトの名無しさん
21/06/05 09:20:03.77 3ILRB2eH.net
>>820
そりゃ better C++言語として作られたんだから当たり前でしょう

837:デフォルトの名無しさん
21/06/05 09:32:35.80 4o2YwJP1.net
ライフラインの書き方がとにかく見づらい

838:デフォルトの名無しさん
21/06/05 09:45:07.09 3ILRB2eH.net
これヤバくない?
どうやって防いだらいいんだろう?
URLリンク(github.com)

839:デフォルトの名無しさん
21/06/05 09:46:58.65 4o2YwJP1.net
localhostに送るだけならいくないん?

840:デフォルトの名無しさん
21/06/05 09:53:33.78 3ILRB2eH.net
え、マジで言ってるの?

841:デフォルトの名無しさん
21/06/05 10:04:24.16 4o2YwJP1.net
あおられてもダメな理由がわかりまそん
びっくりはするけど

842:デフォルトの名無しさん
21/06/05 11:21:46.59 KdS0cXcP.net
悪意を持ったコードをビルドしない

843:デフォルトの名無しさん
21/06/05 12:04:01.08 bvIfRQLF.net
c++との比較はガファムが結論出してくれたからもう話すことなどない

844:デフォルトの名無しさん
21/06/05 12:08:54.56 85+uBK5B.net
何をみて結論だと思ってんだか。短絡的だな。

845:デフォルトの名無しさん
21/06/05 12:26:06.61 YTe/4gPS.net
依存するクレートの依存するクレートの依存するクレートの以下無限ループまで全部チェックしないと駄目ー?(´・ω・`)

846:デフォルトの名無しさん
21/06/05 12:58:14.11 KdS0cXcP.net
チェックするツールとか誰か作っていそうだね
バイナリを診断するよりは簡単だろうし

847:デフォルトの名無しさん
21/06/05 13:57:18.40 IMH8ctkE.net
>>826
念のためマジレスすると公開した人がいつでもlocalhostを〇国サーバーのアドレスに書き換えられるってこと
githubのオープンソースでそれやったらすぐにばれそうだけど
ビルド時ならともかくエディタ起動直後のコード解析でデータが送信されるのは盲点やね

848:デフォルトの名無しさん
21/06/05 14:01:47.49 f5S9H8yw.net
ビルドしなくてもファイルを開いたらコードが実行されるというのはよろしくないね
ファイルやネットワークならアクセスされる側でブロック可能だけど
メモリはサンドボックス内のみで展開・実行されるようにしないとブロックできない気がする
サンドボックス化できなければ
cargo auditやcargo crevを通して怪しいcrateだけ自分でチェックするとかかな

849:デフォルトの名無しさん
21/06/05 14:06:05.14 KdS0cXcP.net
vscodeやlspヤバイな

850:デフォルトの名無しさん
21/06/05 14:13:31.58 8YO6sBC6.net
解決方: vscode を使わない

851:デフォルトの名無しさん
21/06/05 14:27:34.92 4o2YwJP1.net
まったくだ

852:デフォルトの名無しさん
21/06/05 14:48:29.61 uV7DnhUL.net
見た感じVSCode以外でもマクロが実行されるようなことをすると駄目っぽいが

853:デフォルトの名無しさん
21/06/05 14:52:35.33 4o2YwJP1.net
MS自身がやりたい放題だからメンタルも伝播するだろうな

854:デフォルトの名無しさん
21/06/05 15:03:58.08 85+uBK5B.net
>>835
それrust使わなけりゃでも良くね?

855:デフォルトの名無しさん
21/06/05 15:09:20.73 uV7DnhUL.net
そもそもこれ本質はライブラリの信頼性って問題だと思うんだよな
Rustだけじゃなく他の言語にも言える話

856:デフォルトの名無しさん
21/06/05 15:22:11.73 85+uBK5B.net
お得意の静的チェックでなんとかしたら?

857:デフォルトの名無しさん
21/06/05 15:29:47.09 KdS0cXcP.net
中国のipアドレスは


858:全部ブロックしておくのが正解だな



859:デフォルトの名無しさん
21/06/05 15:51:07.65 3ILRB2eH.net
IntelliJ/CLion でもproc_macro実行されちゃうの?

860:デフォルトの名無しさん
21/06/05 16:11:56.77 Fi/fLauk.net
LSPはクソ
vscodeありきの思想

861:デフォルトの名無しさん
21/06/05 16:32:08.49 6EguRj/L.net
LSPってHSPの親戚ですか?

862:デフォルトの名無しさん
21/06/05 16:43:48.73 KdS0cXcP.net
long short play モードだよ

863:はちみつ餃子
21/06/05 16:56:48.31 G0EcoOQC.net
>>844
LSP はエディタとの連携を前提として明文化された規格にしたってだけで、
処理系にコンパイルさせた結果をエディタの表示に反映させるというのは昔から有ったんだぞ。

864:デフォルトの名無しさん
21/06/05 17:38:04.49 ftrSVS/I.net
>>847
> 処理系にコンパイルさせた結果をエディタの表示に反映させるというのは昔から有ったんだぞ。
いやそりゃそうだろ
その説明じゃ flycheck 等と差がない

865:はちみつ餃子
21/06/05 18:00:21.39 G0EcoOQC.net
>>848
Rust のコードをビルドしないときでもエディタ経由で勝手にビルドする
(そのときに悪意のあるコードも走らせられるかもしれない)
という文脈の中で >>844 の発言があったので、
それは LSP が作られる前から同じような危険性はあっただろうという反論を私はしたつもり。
LSP のせいじゃなくてコンパイル時に出来ることが多い Rust のせいって話。

866:デフォルトの名無しさん
21/06/05 18:09:21.84 Fi/fLauk.net
はあ話になんね
こいつといいQZといい「何か物申したい」という気持ちだけで生きてるから常に空回ってんだよな

867:デフォルトの名無しさん
21/06/05 18:52:13.97 ZTm581Ue.net
proc-macroがwasm化されてサンドボックスで動くようになればマシになるのかね
そもそも怪しいコードが依存関係に混入しちゃう時点でcargo runなりtestなりしたらなにされるかわからん訳でproc-macroの件自体にどれくらいの影響度があるのかは分からんが

868:デフォルトの名無しさん
21/06/05 19:44:30.63 uV7DnhUL.net
crossでx86_64-unknown-linux-gnuをtargetにクロスコンパイルしたらいいんじゃないか?
あれ確かDockerで動いてたはず

869:デフォルトの名無しさん
21/06/05 19:45:33.78 uV7DnhUL.net
自分のPC向けにクロスコンパイル用ツールを使ってコンパイルするのがクロスコンパイルというかどうかは知らんけど

870:デフォルトの名無しさん
21/06/06 08:03:37.51 W7azs2BY.net
>>823
特定のエディターの問題ではなく
特定のプログラミング言語の問題ではなく
自分が意図していない自動マクロ(プラグイン)を使えば自分が意図していない動作をするだけの話
大昔からあらゆる環境で起きていること

871:デフォルトの名無しさん
21/06/06 09:39:11.50 3IIg9tuB.net
コーディング時、ビルド時になんでもやらせようって発想が間違ってんだよ。

872:デフォルトの名無しさん
21/06/06 10:03:07.57 mKFU6ep6.net
マクロはやっぱ悪よな、無いと辛みが増すから仕方ないじゃなくて無くても何とか出来る仕様にすべき

873:デフォルトの名無しさん
21/06/06 10:25:40.41 W7azs2BY.net
今回の>>823の問題に限っていえば
そもそもLSPを使う人のためのプラグインなのだからLSPのlocalhost:8080に接続に行くことは何の問題もないよね
問題としているのはSSHの秘密鍵をそこへ自動送付していること
LSPそこまで詳しくないのだけどそれはどうしても必要なことなの?

874:デフォルトの名無しさん
21/06/06 10:32:40.20 MV541K/D.net
LSPは、この騒動(?)と関係なくクソ

875:デフォルトの名無しさん
21/06/06 10:33:23.63 MV541K/D.net
快適なエディタと快適なIDEの区別がつかなくなったバカどもがゴリ押しで流行らせてる

876:デフォルトの名無しさん
21/06/06 11:08:51.30 n+sQSuEO.net
>>857
>LSPのlocalhost:8080に接続に行くことは何の問題もないよね
localhost:8080はLanguage Serverじゃないよ

877:デフォルトの名無しさん
21/06/06 11:16:22.93 W7azs2BY.net
>>860
それはすまなんだ
じゃあ何が問題になってるのかな

878:デフォルトの名無しさん
21/06/06 12:13:20.98 xB3z9vbi.net
>>861
LSPをセットアップした状態だと「VSCodeを起動しただけで」自動ビルドが走ってしまって悪意あるprocedural macroが実行されてしまうこと
手動でビルドすれば同じことになるのでそこは問題の本質じゃなくね?とは思う

879:デフォルトの名無しさん
21/06/06 12:48:13.98 V+UU2WI7.net
LSPというよりrust-analyzerやrls、cargo/rustcの問題と言った方が正確かな

880:デフォルトの名無しさん
21/06/06 14:24:19.60 W7azs2BY.net
では>>823で指摘されている問題点「自分のSSHの秘密鍵が勝手に読み出されて送信される」はどの部分がその動作を要求しているの?
本当に必要な動作なの?

881:デフォルトの名無しさん
21/06/06 14:29:37.79 LOfpkHxA.net
手続きマクロの展開なのでcargo checkでも起こり得る
言ってしまえばRustの言語仕様そのもの
解決策は>>851の言うようにサンドボックス化するみたいな方法しかなさそう

882:デフォルトの名無しさん
21/06/06 14:35:16.58 n+sQSuEO.net
>>861
macroをexpandする時に
macroの定義に書かれてる任意のコードを実行することができるって話
任意のコードの例としてSSHのキーをサーバーに送信する例が書かれてて
試す人に無害なように送信先サーバーはlocalhostになってるだけ
コード見たほうが早いかも
make_answer!がexpandされるときにread_ssh_keyが実行される
URLリンク(github.com)

883:デフォルトの名無しさん
21/06/06 14:40:17.63 3IIg9tuB.net
このコード例はめちゃくちゃわかりやすい。問題は置いといてgoodなコードだ。

884:デフォルトの名無しさん
21/06/06 15:22:49.77 fghVy2Pw.net
crate-typeがproc-macroのときはffiを禁止して使用可能なextern crateを
安全性が保証されたものだけに制限するのがRustっぽいかな
proc-macro専用のstdが必要になるけどno_stdと同じ感覚でmacro_safe属性をつければいい

885:デフォルトの名無しさん
21/06/06 16:06:34.14 xR3kS6+v.net
そもそも普通はproc-macroなんか必要ないだろ
特殊用途以外では一律禁止してよいのでは?

886:デフォルトの名無しさん
21/06/06 16:20:07.52 V+UU2WI7.net
derive が使えなくなるのは結構困る

887:デフォルトの名無しさん
21/06/06 23:45:39.31 xQoKsnFB.net
>>843
マクロ展開すればどんな環境でもできるよ。
>>823はmulti-root workspaceの構成間違ってるから
IntelliJRustだとマクロ展開されないけど。
>>869
custom derive全部禁止だから当然thiserrorもserdeもdelegation系も禁止な。
ボイラープレート全部手書きしろよ。

888:デフォルトの名無しさん
21/06/07 06:02:10.08 k/PpyTws.net
頭悪い奴らばかりで議論にならぬ
趣旨と仕組みはreadme書いてあるのに。。

889:デフォルトの名無しさん
21/06/07 13:37:53.63 BQ22AOvo.net
今勉強中なんだけど、Rustと合わせた時のgdbの使い方を教えてくれんかな
行指定でb main.rs:10みたいにブレイクポイントを指定するのってどうやるの?
>No source file named main.rs.
みたいに言われてしまって、どうやって行指定でブレイクポイントを設定するのかよくわからん
ソースのあるディレクトリがわからないのかと思って指定しても結果は変わらず・・・・
あと、ソースを表示しながらステップ実行したりってどうやるの?

890:デフォルトの名無しさん
21/06/07 13:52:39.17 C46sPHOc.net
vscodeでcodelldb使おう

891:デフォルトの名無しさん
21/06/07 14:06:08.51 BQ22AOvo.net
ああ、デフォルトで-gつかないのか・・・・
でもlldbが主流っぽいし、それ使うかな

892:デフォルトの名無しさん
21/06/07 14:34:12.65 VGLcnon2.net
macのgdbだと今はまともに動かんぞ。

893:デフォルトの名無しさん
21/06/07 14:45:09.07 OvPzoGrd.net
M1になって


894:macの開発環境死んだ



895:デフォルトの名無しさん
21/06/07 15:56:52.66 D0MWfzjy.net
iPhone開発でMac必須になったことで強気に出すぎたか。
Macは滅びると思っていたらx86系になってからなぜかしぶとく生き残ってきたけど、
もうだめかもな。

896:デフォルトの名無しさん
21/06/07 16:08:45.47 BQ22AOvo.net
lldbを試しに使ってみてるんだけどさ
これって、ステップ実行するたびに自動で毎回「memory read --size 8 --format x $sp」をやってもらうことってできないの?
gdb-pedaを使っていたときはスタックの中身が自動で見れてたんだけど、なんか似たようなのないのかな?

897:デフォルトの名無しさん
21/06/07 20:20:51.05 RuDnuZ5b.net
>>878
iphoneアプリ開発のためにmacが生き残ってるのは面白いと思ってる
元マカーだからほんと言うと寂しいし悲しいんだけど

898:デフォルトの名無しさん
21/06/07 21:33:04.68 l0c3FfTp.net
rustのlinux kernel対応の話ってどうなってゆの?なんだかずいぶんと作業が難航しているうだけど
それってrustのどのあたりの言語機能が悪さをしているのかね

899:デフォルトの名無しさん
21/06/07 21:34:18.90 l0c3FfTp.net
難航しているよう

900:デフォルトの名無しさん
21/06/07 23:22:49.68 TtFMbk6H.net
>>873
シンボリックデバッガはまだ有名どころのフロントエンドが
ステップ実行できる程度しか対応してないから、アブソリュートデバッガ併用になる。
シンボルでブレークポイント設定できないとか実行に問題あるとかまだ普通。
msvcツールチェインは特に。
>>877
ねねっち死んだなって思ってたけど現実もか。
>>878
世界シェア15%切ったし頼みの日本シェアすら50%切ったからもう
iPhone専用開発機も持たないだろう。
rustだとandroidほどバインディングが充実してないから開発やりずらいだろうし。

901:デフォルトの名無しさん
21/06/08 13:22:42.82 NxfO+lQp.net
>>881 大部分がRustで書かれたRedox OSっていうOSがあるからRustでカーネルやドライバが書けないというわけではないと思う
恐らくCで書かれた過去の遺産との連携で手こずってそう

902:デフォルトの名無しさん
21/06/08 16:32:33.53 XAjWEwKV.net
>>883
日本でのiPhoneのシェアは、どんどん減っているはずなのに、ググると、
増えているデータになっていて、増えているのに50%を切っているというわけの
わからなさ。
記憶では、70%くらいまでいって、下がった結果、49%くらいになったはずなのに。

903:デフォルトの名無しさん
21/06/08 17:33:30.46 0HakL4nG.net
>>884
具体的には?

904:デフォルトの名無しさん
21/06/08 20:08:36.67 3DogIzpc.net
いやメーリスみにいけよ。。。

905:デフォルトの名無しさん
21/06/08 20:44:34.79 iJOvL9Jr.net
実際の開発状況はこっち見たほうがいいかな
URLリンク(github.com)
ざっと見た感じ難航してるっていうより単にやること多いってだけに見えるけど

906:デフォルトの名無しさん
21/06/08 22:36:25.74 onwST/YK.net
>>885
出荷ベースだと二三年前に65%超えてて2020Q4に約49%だからそれであってるよ。
>>888
OS作ってる人らって開発環境はなんだろ?
intellijrustはデバッガ使えるIDEとツールチェインが限られるし
matklad.rust-analyzerは環境変数の扱いがめちゃくちゃで
環境変数見に行くとまともに動かないし。issueばっか増える。
お前らどうしてる?ツールチェインと環境は?

907:デフォルトの名無しさん
21/06/08 23:20:14.38 x/Of6Ttl.net
rustでOSてもう何回目の話だよ。。過去レスでもあされや

908:デフォルトの名無しさん
21/06/09 00:55:43.69 KzEq3JVg.net
>>889
cargoが-Zbuil


909:d-std対応したからビルドに特別なツールは使ってない rust-analyzerもno_std対応してて特に支障なく動いている (補完候補にstdが出てくることはたまにあるけど) 環境変数がおかしいというのはどういうこと? build.rsが環境変数に依存している? それとも env!() を使っている?



910:デフォルトの名無しさん
21/06/09 01:43:04.13 oLsQ5RHC.net
>>889
URLリンク(simchange.jp)
ところが、↑のサイトも含めていくつかのサイトでは、日本ではiOSがシェアを
伸ばしていると書いてある。
2020/06 : Android:50.2%, iOS:49.7%
2019/06 : Android:60.5%, iOS:38.8%
2018/06 : Android:60.8%, iOS:37.6%

911:デフォルトの名無しさん
21/06/09 08:17:02.86 k36yeEDS.net
元々の話はMacがM1になって開発環境として終わったという流れから
残るMacの存在価値としてiOSアプリ開発環境がありそのシェアがまだ高い(?)という話だと思うけど
多くのサービスがスマホ専用アプリを作らずにウェブアプリ(PWA)化してる状況ではシェアだけの問題ではないと思うな

912:デフォルトの名無しさん
21/06/09 11:25:52.58 oLsQ5RHC.net
>>893
最後の行、flutterなどのマルチプラットフォームライブラリの登場によって、
ウェブアプリからnativeアプリ型への流れが出来ているという説もあるが。

913:デフォルトの名無しさん
21/06/09 11:27:44.28 oLsQ5RHC.net
>>894
後継のSwiftが出来たのでObjective-Cの人気低下はともかく、そのSwiftも人気低下。
その理由が、AndroidとiOSでソースを共通化したい人が増えたからだそうだ。
SwiftはApple専用だから。

914:デフォルトの名無しさん
21/06/09 12:30:04.46 eGaY+zic.net
lldbでpedaみたいな表示するのってこれが良いかな
便利そうだけど保守されてんのかなこれ?誰かしらん?
URLリンク(github.com)

915:デフォルトの名無しさん
21/06/10 06:56:29.59 A6ZEEOGF.net
来週ついにRocket v0.5が出るぞ
安定版Rustで動くようになる

916:デフォルトの名無しさん
21/06/10 09:11:05.37 hslWe/Xh.net
RUSTってORM、Dieselとかいうやつしかねえの?
SQLを明記したいのでJavaでいうMybatisみたいなのをさがしているんだけど、中華の変なものしかない。

917:デフォルトの名無しさん
21/06/10 11:19:36.78 vqPt4/VO.net
Sqlx

918:デフォルトの名無しさん
21/06/11 04:26:27.44 tVW+Rdfi.net
>>897
待ってた!

919:デフォルトの名無しさん
21/06/11 05:32:32.03 O0YtPkZC.net
サーバー側はネイティブコードでクライアント側がwebassemblyで動くとかあるの?

920:デフォルトの名無しさん
21/06/11 15:51:17.70 ThZwz5mq.net
VSCodeアップデートしたら急にDo you trust the authors of the files in this folderとか聞かれてどうしたのかと思ったけど>>823みたいな奴の対策かね

921:デフォルトの名無しさん
21/06/11 23:04:56.42 gr7UCFZ6.net
>>898
Dieselに人が集中してる。
クレートのall-time downloadは200万超だし、
リポジトリのコミットは約4000、closed issueは約1200。

922:デフォルトの名無しさん
21/06/11 23:44:59.89 791JEOt2.net
>>898
rust-postgres 直接使えばええやん

923:デフォルトの名無しさん
21/06/12 05:08:22.45 0lbP+PJD.net
wasmはあらゆる環境で使える汎用コンテナとしてすごい将来性あるみたいだね

924:デフォルトの名無しさん
21/06/12 15:34:21.86 jmn9nDiv.net
>>905
目的外利用だし、そういうこと言っている人がいることは知ってるが、実際にそんなに将来性があるとは思えんが。

925:デフォルトの名無しさん
21/06/12 15:35:41.09 jmn9nDiv.net
wasmはもともとウェブにC++を持ち込みたいというEmscriptenの情熱から
始まったものであって、そんな汎用目的のためではない。

926:デフォルトの名無しさん
21/06/12 15:53:35.18 1HODARj2.net
そのウェブにC++を持ち込むという夢はその後どうなったの?

927:デフォルトの名無しさん
21/06/12 16:29:39.50 wX98kbow.net
ブラウザでDOOMが動いた

928:デフォルトの名無しさん
21/06/12 16:48:34.58 L7rjL3/+.net
zoomみたいなビデオ会議アプリでwasm使ってるってっ聞いた
あとカメラを使った運転免許証認識とか

929:デフォルトの名無しさん
21/06/12 17:34:23.71 6kRi062U.net
当初の目的とかどうでもいいだろ
Linuxだって当初の目的は趣味のおもちゃだぞ
>>907

930:デフォルトの名無しさん
21/06/12 17:38:04.08 4jXDkOdS.net
もしもWebAssemblyとWASIが2008年に存在していたら、Dockerを開発する必要はなかった
ってDocketの開発者が言ってた件だな

931:デフォルトの名無しさん
21/06/12 17:54:20.79 jmn9nDiv.net
>>911
どうもブラウザ外使用を盛んにアピールする人は胡散臭い。

932:デフォルトの名無しさん
21/06/12 18:32:25.93 l5AvwX9O.net
いや、M$の寡占を阻止し正しき未来を創るため立ち上がったとエリックレイモンドが言ってた。

933:デフォルトの名無しさん
21/06/12 20:16:21.66 jmn9nDiv.net
>>914
そいつ人類の中で2番目に嫌いなやつだわ。
一番目はストールマン。

934:デフォルトの名無しさん
21/06/12 20:33:14.57 7X99TIl2.net
>>915
ソフトウェア著作権を否定するあんたと同類だよ。違うのは現行の法律を尊重するかしないかだけ。

935:デフォルトの名無しさん
21/06/12 21:31:34.25 Ap+0oKF5.net
>>912
んなこたない。
2008年にあっても今と扱いは変わらんと思うわ。
結局何らかのコンテナを使うことになる。
OSの件でもそうだが、この界隈は大袈裟にアピールしすぎだわ。

936:デフォルトの名無しさん
21/06/12 21:39:22.31 07O/QVIU.net
>>917
ここでいうコンテナってなんのこと?

937:デフォルトの名無しさん
21/06/12 21:55:04.24 LAH8Z0de.net
Jail、OpenVZ、Solarisコンテナ、LXCみんな早すぎたのだ

938:はちみつ餃子
21/06/13 03:28:54.62 tRZIM+Qs.net
Java (JVM) で駄目だったのはなんで?

939:デフォルトの名無しさん
21/06/13 03:38:03.93 8vbdM5AU.net
>>915
3番目が気になる

940:デフォルトの名無しさん
21/06/13 10:57:47.53 ACaSQ+aI.net
Istioでの使われ方みたいな事例が増えると思う
luaの代替

941:デフォルトの名無しさん
21/06/13 12:14:09.77 CEo6Ln9Y.net
JVM自体がローカルのシステムでグローバルだったからだろ。
低レイヤーをラップするための上位レイヤーのが互換性効かないものになってるとか、よくある話だわ。

942:デフォルトの名無しさん
21/06/13 22:19:56.20 wyOEFD1W.net
>>916
俺は著作権は尊重する。
尊重してないのはFSFの方。

943:デフォルトの名無しさん
21/06/13 22:54:27.20 exUpBE38.net
じゃあOSSを利用する場合はちゃんとライセンスに従わなきゃな。GPLだろうとなんだろうと。

944:デフォルトの名無しさん
21/06/14 01:49:13.38 1vkdQjmk.net
別に俺はGPLは嫌いだから自作プログラムに紛れ込ましたことは無いが、
GPL自体が自ら著作権を放棄してるな。
「COPYLEFT」 の LEFT = 放棄、左。左翼、共産主義。
「COPYRIGHT」の RIGHT = 権利、右。右翼、資本主義。権利=著作権。

945:はちみつ餃子
21/06/14 02:06:08.10 fvxG9/iR.net
GPL は著作権の放棄ではない。
その上で自由な利用を保証するという契約をするの。
著作権を放棄してしまったら自由な利用を強制する根拠を失ってしまう。

946:デフォルトの名無しさん
21/06/14 02:54:46.97 1vkdQjmk.net
アメリカ人はめちゃくちゃで、ライセンスと契約を区別したり訳分からんこと
言って、煙に巻こうとしてるだけ。
GPLは、その名の通り、「ライセンス」といっている。
COPYLEFT と自ら名乗っているし、著作権で無いだろう、あんなもの。

947:はちみつ餃子
21/06/14 02:57:23.52 fvxG9/iR.net
>>928
GPL は著作権ではない。
著作権は作者が持っていて、契約 (の内容) が GPL なの。
なんでそんな簡単なことがわからんのだ。

948:はちみつ餃子
21/06/14 03:06:36.37 fvxG9/iR.net
著作者は作者として強制できる権利。
強制する内容が「自由に利用すること、自由に利用させること」であることが
一般的に作者が求める強制力ではないよねということを茶化して Copyleft と言っているのであって、
強制力の根拠はあくまでも著作権だよ。

949:デフォルトの名無しさん
21/06/14 03:16:22.76 Gk7ZUjpc.net
あれが、本気で自由と思ってるのか。
頭大丈夫か?
自由じゃないからこそ、言葉だけ自由と名乗ってるに決まってるじゃん。
ようは、不自由なことをやることも、自由といや自由、みたいに皮肉みたいな感じで
言ってるんだろ、彼らは。
それか頭がおかしいかだ。

950:デフォルトの名無しさん
21/06/14 03:41:09.12 lTAIWsCW.net
ハァ~~~~~また固定ハンドルが物申したさベースでデタラメ言ってる

まずライセンスと契約は別物ね
ライセンスと契約を混同するのはよくある誤謬
GPLにおいても、これは契約かライセンスかといった議論は昔からあるから勝手に勉強しとけ
勉強したところでここで発表はするなよ邪魔だから

> 自由な利用を強制する
これも、なんでそうなるのだってくらい愚かしい解釈
「自由」の定義をストールマンとか江添の言ってるそれに委ね過ぎて支離滅裂になってるって気付け?
辞書通りの「自由」ならライセンスも警察も裁判所も要らないから
GPL のポイントは二次的な生産物も GPL であれと要請してるところ
「だからそれを私は自由と呼んでいるんです!」と叫ぶのかな?
日本語勉強しろバァ~~~カ

あと著作権著作権って簡単に言うがこれは国にもよる
たんじゅんなアタマのつくりしてるね

俺なら恥ずかし過ぎて固定ハンドル外してるわ
今に始まったことではないが

951:デフォルトの名無しさん
21/06/14 03:45:31.62 A3PFUDNY.net
>>932
この程度のバカは見飽きたのでもうちょっと
変わったこと言ってくれ

952:デフォルトの名無しさん
21/06/14 04:23:31.00 lTAIWsCW.net
即レスで
恥ずかし過ぎて固定ハンドルを外して
何ら具体的な反論をしないことで完全服従の意を表明しつつ
一方でタダで敗北アクメを晒すわけにはいかないので「バカ。陳腐」という当たり障りのない罵倒も置いておく完璧なレス
のように思えてしまうが、なんの用事もないのにわざわざ安価付けてきたコイツが当人じゃない可能性ってナンボほどあるんだろうか

953:はちみつ餃子
21/06/14 04:35:49.09 fvxG9/iR.net
>>932
GPL ほどの広く使われているライセンス形態がその程度の理屈の建付けがちゃんとできてないわけないだろ。
詭弁と言えば詭弁なのかもしれんが、お前ごときに突き崩せるほどの安普請ではないわ。
GPL1 のリリース日の時点ではアメリカがベルヌ条約に加盟して無かったから
それでも国際的に通用するように方式主義にも配慮されておる。
中国に対してさえ (実態はわからんが少なくとも法的な理屈の上では) 通用する GPL が「国による」とかいう雑な
理屈で回避できると思ってるのか?

954:デフォルトの名無しさん
21/06/14 05:16:55.41 lTAIWsCW.net
>>935
GPL の建付け (?) の話なんか全くしてないし、回避 (??) する話なんかもっとしてないんだが、一体何に猛反論してるつもりなのだキミは
関係ない話ベラベラし始めることこそ典型的な詭弁だよ(この場合目的が全くわからんが)

>>932に書いた内容といえば
・ライセンスと契約を同じもののように語ってるのが典型的な誤謬であると指摘して
・「自由」という語の使い方が自由過ぎることを糾弾して
・諸々の根拠を著作権に委ねるならその運用は国による要素を多分に含むと示唆している
というこれだけで、これらには返す言葉もないというのが本音でしょう

> GPL1 のリリース日の時点では
これはお前が今突然言い出したことなので元々の話とは全く関係ないが、GPL が当時と同じように理解されて運用されてるのと思ってるならやっぱ単純なアタマのつくりしてるね

955:デフォルトの名無しさん
21/06/14 05:19:57.80 LaJq0QyW.net
GPLスレでやれ、バカ

956:はちみつ餃子
21/06/14 05:30:15.75 fvxG9/iR.net
>>936
ライセンスは契約だし、 GPL が言うところの「自由」は定義されている。
その「自由」が辞書的な意味とは異なるかもしれんが、 (この場合の) 意味は明白で解釈の幅はない。
「自由」という言葉をあてるのがクソというのがあなたの主張?
著作権の運用が国ごとに違うのは仕方がないが、
GPL の考え方に法的根拠を与えるには他に方法がないのも事実だ。
クソみたいに著作権意識のない国では通用しないから GPL は無力だということが言いたいの?

957:デフォルトの名無しさん
21/06/14 05:45:15.60 EO405yGC.net
スレチ。。。

958:デフォルトの名無しさん
21/06/14 09:29:08.36 57P3hnrE.net
>>922
Goにホストされるって敗北感
そもそもホストはGC言語なのにわざわざそれを封じて縛りプレイしてるんだからアホくせえわ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch