Google&MS「バグの70%はC/C++。Rustにする」 (812レス)
1-

1
(2): 2021/05/02(日)17:14 AAS
グーグルやMSが「Rust」言語でOS開発、背景に国家による諜報活動の影

 1970年代初めにUNIXの開発にC言語が採用されて以来、OS開発はCやその後継であるC++の独壇場だった。グーグルはこれまでもAndroidの開発にJavaやKotlinを採用していたが、カーネルやデバイスドライバーなどOSの下位レイヤーの開発にはC/C++しか使ってこなかった。RustはC/C++と同様に下位レイヤーの開発に使用する。

 グーグルは数千万行にも及ぶ既存のC/C++のコードを書き換えるのは不可能としており、新規のコードの開発にのみRustを適用する方針だ。それでもOS開発の常識が数十年ぶりに変わるのだけは間違いない。

 RustはWebブラウザー「Firefox」を開発する米Mozilla Foundation(モジラ財団)が開発を主導するプログラミング言語だ。開発が始まったのは2006年で、安定版であるバージョン1がリリースされたのも2015年のことだ。まだ新しいプログラミング言語をグーグルやマイクロソフトがOS開発に採用する理由は、OSのセキュリティー強化にある。

 Rustは、プログラムに必要なメモリーの確保や解放に関連するバグが生じない「メモリー安全」が保証されたプログラミング言語である。それに対してこれまでのOS開発に使われてきたC/C++は「大規模な開発においてメモリー安全なコードを記述することがほぼ不可能」(マイクロソフトのブログ「We need a safer systems programming language」より)なのだという。

脆弱性の70%がメモリー管理バグに起因

 グーグルによればAndroidに存在した深刻なセキュリティー脆弱性の70%近くがメモリー安全に関するバグに起因するという。同様にマイクロソフトも、同社製品に存在したセキュリティー脆弱性の70%がメモリー安全に関するバグに起因すると述べている。C/C++を使う限りセキュリティー脆弱性を根絶するのは不可能と考えて、Rustを採用するに至ったというわけだ。

外部リンク:xtech.nikkei.com
686: 2024/05/17(金)08:42 AAS
現在急発展したAIは論理的な思考をしていないので必ず安全なC++プログラムを作らせるのは無理がある
一方でRustはコンパイルが通れば必ず安全なのでAIにコンパイルが通るまで試行錯誤させて安全なプログラムを作らせることが可能
したがって今後のプログラミング言語はRust一択になる見込み
687
(1): 2024/05/21(火)16:27 AAS
しかし危険なことができない言語は汎用性が低いという矛盾
688: 2024/05/21(火)17:28 AAS
組み込みからウェブフロントエンドまで
やっても汎用性が低いのか
689: 2024/07/03(水)00:27 AAS
>>687
RustはC言語でできることはできるよ
そしてC言語と同じ速さで実行できるよ
690: 2024/07/31(水)20:51 AAS
世界的なWindowsブルースクリーンの件はnullポインタによるアクセスと判明
これもC++ではなくRustを使っていれば防げた可能性
691: 2024/08/06(火)15:04 AAS
LLVMに対応してないアーキテクチャはどうするの?
あとはJVMもPythonインタプリタもCPPで動いてるからシームレスに動かせてる部分はあるんでないの?
692: 2024/08/08(木)18:10 AAS
Rustを使っていればってのは机上の空論でしかないよなぁ
リプレースだってコストかかるわけだし
693: 2024/08/09(金)07:23 AAS
ネットに勝手にアクセスさせる
694: 2024/08/09(金)20:02 AAS
いま>>1をみると、

まるでWindows のバグは C/C++ が悪いって言ってるようだw
695
(1): 2024/08/17(土)01:00 AAS
脱C言語へ!
米国国防総省のDARPA、CからRustへのコード変換を自動化する「TRACTOR」プログラムを開始
外部リンク[html]:atmarkit.itmedia.co.jp
696: 2024/08/17(土)07:52 AAS
Rust面白い
えぐい使ってる
697: 2024/08/17(土)10:17 AAS
rustは中途半端なIT土方をフィルタリングできるから
なおさらよい
698: 2024/08/17(土)17:31 AAS
>>695
unsafe{}
699: 2024/08/17(土)17:32 AAS
kurusimidesinu
700: 2024/08/19(月)13:14 AAS
kurusii
701: 2024/10/17(木)08:09 AAS
2chスレ:prog
702
(1): 2024/12/14(土)18:10 AAS
で、C++作った禿はRustをどう評価してるん? まさか、禿は死んだ、とかないじゃろな?
何か聖書に出てきそう。

