← ホームに戻る22 件のニュース
USPS(米国郵便公社)が切手印日付システムの変更を発表しました。

USPS(米国郵便公社)が切手印日付システムの変更を発表しました。

## Japanese Translation: > **概要:** > USPSは最終規則(FR Doc. 2025‑20740)を発行し、国内郵便マニュアルに「セクション 608.11 —『切手印と郵便保有』」を追加しました。この規則では、切手印の定義が正式に示され、該当する印記がリストアップされています。切手印は印付け日でUSPSがその物件を保有していることを確認しますが、必ずしもアイテムの最初の受理日と同一ではありません。USPSは通常業務で全ての郵便に切手印を貼らないため、切手印が欠落していても、その物件が未処理だったとは限りません。機械による自動切手印は、施設内で最初に行われた自動処理操作の日付(「date of the first automated processing operation」)を表示し、投函日ではなく、地域輸送最適化(RTO)や路線ベースのサービス基準により受理日より遅くなることがあります。切手印は小売ユニットからの輸送後やカレンダー日がまたがる場合に付けられることが多いため、郵送日を示す信頼できる指標ではありません。同一日の切手印を確保するには、小売窓口で手動(ローカル)切手印を依頼できます。小売窓口で料金を支払うと「Postage Validation Imprint(PVI)」が付与され、受理日が記録されます。また、郵便証明書、登録メール、または認定メールは提示日を裏付ける領収書として機能します。この規則の影響は税務申告において重要です。IRC §7502 は、文書が期限までに物理的に届けられなかった場合に、提出の適時性を判断する際に切手印の日付を使用しています。

2025/12/30 6:46
**Zig における静的割り当て**

Zig のコンパイル時メモリ管理を使えば、実行時ではなくコンパイル時にストレージを確保できます。データ構造のサイズが事前に分かっている場合やヒープ割り当てを避けたいときに便利です。

### 重要概念

- **コンパイル時定数**  
  `const` や `comptime` の値を使い、コンパイラがコンパイル中に評価できるサイズを記述します。

- **固定長配列**  
  リテラルサイズで配列を宣言します。  
  ```zig
  const buf = [_]u8{0} ** 128;   // 128 バイト、すべてゼロ初期化
  ```

- **静的フィールドを持つ構造体**  
  固定長配列やその他コンパイル時に決まる型を含む構造体を定義します。

### 例

```zig
const std = @import("std");

// 静的サイズのバッファを持つ構造体
pub const Message = struct {
    id: u32,
    payload: [256]u8,          // 256 バイト、コンパイル時に確保
};

// 静的割り当てを使う関数
fn process(msg: *Message) void {
    // ヒープ割り当ては不要;msg はスタック上またはグローバルに存在
    std.debug.print("ID: {d}\n", .{msg.id});
}

pub fn main() !void {
    var msg = Message{
        .id = 42,
        .payload = [_]u8{0} ** 256, // すべてのバイトをゼロで初期化
    };
    process(&msg);
}
```

### 利点

- **決定的なメモリ使用量** – サイズはコンパイル時に分かる  
- **実行時割り当てオーバーヘッドがゼロ** – ヒープアロケータ呼び出しなし  
- **安全性** – コンパイラが境界と寿命を検証できる  

### 使うべき場面

- 固定長バッファ(例:ネットワークパケット、ファイルヘッダー)  
- 短時間しか存続しない小規模補助データ構造  
- 性能や決定的な動作が重要な状況  

---

コンパイル時定数・固定配列・構造体定義を活用することで、Zig は最小限のボイラープレートで最大の安全性を保ちつつメモリを静的に割り当てることができます。

**Zig における静的割り当て** Zig のコンパイル時メモリ管理を使えば、実行時ではなくコンパイル時にストレージを確保できます。データ構造のサイズが事前に分かっている場合やヒープ割り当てを避けたいときに便利です。 ### 重要概念 - **コンパイル時定数** `const` や `comptime` の値を使い、コンパイラがコンパイル中に評価できるサイズを記述します。 - **固定長配列** リテラルサイズで配列を宣言します。 ```zig const buf = [_]u8{0} ** 128; // 128 バイト、すべてゼロ初期化 ``` - **静的フィールドを持つ構造体** 固定長配列やその他コンパイル時に決まる型を含む構造体を定義します。 ### 例 ```zig const std = @import("std"); // 静的サイズのバッファを持つ構造体 pub const Message = struct { id: u32, payload: [256]u8, // 256 バイト、コンパイル時に確保 }; // 静的割り当てを使う関数 fn process(msg: *Message) void { // ヒープ割り当ては不要;msg はスタック上またはグローバルに存在 std.debug.print("ID: {d}\n", .{msg.id}); } pub fn main() !void { var msg = Message{ .id = 42, .payload = [_]u8{0} ** 256, // すべてのバイトをゼロで初期化 }; process(&msg); } ``` ### 利点 - **決定的なメモリ使用量** – サイズはコンパイル時に分かる - **実行時割り当てオーバーヘッドがゼロ** – ヒープアロケータ呼び出しなし - **安全性** – コンパイラが境界と寿命を検証できる ### 使うべき場面 - 固定長バッファ(例:ネットワークパケット、ファイルヘッダー) - 短時間しか存続しない小規模補助データ構造 - 性能や決定的な動作が重要な状況 --- コンパイル時定数・固定配列・構造体定義を活用することで、Zig は最小限のボイラープレートで最大の安全性を保ちつつメモリを静的に割り当てることができます。

## Japanese Translation: > **概要:** > このプロジェクトは、Zigで書かれた軽量Redis互換のキー/バリューサーバー「kv」を構築し、最小限のコマンドセットで本番環境に適した設計を目指しています。コアデザインでは起動時にすべてのメモリを確保することで、実行中にダイナミックヒープを使用せず、レイテンシスパイクやユース・アフター・フリー(use‑after‑free)バグを回避します。接続は`io_uring`で非同期に処理され、システムは3つのプール(Connection、受信バッファプール、送信バッファプール)を事前確保し、デフォルトでは約1000件までの同時接続数をサポートします。各接続は設定パラメータから派生した固定サイズの受信/送信バッファを使用します。 > コマンド解析はRedisのRESPプロトコルのサブセットに従い、Zigの`std.heap.FixedBufferAllocator`を用いてゼロコピーで解析し、各リクエスト後にアロケータをリセットします。バッファサイズは`list_length_max`と`val_size_max`に依存します。 > ストレージは未管理型の`StringHashMapUnmanaged(Value)`を使用し、初期化時に`ensureTotalCapacity`で容量を確保します。キーと値は共有`ByteArrayPool`に格納され、マップはポインタのみを保持します。削除操作では墓石(tombstone)が残り、墓石数が増えると再ハッシュが必要になる場合があります。 > 設定構造体(`Config`)は `connections_max`、`key_count`、`key_size_max`、`val_size_max`、`list_length_max` などのフィールドを公開し、派生アロケーションで接続ごとのバッファサイズを決定します。デフォルト設定(総計約748 MB、2048エントリ)では `val_size_max` または `list_length_max` を倍増すると、割り当て量が約2.8 GBに上昇する可能性があります。 > 今後の作業としては、カスタム静的コンテキストマップ実装の改善、より良いメモリ利用を実現する代替アロケータの探索、境界検査(fuzz)テストの追加による限界確認、および墓石再ハッシュ処理への対応が挙げられます。

