ドライバーがカーネルの仮定に異議を唱える場合

2025/12/26 9:32

ドライバーがカーネルの仮定に異議を唱える場合

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

本文は、Unix 系統が DisplayLink USB ディスプレイをサポートするようになった経緯を追っている。最初の LCD を 2009 年 3 月 12 日に Theo de Raadt が OpenBSD 上で X サーバーを開発している際に発見したことから始まる。DisplayLink は Windows/Mac 用のバイナリドライバーのみを提供し、Linux/FreeBSD/OpenBSD 向けのソースコードは公開していなかった。Florian Echtler がデバイスを逆コンパイルし、floe.butterbrot.org で文書化を行い、2009 年 5 月中旬にプロトタイプのオープンソースライブラリ(後に

libdlo
と呼ばれる)を公開したが、当初は圧縮機能が欠如していた。

2009 年 8 月に Marcus Glocker が OpenBSD の

udl
ドライバーに Huffman 圧縮テーブル(約 300 kB)を追加し、その後一連のパッチで USB FIFO 制限を解消するためにドライバが EAGAIN を返せるようにした。これにより
wsdisplay
がスリープできるようになった。9 月 1 日から 5 日にかけて「wscons stall」差分が導入され、端末エミュレーションに中止ロジックが追加された。その後の修正で中止状態を洗練させ、最終的な
udl
ドライバーは完全な EAGAIN サポートを組み込み、9 月 14 日以降はそれ以上の問題報告はなくなった。

また、OpenBSD にダメージ拡張機能付き X サーバーが追加され、ARMish や Landisk のようにシリアルコンソールのみを持つプラットフォームでもグラフィックコンソールが可能になった。これらの進展にもかかわらず、DisplayLink の新しいチップは Linux または OpenBSD 用のフリードライバーを提供しておらず、Ubuntu バイナリドライバーはまだ逆解析されていない。このギャップは Unix 系統で USB ディスプレイの採用を制限し続け、多くの場合ユーザーがプロプライエタリな Windows/Mac ソリューションや代替ハードウェアに流れる原因となっている。

本文

ユニックス系システムは50年以上の歴史があります。
コアとなる設計思想は今も通用していますが、コンピューティングの進化に伴い OS デザイナーは何度もその実装を再考せざるを得なくなりました。

デバイスドライバーの観点から見ると最大の変化は、起動時に列挙されて以後変更不可能だった「固定・コンパイルタイム」型ハードウェア構成から、デバイスが現れたり消えたりできる「ダイナミック」モデルへ移行したことです。最初は1990年代中頃にホットプラグ対応の SCSI コントローラ、次いでノートパソコン向け PCMCIA デバイス、そして USB・FireWire といった全機種共通デバイスが登場しました。

PCMCIA のサポートは数年間残りましたが(Linux では pcmcia‑cs、FreeBSD では laptop パッケージ)、USB が開発段階に入る頃には、リムーバブルデバイスを受け入れるための変更は既に完了しテスト済みでした。カーネルはそれらに対応できない理由がありませんでした。


物語

2009年3月12日 – テオ・デ・ラートが日本へ渡航

テオは東京で OpenBSD 開発者のライアン・マクブライドを訪れ、秋葉原に寄って新しいガジェットを探しました。数か月後、彼は X サーバーを動作させる小型 USB ディスプレイ(スマートフォン程度)を手に入れました。

画像提供:Marcus Glocker