禿げは死んだ。しかし、C++は残るであろう。
703: 2024/12/15(日)14:13 AAS
C/C++は着実に消えていく

C/C++からRustへ:Googleが示すファームウェア進化の道筋
外部リンク:xenospectrum.com
704: 2024/12/15(日)18:45 AAS
Rustが最終的な勝ち組になるなんて信じられない
705: 2024/12/15(日)21:36 AAS
もう一歩進歩があるはずなが
706: 2024/12/16(月)05:55 AAS
英語・英語じゃなくてよ、日本語プログラミングできるようにしろよ。
関連
なでしこ
707: 2024/12/19(木)20:20 AAS
rustくらいすぐにできるやろ
でも世の中はなんちゃってエンジニアばかりで
当たり前なことが出来ないのばかりだからなぁ
708: 02/20(木)05:50 AAS
マイクロソフトさん
709: 03/22(土)10:59 AAS
>>702
最近はメモリ安全をC++にも導入しないと未来はないっていってるので高く評価してそう
JavaとかGoみたいなGC言語しかないころはスマートポインタ使えよばーか程度だったと思うし
710: 03/22(土)22:32 AAS
C++自体にどんな機能を追加してもRustと同レベルに安全にするのは不可能だと結論は出ていて
CarbonなどC++からちょっと変える言語を作るしかないけどどれも決定打に欠けていて
巨大で一枚岩のシステムを除けば部分的なシステム更新の再構築時にRust化していけばよい流れになってる
711
(1): 03/23(日)03:47 AAS
そうなるとこんどは、RustにC++が合わせていくことになる
そうすると、自然にC++にも、Rustが実績を積んだ安全策が流入してくる

今回もそれでいい C++はそうやって、外圧で進化してきた
712: 03/23(日)06:38 AAS
久しぶりRust触ってるけどなんか面白いかもしれん
優秀すぎる言語はあまり可愛いとは思わないのだが
しばらくRust書いてみるか
713: 03/23(日)10:11 AAS
>>711
C++は言語仕様を変えない限り見捨てられる
例えば未定義動作を無くさないとな
714
(1): 03/24(月)10:57 AAS
未定義は未定義なので、処理系が「その未定義、設定ONにしてくれたら全部潰します」ってしてくれてもいいのよ
いいはずなのよ

未定義になりかけたら落とす、確実に落とす、でもだいぶ違うとおもう
しばらくはDoSの嵐になるだろうけど、リスクの潜在が放置されるよりいい
715: 03/24(月)22:12 AAS
>>714
いいえ
プログラミング言語に未定義動作があってはいけません
そこがバクの元となりセキュリティ脆弱性にも繋がります
人間が未定義動作を踏まないよう自己責任で注意しながら進まなければいけないC/C++を排除していこうという動きになっている要因の一つでもあります
716: 03/24(月)22:12 AAS
「Google Chrome」のフォント処理がC/C++言語からRust言語に
「FreeType」からの移行でメモリ安全性を改善、脆弱性が出にくいライブラリに
外部リンク[html]:forest.watch.impress.co.jp
717: 03/24(月)22:34 AAS
出にくいってなあ
718
(1): 03/24(月)22:37 AAS
メモリ管理手動にしたせいでRustかなり性能悪いと聞いた
719: 03/25(火)01:13 AAS
ん?メモリ管理が手動なのはC/C++だろ?
Rustはメモリ管理はコンパイラ任せ
720
(1): 03/25(火)01:50 AAS
ガベージコレクション無しにしたけど状況に対応しきれなくて復活
JavaのStringみたいなメモリ共有の仕組みを非推奨にしたせいでコピー&デストラクタ走りまくり
721: 03/25(火)11:04 AAS
>>718
>>720
そんなガセ話を書いても誰も騙される人はいないぞ