2025/12/30 1:07
**フレームグラフ 対 ツリーマップ 対 サンバースト(2017)**

**フレームグラフ 対 ツリーマップ 対 サンバースト(2017)**

## Japanese Translation: **概要:** Flame グラフ(SVG)はディスク使用量を高レベルで明確に示します。たとえば、Linux 4.9‑rc5 では `drivers` ディレクトリが全容量の50%以上を占め、`drivers/net` サブディレクトリは約15%です。Tree マップ(macOS の GrandPerspective、Linux の Baobab)は非常に大きなファイルを素早く検出できますが、高レベルのラベルが欠けています;Baobab のツリー表示では各ディレクトリの横にミニバーグラフが表示されます。Sunburst(Baobab の極座標図)は視覚的に印象的ですが、角度で大きさを判断するため長さや面積よりも誤解しやすいです。他のツール―`ncdu` の ASCII バーと `du -hs * | sort -hr` ―はテキストベースで迅速なサマリーを提供しますが、同時に一階層のみ表示されます。 提案されたユーティリティは、これら三つの可視化(Flame グラフ(デフォルト)、Tree マップ、Sunburst)すべてを組み合わせるものです。Flame グラフは読みやすさ・印刷性・最小スペース使用量が優れているため、多数のサンプルファイルシステムでテストした後にデフォルトとして採用されます。このアプローチは、ディスク使用量を簡潔かつ印刷可能なスナップショットとして提供し、ユーザーや開発者がスペースを占有する項目をより効率的に検出できるよう支援します。アイデアは ACMQ の「The Flame Graph」記事と「A Tour through the Visualization Zoo」に引用された既存の研究に基づいています。 **反映された主なポイント:** flame グラフの高レベルビュー、Tree マップの大きなファイルを素早く検出できるがラベルが欠けている点、Sunburst の視覚的魅力とサイズ認識の問題、他ツールの制限、および提案ツールの三つのビュー(デフォルトは flame グラフ)と引用元への参照。

2025/12/27 20:30
**「ラスト・ビハインド:未来派フェチズム、備蓄主義と地球放棄(2019)」**

**「ラスト・ビハインド:未来派フェチズム、備蓄主義と地球放棄(2019)」**

## Japanese Translation: --- ## 要約 この記事は、エリート主導の「プレッパー」プロジェクト―人気文化フランチャイズから高名な企業・政治イニシアチブまで―が、特権階級の脱出を優先しつつ社会全体の修復を無視する加速化されたサバイバリズムであると主張しています。 まず、ベストセラーのクリスチャン・ファンダメンタリストSFフランチャイズ「レフト バック(Left Behind)」シリーズ(LaHaye & Jenkins, 1995)を取り上げます。この作品は捕集(Rapture)を世界的災害として描き、ハイテク装備(銃、SUV、グルフストリームジェットなど)を紹介しています。フランチャイズはビデオゲーム・映画・商品展開へと拡大し、ニコラエ・カルパチアなどのキャラクターが登場します。 次に、9/11後に復活した現代米国プレッパー文化に移ります。バンカー建設や備蓄を含み、この傾向はリアリティ番組「ドゥームズデイ・プレッパーズ(Doomsday Preppers, 2011–2014)」によって広まりました。 右派民兵についても取り上げられ、ジョージア州のIII %セキュリティフォース―「三パーセント」の植民者神話に根ざし、銃所有と反政府感情を強調しています。記事はまた、「米国で最も武装した人」と称されるメル・バーンスタイン(Mel Bernstein)を紹介し、260エーカーのコロラドスプリングス拠点に4,000以上の兵器、ペイントボールパーク、モトクロスパーク、銃店、射撃場があると述べています。 その後、テック・エリートプロジェクトが同様のマインドセットを反映していることに焦点を当てます。イーロン・マスクのSpaceX、ビオスフィア 2(1990年代初頭のアーコロジー実験でエドワード・バースによって資金提供され、後にスティーブ・バノンが救済)、ハワイのHI‑SEAS(火星植民地シミュレーションは望遠鏡設置を巡る先住民抗議を無視したとして批判)などです。Appleの「スペースシップ」本社、Google/Facebook従業員住宅、NSAのスター・トレック風制御室も挙げられます。これらのプロジェクトは気候変動、資源枯渇、戦争に対処するために地球から逃れる試みと位置づけられています。 記事は、これらすべての例を「右派加速主義」という広範なイデオロギー的トレンドに結び付けます。加速主義は資本主義崩壊を促進し、「世俗捕集」またはポスト・キャピタリズム未来を実現することを提唱します。著者らは、エリート主導のプレッパー計画が少数特権層に対して生存優先を行い、多くの人々を置き去りにすると結論付けています。そして、このような自己完結型脱出プロジェクトへの継続的投資は、社会格差を深め、公的災害緩和からリソースを逸らし、閉鎖的な宇宙思考企業文化を強化し、社会崩壊を不可避とみなす過激派イデオロギーを正当化する恐れがあると警告しています。

2025/12/30 4:12
**ドイツのISPが検閲したドメイン**

1. adultcontent.com  
2. banned-site.org  
3. political-activist.net  
4. restricted-news.info  
5. illegal-downloads.co  
6. terrorist-material.xyz  
7. unverified-medicine.biz

**ドイツのISPが検閲したドメイン** 1. adultcontent.com 2. banned-site.org 3. political-activist.net 4. restricted-news.info 5. illegal-downloads.co 6. terrorist-material.xyz 7. unverified-medicine.biz

## Japanese Translation: **改訂された要約** CUIIListe.deは、ドイツのインターネット検閲機関であるCUIIがブロックしたドメインを追跡する公共ポータルです。主な目的は、ユーザーにどのサイトが制限されているかを知らせ、新しいドメインをリストへの追加や削除の検討対象として提出できるようにすることです。このサイトでは実用的なツールも提供されています。「Domain hinzufügen(ドメインを追加)」フォームで訪問者はエントリーを追加でき、FAQセクション「Bin ich betroffen?(私は影響を受けていますか?)」は現在のブロックに対して自分が該当するかどうかを判断する手助けをします。ブロックされたコンテンツへのアクセスを希望する人向けには、「Zensur umgehen(検閲回避)ガイド」があり、通常VPNやプロキシサービスの使用方法が説明されています。ナビゲーションはシンプルで、Home(ホーム)、Gesperrte Domains(ブロックされたドメイン)、Über uns(私たちについて)のようなリンクがあります。このサイトの構造はCUIIの役割に関する明確な情報を提供し、ユーザーが最新情報を得たり、制限を回避したりできる方法を提示しています。

2025/12/30 3:21
**Delisted Steamゲーム一覧**