このディスプレイのメーカーは DisplayLink です。Windows と macOS のみ対応するバイナリドライバーを配布しており、フリーソフトウェアコミュニティは苛立っていました。フローニャ・エクトラーとクリス・ホッジズはデバイスを逆解析し、Linux で動作させることに成功しました(詳細は https://floe.butterbrot.org/matrix/hacking/dlnk/ を参照)。

当時 OpenBSD 用のドライバーは存在せず、デバイスは汎用 USB 周辺機器として接続されていました:

<deraadt> ugen0 at uhub0 port 3 "DisplayLink LCD-8000U" rev 2.00/0.02 addr 2
<deraadt> Picked up that too

マティエ・ヘルブはフローニャの逆解析ノートを転送し、テオはデバイスをスイスの開発者クロード・ジェッカーに渡しました。ジェッカーはそれをマーサック・グロッカに引き継ぎ、彼は 4 月 6 日に DisplayLink にドキュメントを要求しました。

DisplayLink は「ライブラリが必要である」という一般的な回答と、後にオープンソース(LGPL)ライセンスで公開される予定のライブラリについて述べました。彼らはもしマーサックが望むなら DL‑160 アダプタを数個送付すると約束しました。

そのライブラリは金曜日の午後に発表され、5 月 9 日に最初のドライバーがツリーへ投入されました。


進捗と挫折

  • 5 月 15 日 – 公開ライブラリ(libdlo)がオンラインになりましたが、圧縮サポートが欠如していました。フローニャは公開で「圧縮なしでは使い物にならない」と不満を述べました。

  • 8 月 14–25 日 – マーサックは

    /etc/firmware
    に 300 kB のハフマン表を追加し、ドライバーに圧縮機能を実装しました。

  • 遅い 8 月 – 大量の画面更新が USB デバイスの FIFO がオーバーフローするため停止しました。カーネルにはリソース不足時にドライバーをスリープさせる仕組みがなく、全ターミナル操作は即座に完了できると仮定されていました。

ミオッド・ヴァラトはディスプレイドライバから tty 層へエラー経路を追加し、ドライバーがデータ受信不能の場合に

EAGAIN
を返せるよう提案しました。これによりカーネルはプロセスをスリープさせ、スペースが確保され次第再開するというモデル(シリアルポートと同様)が実現できます。

その後、9 月 1–5 日に一連の大規模差分がコミットされ、徐々に以下を追加しました:

  1. wsdisplay エミュレーション操作全てに対する戻り値。
  2. 部分的失敗時にロールバックできる「abort state」をターミナルエミュレータに実装。
  3. フレームバッファドライバと udl(4) を更新し
    EAGAIN
    を返すように修正。
  4. 未初期化変数、ダブルワイド文字処理などの小さなバグ修正。

最終パッチセットは 9 月 5 日にコミットされ、インストールメディアカーネルから大量のコードが削除されつつも、通常システム上では完全機能を維持しました。


結果

  • X サーバーサポート がツリーへ追加され、ARMish や landisk などのシリアルコンソールプラットフォームでグラフィックスコンソールや X サーバーが動作可能になりました。
  • デバイスはオーバーフローをきれいに処理できるようになり、もはや停止や更新損失が発生しなくなりました。
  • DisplayLink のチップは現在でも Linux も OpenBSD もサポートしておらず、Synaptics は Ubuntu 用のバイナリドライバーを提供していますが、まだ逆解析されていません。

デバイス自体はほぼ使用されなくなり、コミュニティの関心も薄れました。しかし、udl(4) の開発で得られた非同期 I/O、エラー伝搬、およびコンソールドライバにおける優雅な低下(グレースフルデグラデーション)についての知見は、将来のハードウェアサポートに大いに役立っています。

同じ日のほかのニュース

一覧に戻る →

2025/12/26 8:13

おそらく、デフォルト設定が高すぎる可能性があります。

## Japanese Translation: **(すべての重要ポイントを統合し、明確さを保つ)** --- ### 要約 著者は『ロード・オブ・ザ・リング』を声に出して読むことに二か月を費やし、第1部の終わりまで達しました。文ごとに「通常の時間の3倍」を意図的に遅く読むことで、口速で読むアプローチが急ぎを防ぎ、興味を高め、理解・没入・楽しみを深めることに気づきました。トールキンのイメージとムードは、ゆっくり読んだときにのみ心に完全に広がります。 彼はこの洞察を読み以外にも拡張します。食事を通常の速度の1/3または半分に遅らせると、食べ物への感謝が増し、掃除機をかけたり、メールをチェックしたり、リストを書いたりする際も急いで行うより満足度が高くなります。現代生活の無限の消費物は、高速摂取を促進し、本や食べ物、情報の完全な鑑賞を損ないます。「少ないほど良い」という格言は、過剰に早く消費するとその影響力を失います。 著者は、遅らせることで味覚と好みが変わり、濃密な文学作品や自家製料理が加工品より豊かになることもあると指摘します。今日の文化的規範はTikTokクリップ、加工食品、CGI映画などの高速で光沢のある消費を優先し、深い関与を犠牲にしています。 彼は読者に対して、通常速度の約1/3程度と極端に遅く消費する実験を行い、報酬が増える体験を促します。Raptitude読者向けに「アルコール・ソーシャルメディア・スナックなどを一か月間やめる」討論フォーラムを開設し、多くの人が1月に同様のイニシアチブへの関心を示しています。

2025/12/26 10:02

**MiniMax M2.1:** *実世界の複雑タスクに対応するために設計された―多言語プログラミング*

## Japanese Translation: ```markdown ## Summary MiniMaxは新しいM2.1 AI‑nativeモデルをリリースし、Rust、Java、Go、C++、Kotlin、Objective‑C、TypeScript、JavaScriptなど複数言語にわたる実世界のプログラミングとオフィス作業で明確なパフォーマンス向上を提供します。 主な強みは以下の通りです: - **多言語マスタリー**:Claude Sonnet 4.5およびGemini 3 Proを上回るベンチマークスコアを持ち、マルチランゲージコーディングタスクで最高レベル。全体的にはClaude Opus 4.5に近い性能。 - **WebDev & AppDevの進化**:ネイティブAndroid/iOS開発サポート、デザイン理解と美的表現の向上、3D科学シミュレーション、高品質ビジュアライゼーションによる持続可能なワークフロー。 - **インタリーブド・シンキング**:複合指示処理が改善され、オフィス環境での使い勝手を向上。 - **トークン効率的返信**:トークン消費を削減し応答時間を短縮、コーディングワークフローの効率化。 M2.1はまたVIBEベンチマーク(Web, Simulation, Android, iOS, Backend)も導入し、平均スコア88.6でClaude Opus 4.5にほぼ匹敵し、多くのサブセットでSonnet 4.5を上回ります。 Factory、Fireworks、Cline、Kilo、RooCodeなど国際AIプラットフォームからは速度、信頼性、多言語安定性、コスト効率が高いと評価されています。 モデルは2つのAPIバージョンで利用可能です:**M2.1**(フル機能)および **M2.1‑lightning**(同じ結果を持ちつつ高速推論)。どちらも自動キャッシュをサポートし、開発者体験をスムーズにします。 オープンソースウェイトはHugging Faceにホストされており、MiniMaxはさらにオープンソースの提供拡大とエージェントフレームワークやコンテキスト管理ツールへのサポート拡充を計画しています。 開発者と企業向けにM2.1はより効率的なコーディング支援、トークンコストの削減、および強化された多言語機能を提供し、ソフトウェア納品タイムラインの加速やAI開発エコシステムにおける運用費用の低減を可能にします。 ```

2025/12/25 22:02

Windows x86‑64 用の Python 3.15 インタプリタは、ほぼ 15 %速くなる見込みです。

## Japanese Translation: ## Summary Ken Jinは、macOS AArch64(XCode Clang)およびWindows x86‑64(MSVC)のCPythonのターミナル呼び出しインタープリターに関する以前の実績主張を部分的に撤回したものの、測定可能な速度向上を報告しています。macOSでは約5 %、Windowsでは実験的な内部MSVCビルドで最大15–16 %の改善が確認されています。ベンチマークは、「tail‑call threaded」インタープリターが従来のcomputed‑gotoループよりも優れていることを示しています。現代のコンパイラではその差は縮小しますが、実験的なVS 2026ビルドでは幾何平均で約16 %の利得が確認されています。この改善は、短いインタープリター・ループによりコンパイラがヘルパー関数(例:`PyStackRef_CLOSE_SPECIALIZED`)をインライン化し、レジスタ圧力を減らすことから生じています。 ターミナル呼び出しは、Josh HabermanのProtobufブログとHaoran XuによるClangの `__attribute__((musttail))` を使用したコピー&パッチ手法で広まりました。XCode Clangが修正されたCPython 3.14/3.15ではmacOS上で約5 %の速度向上が示され、Python 3.15「What's New」には長いスクリプトに対して最大40 %の速度向上が記載されています。MSVCチーム(Chris Eibl、Brandt Bucher)がリリースしたVisual Studio 2026はターミナル呼び出しをサポートし、具体的な利得をもたらします:spectralnorm_tc 1.48倍速、nbody_tc 1.35倍速、bm_django_template_tc 1.18倍速、xdsl_tc 1.14倍速。 速度向上はPython 3.15まで継続すると予想されます。機能がロールバックされない限り、macOSのバイナリにはターミナル呼び出しが有効化された状態で配布され、VS 2026を使用したWindowsビルドでも同様の利得が期待できます。CPythonコミュニティはさらにビルドフラグ(`--tail-call-interp`)を洗練させ、プロファイルガイド付き最適化(PGO)を統合して性能を向上させる可能性があります。 CPUバウンドのPythonワークロード(科学計算、ウェブフレームワークなど)を実行するユーザーは、わずかな速度改善に気付くかもしれません。Pythonバイナリを配布する企業はコード変更なしで高速な実行ファイルを提供でき、Visual Studioを使用するWindowsの開発者もランタイム効率の向上から恩恵を受けるでしょう。

ドライバーがカーネルの仮定に異議を唱える場合 | そっか~ニュース