[過去ログ] Rust part16 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
795(1): 2022/09/24(土)17:10 ID:GMpouZpq(1/2) AAS
じゃあ、そのオブジェクト・ファイル形式の仕様に問題があるってことでは?
796: はちみつ餃子 ◆8X2XSCHEME 2022/09/24(土)17:36 ID:2HWwrIyG(3/3) AAS
>>795
ELF に置き換わるときにオブジェクトファイルの仕様の曖昧さはほとんど解消されていると思う。
ただ現実には全てが正しく実装されているわけではなく、
場合によっては正しかったほうを間違った側にあわさざるを得ないとかいう場合もある。
仕様がどうこう言ったって、実装が間違っていたって現実にもう動いているものがあるのなら変えられんのよ。
そういう歴史的負債がどんどん積み重なってわけわからんようになる。
797: 2022/09/24(土)19:08 ID:eDCmZTMq(1) AAS
ARMの規約
外部リンク:github.com
798: 2022/09/24(土)22:13 ID:DaB/WDgt(6/6) AAS
元々の他言語からrust呼び出す話ならそのレベルの話は関係ないでしょ
LLVMがよしなにやってくれるのでは
799(1): 2022/09/24(土)22:29 ID:GMpouZpq(2/2) AAS
ARM64ほどの絶対的パワーは必要ないので、ARM63で価格が120円くらいのチップになりませんかね?
800: 2022/09/25(日)08:24 ID:j3K9KjV7(1) AAS
Option<NoneZeroUsize>などを使えば
IDやカウンタなどの用途でOption<usize>などを使っていたものを
半分のメモリサイズで済むようになるの?
801: 2022/09/25(日)11:42 ID:sQFmQmse(1) AAS
>>799
任せてください。符号ビット省略しておきますね
802: 2022/09/25(日)15:32 ID:F2Viqk5M(1) AAS
Microsoftがやりそうなことだけど、Rustに独自拡張を含めたりとかしてほしくない
803(1): 2022/09/25(日)17:24 ID:xalR35FT(1/2) AAS
Linuxはカーネル開発の為に今まさにRustに独自拡張を含ませようとしてるのに
Microsoftはダメなの?
804: 2022/09/25(日)17:34 ID:4B3i10Bx(1) AAS
try_new()とかtry_reserve()とか元々ないのが不思議だったし導入の良いきっかけとなっただけ
805: 2022/09/25(日)17:57 ID:6lgwXJxi(1/3) AAS
言語自体forkして独自のエコシステムを構築しようとしなければ別に良いのでは
806(1): 2022/09/25(日)18:09 ID:6wI0gbs/(1) AAS
正直LinuxにRustなんて辞めればいいのに・・・
807(2): 2022/09/25(日)18:14 ID:Td47G6We(1/4) AAS
Rustに限った話じゃないんだけどそれなりに複雑なロジック(例えばデコーダやパーサ)の実践的なテストの
作り方の解説とかどっかにある?例えばJPEGやPNG、MP3、AVIとかを扱うようなコードを想定
関数単体のテストはともかく、結合した状態で全てのコードを動かそうとすると入力パターンがどんどん増えるし
パディングビットにゴミがあっても問題ないかなどを考慮しだすと更に膨れあがる
さらに歴史が長いフォーマットだと、そもそも仕様をどう定義するのかという点が問題になることもあるし
808: 2022/09/25(日)18:21 ID:xalR35FT(2/2) AAS
テストがすごいのはSQLite
809: 2022/09/25(日)19:04 ID:rVqFiGXV(1) AAS
>>803
別に独自拡張とか入れてないだろ
コンパイラへの機能追加は全部本体に入れていてnightlyで使える状態だし
Linuxカーネル向けのallocなんかは単にライブラリであって言語自体がforkしてるわけではない
810(1): 2022/09/25(日)19:57 ID:6lgwXJxi(2/3) AAS
>>806
なんかまずいことでもあるの?
811(1): 2022/09/25(日)19:59 ID:Rxhh3DJ9(1) AAS
>>810
迷走と凋落、そして黒歴史化。
812(1): 2022/09/25(日)20:07 ID:58piYD8Z(1) AAS
>>807
メディアのエンコーディングのことはさっぱりしらんけど、一般的には結合テストじゃなくて、単体テストでパターンは網羅すべし
できるんならやればいいけど、結合テストで入力の網羅なんて普通はやらない
813(1): 2022/09/25(日)20:26 ID:Td47G6We(2/4) AAS
>>812
条件分岐で関数Aを呼ぶべき所を間違えてA'を呼んでいて出力結果がちょっと変・・・というのをさっきやらかした
関数そのものに問題はないし処理内容がちょっと違うだけなので実行は出来てしまうのがいやらしい
で、テストを作ろうとしたけどどうしようか悩み中
814(1): 2022/09/25(日)20:37 ID:lhW/fB5K(1) AAS
そういうのは呼び出し側の単体でええんちゃうの
815(1): 2022/09/25(日)21:09 ID:j1+dHWho(1/2) AAS
>>807
歴史があり、曖昧さが残るフォーマットの再実装はできればやりたくない仕事だな。
対応する仕様を現代で最低限必要なものを取捨選択して決め打ちで実装しつつ、考慮漏れでクリティカルなものは取り入れていく方式でやるしかないよ。
歴史あるフォーマットの曖昧な対応を追体験する作業は、不毛だからできれば既存実装におまかせすべき。
816(2): 2022/09/25(日)21:31 ID:Td47G6We(3/4) AAS
>>814
中間コンポーネントの単体テストって普通どうやるんだろ
後段のコンポーネントを切り離してテストするのか?繋げたままテストするのか?
切り離せるようにするとその部分にバグが入り込む余地が生まれるし
>>815
歴史が長いと仕様上○○であるがこれに準拠しないアプリやデータが少なからず存在するため
△△のような実装がベターだみたいなのが沢山あるからねぇ
そしてこの手の情報はググっても網羅するのが難しい
817: 2022/09/25(日)21:51 ID:6lgwXJxi(3/3) AAS
>>811
Linux側にメリットがないと言ってる?
818(1): 2022/09/25(日)21:51 ID:PDKGWlWe(1) AAS
>>816
> 中間コンポーネントの単体テストって普通どうやるんだろ
中間の意味がよく分からんけど>>813みたいな話なら関数A、関数A'をモックにしてテストする
たいていのテストツールではモックの呼び出し回数のテストができる
819(1): 2022/09/25(日)21:53 ID:j1+dHWho(2/2) AAS
>>816
JavaみたいにDIが発展しているタイプの言語だと中間コンポーネントが呼び出すコンポーネントはモックをインジェクトしてやって、適切なメソッドが呼び出されたかのテストとかよく書くね。
けど、正直Rustを含む他の言語で中間のレイヤだけ独立してテスト書くようなこだわりはあまり見たことも書いたこともないなぁ。
モジュール設計の考え方が変わるからかな?
820(2): 2022/09/25(日)22:41 ID:Td47G6We(4/4) AAS
今作っているのだとこんな感じかな?
関数C(データの前処理、処理単位への分割)
↓
関数B(処理全体の制御)→関数A'(処理1-2)
↓
関数A(処理1-1)
>>818,819
その場合モックへ切り替える機構はどうするんだろ
そのためにコードを書き換えていてはミスが入り込む可能性が高くなるし、条件付きコンパイルも同様のリスクがある
てかThe Rustのテストの所を見ても関数の呼び出し状況をテストする方法とかは書いていないんだよな
省1
821: 2022/09/26(月)00:07 ID:h/WE7ZWH(1/3) AAS
>>820
すまん rust だと cargo test で単体テストを実施するみたいだけど mook/stub をどうやって使うかはよくわからんかったわ
C++ とかだと googlemook とか使ってテスト用のモッククラスを作って入れ替えるかたちだね
822: 2022/09/26(月)00:33 ID:TCGzsvbI(1) AAS
mockall使うとか
823(1): 2022/09/26(月)06:28 ID:p/pWEmYs(1) AAS
cargo testで関数テスト、モジュールテスト、モジュール間テストなどあらゆるテストをやっているけどダメなの?
824: 2022/09/26(月)06:47 ID:h/WE7ZWH(2/3) AAS
>>823
>>820 > その場合モックへ切り替える機構はどうするんだろ
に答えてやってくれ
上下前次1-新書関写板覧索設栞歴
あと 178 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.013s