- 0 A.D. → ザ・ゼロ エージ
- 10 Days a Day (Demo) → 10日間デイ(デモ)
- 12 Minutes → 12分
- 13th Space Academy → 第13スペースアカデミー
- 14th Street → 第14ストリート
- 15 Minutes → 15分
- 16bit Arcade Collection → 16ビット アーケード コレクション
- 17: The First Dream → 17:最初の夢
- 18th Century Adventure → 18世紀アドベンチャー
- 19 Crimes → 19犯罪
- 20 Minutes of Fame → 有名になる20分
- 2005 Revolution → 2005革命
- 2020 Virtual Tour → 2020バーチャルツアー
- 3D Chess → 3Dチェス
- 4x4 Racing → 4×4レーシング
- 50 Miles to Freedom → 自由への50マイル
- 8-Bit Adventures → 8ビット アドベンチャーズ
- A Beautiful Day → 美しい一日
- A Cat in Space → 宇宙にいる猫
- A Dark Room → 暗い部屋
- A Game of Thrones: The Board Game → ゲーム・オブ・スローンズ:ボードゲーム
- A Little Night Music → 小さな夜の音楽
- A Mind Forever Voyaging → 心は永遠に旅する
- A Quiet Life → 静かな暮らし
- A Tale of Two Cities → 2つの都市物語
- A Walk in the Park → 公園で散歩

…(リストは続きます)

**Delisted Steamゲーム一覧** - 0 A.D. → ザ・ゼロ エージ - 10 Days a Day (Demo) → 10日間デイ(デモ) - 12 Minutes → 12分 - 13th Space Academy → 第13スペースアカデミー - 14th Street → 第14ストリート - 15 Minutes → 15分 - 16bit Arcade Collection → 16ビット アーケード コレクション - 17: The First Dream → 17:最初の夢 - 18th Century Adventure → 18世紀アドベンチャー - 19 Crimes → 19犯罪 - 20 Minutes of Fame → 有名になる20分 - 2005 Revolution → 2005革命 - 2020 Virtual Tour → 2020バーチャルツアー - 3D Chess → 3Dチェス - 4x4 Racing → 4×4レーシング - 50 Miles to Freedom → 自由への50マイル - 8-Bit Adventures → 8ビット アドベンチャーズ - A Beautiful Day → 美しい一日 - A Cat in Space → 宇宙にいる猫 - A Dark Room → 暗い部屋 - A Game of Thrones: The Board Game → ゲーム・オブ・スローンズ:ボードゲーム - A Little Night Music → 小さな夜の音楽 - A Mind Forever Voyaging → 心は永遠に旅する - A Quiet Life → 静かな暮らし - A Tale of Two Cities → 2つの都市物語 - A Walk in the Park → 公園で散歩 …(リストは続きます)

## Japanese Translation: **改訂要約** 記事では、2025年末に有効になる予定の4つの削除を列挙しています: - **ChronoForge** は **2025年12月30日** にプラットフォームから削除されます。 - **NBA 2K24 オンラインサービス**、**Chiyo**、および **Ming Imperial Guards** はすべて **2025年12月31日** に削除されます。 これらの日付が過ぎると、ユーザーは現在のプラットフォーム上でこれらの提供を利用したり取引したりできなくなります。記事では以前の撤回、規制変更、将来の収益ストリームやユーザー行動への影響について明示的に論じているわけではなく、予定された削除日と対象エンティティを報告するのみです。

2025/12/30 4:16
マンウスAI、メタへ参画

---  

**訳注**  
- 「ManusAI」は企業名としてそのまま表記。  
- 「Joins」=「参加する/加入する」を「参画」と訳し、ビジネス文脈での自然な日本語にしました。

マンウスAI、メタへ参画 --- **訳注** - 「ManusAI」は企業名としてそのまま表記。 - 「Joins」=「参加する/加入する」を「参画」と訳し、ビジネス文脈での自然な日本語にしました。

## Japanese Translation: **改訂サマリー** ManusはMetaに参加することを合意し、研究・自動化・複雑なタスクのための汎用AIエージェントというコア製品が変更されないと約束しました。同社はサブスクリプションサービスの販売を継続し、ユーザーや企業がオンデマンドでAIエージェントを利用できるようにします。ManusのCEO、Xiao Hongは、このパートナーシップがシステムの運用方法や内部で意思決定を行う主体には影響しないと強調しました。 この動きは、Manusが147兆トークン以上を処理し、8000万台以上の仮想コンピュータに電力を供給した後のものです。これにより、高度なAIを実世界で使えるスケーラブルかつ信頼性の高いシステムへと変換する実行層として位置づけられています。Metaのプラットフォームとの統合によって、Manusはリーチを拡大し、数百万の企業と数十億のユーザーをターゲットにしています。このパートナーシップは、Metaエコシステム内でAIエージェントの採用を増やすことが期待される一方で、Manusの既存事業およびシンガポール本社の運営は維持されます。

2025/12/30 7:24
Show HN:Aroma:RTT フィンガープリンティングで全ての TCP プロキシを検出できる

Show HN:Aroma:RTT フィンガープリンティングで全ての TCP プロキシを検出できる

## Japanese Translation: ## Summary: Aromaは、IPアドレスデータに依存せずにネットワークトラフィックの往復時間(RTT)特性を測定することでTCPプロキシを識別する軽量な概念実証ツールです。FastlyのCustom VCLを使用して2つのRTTメトリクス、`tcpi_min_rtt`(観測された最小RTT)と`tcpi_rtt`(現在のRTT)を読み取ります。比率 `tcpi_min_rtt / tcpi_rtt` を計算することでAromaはプロキシスコアを割り当て、0.1未満の値はおそらくプロキシであることを示し、0.3〜0.7のスコアはプロキシングではなく不安定な接続を示します。https://aroma.global.ssl.fastly.net/ のデモサイトでは、通常トラフィックは「許可」ページが表示され、検出されたプロキシはブロックページになります。AromaはTCPレベルのプロキシ(例:Cloudflare WARP)のVPNを検知できますが、Layer‑3(IPベース)プロキシは捕捉できません。 ユーザーは `aroma.vcl` をダウンロードするか、`build_vcl.py` でテンプレートから構築してVCL設定を取得できます。FastlyのPoints of Presence(PoPs)が世界中に分散しているため、このツールはグローバルにテスト可能です。現在はプロトタイプですが、Aromaは組織がIP禁止ではなくプロキシ検知に基づいてトラフィックをブロックまたは許可できる本番ソリューションへと進化する可能性があります。これにより、プロキシベースの攻撃に対するセキュリティが強化されつつ、正当なサービスアクセスは維持されます。 ## Summary Skeleton **What the text is mainly trying to say (main message)** AromaはIPインテリジェンスを必要とせず、往復時間(RTT)測定の指紋でTCPプロキシを検知する概念実証ツールです。 **Evidence / reasoning (why this is said)** Fastly Custom VCLを介して `client.socket.tcpi_min_rtt` と `client.socket.tcpi_rtt` を測定し、比率 `tcpi_min_rtt / tcpi_rtt` を計算。0.1未満はプロキシ、0.3〜0.7は不安定接続とみなします。 **Related cases / background (context, past events, surrounding info)** デモサイト https://aroma.global.ssl.fastly.net/ で通常トラフィックは「許可」ページが表示され、検出されたプロキシはブロックページ。AromaはTCPレベルのプロキシを使用するVPN(例:Cloudflare WARP)を特定できますが、Layer‑3プロキシは捕捉できません。 **What may happen next (future developments / projections written in the text)** ユーザーは `aroma.vcl` をアップロードまたは `aroma.vcl.tpl` から `build_vcl.py` で構築。FastlyのPoPsによりグローバルテストが可能で、ツールは概念実証を超えて本番利用へ拡張できる。 **What impacts this could have (users / companies / industry)** 採用すれば企業はIP禁止ではなくプロキシ検知に基づいてトラフィックをブロック/許可でき、プロキシベース攻撃に対するセキュリティが向上しつつサービス利用可能性が維持されます。