RustはC/C++と同等の性能を出せるため
ネットインフラも次々とRust製へ置き換わっている
クラウドやCDNなどもRust製が増えている
具体的にAWSやCloudflareなどでもRust製へ置き換え
722: 03/25(火)12:19 AAS
C++と同程度の性能をうたってる言語のベンチマークでなんかRustだけ遅かった
723: 03/25(火)13:28 AAS
現実はこれ>>652
Rustで書いたら性能アップした
5chも使っているCloudflare
724: 03/25(火)15:28 AAS
>>652
これすごいけどさ
NGINX自体もC言語で書かれて高速軽量がウリだったのに、それよりも性能向上しつつCPUとメモリ消費を3分の1って何をしたんって思う
オープンソース化されたら世の中のNGINXを置き換えるかも
725: 03/25(火)15:37 AAS
新機能を追加したが機能を削減してないとは言ってない
726: 03/25(火)15:47 AAS
CDN世界シェアトップのCloudflareが現実にWebトラフィックをそのRust製で捌いているのだから実用性が十二分にある
727: 03/25(火)16:26 AAS
unsafe {}
728: 03/26(水)02:53 AAS
後発のRustがデキるのは当たり前
自分も、仕事で使えと言われたら使う

でも自分用にはC++がいいんだなあ
Rustの知見はよC++に来い
729: 03/26(水)10:34 AAS
C++は良いところが全くないからなあ
C++は未定義動作という地雷原を歩く
C++はムーブが手動だからムーブにコンストラクタに後始末など無駄な記述が多くなる
730: 03/26(水)10:40 AAS
まあ、C++が迷走し出した辺りから使わなくなったなぁw
731: 03/26(水)17:25 AAS
確かに
732: 03/26(水)22:14 AAS
何かしらの理由でC++にこだわり続けないといけないようなシステムは、おそらくコンパイラの更新も禁じられてるのでいくらメモリ安全をもたらす新機能がC++に増えても使えない
C++にこだわらないでいいようなプロジェクトは、何年後に形になるかわからないProfilesフレームワークの仕様決定を待つ暇があったらRustを使えばいい
733: 03/31(月)15:20 AAS
Git 2.49リリース — 各種の高速化とRustコードの導入、Git 3.0を見据えた重要なリリース
外部リンク:techfeed.io

