公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
公式ドキュメント
https://www.rust-lang.org/learn
Web上の実行環境
https://play.rust-lang.org
※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/
※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust
※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/
※次スレは原則>>980が立てること
前スレ
Rust part26
https://mevius.5ch.net/test/read.cgi/tech/1726838318/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
探検
Rust part27
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2024/12/02(月) 22:32:50.31ID:D+1pIyvG194デフォルトの名無しさん
2025/01/11(土) 16:20:18.17ID:Vz6os9Zc ところがMozillaに資金援助してるのが
独禁法違反ともめてるわけだ
独禁法違反ともめてるわけだ
195デフォルトの名無しさん
2025/01/12(日) 23:53:09.91ID:DJe+xzuK ChromeもMozillaも各々Rust化へ向かってるなら
今後はここでもう揉めなくて済むな
今後はここでもう揉めなくて済むな
196デフォルトの名無しさん
2025/01/13(月) 05:20:11.26ID:i8wWMTup197デフォルトの名無しさん
2025/01/13(月) 13:52:02.59ID:g4/CTboD >>188
あなたは頭が不自由なのですね判ります
あなたは頭が不自由なのですね判ります
198デフォルトの名無しさん
2025/01/13(月) 16:13:11.82ID://H6HHHW Rust 1.84.0でprovenance関係が安定化されてるね
199デフォルトの名無しさん
2025/01/18(土) 10:00:11.55ID:7Jaib8zo Rustで描かれてるMozillaがめっちゃ不安定なんすけど
200デフォルトの名無しさん
2025/01/18(土) 10:07:56.33ID:CvcZ6tuy >>199
Mozillaのメモリ管理や中核部分はC++で書かれている
Mozillaのメモリ管理や中核部分はC++で書かれている
201デフォルトの名無しさん
2025/01/19(日) 17:48:38.01ID:IALgBqxE >2016/07/20 まとめ:Firefox 48 には、Rust で書かれたコードが初めて含まれます。以降のバージョンにも Rust での実装が予定されている部分があります。
10年掛けてまだ置き換わってないってどういう事なの
10年掛けてまだ置き換わってないってどういう事なの
202デフォルトの名無しさん
2025/01/19(日) 18:43:58.99ID:9UIKz8U/ 現場を動かすほどの言語じゃなかったってこと
いずれ忘れ去られていくだろうねw
必死で宣伝するやつはしばらく残るだろうけど
いずれ忘れ去られていくだろうねw
必死で宣伝するやつはしばらく残るだろうけど
203デフォルトの名無しさん
2025/01/19(日) 18:56:23.31ID:9gpOiSYw204デフォルトの名無しさん
2025/01/19(日) 21:30:19.41ID:w17+kMts >>201
単純に考えてその時点で約20年積み上がってからね
単純に考えてその時点で約20年積み上がってからね
205デフォルトの名無しさん
2025/01/19(日) 21:49:11.92ID:9gpOiSYw firefoxシェアほとんど無くなって自立収入ではやっていけなくて
独占禁止法を逃れるためのGoogleからの資金で開発やってるから
基本部分は変えずに独自機能の強化の方に力を入れてるんじゃないかな
独占禁止法を逃れるためのGoogleからの資金で開発やってるから
基本部分は変えずに独自機能の強化の方に力を入れてるんじゃないかな
206デフォルトの名無しさん
2025/01/19(日) 21:58:50.96ID:CccJ4y+9 GoogleはRustでXilemやってるね
207デフォルトの名無しさん
2025/01/25(土) 15:49:13.35ID:6/VZHgMn WindowsのOsStringってなんでUTF-16直接保持しないであんな面倒なことやってるんだろ
208デフォルトの名無しさん
2025/01/25(土) 20:21:28.98ID:X7sHiUyB >>207
Rustは時代に応じて文字列をUTF-8で扱っていてString型には必ず正規なUTF-8が入ることが保証される
しかし外の世界は魑魅魍魎でUnicodeですらないものを扱えないといけない
ファイル内容やネット通信でUTF-8以外が定められてるならencoding_rsを使って明示的に変換しながら読み書きする
Rustは時代に応じて文字列をUTF-8で扱っていてString型には必ず正規なUTF-8が入ることが保証される
しかし外の世界は魑魅魍魎でUnicodeですらないものを扱えないといけない
ファイル内容やネット通信でUTF-8以外が定められてるならencoding_rsを使って明示的に変換しながら読み書きする
209デフォルトの名無しさん
2025/01/25(土) 20:22:51.37ID:X7sHiUyB >>207
一方で問題となるのはファイルシステムのパス等だ
OS環境毎に異なるプログラムは書きたくないからコード上はString型つまりUTF-8で統一して扱いたい
パスがUTF-8自体もしくはUTF-8に1対1で対応するUTF-16等ならプログラム中はString型(=UTF-8)で扱えてうれしい
しかしパス内にはUTF-8に変換できないものも含まれている可能性があるためOsString型(=UTF-8+α)として区別して扱う
一方で問題となるのはファイルシステムのパス等だ
OS環境毎に異なるプログラムは書きたくないからコード上はString型つまりUTF-8で統一して扱いたい
パスがUTF-8自体もしくはUTF-8に1対1で対応するUTF-16等ならプログラム中はString型(=UTF-8)で扱えてうれしい
しかしパス内にはUTF-8に変換できないものも含まれている可能性があるためOsString型(=UTF-8+α)として区別して扱う
210デフォルトの名無しさん
2025/01/25(土) 20:30:47.77ID:X7sHiUyB >>207
OsString型は以下の2つを満たす抽象的な型となっている
正規UTF-8のみを含むならばコスト無しでString型に変換できて逆にString型からは常にOsString型にコスト無しで変換できる
各OS環境で扱える全ての表現と1対1に対応できる(特に正規なUnicodeならばUTF-8に対応する)
この1対1が重要でありUnicodeでない場合も読み書きしての同一性が保証される
これらを満たせば内部の構造は自由でありユーザープログラムがその構造に依存することはなく構造を知る必要もない
OsString型は以下の2つを満たす抽象的な型となっている
正規UTF-8のみを含むならばコスト無しでString型に変換できて逆にString型からは常にOsString型にコスト無しで変換できる
各OS環境で扱える全ての表現と1対1に対応できる(特に正規なUnicodeならばUTF-8に対応する)
この1対1が重要でありUnicodeでない場合も読み書きしての同一性が保証される
これらを満たせば内部の構造は自由でありユーザープログラムがその構造に依存することはなく構造を知る必要もない
211デフォルトの名無しさん
2025/01/25(土) 20:42:28.32ID:X7sHiUyB >>207
Windows OSのUTF-16環境であってもユーザープログラムは環境の違いを気にせず統一して扱えるようにString(=UTF-8)とOsString(=UTF-8+α)で扱う
そのため正規なUTF-16はUTF-8に変換して内部で扱うことになる
しかし実際には任意の16bit列がパス等に現れることも可能なのでUTF-16以外の場合も1対1にOsStringに変換できなければならない
この任意の16bit列にはUTF-16のみの場合も含まれるため区別してWTF-16と呼ぶ
つまりWTF-16=UTF-16+αの関係になっている
あとはそれと1対1に対応するWTF-8=UTF-8+αを上手く定義してやれば前述の性質を満たす内部構造が完成する
以上おわり
Windows OSのUTF-16環境であってもユーザープログラムは環境の違いを気にせず統一して扱えるようにString(=UTF-8)とOsString(=UTF-8+α)で扱う
そのため正規なUTF-16はUTF-8に変換して内部で扱うことになる
しかし実際には任意の16bit列がパス等に現れることも可能なのでUTF-16以外の場合も1対1にOsStringに変換できなければならない
この任意の16bit列にはUTF-16のみの場合も含まれるため区別してWTF-16と呼ぶ
つまりWTF-16=UTF-16+αの関係になっている
あとはそれと1対1に対応するWTF-8=UTF-8+αを上手く定義してやれば前述の性質を満たす内部構造が完成する
以上おわり
212デフォルトの名無しさん
2025/01/25(土) 22:15:52.59ID:6/VZHgMn > Windows OSのUTF-16環境であってもユーザープログラムは環境の違いを気にせず統一して扱えるようにString(=UTF-8)とOsString(=UTF-8+α)で扱う
OsStringの内部エンコーディングがWTF-16だと統一的に扱えないと言いたいの?
OsStringの内部エンコーディングがWTF-16だと統一的に扱えないと言いたいの?
213デフォルトの名無しさん
2025/01/25(土) 22:25:37.00ID:6/VZHgMn どうなっているか、ではなく、なぜそうなっているか
214デフォルトの名無しさん
2025/01/25(土) 23:56:53.55ID:I/LFBEOt String <-> OSString <-> System Native String
右の変換コストよりも左の変換コストを下げることを優先してる
そのほうが標準ライブラリ内部で共通の実装や似通った実装を使いやすい
右の変換コストよりも左の変換コストを下げることを優先してる
そのほうが標準ライブラリ内部で共通の実装や似通った実装を使いやすい
215デフォルトの名無しさん
2025/01/26(日) 00:33:00.73ID:pBUmpNYA System Native Stringは直接取り扱わず、OsStringでラップして扱うのが原則なら
ゼロコスト抽象化の観点から言えば右の変換コストをゼロにするべきでは?
左の変換は必ず行うとは限らないのだから
ゼロコスト抽象化の観点から言えば右の変換コストをゼロにするべきでは?
左の変換は必ず行うとは限らないのだから
216デフォルトの名無しさん
2025/01/26(日) 00:38:12.14ID:pBUmpNYA というか、Windows以外なら実際右の変換が実行時チェック無しのゼロコストになってて、左の変換時にチェックしてるんだから、その説明には合わないじゃないか
どこにそんな説明が書いてあるんだ
どこにそんな説明が書いてあるんだ
217デフォルトの名無しさん
2025/01/26(日) 01:11:13.56ID:cI9cwCw6 >System Native Stringは直接取り扱わず、OsStringでラップして扱うのが原則なら
別にそんな原則ない
OsStringで楽できないなら使わなくてもいいよ
>ゼロコスト抽象化の観点から言えば右の変換コストをゼロにするべきでは?
それは君がマルチプラットフォーム対応のライブラリを維持管理する立場で考えず
Windows中心でしか物事を見てないからだよ
>というか、Windows以外なら実際右の変換が実行時チェック無しのゼロコストになってて、左の変換時にチェックしてるんだから
間違って理解してるね
>どこにそんな説明が書いてあるんだ
公式ドキュメント
別にそんな原則ない
OsStringで楽できないなら使わなくてもいいよ
>ゼロコスト抽象化の観点から言えば右の変換コストをゼロにするべきでは?
それは君がマルチプラットフォーム対応のライブラリを維持管理する立場で考えず
Windows中心でしか物事を見てないからだよ
>というか、Windows以外なら実際右の変換が実行時チェック無しのゼロコストになってて、左の変換時にチェックしてるんだから
間違って理解してるね
>どこにそんな説明が書いてあるんだ
公式ドキュメント
218デフォルトの名無しさん
2025/01/26(日) 13:21:14.47ID:pBUmpNYA ? ちょっと調べたらバレるくだらない嘘つくんだったらもう相手してあげないよ
219デフォルトの名無しさん
2025/01/26(日) 18:31:50.46ID:4FlbzXxO 外部と内部でデータの表現形式が異なる場合
外部に従属するソフトウェアを作ってるのでなければ
可能な限り境界に近いところで変換を行うのは当然の選択
外部に従属するソフトウェアを作ってるのでなければ
可能な限り境界に近いところで変換を行うのは当然の選択
220デフォルトの名無しさん
2025/01/26(日) 19:05:06.86ID:o76t42ts 外部とUTF-8変換する微々たるコストが深刻になる用途があるならば標準ライブラリを使わずに独自に実装すればよいだけの話
標準ライブラリはAsRef<OsStr>やAsRef<Path>でそのままstrやStringが使えるように設計されている
File::openなどでのパス指定の引数もこのAsRef<Path>がトレイト境界となっている
as_で扱える設計が望ましい
標準ライブラリはAsRef<OsStr>やAsRef<Path>でそのままstrやStringが使えるように設計されている
File::openなどでのパス指定の引数もこのAsRef<Path>がトレイト境界となっている
as_で扱える設計が望ましい
221デフォルトの名無しさん
2025/01/26(日) 20:54:35.44ID:aE8oqgD4 >>220
後半の話は全然関係ないじゃん
後半の話は全然関係ないじゃん
222デフォルトの名無しさん
2025/01/26(日) 21:10:37.51ID:o76t42ts223デフォルトの名無しさん
2025/01/26(日) 22:23:21.64ID:b7sQng67224デフォルトの名無しさん
2025/01/27(月) 20:17:02.44ID:cd9tX+Hd >>223
それは違うな
str.as_ref()と参照を読み替えるだけでOsStrになることが重要
そのためOsStrとstrのPartialEqも用意されていてコストなく比較可能
UTF-8のみであればOsStrとstrは一致することが本質
それは違うな
str.as_ref()と参照を読み替えるだけでOsStrになることが重要
そのためOsStrとstrのPartialEqも用意されていてコストなく比較可能
UTF-8のみであればOsStrとstrは一致することが本質
225デフォルトの名無しさん
2025/01/27(月) 23:21:32.51ID:4GlaXCk5 >>224
どれも結果であって原因ではないね
>str.as_ref()と参照を読み替えるだけでOsStrになることが重要
なんで重要なの?
>そのためOsStrとstrのPartialEqも用意されていてコストなく比較可能
OsStrとstrをコストなく比較可能にするために
System Native StringをOsStrにするタイミングでコストがかかってる
コストをかけるタイミングだけの違い
OsStrとstrがコストなく比較可能でなければならない必然性は全くない
どれも結果であって原因ではないね
>str.as_ref()と参照を読み替えるだけでOsStrになることが重要
なんで重要なの?
>そのためOsStrとstrのPartialEqも用意されていてコストなく比較可能
OsStrとstrをコストなく比較可能にするために
System Native StringをOsStrにするタイミングでコストがかかってる
コストをかけるタイミングだけの違い
OsStrとstrがコストなく比較可能でなければならない必然性は全くない
226デフォルトの名無しさん
2025/01/28(火) 15:31:40.54ID:Wlj2eClg ファイル操作なんてI/O負荷の方が高いんだからファイルパスの変換コスト気にする必要あるか?
文字コードが違う環境はwindows以外にも色々あるだろうし。
文字コードが違う環境はwindows以外にも色々あるだろうし。
227デフォルトの名無しさん
2025/01/28(火) 16:58:57.81ID:bBapgORx 直交する話を持ち出しても元の議論には一切影響しませんが
228デフォルトの名無しさん
2025/01/28(火) 20:40:46.87ID:BsfM3c6P 一般的な話として
アスキー非互換かつサロゲートペア問題を抱えるUTF-16は欠陥品なので使用は好ましくない
UTF-16や16bitで扱うシステムはユニコードが16bit時代に決めた古いシステムがほとんどで稀に後に無知者が導入したものがある程度
Rustで文字charは正しく32bitとなっており
文字列strはネット上やファイル内でも推奨されアスキー上位互換のUTF-8になっている
さらにOsStrはそのUTF-8の上位互換となり集合的にはOsStr⊃str⊃アスキーとなっている
それさえ満たせば細かい内部実装は各OS毎に異なってよい
欠陥品のUTF-16は何も満たせずそこでも排除で正しい
アスキー非互換かつサロゲートペア問題を抱えるUTF-16は欠陥品なので使用は好ましくない
UTF-16や16bitで扱うシステムはユニコードが16bit時代に決めた古いシステムがほとんどで稀に後に無知者が導入したものがある程度
Rustで文字charは正しく32bitとなっており
文字列strはネット上やファイル内でも推奨されアスキー上位互換のUTF-8になっている
さらにOsStrはそのUTF-8の上位互換となり集合的にはOsStr⊃str⊃アスキーとなっている
それさえ満たせば細かい内部実装は各OS毎に異なってよい
欠陥品のUTF-16は何も満たせずそこでも排除で正しい
229デフォルトの名無しさん
2025/01/28(火) 22:01:50.93ID:GfuGIG8x また意味のない話を始める
さすが複オジ
さすが複オジ
230デフォルトの名無しさん
2025/01/29(水) 00:32:12.48ID:g0VOlyym OsStringの用途はファイルパスに限られたものではないけど主たる用途で性能が問題にならないというのは今の実装方法が選ばれた理由の一部ではある
231デフォルトの名無しさん
2025/01/29(水) 00:58:47.06ID:0dekUNSK UTF16はメモリとパフォーマンスのバランスが良い
オンメモリの内部形式としては悪くないチョイス
オンメモリの内部形式としては悪くないチョイス
232デフォルトの名無しさん
2025/01/29(水) 02:25:08.58ID:j23j/EVS 別に理由が無いなら無いと言えばいいのに、変にこじつけようとするから
233デフォルトの名無しさん
2025/01/29(水) 07:54:01.03ID:hKDzv5Fb スレを荒し続けているUTF16信者は何がしたいの?
本気でUTF16がいいと信じているならそういうcrateを作って布教すればいい
そんな需要はないと思うが
本気でUTF16がいいと信じているならそういうcrateを作って布教すればいい
そんな需要はないと思うが
234デフォルトの名無しさん
2025/01/29(水) 08:41:13.10ID:UbIZehjy235デフォルトの名無しさん
2025/01/29(水) 10:10:29.66ID:j23j/EVS じゃあせめて「その話」がどのissueでされたかでも貼ってくれないかな
236デフォルトの名無しさん
2025/01/29(水) 10:45:41.27ID:kksSyPk2 甘え過ぎw
237デフォルトの名無しさん
2025/01/29(水) 11:52:20.85ID:j23j/EVS ソース無しの妄想だからそう返すしかないか
238デフォルトの名無しさん
2025/01/29(水) 11:54:18.78ID:LdIOcSwO 複オジはともかく質問者もまだ分かってなかったのか
239デフォルトの名無しさん
2025/01/29(水) 21:48:50.26ID:1MMCze3E わかった
少なくともこうして容易に使えることが最低必要条件
fn OsStr::to_str(&self) -> Option<&str>
したがってOsStrはstrを含む拡張集合
それ以外に制約はなく各OS毎に内部実装は自由
少なくともこうして容易に使えることが最低必要条件
fn OsStr::to_str(&self) -> Option<&str>
したがってOsStrはstrを含む拡張集合
それ以外に制約はなく各OS毎に内部実装は自由
240デフォルトの名無しさん
2025/01/29(水) 22:07:32.91ID:mZdkrOxi それがお前の妄想でないという根拠は?
241デフォルトの名無しさん
2025/01/29(水) 23:10:55.15ID:LNP2TJDd impl AsRef<OsStr> for str
242デフォルトの名無しさん
2025/01/29(水) 23:12:05.86ID:1MMCze3E issueで内部が16ビットではそれが機能しないと
243デフォルトの名無しさん
2025/01/29(水) 23:17:05.07ID:1MMCze3E 機能しないと議論されて決定してる
244デフォルトの名無しさん
2025/01/29(水) 23:58:56.14ID:ogxgEV/3 >>234
219と225は同一人物だぞ
219と225は同一人物だぞ
245デフォルトの名無しさん
2025/01/30(木) 00:13:31.97ID:N5Ev4mKi >>232
特定のプラットフォームに依存するコードはなるべく減らしたいという動機は理解できるんだよね?
可能な限り境界に近いところで外部表現と内部表現の変換を行うことがプラットフォーム依存のコードを減らすことに寄与するというのもわかるよね?
あとは外部の表現形式を内部でも維持したとしてもデメリットを上回る十分なメリットがあるかどうか
OsString/OsStrの主たる用途ではそれだけのメリットはないという判断
メリットがある用途ならOsString/OsStr以外を使いましょうということ
特定のプラットフォームに依存するコードはなるべく減らしたいという動機は理解できるんだよね?
可能な限り境界に近いところで外部表現と内部表現の変換を行うことがプラットフォーム依存のコードを減らすことに寄与するというのもわかるよね?
あとは外部の表現形式を内部でも維持したとしてもデメリットを上回る十分なメリットがあるかどうか
OsString/OsStrの主たる用途ではそれだけのメリットはないという判断
メリットがある用途ならOsString/OsStr以外を使いましょうということ
246デフォルトの名無しさん
2025/01/30(木) 00:26:18.93ID:N5Ev4mKi str <-> OsStrの話は差異をうまく隠蔽しにくくシグニチャに影響しうるというのがあるけど仮に影響しなくても境界で変換するのが望ましいという判断は変わらなかったはず
247デフォルトの名無しさん
2025/01/30(木) 00:39:30.16ID:N5Ev4mKi248デフォルトの名無しさん
2025/01/30(木) 20:50:11.01ID:DEHLqPyE >>247
ありがとう、RFCのほう探せばよかったのか
> ## Wide string representation
> Downsides:
> * These conversions have inconsistent performance characteristics between platforms. (Need to allocate on Windows, but not on Unix.)
やっと納得できる理由が出てきた、これはたしかにな…いやでもなあ、直接OsString/OsStrを触るAPIがもっと充実していれば別にString/strとの変換をそこまで気にする必要もないのでは?
一気にString/str相当のAPIを実装するのも手間だし、OsString/OsStrで何かやりたかったらとりあえずString/strと変換してなんとかしてくれ、だからここではプラットフォームごとの差を付けたくない、って方針だったのかね?
とはいえ、考えられる発展としていろいろな文字列型を一般化する抽象化を作れるはずとかちゃんと書いてあるし、まあまあ納得できる経緯説明ではある
ありがとうね
> // and ultimately other functionality typically found on vectors,
> // but CRUCIALLY NOT as_bytes
…とか書いてるけど、今は普通にas_encoded_bytesとして実装しちゃってるし、結局なんだかよく分からんなあ
ありがとう、RFCのほう探せばよかったのか
> ## Wide string representation
> Downsides:
> * These conversions have inconsistent performance characteristics between platforms. (Need to allocate on Windows, but not on Unix.)
やっと納得できる理由が出てきた、これはたしかにな…いやでもなあ、直接OsString/OsStrを触るAPIがもっと充実していれば別にString/strとの変換をそこまで気にする必要もないのでは?
一気にString/str相当のAPIを実装するのも手間だし、OsString/OsStrで何かやりたかったらとりあえずString/strと変換してなんとかしてくれ、だからここではプラットフォームごとの差を付けたくない、って方針だったのかね?
とはいえ、考えられる発展としていろいろな文字列型を一般化する抽象化を作れるはずとかちゃんと書いてあるし、まあまあ納得できる経緯説明ではある
ありがとうね
> // and ultimately other functionality typically found on vectors,
> // but CRUCIALLY NOT as_bytes
…とか書いてるけど、今は普通にas_encoded_bytesとして実装しちゃってるし、結局なんだかよく分からんなあ
249デフォルトの名無しさん
2025/01/30(木) 23:18:13.05ID:tIaEaP36 >>248
>> * These conversions have inconsistent performance characteristics between platforms
こう書かれてるけどパフォーマンスという点では特にDownsideじゃないと思うんだけどね
今の実装でも発生してるし違う環境用のOsStringを1つのプログラムが実行時に混ぜて扱うわけでもないし
問題なのは内部コードにアロケーションタイミングの違いみたいなのが侵食して分岐が増えること
わかりやすい例としてはOsStr::new(“foo”)が&OsStrを返せなくてCow<OsString, OsStr>になるとか
>> * These conversions have inconsistent performance characteristics between platforms
こう書かれてるけどパフォーマンスという点では特にDownsideじゃないと思うんだけどね
今の実装でも発生してるし違う環境用のOsStringを1つのプログラムが実行時に混ぜて扱うわけでもないし
問題なのは内部コードにアロケーションタイミングの違いみたいなのが侵食して分岐が増えること
わかりやすい例としてはOsStr::new(“foo”)が&OsStrを返せなくてCow<OsString, OsStr>になるとか
250デフォルトの名無しさん
2025/01/30(木) 23:38:58.04ID:dm9clnkq そうだね
だから現状の仕様で正しくて
10年間も問題視されていない
許容できない用途が仮にあるならWindows専用のクレートを作ればいい
だから現状の仕様で正しくて
10年間も問題視されていない
許容できない用途が仮にあるならWindows専用のクレートを作ればいい
251デフォルトの名無しさん
2025/01/30(木) 23:54:08.19ID:tIaEaP36 as_encoded_bytesの話はこれ
https://github.com/rust-lang/libs-team/issues/306
https://github.com/rust-lang/libs-team/issues/306
252デフォルトの名無しさん
2025/01/31(金) 02:25:28.04ID:r6oh8F22 > # Alternatives
> * A split_at(&self, pos: usize) -> (&OsStr, &OsStr) style method. This is ostensibly simpler than a slicing API. But:
> ** The OMG-WTF-8 encoding does not support this. It requires some splits to produce overlapping slices, so that left.len() + right.len() > orig.len(). The encoded bytes on one side of pos might form a valid OMG-WTF-8 string while those on the other side do not.
> *** RFC #2295 that proposes this encoding was merged five years ago (but has not been implemented).
何その絵に描いた餅を喉に詰まらせて死ぬみたいな話……
> * A split_at(&self, pos: usize) -> (&OsStr, &OsStr) style method. This is ostensibly simpler than a slicing API. But:
> ** The OMG-WTF-8 encoding does not support this. It requires some splits to produce overlapping slices, so that left.len() + right.len() > orig.len(). The encoded bytes on one side of pos might form a valid OMG-WTF-8 string while those on the other side do not.
> *** RFC #2295 that proposes this encoding was merged five years ago (but has not been implemented).
何その絵に描いた餅を喉に詰まらせて死ぬみたいな話……
253デフォルトの名無しさん
2025/02/03(月) 22:01:34.61ID:QOxyx9oM ほとんどのシステムはUTF-8以外のファイル名があったら無視かエラーでいいからどうでもええわ
254デフォルトの名無しさん
2025/02/06(木) 13:08:01.16ID:s+irydGq255デフォルトの名無しさん
2025/02/07(金) 13:12:05.02ID:2gmcoh6P LinuxカーネルのメンテナがRustコードを混ぜることを「癌」と呼び、開発者間の対立が激化中 - TechFeed
https://techfeed.io/entries/67a52d4677bdbc0f2990eed9
争え……もっと争え……
https://techfeed.io/entries/67a52d4677bdbc0f2990eed9
争え……もっと争え……
256デフォルトの名無しさん
2025/02/07(金) 21:47:52.74ID:Q2ziLxl4 Linusが一喝するまで収めるの無理やろ
257デフォルトの名無しさん
2025/02/07(金) 22:08:06.65ID:lN1GxRH8 そりゃドライバーはカーネルのインターフェイスに従って動作すべきだから、ラッパーなりで隠蔽すべきなんじゃないんかね。
個別のドライバーのためにカーネル側をカスタマイズするのはインターフェイスを侵食する越権行為だから、そんなのドライバーのラッパー側でやれ、と言いたくなるのはわかる。
個別のドライバーのためにカーネル側をカスタマイズするのはインターフェイスを侵食する越権行為だから、そんなのドライバーのラッパー側でやれ、と言いたくなるのはわかる。
258デフォルトの名無しさん
2025/02/08(土) 23:53:09.62ID:YOrLPiSI >>257
それは君の理解が間違っている
今回はRust製の各デバイスドライバが独自のCバインディングを持つ不便な状況を改善するためのパッチだ
つまりカーネルのC側に手を入れるパッチではなくC側は同じままで変更は一切ない
今回の件は該当部分dma_alloc_coherent()のC⇔Rustの抽象ラッパーのコードを含めるパッチだけだ
それさえメインテナーに拒否されたため大問題になっている
それは君の理解が間違っている
今回はRust製の各デバイスドライバが独自のCバインディングを持つ不便な状況を改善するためのパッチだ
つまりカーネルのC側に手を入れるパッチではなくC側は同じままで変更は一切ない
今回の件は該当部分dma_alloc_coherent()のC⇔Rustの抽象ラッパーのコードを含めるパッチだけだ
それさえメインテナーに拒否されたため大問題になっている
259デフォルトの名無しさん
2025/02/08(土) 23:57:46.16ID:dA8HOTum デバドラはRustで書くのが普通になってきているから
そういう共通ラッパーという形のRustインターフェイスが色々と欲しいのよね
でもそれはいずれカーネル自体のRust化へ繋がる道になるから強く反対してるのよ
そういう共通ラッパーという形のRustインターフェイスが色々と欲しいのよね
でもそれはいずれカーネル自体のRust化へ繋がる道になるから強く反対してるのよ
260デフォルトの名無しさん
2025/02/09(日) 00:59:41.26ID:LgxLklST 普通に考えたら異種の言語が混ざるとデバッグと開発の障害でしかないからどこかで境目は必要
261デフォルトの名無しさん
2025/02/09(日) 06:01:46.16ID:2Eyl255N262デフォルトの名無しさん
2025/02/09(日) 06:47:59.48ID:2n/Om2yv >>260
異種の言語を混ぜる話なんか誰もしていない
今回の事件のパッチも異種の言語を混ぜることなくCのAPIはそのままで
その上にRustの層を作る話
In response, Krummrich explained the Rust for Linux effort is creating Rust code that abstracts the C APIs for all Rust drivers and is maintained by Rust devs. In other words, the C side of the kernel stays the same, and Rust drivers use abstractions to that C code, and that these abstractions are maintained by a team centrally in rust/kernel, all of which is arguably better than drivers having their own individual C bindings.
異種の言語を混ぜる話なんか誰もしていない
今回の事件のパッチも異種の言語を混ぜることなくCのAPIはそのままで
その上にRustの層を作る話
In response, Krummrich explained the Rust for Linux effort is creating Rust code that abstracts the C APIs for all Rust drivers and is maintained by Rust devs. In other words, the C side of the kernel stays the same, and Rust drivers use abstractions to that C code, and that these abstractions are maintained by a team centrally in rust/kernel, all of which is arguably better than drivers having their own individual C bindings.
263デフォルトの名無しさん
2025/02/09(日) 08:50:09.78ID:lISaYUpW 最終的にRust側のメンテナが切れてSNSで晒したりしたのは良くなかったけど
技術的にはC側に迷惑かからないように十分配慮して、出てきた懸念も全て潰したにも関わらず
「とにかくRustに関わりたくないから却下」だったからまぁ切れるのも分かる
技術的にはC側に迷惑かからないように十分配慮して、出てきた懸念も全て潰したにも関わらず
「とにかくRustに関わりたくないから却下」だったからまぁ切れるのも分かる
264デフォルトの名無しさん
2025/02/09(日) 09:09:11.56ID:2Eyl255N >>263
そのコードはcで使えるの?
使えるならともかく、Rust専用ならメンテナーが「そんなののメンテナンスで負担増えるのは嫌だからRustドライバー側でやってくれ」というのもわかる。
Rust for Linuxはこういうのの受け皿にならんのかしらん?
そのコードはcで使えるの?
使えるならともかく、Rust専用ならメンテナーが「そんなののメンテナンスで負担増えるのは嫌だからRustドライバー側でやってくれ」というのもわかる。
Rust for Linuxはこういうのの受け皿にならんのかしらん?
265デフォルトの名無しさん
2025/02/09(日) 09:24:37.62ID:lISaYUpW >>264
受け皿も何もそもそもRust for Linuxでやってる話だし
完全にRustドライバー側でやるからCには影響しないって言ってるわけ
具体的にメンテナンスの負担が増える理由を挙げてくれれば対応策も考えられるけど
「とにかくお前らを邪魔するためなら何でもする」って言ってるからどうしようもない
受け皿も何もそもそもRust for Linuxでやってる話だし
完全にRustドライバー側でやるからCには影響しないって言ってるわけ
具体的にメンテナンスの負担が増える理由を挙げてくれれば対応策も考えられるけど
「とにかくお前らを邪魔するためなら何でもする」って言ってるからどうしようもない
266デフォルトの名無しさん
2025/02/09(日) 10:38:22.52ID:2Eyl255N >>265
メンテナが「Rustは俺のサポート範囲に出てこないでドライバ内で閉じてやってくれ」と言うんだから、当面はrust fir linux でドライバーのテンプレートを作るなりCバインディングサポートライブラリを作るなりすればいいんじゃないんかね。
「Rust製の各デバイスドライバが独自のCバインディングを持つ不便な状況」というのもrust fir linuxでフレームワーク作ってサポートすれば解決するし。
メンテナが「Rustは俺のサポート範囲に出てこないでドライバ内で閉じてやってくれ」と言うんだから、当面はrust fir linux でドライバーのテンプレートを作るなりCバインディングサポートライブラリを作るなりすればいいんじゃないんかね。
「Rust製の各デバイスドライバが独自のCバインディングを持つ不便な状況」というのもrust fir linuxでフレームワーク作ってサポートすれば解決するし。
267デフォルトの名無しさん
2025/02/09(日) 10:58:29.23ID:LgxLklST 互いにブラックボックス内でなにが起ってるのかわからないとすると困るけどね
コレコレこういうコードを書いたらこういう結果が出るはずなのに出ないとコード提示されても
相手が理解できなければこじれるだけ
コレコレこういうコードを書いたらこういう結果が出るはずなのに出ないとコード提示されても
相手が理解できなければこじれるだけ
268デフォルトの名無しさん
2025/02/09(日) 11:17:45.05ID:lISaYUpW >>266
そこで言う当面はってのは3-4年前の状況かな
今はもう準備も整って、Mac用のAsahiLinuxとかAndroidとかフォークしてる勢には普通に入ってる段階
だからそろそろ本体にって話になってるわけだけど、拒絶されるなら彼らはフォークに戻っていくだけだとは思う
そこで言う当面はってのは3-4年前の状況かな
今はもう準備も整って、Mac用のAsahiLinuxとかAndroidとかフォークしてる勢には普通に入ってる段階
だからそろそろ本体にって話になってるわけだけど、拒絶されるなら彼らはフォークに戻っていくだけだとは思う
269デフォルトの名無しさん
2025/02/09(日) 11:46:40.81ID:SqO2AyXb270デフォルトの名無しさん
2025/02/09(日) 12:46:41.58ID:LgxLklST 内部の問題をSNSつかって文句言うなアホ
お前が問題じゃ
お前が問題じゃ
271デフォルトの名無しさん
2025/02/09(日) 13:50:57.72ID:CgBIGE40 ここや他のスレでRustに意味のわからん難癖つける人が
いるのは5ちゃん民度のせいではないのがわかった
いるのは5ちゃん民度のせいではないのがわかった
272デフォルトの名無しさん
2025/02/09(日) 14:20:31.41ID:o7IahYRC C++に似ている部分はC++と同じ程度に批判される
それとハイブリッド的な部分
100%ガソリンで動くか100%電気で動くかどっちかにしろという
それとハイブリッド的な部分
100%ガソリンで動くか100%電気で動くかどっちかにしろという
273デフォルトの名無しさん
2025/02/09(日) 16:28:50.86ID:2Eyl255N >>268
該当コード用のメンテナがRustを使いこなすようになるか、専用のメンテナが別に現れるか、現在のメンテナが引退してRust推進のメンテナに代わるまでじゃない?
これはメンテナの複雑性管理&管理ポリシーの問題だから、普及具合とかはあんまり関係ない。
該当コード用のメンテナがRustを使いこなすようになるか、専用のメンテナが別に現れるか、現在のメンテナが引退してRust推進のメンテナに代わるまでじゃない?
これはメンテナの複雑性管理&管理ポリシーの問題だから、普及具合とかはあんまり関係ない。
274デフォルトの名無しさん
2025/02/09(日) 23:42:15.23ID:yWuHVaf1 色んなものがRust製になっていく中
最後まで残りそうなのが巨大でモノリシックなカーネルとブラウザになりそうだな
最後まで残りそうなのが巨大でモノリシックなカーネルとブラウザになりそうだな
275デフォルトの名無しさん
2025/02/10(月) 00:33:23.09ID:vC/tdt5D 日本の古文漢文は残らないかもしれないが西洋では全部保存していて選択肢が増えるだけ
だから、向こうが世界の中心みたいな空気になる
だから、向こうが世界の中心みたいな空気になる
276デフォルトの名無しさん
2025/02/10(月) 16:53:59.27ID:NarMF1Jn firefoxはまだrust製にはならんの?
277デフォルトの名無しさん
2025/02/10(月) 17:38:09.01ID:cWC6BpGk Linux カーネルは保守的な方針だろ。
数年前まで C89 が前提だったんだぞ。
この速度感で考えるなら Rust 導入なんてまだまだ時期尚早じゃね?
数年前まで C89 が前提だったんだぞ。
この速度感で考えるなら Rust 導入なんてまだまだ時期尚早じゃね?
278デフォルトの名無しさん
2025/02/10(月) 19:19:29.76ID:CLC139Pw Firefoxのレンダリングエンジンは大分前からRust製(Servo)でしょ
279デフォルトの名無しさん
2025/02/10(月) 19:49:30.60ID:+iqVWpvf280デフォルトの名無しさん
2025/02/10(月) 22:57:20.26ID:K8Z0rKJe 錆→癌
281デフォルトの名無しさん
2025/02/10(月) 22:59:57.28ID:u4cWXaji Mozillaお金なさすぎて色々と切り捨てて
RustもRust Foundationへ移管されたもんな
結果的にRustにとっては中核が安定してラッキーになったけどさ
> 2020年にMozillaがすべてのServo開発者を解雇した後、プロジェクトのガバナンスはLinux Foundation Europeに移管された。
> 開発作業は公式には同じGitHubリポジトリで続けられており、プロジェクト自体は完全にボランティア主導です。
RustもRust Foundationへ移管されたもんな
結果的にRustにとっては中核が安定してラッキーになったけどさ
> 2020年にMozillaがすべてのServo開発者を解雇した後、プロジェクトのガバナンスはLinux Foundation Europeに移管された。
> 開発作業は公式には同じGitHubリポジトリで続けられており、プロジェクト自体は完全にボランティア主導です。
282デフォルトの名無しさん
2025/02/10(月) 23:42:58.20ID:vC/tdt5D C/C++その他の知識を蒸留してないわけがないから
コストもコスパもないんだよ
コストもコスパもないんだよ
283デフォルトの名無しさん
2025/02/12(水) 22:57:39.73ID:f3u+GZc6 Pointers (this includes values of reference type) in Rust have two components.
- The pointer's "address" says where in memory the pointer is currently pointing.
- The pointer's "provenance" says where and when the pointer is allowed to access memory.
We have to know not only the address the pointer points to,
but also track which other pointer(s) it is "derived from".
Provenance is useful because it allows powerful optimizations.
Provenance can affect whether a program has undefined behavior.
- The pointer's "address" says where in memory the pointer is currently pointing.
- The pointer's "provenance" says where and when the pointer is allowed to access memory.
We have to know not only the address the pointer points to,
but also track which other pointer(s) it is "derived from".
Provenance is useful because it allows powerful optimizations.
Provenance can affect whether a program has undefined behavior.
284デフォルトの名無しさん
2025/02/16(日) 23:45:42.12ID:aPxhKLjT Rust Tokyo 2024 開催レポート
https://gihyo.jp/article/2024/12/rust-tokyo-2024-report
https://gihyo.jp/article/2024/12/rust-tokyo-2024-report
285デフォルトの名無しさん
2025/02/21(金) 06:52:59.68ID:p6I2RufL edition = "2024" が来たね
286デフォルトの名無しさん
2025/02/25(火) 13:22:53.51ID:XvTpfGzl287デフォルトの名無しさん
2025/02/25(火) 13:50:37.48ID:z5mNSc8+ 生メモリいじくるのが好きな人たちがいきなりrustやれって言われたらきつい気持ちはわかる
どうせメンテーなんてみんなジジイなんだし
どうせメンテーなんてみんなジジイなんだし
288デフォルトの名無しさん
2025/02/25(火) 15:08:04.83ID:Uj70bClX rustが嫌でもやれなんて言ってないが
289デフォルトの名無しさん
2025/02/25(火) 16:25:22.46ID:ixFc3NBv Linusの今回の発言は明瞭で
・Cだけ触りたい人はそのままRustを覚えなくてOK
・その代わりRustについて口を挟む権利はない
・CのAPIをその利用者は自由に使えてメンテナといえども用途用法に口を挟む権利はない
したがって今回もめていた「CのAPIの上にRustのAPIを設ける件」について
Cだけ触りたいメンテナは口を挟む権利はなくパッチを拒否する権利もない、ということ
大方の人々が考えていた通りに決着
・Cだけ触りたい人はそのままRustを覚えなくてOK
・その代わりRustについて口を挟む権利はない
・CのAPIをその利用者は自由に使えてメンテナといえども用途用法に口を挟む権利はない
したがって今回もめていた「CのAPIの上にRustのAPIを設ける件」について
Cだけ触りたいメンテナは口を挟む権利はなくパッチを拒否する権利もない、ということ
大方の人々が考えていた通りに決着
290デフォルトの名無しさん
2025/02/25(火) 17:47:40.26ID:z5mNSc8+ 口を出せない=メンテナ失格ということと受け取った
291デフォルトの名無しさん
2025/02/25(火) 18:17:51.25ID:AwfAD5GP かつてカーネルを正しく修正した結果として (保証してない挙動に依存した) 間違ったアプリケーションのいくつかがまともに動かなくなったことがある。
そのときに Linux の理念としては技術的合理性でユーザー体験を損なってはならないということで間違っているアプリケーションに合わせて互換性が維持された。
ユーザは一方的な利用者に過ぎずカーネルに口出ししないなんてことはない。
絶対に、絶対に、絶対に、カーネルに口出しするよ。
まあそれが良いか悪いかは知らんけどな。
そのときに Linux の理念としては技術的合理性でユーザー体験を損なってはならないということで間違っているアプリケーションに合わせて互換性が維持された。
ユーザは一方的な利用者に過ぎずカーネルに口出ししないなんてことはない。
絶対に、絶対に、絶対に、カーネルに口出しするよ。
まあそれが良いか悪いかは知らんけどな。
292デフォルトの名無しさん
2025/02/25(火) 18:41:48.14ID:XvTpfGzl293デフォルトの名無しさん
2025/02/26(水) 04:07:17.14ID:m7ecN2qb >>290
そういうデマを言うやつがいるとコミュニティー全体が嫌われるから止めるべき。
Linusが言っているのはせいぜい「Rustコードのメンテナじゃないだろ」ぐらいの話で、Linuxメンテナ失格とは全く言っていない。むしろメンテナが自分のメンテナンス範囲をCコードだけにするのを肯定している。
今回の件も、C APIユーザーとしてのRustコードがCコードとは独立した形で別のメンテナにメンテナンスされるんじゃないんかね。
そういうデマを言うやつがいるとコミュニティー全体が嫌われるから止めるべき。
Linusが言っているのはせいぜい「Rustコードのメンテナじゃないだろ」ぐらいの話で、Linuxメンテナ失格とは全く言っていない。むしろメンテナが自分のメンテナンス範囲をCコードだけにするのを肯定している。
今回の件も、C APIユーザーとしてのRustコードがCコードとは独立した形で別のメンテナにメンテナンスされるんじゃないんかね。
294デフォルトの名無しさん
2025/02/26(水) 19:09:22.06ID:ixFc3NBv 着実にRust APIを増やしていこう
脱libc
脱libc
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す ★3 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「クマはなるべく山に返す努力を」「クマと戦争は間違っている」動物保護活動家の主張 棲み分けと学習放獣でクマ被害なくなるのか?★7 [ぐれ★]
- とらせん IPあり
- 巨専】
- こいせん 全レス転載禁止
- 侍ジャパンシリーズ2025「日本vs韓国」その12
- 【DAZN】ワールドカップ欧州予選総合 ★5
- 【ATP】テニス総合実況スレ2025 Part 211【WTA】
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 【悲報】大分市佐賀関の火事、20軒→170軒に延焼🔥 [481941988]
- 自閉症が「んなっしょい」と連呼するお🏡
- 日本人の海外旅行したきのマナーよくなったのはいつから
- 【二次】この中で種付けセックスしたい女の子早い者勝ちwwwwwwwwwwwwwwwwwwwwwwwwwwww
- へそグリグリ