2025/12/26 5:34
**GOGが元創業者によって買収される**

- PCゲームのデジタル配信プラットフォーム「GOG」は、元共同創業者によって買収されることを発表しました。  
- この取引は会社のルーツに立ち返るものであり、DRM‑free(著作権管理が不要)ゲームへの注力を強化する見込みです。

**GOGが元創業者によって買収される** - PCゲームのデジタル配信プラットフォーム「GOG」は、元共同創業者によって買収されることを発表しました。 - この取引は会社のルーツに立ち返るものであり、DRM‑free(著作権管理が不要)ゲームへの注力を強化する見込みです。

## Japanese Translation: > Michał Kiciński – CD PROJEKT の共同創設者であり GOG のオリジナル共同創設者でもある彼は、GOG を CD PROJEKT から購入し、同社が「ゲームを永遠に生かす」ミッションに専念する独立企業として残ることを保証しました。 > 新しい所有権の下で DRM フリーアクセスは中心的な位置を保ちます:ライブラリはあなた自身のもののままで、オフラインインストーラも利用可能であり、データの所有権も GOG に留まります。ユーザーアカウント、任意の GOG GALAXY 機能、および寄付(これらは引き続き GOG 内の保存作業を資金提供します)は変更されません。 > GOG と CD PROJEKT の関係は維持されます:現在および今後の CD PROJEKT RED タイトルはすべて GOG でホストされ続けます。CD PROJEKT は高品質な RPG の開発に専念でき、GOG はクラシックを保存し、優れたゲームを称え、将来のレトロスタイルタイトルを形作り続けます。 > 2026 年の計画されたイニシアチブには、より野心的な救出ミッションとコミュニティエンパワーメントプログラムが含まれますが、新しい所有権の下でデータ共有やアカウント管理ポリシーに変更は期待されません。

2025/12/30 1:43
**Libgodc:Sega Dreamcast 用の Go プログラムを書く**

**Libgodc:Sega Dreamcast 用の Go プログラムを書く**

## Japanese Translation: ```markdown ## Summary libgodc は、Sega Dreamcast の制限されたハードウェア(16 MB RAM、単一コア SH‑4 CPU、OS がない)に適応した Go ランタイムです。ガーベジコレクション、ゴルーチン、チャネルなどの主要な Go 機能を実装し、コンソールの制約内で動作します。 プロジェクトは Go 1.25.3+ を必要とし、次のようにインストールできます。 ```bash go install github.com/drpaneas/godc@latest ``` コマンドラインツール(`godc`)がツールチェーンのセットアップ、ビルド、およびプログラム実行を処理します。典型的なワークフローは次のとおりです:フォルダを作成 → `godc init` → Go ファイルを書き込み → `godc build` → `godc run`. ドキュメントには、インストール、クイックスタート、設計決定、Dreamcast での有効な Go の使用法、KOS ラッパー、および既知の制限が含まれています。実機(SH‑4 @ 200 MHz)でのベンチマークは次のようになります: - Gosched yield ≈ 120 ns - Allocation ≈ 186 ns - Buffered channel ≈ 1.8 µs - Context switch ≈ 6.4 µs - Unbuffered channel ≈ 13 µs - Goroutine spawn ≈ 31 µs - GC pause 72 µs–6 ms `examples` ディレクトリには、`hello`、`hello_screen`、`blue_screen`、`input`、`goroutines`、`channels`、`timer`、`bfont`、`filesystem`、`vmu`、`brkout`、`pong` などのプログラムが含まれています。 libgodc は BSD 3‑Clause ライセンスでリリースされています。 将来のリリースでは、さらに多くの例を追加したり、ランタイム効率を改善したり、Dreamcast 固有の機能を導入する可能性があります。モダンな言語をホビイストやインディ開発者に提供することで、libgodc は Dreamcast の開発エコシステムを再活性化し、クロスプラットフォーム Go プロジェクトを実現できることを目指しています。 ```

2025/12/29 22:43
**Pandas with Rows(2022)**

**Pandas with Rows(2022)**

## Japanese Translation: (欠落した詳細と明確化を統合)** --- ## 要約 この記事では、1億2000万件のレコードから米国で平均国内フライト遅延が最大の5つの空港を見つけるためのいくつかの手法をベンチマークしています。 - **ベースライン:** すべての年次CSVに対して `pandas.concat` を使用すると MemoryError が発生します。 - **純Pythonストリーミング:** 空港ごとのカウント/遅延をメモリ内で保持(約1 MB)し、実行時間は約7分です。 - **PyPy:** 同じコードを PyPy で実行すると RAM が約40 MB使用され、完了までに約4 m 40 s(CPython の約⅔)かかります。 - **最適化されたpandas:** `Origin`、`Year`、`Month`、`DayofMonth`、`CRSDepTime`、`DepTime` だけを読み込み、それらを効率的な dtype(`category`、`uint16/uint8`)にキャストします。これで実行時間が約2 m 45 sに短縮され、結合時のピークは8.1 GBです。CSV のロードに 80 % 以上が費やされています。 - **Pandas + PyArrow エンジン:** `engine='pyarrow'` に切り替えると実行時間が約1 m 10 s(元の約42 %)に短縮され、ピークメモリは8.1 GBを維持します。マルチスレッドは役立ちますが、ディスク I/O がボトルネックです。 - **直接 PyArrow API:** 各年次 CSV を Arrow テーブル(`convert_options`)に読み込み、`pyarrow.concat_tables` で結合し、pandas に変換すると約50 sの実行時間になり、ピーク RAM は7.5 GBです(pandas/PyArrow のピークの93 %)。 - **年ごとのアプローチ:** 年を1年ずつ処理し、空港ごとの合計/カウントを集約してから年全体で縮減すると、実行時間は約37 s、ピーク RAM はわずか900 MB(完全ロード法の12 %)です。 - **並列 pandas(8 ワーカー):** 各 CSV を並列に読み込む multiprocessing プールを使用すると実行時間が約53 s(単一コア pandas の約1/3)まで短縮されますが、ディスク I/O に制限されます。プロセスごとのピーク RAM は約400 MBです。 データセットはハーバード大学の「Data Expo 2009: Airline on time data」(1987‑2008年)から取得され、22 個の CSV ファイルで約13 GBに圧縮されています。テストは単一 Linux マシン(i7‑8550U、16 GB LPDDR3 RAM、NVMe SSD、スワップなし)上で Arch Linux + KDE Plasma 環境で実行されました。 **結論:** メモリ制限はストリーミングや年ごとの処理によって回避できます。パフォーマンス向上は PyPy、PyArrow エンジン、または直接 Arrow API によって得られます。並列化はわずかなスピードアップを提供しますが、最終的にはディスクスループットに制限されます。これらの知見は、大規模航空データセットを扱うデータサイエンティストや航空会社/規制当局が遅延パターンを分析する際に役立ちます。 ---

2025/12/26 17:52
AIは私たちに「良いコードを書く」ことを強制しています。

AIは私たちに「良いコードを書く」ことを強制しています。