4. Rust コードの導入
最近はさまざまなプロジェクトで安全性や高パフォーマンスを得るために Rust が採用されているが、Git もその流れに乗り、 Git 本体の一部コードが Rust で実装され始めた。
いきなり大部分が Rust になるわけではないが、今後の拡張や改善でセキュリティや安定性が向上する可能性がある。
普段使っている人にはあまり見えない変更だが、内部の品質向上の一環として要注目だ。
734: 03/31(月)20:04 AAS
unsafe{}
735
(1): 03/31(月)20:08 AAS
オブジェクト指向は命にかかわるものに使えない
Rustもオブジェクト指向でないといいつつJUMP命令先が可変なので
命にかかわるシステムには使えない
医療機器や自動車がRustになる日などとても想像できない
736: 03/31(月)21:11 AAS
>>735
ほなCに命賭けるんすか?
737: 03/31(月)23:42 AAS
みんなそうしているはずだ
738
(1): 03/31(月)23:49 AAS
コンパイルイメージがくそでかくて何仕込まれてるかバイナリ見てもわからないとか
怖くてマシンに載せることすらためらわれる
739: 04/01(火)12:21 AAS
Cに命を賭けてきた人々の死体の山の上で俺たちは生きている
740: 04/01(火)12:46 AAS
>>738
Rustはコンパイルによる生成コードのサイズを小さくできることがメリット
そのためサイズが小さいと有利なWebAssemblyなどでもRustを用いるのが主流
逆に実行速度優先のために単相化できるのもRustのメリットでこの場合は生成コードのサイズはもちろん大きくなる
741: 04/01(火)14:56 AAS
Delphiも実行速度は速かったけどバイナリサイズもでかかったから似たようなもんだ
742
(1): 04/01(火)17:42 AAS
Cは早いし小さい
マネージド言語に比べたらめちゃくちゃ小さい
743: 04/01(火)18:49 AAS
マネージドコードと比べるな
744: 04/01(火)19:50 AAS
>>742
Rustも同じ
RustはCと同じことが全てできる
Rustはインラインアセンブラも対応している
745: 04/01(火)19:53 AAS
そこは張り合うとこじゃない
C++派だが、C++もへたくそがこねくったソースからは、スパゲッティみたいなバイナリが吐かれるからな
それはおなじ
746
(1): 04/01(火)20:55 AAS
前から言われていることだが
所有権の確認などツールを使えばいいのではないか
747: 04/01(火)21:48 AAS
現実世界にそんなツールが無いことを除けば素晴らしいアイデアだね
748
(2): 04/01(火)22:12 AAS
メモリ安全を確保するツールなど山のようにあるはずだ
749: 04/01(火)22:16 AAS
なんかなんとなくRustに置き換わっていっているが
Rustにして成果が出たというようなレポートを見ない
750: 04/01(火)22:26 AAS
>>748
そんなツールは無い
世界中で長年色々な試みが行われてきたが
C/C++の言語仕様が悪いと結論が出ている
そのためIT各社がRustへと舵を切った
751: 04/01(火)23:58 AAS
>>746
>>748
おすすめのツールおせーて
752
(1): 04/02(水)00:03 AAS
ちょっとぐぐったらいっぱいでてくる
Valgrindが一番いっぱいでてきた
753: 04/02(水)00:11 AAS
>>752
> 最もよく利用されている標準のツールはMemcheckである。Memcheckはほぼすべての命令に特別な計測用のコードを挿入し、「正当性」(初期化が行われるまでは、割り当て済みでないメモリはすべて無効であるか、未定義である)があり、「アドレス可能」(メモリアドレスが割り当て済みで、解放されていないメモリブロックを指している)であるかという情報が、それぞれVビットおよびAビットに格納されているかを追跡する。
………
> こうした機能への代償として性能が低下する。Memcheckの元で動作するプログラムはValgrindなしで動作する場合と比べて5倍から20倍遅く、より多くのメモリを使用する(メモリ確保ごとにかなりのメモリを追加で消費する)。

うーん…
Rust使ったほうがよくない?😅
754: 04/02(水)00:15 AAS
そりゃあ実行時に検出するよりはコンパイル時に弾くほうがいいだろうな
755: 04/02(水)00:20 AAS
監視・検出処理を挿入してランタイムにメモリリークチェックします
vs
メモリリークのおそれがあるコードをコンパイルエラーで弾きます

ファイッ
756: 04/02(水)00:23 AAS
偉そうに理想論ぶちあげてるくせに、そういうツールの実務での利用経験すらねえのかよ
757: 04/02(水)00:55 AAS
静的解析機能もついてたはずだ
758: 04/02(水)11:27 AAS
あっちを立てればこっちが立たずみたいなことが結構あってあんまり意味ないのよねその手のツール…
759: 04/02(水)11:57 AAS
コンパイルが通ればメモリ安全性だけでなくデータ競合すらないことが保証されるRustへIT各社移行中
760
(1): 04/02(水)13:48 AAS
データ競合のバグなんて生涯でまだあったことないんだが
761: 04/02(水)15:07 AAS
>>760
CPUマルチコアを生かすプログラミングしたことすらない初心者か?
762: 04/02(水)16:26 AAS
ないな
763: 04/02(水)18:40 AAS
いままでC言語でなにして遊んでたんだ
764: 04/02(水)19:03 AAS
スレッド関係ないときまで余計なこと考えんといかんじゃないか
765
(1): 04/02(水)19:18 AAS
可読性ゼロのC++テンプレートメタ地獄よりはマシですわw
766
(1): 04/03(木)17:20 AAS
ライブラリ作成は数学の得意そうな人とかに任せますわw > テンプレメタ地獄