## Japanese Translation: ## Summary この記事は、自律ソフトウェアエージェントを信頼できるようにするには、厳格なガードレール(特に 100 % テストカバレッジ、明確なファイル構成、および自動化ツール)が必要だと主張しています。 - **テストカバレッジ**:エージェントが書くすべての行は二重チェックされるべきであり、未検証の行は明示的な「to‑do」項目となります。これにより、既存のコードか新規追加なのか曖昧さを排除します。 - **実行可能な例**:エージェントは変更ごとに動作するコードを提供せざるを得ず、「これは正しそうだ」という漠然とした回答を排除し、信頼性を段階的に向上させます。 - **ファイルシステム構成**:小規模でスコープのはっきりしたファイル(例:`./billing/invoices/compute.ts`)はコンテキスト読み込みを改善し、切断リスクを低減します。 - **型安全性とツール**:自動リンター・フォーマッタおよび TypeScript の重用により不正な状態が排除され、モデルのアクション空間が縮小され、意味的明確さ(例:`UserId` などのカスタム型)が提供されます。 - **API コントラクト**:OpenAPI スペックは強力に型付けされたクライアントを生成し、PostgreSQL の型システムと Kysely はデータへの型付きアクセスを実現します。サードパーティのクライアントラッパーも整合性のために強力な型を公開します。 - **ガードレール速度**:全テストスイートは高い並行度、外部呼び出しのキャッシュ、および強固な隔離で約 1 分で実行され、エージェントの反復中に頻繁に再実行できます。 - **ワークフロー自動化**:単一の `new-feature <name>` コマンドが git worktree を作成し、非 git 設定をコピーし、依存関係をインストールして面接エージェントを起動します。プロセスは 1–2 秒で開始される必要があり、繰り返し使用を促進します。 - **並列環境隔離**:ユニークなポート、データベース名、キャッシュプレフィックス、または Docker コンテナにより、複数の worktree がクロストークしないようにします。 これら厳格なガードレールを採用することで(ツールとインフラへの前提投資が必要ですが)、チームはエージェント型コーダーの潜在能力を解き放ち、急速開発サイクルで見落とされやすい「良いコード」の基準を確立し、最終的にバグと保守コストを削減できます。

2025/12/30 4:11
**Deutsche Bahn に誘拐されて**

**Deutsche Bahn に誘拐されて**

## Japanese Translation: A Cologne‑to‑Meckenheim RE5 train (ID 28521) departed Cologne Main Station at 15:30 on 24 December 2025 and was already 20 minutes late when it left. ドイツ・ケルン本駅(ID 28521)から出発したRE5列車は、2025年12月24日15時30分に出発し、すでに20分遅れていた。 The driver announced that “issues around Bonn” would require a detour via Cologne South → Troisdorf → Neuwied, abandoning the usual left‑bank Rhine route. 運転手は「ボン周辺の問題」により、ケルン南駅→トロイスドルフ→ニューヴァイト経由で迂回し、通常の左岸ライン(ライン川沿い)を外れると発表した。 Passengers were not scheduled to stop at Troisdorf; the train instead continued to Neuwied (63 km from the passenger’s grandmother’s house), passing all fifteen stations between Troisdorf and Neuwied. 乗客はトロイスドルフで停車する予定ではなく、列車は代わりにニューヴァイト(乗客の祖母のお宅から63 km)へ進み、トロイスドルフとニューヴァイト間の15駅すべてを通過した。 The journey was far longer than the planned ~35 km route, leaving the narrator feeling “kidnapped.” この旅程は計画されていた約35 kmルートよりも大幅に長く、語り手は「誘拐された」ような感覚を抱いた。 The scheduled arrival at Bonn was 15:54; DB normally considers trains on time if they are less than six minutes late, so this incident fell outside normal tolerance. ボンへの予定到着時刻は15:54で、DBは通常6分以内の遅延なら時間通りとみなすため、この件は許容範囲を超えていた。 The passenger plans to seek compensation under DB’s policy (1.50 EUR per kilometre with a minimum payout of 4.00 EUR), which will depend on whether the detour meets coverage criteria. 乗客はDBのポリシー(距離あたり1.50ユーロ、最低支払額4.00ユーロ)に基づいて補償を求める予定であり、迂回がカバレッジ基準を満たすかどうかによって決定される。

2025/12/29 21:24
**コンパイラにおける静的割り当て**

**コンパイラにおける静的割り当て**

## Japanese Translation: (combining missing points and tightening language):** ``` ## Summary TigerBeetle の「静的割り当て」設計―起動時にコマンドライン引数に基づいてすべてのメモリを確保し、再割り当てを行わない――は RAM 使用量を制限します。システムは 1 MiB 以下の有限なメッセージのみを処理し、データはディスクに保存されます。不安定なネットワークでは、処理できないメッセージを永続的にキューに保持する代わりに単純に破棄します。この構成型アプローチにより、複数の有限 I/O サブシステム(例:routing.zig)を追加オーバーヘッドなしで組み合わせることができます。 記事はコンパイラも同様の分割アーキテクチャを採用できると主張します。大きな不変「出力領域」を持ち、O(1) メモリで処理される小さなストリーム処理コアが存在する構成です。各コンパイルチャンクは厳密に有限(例:単一ソースファイルを約 4 MiB に制限し、実行時に上書き可能)になります。変更間で中間データを永続化するために、モデルは生ポインタの代わりにインデックスを使用することを提案します。 成功すれば、この静的割り当てスタイルはコンパイラコードを簡素化し、メモリ不足エラーを減らし、保守性を向上させる可能性があります。これによりコンパイラ開発者、大規模ビルドシステム、および広範なソフトウェアツールエコシステム全体が恩恵を受けます。著者はこの分離を実験し、静的割り当てがデータベースシステムにもたらしたのと同じ明瞭さをもたらすかどうかを検証する予定です。 ```

2025/12/24 7:53
**オベリスク 0.32:**  
- **キャンセル機能**  
- **WebAPI**  
- **PostgreSQL(Postgres)**

**オベリスク 0.32:** - **キャンセル機能** - **WebAPI** - **PostgreSQL(Postgres)**

## Japanese Translation: **概要** Obelisk 0.32 は、ワークフローエンジンをより柔軟で堅牢にするための複数の新機能を導入します。 1. **協調的キャンセル**(Cooperative cancellation): ワークフローとアクティビティが親からキャンセルされた際に、タスクをきれいに停止できるようになり、分散サガで自然な補償操作を実現します。 2. **多形式 WebAPI** (プレーンテキストおよび JSON): gRPC だけでなく、HTTP 上のテキストも扱えるようになり、サーバーは gRPC / gRPC‑Web に加えてポート 5005 でテキスト通信を受け付けます。 3. **PostgreSQL サポート**: マルチノードデプロイメントに対応し、高可用性構成が可能となります。これにより、単一障害点を排除し、仮想マシン間でスケールアップが容易になります。 4. 新しいプレーンテキスト HTTP ポート (5005) が外部アクセスと設定を簡素化します。 **主な詳細** - キャンセルは gRPC または WebAPI を通じて行われますが、対象は **葉アクティビティ** と遅延リクエストのみです。ワークフロー全体のキャンセルはできません。 - アプリ起動時のワークフロー例では「すべてか無い」(all‑or‑nothing) のセマンティクスが示され、子プロセスの失敗がトップレベルでクリーニングをトリガーします。これにより協調的キャンセルの実際の動作が確認できます。 - PostgreSQL の設定は `obelisk.toml` に記述し、その利用により WASM コンポーネントを VM 間で分散させ、負荷に応じて動的にスケールアウトできるようになります。 これらの拡張機能は、SQLite + Litestream バックアップと gRPC のみのキャンセルという以前の制限を克服し、Obelisk をより堅牢でスケーラブルなデプロイメントへと位置づけます。

2025/12/30 4:58
自分が関わらないソフトウェアは、設計することはできません。

自分が関わらないソフトウェアは、設計することはできません。

## Japanese Translation: **要約** 大規模ソフトウェアプロジェクトでは、実際にコードを書き維持しているエンジニアから効果的な設計が生まれるべきです。彼らは細部を熟知しており、現実的な意思決定が可能です。汎用的で高レベルの指針は具体的なコードベースに合わないことが多く、既存パターンとの一貫性とシステムの実際的制約が選択を導くべきです。Hacker News の議論では、意見の相違は主に優先順位の差から生じると指摘されました。一部は確立された原則への厳格な遵守を主張し、他方は現在のコード状態への実用的適応を強調します。 **重要ポイント** - **エンジニアのみが具体的な詳細について有意義に議論できる**。彼らこそがコードベースを深く知っている。 - **汎用的「問題に合わせて設計する」アドバイスは、主に全く新しいプロジェクトで役立つ**。数個の具体的オプションの決定や会社全体のアーキテクチャ(例:クラウド vs. データセンター)の意思決定に有用だが、日常業務では既存システムへの知識不足から無効になることが多い。 - **大規模コードベースでは理想化された原則よりも一貫性が重要**。実世界の制約は安全な実装選択肢を数に限定し、これらの制約は予測困難な結果を招くことがある。 - **優れた設計はサブシステム間の相互作用に深く精通した小規模グループで行われる**。抽象的な「大局観」ミーティングではなく、実際のエンジニアリングチーム内で行われるべき。 - **建築家は新しいイニシアティブに対する長期的経路を設定し、トレードオフ解決を支援し、広範な技術選択を導くことに焦点を当てる**。すべてのプロジェクトを完全に担当するよりも重要。 - **デザイナーは自身の推奨が実際にどのように実行されるかについて責任を負う**。成果と功績は実装を担うエンジニアと連動すべき。 コードを理解している者に意思決定権限を委ねることで、組織は設計決定を実装現実とより良く整合させ、達成不可能なアーキテクチャ理想に時間を浪費することを回避できる。

2025/12/29 16:54
高性能C++ハッシュテーブル:SIMDメタデータグループスキャンを用いた実装

高性能C++ハッシュテーブル:SIMDメタデータグループスキャンを用いた実装

## Japanese Translation: GroupedSIMDElasticは、軽量でヘッダーオンリーのC++17ハッシュテーブルです。500 k要素を超える大規模テーブルに対して、現在最先端とされる`ankerl::unordered_dense`よりも優れた性能を発揮します。この性能は、各スロットあたり1バイトのメタデータ(ビット7が占有済みフラグ、ビット0–6に7ビットハッシュフラグメント)を格納し、16個の連続したスロットを「クワドラティックジャンプパターン」(`h + 16×n²`)で探索することで実現します。SIMDスキャンはキー比較前に約127/128件の非一致を除外し、1 M要素時に最大で約1.5倍速い検索(61.5 ms対104 ms)が可能です。一方、挿入性能はやや遅くなるものの(70.1 ms対50.8 ms)、それでも同等か僅かに劣ります。APIには`insert`、`find`、`contains`、`operator[]`が含まれ、`size()`、`capacity()`、`load_factor()`、`max_probe_used()`などの統計情報も提供します。 実装はSSE2のみを必要とし、外部依存はなくMITライセンスで配布されています。Google の Swiss Tables および 2025年2月に発表された「Elastic Hashing」論文(Yao の均一探索仮説を否定したもの)からインスピレーションを得ています。実験結果では、散在型 SIMD ガザリはグループ化探索より約5倍遅いことも示されています。 現在の制限点としては、挿入オーバーヘッドが高い、削除機能がない、固定容量(リサイズ不可)、ARM NEON サポートが欠如していることがあります。将来的にはこれらの機能追加とプラットフォーム対応拡張を予定しています。ソースファイルは `grouped_simd_elastic.hpp`、ベンチマークおよびドキュメント用に `hybrid_elastic.hpp`(基準実装)、`benchmark_final_sota.cpp`、`INSIGHTS.md`、`EXPERIMENT_RESULTS.md` です。

2025/12/24 9:27
メタ社の広告ツールは、上位パフォーマンスを示していた広告をAI生成されたものに置き換え始めました。

メタ社の広告ツールは、上位パフォーマンスを示していた広告をAI生成されたものに置き換え始めました。

## Japanese Translation: 以下は、主要なポイントをすべて取り入れ、根拠のない推測を避けた簡潔なまとめです。 --- ### 要約 Meta の生成AI広告ツールは、意図せずに誤解を招くまたは不正確な広告を作成するクリエイティブ機能を有効化しており、広告主が隠れたトグルを手動で検索し無効化する必要があります。 - **True Classic** は、30〜45歳の男性をターゲットにしたトップパフォーマンス広告が 3 日後に「リビングチェアに座るおばあさん」のAI画像に置き換えられました。 - **Kirruna** は、ひねった足を持つモデルを表示し、**Lectric** は雲の中を飛ぶ車のトランクと共に「私のトランクに入れる最も簡単なeBikeは何ですか?」という質問を投げました。Kirruna は顧客が不一致の商品を受け取ったため、2 回の返金を発行しました。 - Meta の設定 ― 「新しいクリエイティブ機能をテストする」「自動調整」「Advantage+ クリエイティブ」― が自動的に有効化されると、広告主は知らずに不要な AI 広告に予算を費やすことになり、手動で無効化した後でもプラットフォームがこれらのトグルを再びオンにするケースがあります(Flat Circle の CEO Rok Hladnik が報告)。 - **AdsFlow** は Yuzu Knives の Jonas Vonk によって設立され、広告主が隠れた AI クリエイティブトグルを見つけて無効化するのを支援します。 - Meta の広報担当者は、数百万もの広告主が Advantage+ ツールを重視しており、公開前に生成画像をプレビューできると述べました。同社はフィードバックを基に機能改善を継続しています。 これらの事例は、ブラックボックス AI システムや明白に AI が生成した広告への消費者抵抗について懸念を示し、より透明でユーザー制御可能な AI 広告機能へ移行する動きと、第三者ソリューションや厳格な内部レビュー手順への依存度増加を促しています。

2025/12/30 4:51
未定義動作への関心を呼び起こした、本番環境で発生したバグ。

未定義動作への関心を呼び起こした、本番環境で発生したバグ。