Rustだったら安全と投資家も認めた
はよその知見C++に来い まったく同じにやればいいんだ
767
(1): 04/03(木)17:44 AAS
>>766
C/C++の言語仕様があまりにも酷いためRustのような安全性を導入できないことが判明している
解決策としてはC/C++とは互換性がない制約と拡張を行なうしか手がない
特にC/C++の未定義動作は全て無くす必要があり根本的に別の言語となってしまう
そのため今後の進む道は『C/C++改造版』ではなくRustが選ばれた
768: 04/03(木)17:58 AAS
Rustもマクロあるんよね
769: 04/03(木)18:42 AAS
Rustのマクロは強力すぎる分、意識高い系に触らせると
C++のテンプレートメタパズルよりもっと酷いものがシステムに持ち込まれると思う
770: 04/03(木)19:05 AAS
マクロは関係ない

ジェネリック関数を記述する時に
Rustは関数そのままに型名をジェネリックパラメーターに置き換えるだけでよい
C/C++はテンプレートを使わないと書けない
771
(1): 04/03(木)21:41 AAS
C/C++はすごいよ
コンピューターのかなり低いところまで好きなようにいじれてしまう
人間には過ぎたシロモノだったんだ
772: 04/03(木)22:10 AAS
>>771
このスレでそんなアホなこと言うか?
Cで出来ることは全てRustでも出来る
RustはCと同様にインラインアセンブラ機能まであるため万能
773: 04/04(金)12:20 AAS
いまやインラインアセンブラがあるだけでは優位とはいえんな

インラインアセンブラが、unsafe なしで書けてこそRust
774: 04/04(金)12:21 AAS
>>767
> C/C++の言語仕様があまりにも酷いためRustのような安全性を導入できないことが判明している

ソースplz
775: 04/05(土)11:39 AAS
>>765
上層のクラス含め何でもテンプレートで書く独りよがりいるけど止めて欲しいよな
あくまで型違いで共用するコードの冗長を減らす目的に限定
なおかつ他者は使い方だけ把握して、コード内を見ず使えるように実装すべきだな
776
(1): 04/05(土)11:45 AAS
Rustはなあ、人を用意できんだろ?特に日本じゃ

c++だってstlテンプレラムダmoveとかは見ずに使えて
デザインパターンで設計できてc++17くらいまでさえOKな人はなかなか捕まらない
777
(1): 04/05(土)11:47 AAS
>>776
俺を呼べ😎
778: 04/05(土)11:51 AAS
>>777
ここの人は当然リーダーをやるべきでしょう
それでrustかc++23か、とにかくやりたい言語で人を集めないと
779: 04/05(土)12:48 AAS
C++ジジイばっかり集まるぞ
780: 04/05(土)17:52 AAS
実際自称C++出来る人って、9割ぐらいは未だにC++11未満の知識しかないんじゃない?
ある程度いける口はRustに行っちゃってそうだし
781: 04/06(日)07:25 AAS
23になってなんか文法劇的に変わったのある?
782
(1): 04/07(月)10:18 AAS
全然昔からあるが、ラムダぜんぜん使いこなせない
783: 04/07(月)12:22 AAS
ラムダ式は設計書に書くメソッド一覧にどう書けばいいのやら
784: 04/07(月)12:50 AAS
新規関数追加申請書にちゃんと印鑑を押して提出してから書かないとダメだぞ
785: 04/07(月)15:13 AAS
関数名が分からないw
786: 04/07(月)22:02 AAS
>>782
はじめつらかったけど、気がついたら当たり前みたいに使うようになった
787: 04/07(月)23:07 AAS
キャプチャとか
788: 04/08(火)19:03 AAS
C++のアルゴリズムって、JavaのStreamやRustのIteratorに比べてなんか直感的じゃなくて使いにくいよな
789: 04/09(水)22:12 AAS
Rustを蛇蝎のごとく嫌ってる人間が相当数いるよな
790
(1): 04/10(木)09:42 AAS
一部のRust教徒キライ
俺の かあちゃんであるC++を侮辱するんだ