## Japanese Translation: ## 改訂版まとめ この記事では、C++ の HTTP‑API ハンドラにおける実際のバグを報告しています。`Response` 構造体は 2 つの `bool` メンバーと 1 つの `std::string` を持ち、デフォルト構築された場合です。この構造体には非 POD(Plain Old Data)メンバーがあるため、コンパイラは各フィールドを *デフォルト初期化* するだけのデフォルトコンストラクタを生成します。結果として `bool` フィールドは未定義状態のままとなり、これらの値を読み取ると `{ "error": true, "succeeded": true }` が返されますが、実際にはエラーは発生していません。 記事では C++ のデフォルト初期化規則について説明し、2 つの修正策を提示しています。 1. 明示的に両方の `bool` メンバーを `false` に初期化するデフォルトコンストラクタを追加(文字列は `{}` を使用)。 2. クラス内でデフォルト値を設定 (`bool error = false; bool succeeded = false;`)。 簡易的な回避策として、変数を値初期化 (`Response response{};`) するとすべてのフィールドがゼロパディングされ、定義を変更せずに問題を解消できます。 また、記事は静的解析ツールについてもレビューしています。Clang/Tidy は構造体が関数へ渡された際にこのパターンを検出でき、cppcheck も過去には検出していましたが、将来の回帰が懸念されています。実行時サニタイザー(ASan/UBSan)は無効な `bool` 値 (`8`) を検出することで未定義動作をフラグします。 同様のケースをビルド時に捕捉するため、著者は libclang プラグインを構築しました。コードベースで 1 件のみ偽陽性が検出されました。記事では `bool` の未定義値読取は UB とされていますが、`unsigned char` や `std::byte` のような型ではそうではないと指摘しています。 結論として、構造体設計と初期化に細心の注意を払うことで、予測不能な API 応答や下流での失敗につながる微妙な未定義動作を回避するよう促しています。

2025/12/30 3:17
### なぜ Rust からアセンブリを呼び出すと、C からの呼び出しよりも遅くなることがあるか

手書きで作成したアセンブリルーチンを **C** から呼び出す場合、コンパイラは次のように最適化できます。

1. **プレーンで保護されていない呼び出しを生成** – 関数には Rust のランタイムオーバーヘッドがありません。  
2. **呼び出し元のレジスタを保持** – 呼び出し規約(例:`__cdecl` や `__stdcall`)に従い、保護すべきレジスタと破壊されるレジスタを区別します。  
3. **安全性チェックを行わない** – C はデフォルトで「unsafe」とみなすため、追加の検証が発生しません。

一方で同じアセンブリルーチンを **Rust** から呼び出すと、以下のような微妙な差異がオーバーヘッドを招くことがあります。

| 観点 | Rust 呼び出し | C 呼び出し |
|------|----------------|------------|
| **呼び出し規約** | デフォルトでは `extern "C"` がシステム ABI と一致しますが、`#[no_mangle]` を明示せずに使用すると、コンパイラが名前マングリングやシンボル解決を処理する小さなラッパーを追加することがあります。 | 直接 ABI を使用し、ラッパーは不要です。 |
| **ABI の不一致** | Rust の関数シグネチャがアセンブリの期待するパラメータ(呼び出し規約・スタック整列・レジスタ使用)と合わない場合、コンパイラはスタック/整列を調整したり、引数を別順序で渡すコードを挿入します。 | C コンパイラは呼び出しのレイアウトを正確に知っています。 |
| **安全性ラッパー** | Rust は `extern "C"` 境界を跨ぐ際に追加の安全チェック(例:NULL ポインタの検査、関数ポインタが NULL でないことの確認)を生成する場合があります。これらは微小ですがマイクロベンチマークでは影響します。 | C にはそのようなチェックはありません。 |
| **インライン化と最適化** | アセンブリルーチン自体はインライン化できないため、Rust は通常の呼び出し命令を発行します。周囲の Rust コードが高度に最適化(例:ヘルパー関数の積極的なインライン化)されていると、呼び出しオーバーヘッドが目立ちます。 | C コンパイラは小さなラッパーをインライン化したり、一部チェックを削除してオーバーヘッドを減らすことがあります。 |
| **リンカ / シンボル解決** | Rust のリンカーは、`#[link(name = "...")]` で正しく宣言されていない `extern` シンボルに対し追加のリロケーションエントリを生成する場合があり、一部プラットフォームでは実行時に微小な検索コストが発生します。 | C リンカーは通常、余分な間接参照なしでシンボルを直接解決します。 |

#### 測定可能な遅延の典型的原因

1. **呼び出し規約の不一致** – 例:Rust が `extern "C"` を使用しているが、アセンブリは `__stdcall`(またはその逆)を期待している。  
2. **スタック整列のズレ** – アセンブリルーチンが 16 バイト整列を前提としているのに、Rust の呼び出し側で 8 バイトのまま残っていると、コンパイラはスタック調整コードを挿入します。  
3. **名前マングリング / シンボル検索** – `#[no_mangle]` を忘れると追加の名前解決ステップが発生し、別関数が呼び出される可能性があります。  
4. **引数渡しの違い** – Rust がレジスタで引数を渡す一方、アセンブリはスタックを期待している(または逆)と、余分な移動命令が生成されます。

#### それらを比較可能にする方法

```rust
#[no_mangle]
pub extern "C" fn my_asm_fn(arg1: i32, arg2: i64) -> i32 {
    // C の呼び出し規約に従ったインラインアセンブリ。
    unsafe { asm!("...", in("rdi") arg1, in("rsi") arg2, out("eax") ret); }
}
```

- **`extern "C"` を明示的に宣言** して、Rust が C コードと同じ ABI を使用するようにします。  
- **`#[no_mangle]` を使う** ことで名前マングリングを防ぎます。  
- **引数の順序・型を正確に合わせる** ことでアセンブリ側の期待と一致させます。  
- **スタック整列を保証する**(必要なら `#[inline(always)]` を付けたり、手動で整列処理を入れたりします)。

これらが揃えば、Rust の呼び出しオーバーヘッドはほぼ C と同等になり、ベンチマーク上で差異が見えなくなるはずです。もしまだ違いが残る場合は、生成されたアセンブリをプロファイルして、余分な前処理/後処理コードが出力されていないか確認してください。

### なぜ Rust からアセンブリを呼び出すと、C からの呼び出しよりも遅くなることがあるか 手書きで作成したアセンブリルーチンを **C** から呼び出す場合、コンパイラは次のように最適化できます。 1. **プレーンで保護されていない呼び出しを生成** – 関数には Rust のランタイムオーバーヘッドがありません。 2. **呼び出し元のレジスタを保持** – 呼び出し規約(例:`__cdecl` や `__stdcall`)に従い、保護すべきレジスタと破壊されるレジスタを区別します。 3. **安全性チェックを行わない** – C はデフォルトで「unsafe」とみなすため、追加の検証が発生しません。 一方で同じアセンブリルーチンを **Rust** から呼び出すと、以下のような微妙な差異がオーバーヘッドを招くことがあります。 | 観点 | Rust 呼び出し | C 呼び出し | |------|----------------|------------| | **呼び出し規約** | デフォルトでは `extern "C"` がシステム ABI と一致しますが、`#[no_mangle]` を明示せずに使用すると、コンパイラが名前マングリングやシンボル解決を処理する小さなラッパーを追加することがあります。 | 直接 ABI を使用し、ラッパーは不要です。 | | **ABI の不一致** | Rust の関数シグネチャがアセンブリの期待するパラメータ(呼び出し規約・スタック整列・レジスタ使用)と合わない場合、コンパイラはスタック/整列を調整したり、引数を別順序で渡すコードを挿入します。 | C コンパイラは呼び出しのレイアウトを正確に知っています。 | | **安全性ラッパー** | Rust は `extern "C"` 境界を跨ぐ際に追加の安全チェック(例:NULL ポインタの検査、関数ポインタが NULL でないことの確認)を生成する場合があります。これらは微小ですがマイクロベンチマークでは影響します。 | C にはそのようなチェックはありません。 | | **インライン化と最適化** | アセンブリルーチン自体はインライン化できないため、Rust は通常の呼び出し命令を発行します。周囲の Rust コードが高度に最適化(例:ヘルパー関数の積極的なインライン化)されていると、呼び出しオーバーヘッドが目立ちます。 | C コンパイラは小さなラッパーをインライン化したり、一部チェックを削除してオーバーヘッドを減らすことがあります。 | | **リンカ / シンボル解決** | Rust のリンカーは、`#[link(name = "...")]` で正しく宣言されていない `extern` シンボルに対し追加のリロケーションエントリを生成する場合があり、一部プラットフォームでは実行時に微小な検索コストが発生します。 | C リンカーは通常、余分な間接参照なしでシンボルを直接解決します。 | #### 測定可能な遅延の典型的原因 1. **呼び出し規約の不一致** – 例:Rust が `extern "C"` を使用しているが、アセンブリは `__stdcall`(またはその逆)を期待している。 2. **スタック整列のズレ** – アセンブリルーチンが 16 バイト整列を前提としているのに、Rust の呼び出し側で 8 バイトのまま残っていると、コンパイラはスタック調整コードを挿入します。 3. **名前マングリング / シンボル検索** – `#[no_mangle]` を忘れると追加の名前解決ステップが発生し、別関数が呼び出される可能性があります。 4. **引数渡しの違い** – Rust がレジスタで引数を渡す一方、アセンブリはスタックを期待している(または逆)と、余分な移動命令が生成されます。 #### それらを比較可能にする方法 ```rust #[no_mangle] pub extern "C" fn my_asm_fn(arg1: i32, arg2: i64) -> i32 { // C の呼び出し規約に従ったインラインアセンブリ。 unsafe { asm!("...", in("rdi") arg1, in("rsi") arg2, out("eax") ret); } } ``` - **`extern "C"` を明示的に宣言** して、Rust が C コードと同じ ABI を使用するようにします。 - **`#[no_mangle]` を使う** ことで名前マングリングを防ぎます。 - **引数の順序・型を正確に合わせる** ことでアセンブリ側の期待と一致させます。 - **スタック整列を保証する**(必要なら `#[inline(always)]` を付けたり、手動で整列処理を入れたりします)。 これらが揃えば、Rust の呼び出しオーバーヘッドはほぼ C と同等になり、ベンチマーク上で差異が見えなくなるはずです。もしまだ違いが残る場合は、生成されたアセンブリをプロファイルして、余分な前処理/後処理コードが出力されていないか確認してください。

## Japanese Translation: 著者らは、rav1d の CDEF フィルタが dav1d の同等機能より約 30 % 遅く、総デコード時間の約 0.5 % を占めていることを発見しました。プロファイリングによりボトルネックは単一の `ld1` 命令にあり、期待される 10 サンプルではなく 441 サンプルがロードされていたことが判明しました。この問題は、生のポインタと入れ子になった `FFISafe<WithOffset>` ラッパーをアセンブリ関数へ渡すことで発生し、コンパイラがスタックレイアウトを最適化できず、必要以上に約 144 バイト多くのスタック割り当てが行われました。 未使用の `FFISafe` 引数( `_dst`、 `_top`、 `_bottom`)を削除し、`cdef_filter_block_c_erased` をスタブ化することで、その関数のサンプルカウントは 1,562 から約 1,260 に減少しました。 `WithOffset<T>` に `#[repr(C)]` を追加し、シグネチャを入れ子ラッパーではなく `WithOffset<*const FFISafe<...>>` を使用するよう再構成すると、コンパイラは冗長なスタックスロットを排除できました。 `cargo‑asm` の比較で `rav1d_cdef_brow` における割り当てが減少し、プロファイルでは dav1d と比べた場合の性能差が約 5 % に留まることが報告されました。 これらの変更後も純粋な Rust のフォールバックは正しく機能し続け、リファクタリングにより ABI‑安全ラッパーの不一致が低レベル Rust コードでスタックレイアウトの非効率性とキャッシュストールを引き起こすことが示されました。

2025/12/27 23:13
ソフトウェア開発の未来は、ソフトウェア開発者にあります。

ソフトウェア開発の未来は、ソフトウェア開発者にあります。

## Japanese Translation: **メインメッセージ** 大規模言語モデルは熟練したプログラマーの代わりにはなりません。彼らは開発を支援するツールであり、置き換えではありません。 **証拠と理由付け** * 43年にわたるプログラミングキャリアが著者に深い歴史的視点を与えている。 * 過去のサイクル―VB/Delphi、マクロ、Executable UML、No‑Code/Low‑Code―は開発者を排除すると約束したが、むしろ需要を増やした。これらのツールは信頼性と決定論的だった。 * 現在のLLMは非決定論的なコードを生成し、バグが多く保守が難しく、チームの速度を遅くすることがある。 * 大規模障害は「AI生成」コードに起因しており、その信頼性の欠如を浮き彫りにした。 * ディクストラは50年前に自然言語で計算論理を信頼的に表現できないと警告し、これはLLMへのプロンプトでも依然として問題となっている。 * 超大規模LLMは構築コストが高く適応性が限られており、長期的な将来性は疑問である。より控えめなAIアシスタント(例:Javaヘルパー)はプロトタイピングやインライン補完に有用かもしれない。 **文脈** 現在AIが開発者を置き換えているという信頼できる証拠はない。人員の変動はパンデミックによる過剰採用、借入コストの上昇、およびデータセンター投資に起因しており、AI導入ではない。 **影響と推奨事項** 熟練したプログラマーへの需要は供給を上回る。企業は今すぐ採用し、ポスト・マニア採用波に備え、リードタイムの短縮、信頼性の向上、および変更コストの低減が可能な開発者の育成に投資すべきである。AIツールと実証済みの技術的プラクティスを組み合わせることで、生産性を高めつつリスクを軽減できる。

2025/12/30 4:14
Binance の Trust Wallet 拡張機能がハッキングされ、ユーザーは 700 万ドルを失いました。

Binance の Trust Wallet 拡張機能がハッキングされ、ユーザーは 700 万ドルを失いました。

## Japanese Translation: (推測的な言語を削除)** **要約:** 暗号トレーダーは、似たようなウォレットに誤って資金を送信したことで、テザーで5,000万ドル近くを失いかけました。これは典型的なアドレス毒化詐欺です。盗まれた資金はすでにトーネード・キャッシュを通じて洗浄されており、犯人は残余残高の返還を要求するオンチェーン身代金メモを残しました。このメッセージには100万ドルの報奨金、法的脅迫、および法執行機関やブロックチェーンプロトコルとの協力を主張する内容が含まれています。メモ投稿以降、詐欺師のウォレットからはさらなる活動は確認されていません。 この事件は、アドレス毒化が長大な英数字アドレスを利用してユーザーに誤ったものをコピーさせる手法であることを示しています。トレーダー・取引所・保管業者・規制当局がアドレス検証チェックを強化し、こうした盗難発生時には法執行機関とより緊密に連携する必要性を強調しています。

2025/12/30 5:04