Rustに恨みはない
それどころか、知見を学ばないとって当然思ってる
仕事でつかえっていわれたらつかうよ なんとかなるはず
791: 04/10(木)13:10 AAS
まともにC++使える人間なら、実際Rustは使えると思う
最近は流行ってるせいか、人生でスクリプトしか触ってないようなイケイケのWeb屋も手を出してるみたいだけど
そいつらのほうが苦しむだろうな
792
(1): 04/10(木)21:42 AAS
文字列ひとつ戻り値で返すのに七転八倒
793: 04/10(木)21:45 AAS
>>792
Rustをつかえば安全で簡単だよ
794: 04/11(金)08:14 AAS
>>790
お前のかあちゃんは立派だったけどそろそろ年金生活の歳だからな
795: 04/12(土)09:20 AAS
まだごりごり畑耕してるぞw 最近は孫の面倒見て大忙し
796: 04/20(日)02:49 AAS
rustはあまりaiは学習していない印象
797: 04/20(日)17:55 AAS
Rustのようにスレッドセーフが保証される型があってAtomic型を使えばマルチスレッドでもロックフリーで高速にすることも可能な言語
PythonのようにGIL(グローバルインタプリタロック)があってマルチスレッドでも十分に性能が出ない言語
プロと素人くらいの差があって驚いた
798: 04/21(月)09:46 AAS
こりん星から来たまんこりんです
799
(2): 05/02(金)18:14 AAS
外部リンク[pdf]:www.c-nexco.co.jp
Rust使ってたら避けれたの?
800: 05/02(金)19:45 AAS
>>799
まあ
大量のレコードを移動する事無く再利用してたけど、書き込むサイズを間違えて後ろのデータに上書きしちゃった、てへ
って事だから
Rustだとしても回避出来ないかな
801: 05/02(金)20:36 AAS
>>799
別領域へ書き込んでるから、Rustなら必ず回避できていて、今回の問題は避けられた
Rustは領域を最終的にスライスで抽象化し、それは内部的には始点アドレスと長さのペアになる
そしてRustでその領域を超えた書き込みは絶対に起きず、安全が保証される
802: 05/02(金)21:17 AAS
ストレージ容量の不足かと思ってたけど意図しないアドレスへのデータ書き込みが原因だったのか
803: 05/02(金)21:41 AAS
障害時の対応いろいろ考えてて大変だなと思った
バグみたいな障害起こったらどうせだめなんだから止めたらいいじゃんって思うんだが
804: 05/02(金)22:17 AAS
Rustはスライスが始点だけでなくサイズも伴ってペアで管理されるため、こういった問題も防げるね。
805: 05/02(金)23:10 AAS
後ろのレコードにはみ出して上書いちゃうって
どんな作りしたらそうなるんだよ
806: 05/04(日)12:25 AAS
生ポインタの操作とかやらない言語だとわけわかんないだろうけど
そのわけわかんないのをボンクラだけじゃなく、世界最高峰レベルでもC/C++だと普通にやっちゃうのが現実なんだ
807: 05/05(月)00:31 AAS
領域破壊は原因ではなく設計ミスの結果に見える

記事からは
そもそも削除機能がなかったように読める
テストで検出できなかったのも変だ
スケジュールの都合とかでどっかで抜け落ちて忘れてたんだろうが
こんなことでは国に危ないことは何もさせられないではないか
808: 05/05(月)00:35 AAS
でも最低限チェックしてれば壊れずにすんだのか
809
(1): 06/04(水)19:00 AAS
ブラウン大学がドキュメント「C++ to Rust Phrasebook」を発表
外部リンク:techfeed.io
810: 06/04(水)22:50 AAS
Rust面白い
811: 06/05(木)23:59 AAS
いいね

>>809
C++でおなじみのイディオムや設計パターンを、Rust流にどのように書き換えるかを体系的に示したリファレンスである。
各章は具体的なコード例と、それに伴う設計上のトレードオフについての解説で構成される。
「C++ならこう書くがRustでは?」と行き詰まった場面で索引的に参照する使い方も想定されている。
812: 08/14(木)08:59 AAS
【結婚難】違反SEへの制裁【孤独死】

☆時間外労働違反者を退治しろ!☆
★偽装委託多重派遣を撲滅しろ!★

金稼ぎ妨害!
共働き妨害!

時間外労働違反
  ↓
偽装委託多重派遣
  ↓
低技術
   ↓
低収入
   ↓
結婚難
   ↓
孤独死

反社会な孤独死の現場
画像リンク[jpg]:i.imgur.com
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.022s