TailTalk:Rust と Tokio を用いた現代的な非同期ユーザー空間 AppleTalk スタック

2026/09/13 8:43

TailTalk:Rust と Tokio を用いた現代的な非同期ユーザー空間 AppleTalk スタック

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

要約

Japanese Translation:

TailTalk は、Netatalk やカーネルドライバを使用せず、EtherTalk/LocalTalk(TashTalk)ネットワークを直接実装することで、Linux、macOS、Windows 向けのゼロ設定で完全にユーザースペース上動作する AppleTalk トールキットです。このツールは、同一マシン上に複数のインスタンスを実行してクラシックな Mac にファイルのコピーを行ったり、LaserWriters、ImageWriters、StyleWriters への印刷やこれらのデバイス向けの現代的非同期ソフトウェアの開発を可能にする、完全な Apple スタックを提供します。スタックには、ほぼ全ての LocalTalk ポート付き Mac と互換性のあるユーザ向け AFP サーバーが含まれており、リソースフォークを保持したまま Stuff-It アーカイブとフロッピーイメージをインポートできます。また、AirPrint/IPP を通じてプリンターの共有や、現代のプリンターをクラシックな Mac にブリッジする機能もサポートします。コアプロトコル(AARP、DDP、NBP、ATP、PAP、ASP、ADS、AFP)に対して完全非同期の API が提供されており、Unix/UDP ソケットおよび Protobuf ルーティング規則をサポートするインプロセスまたはデーモン(

tailtalkd
)アーキテクチャを採用しています。Rust 1.90+ で構築され、
cargo-packager
を使用して Linux 向けに AppImage、macOS 向けにアプリバンドル、Windows 向けには MSVC、npcap SDK および NSIS ツールを利用したインストーラーとしてパッケージ化されています。TailTalk は設定を最小限にしたプラグ&プレイ動作を設計しています。TashTalk USB は Silicon Labs CP210x ブリッジ(VID 10c4、PID ea60)に依存しており、Linux では
/dev/ttyUSB0
用の udev ルールが必要ですが、macOS 11+ はこのチップをネイティブでサポートし、それ以前のバージョンでは VCP ドライバが必要です。EtherTalk は macOS において GUI にデフォルトでコンパイルされていますが、Linux/Windows では
libpcap
/
npcap
のオプトインが必要であり、macOS ユーザーは
/dev/bpf*
のルート制限を回避するために
ChmodBPF
を必要とする場合があります。現在、TailTalk はルーターレスな設定で動作しており(ルーターサポートは進行中ですがまだメインラインには取り込まれていません)、AsanteTalk に対するデフォルトは Phase 1 であり、EtherTalk Phase 2 パケットが検出されるまで維持されますが、この構成下で Mac がサーバーを発見すると AFP レスポンスが落ちることがあります。機能検証のための 4 つのデモプログラム(
aep-echo
afp-server
nbp-lookup
pap-print
)があり、テストには PowerBook G3、LaserWriter/StyleWriter/ImageWriter、Macintosh SE/30、Classic などの実際のハードウェアおよび現代的な Linux マシンも含まれています。進行中のプロトタイプである TailTalk は既知のギャップ(例:完全なルーターサポート)があり、GPL v3.0 ライセンスの下で提供されており、貢献はまず issues を通じて行うことを推奨し、検証済みのシステムは PR にリストされています。最新のリリースは https://github.com/FeralFirmware/TailTalk/releases/latest で入手可能です。

本文

TailTalk プロジェクト概要

TailTalk は、Linux、macOS、Windows 上で EtherTalk または LocalTalk ネットワークを通じて完全なユーザースペース AppleTalk インプリメンテーションを構築するためのツールキットです。

  • Netatalk やあらゆるカーネルドライバーへの依存性は一切ありません。
  • ゼロから作成されたオリジナルプロジェクトです。
  • 必要なものは以下の 2 点のみ:
    • 生ソケットおよび/または TashTalk 互換のデバイス(LocalTalk の場合)
    • 古き良きコンピュータとの対話のための「忍耐強さ」

TailTalk は完全な AppleTalk スタックを提供し、同一マシンの同時複数スタック動作も可能です。

開発経緯と目的

  • 元々の目的:
    • 古い Mac 間でのファイルコピーの実現
    • LaserWriter、ImageWriter、ネットワーク StyleWriter へのプリント出力
    • これらのハードウェアと、現代的な非同期ソフトウェアとの通信
  • 現在のステータス:
    • 現状はルートなしの設定での動作のみをサポート。
    • ルーターが配置されたネットワークへの統合機能を開発中(今後メインラインコードに実装予定)。

設計思想

  • スタックの各部分は、当時の Mac で動作するように設計され、「ゼロ・コンフィグ」を可能とする。
  • 「プラグイン&ランニング」で手間なくすぐに利用できるよう心がけられています。
  • 重要: 非常に進捗中のプロトタイプのため、バグや未実装の機能が存在します。

TailTalk GUI

TashTalk USB とともに使用されているユーザー向けアプリケーションです。LocalTalk ポートを搭載したほぼすべての Mac で動作する AFP サーバーを含みます。

  • 共有機能: Stuff-It アーカイブやフロッピーディスクイメージをインポートし、共有パスにロード。リソースフォークを保持した状態でリモートクライアントから利用可能にします。
  • プリンタ共有:
    • LocalTalk 対応の LaserWriter、ImageWriter、StyleWriter を AirPrint / IPP プリンタとして共有
    • 逆方向:現代的なプリンタをクラシック Mac に共有
  • 入手方法: 最新リリースページ

特徴とアーキテクチャ

プロトコル対応

パケット解析器と完全に非同期の API を備えた、メインストリームの AppleTalk プロトコルのほとんどをカバーします。

  • AARP: AppleTalk アドレス解決プロトコル
  • DDP: データグラム配信プロトコル
  • NBP: ネームバインディングプロトコル
  • ATP: AppleTalk トランザクションプロトコル
  • PAP: プリンターアクセスプロトコル
  • ASP: AppleTalk セッションプロトコル
  • AFP: AppleTai ファイルシステムプロトコル
  • AppleTalk データストリームプロトコル

TashTalk 互換性

LocalTalk Mac との連携をサポート。

アーキテクチャ詳細

  • AARP/DDP の下層部分はデフォルトでは同一プロセス内で動作。
  • 共有デーモン
    tailtalkd
    を介して動作させることも可能。
    • デーモンはインターフェースを管理し、複数のクライアントに対して以下の情報を提供:
      • DDP ソケット
      • アドレス解決
      • ルーティングルール
    • インターフェースは Unix ソケットまたは UDP ソケット上の protobuf プロトコル(
      TailTalk::builder().daemon_unix(..)
      や純粋な C クライアントから利用可能)。
  • 詳細は
    docs/daemon-protocol.md
    を参照。

ビルド方法

前提条件

  1. Rust

    • Rust 1.90 以上が必要です。
    • rustup.rs からインストールすると、OS および CPU アーキテクチャに合わせたコンパイラがデフォルトでインストールできます。
  2. cargo-packager

    • Linux (AppImage)、macOS (アプリバンドル)、Windows (インストーラー) を構築するために必要。
    • インストールコマンド:
      cargo install cargo-packager
      
  3. Windows 専用設定

    • Windows MSVC の前提条件をインストールしてください(rustup book を参照)。
    • npcap SDK: マシン上のどこかに保存し、
      LIB
      環境変数を設定。
      • 入手先:npcap.com
      • 例:
        C:\npcap-sdk-1.13\Lib\x64

ビルドの実行

前提条件が整った場合、リポジトリのルートディレクトリから以下のコマンドを実行します。

全ビルド(Linux / macOS / Windows バンドルを含む):

cargo packager --release -f [フォーマット] -p tailtalk-gui

TailTalk GUI のみを作成:

cargo build -p tailtalk-gui --release

OS 別のビルドコマンド

生成されたバンドルは

dist/
ディレクトリに配置されます。

  • # Linux (AppImage)

    cargo packager --release -f appimage -p tailtalk-gui
    
  • # macOS (アプリバンドル)

    cargo packager --release -p tailtalk-gui
    
  • # Windows (NSIS インストーラー)

    cargo packager --release -f nsis -p tailtalk-gui
    

TashTalk USB

クイックスタートガイドは Setup.md を参照してください。

TashTalk USB は Silicon Labs CP210x USB-UART ブリッジ(VID 10c4, PID ea60)を使用しています。

Linux

cp210x
カーネルモジュールはインストール済みである可能性がありますが、デフォルトではルートユーザのみがアクセス可能です。ユーザーにアクセス権を与えるには udev ルール を作成してください。

echo 'SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", TAG+="uaccess"' \
  | sudo tee /etc/udev/rules.d/99-tashtalk-usb.rules
sudo udevadm control --reload-rules && sudo udevadm trigger
  • コマンド実行後に TashTalk USB デバイスを抜き挿し。
  • /dev/ttyUSB0
    (または類似)として表示され、ルート権限なしでアクセス可能になります。

Windows

  • Silicon Labs から CP210x VCP Windows ドライバー をインストールしてください。
  • npcap 1.88npcap.com からインストールしてください。

macOS


EtherTalk

  • macOS: デフォルトで GUI に組み込まれており、OS 同梱の
    libpcap
    を使用。
  • Linux / Windows: オプトイン機能。
    • インストール:
      libpcap-dev
      (Linux) または npcap SDK。
    • ビルドコマンド:
      cargo build -p tailtalk-gui --features ethertalk
      

macOS 特有の設定(ChmodBPF)

  • パケットキャプチャおよび注釈は
    /dev/bpf*
    を通じて行われますが、デフォルトではルートユーザのみアクセス可能。
  • 通常ユーザーで使用する場合: Wireshark のディスクイメージに含まれる
    ChmodBPF
    パッケージをインストールするか、以下のコマンドを実行してください。
    brew install --cask wireshark-chmodbpf
    
  • 仕組み:
    1. access_bpf
      グループの作成と BPF デバイスの割り当て
    2. ユーザーのグループ追加
    3. 重要: グループメンバーシップは新規ログインセッションからのみ適用されるため、ログアウトして再度ログインする必要があります。
  • ChmodBPF が未インストールの場合: GUI はイーサネットインターフェースセレクターを非表示にし、失敗トランSPORT を提示しません。

既存のプログラム(デモ)

開発プロセスにおいて機能を検証するために作成されたデモプログラムです。これらは生ソケットを使用して完全なスタックのコピーを実行するため(EtherTalk が有効化されている場合)、以下のいずれかを必要とします。

  • root ユーザとしての実行
  • コンパイル済みのバイナリに対して
    setcap
    を適用する
    • macOS の場合は ChmodBPF を参照のこと。

注意: TashTalk だけの利用であれば、上記の権限処理は不要です。

プログラム名機能説明
aep-echoターゲットアドレスへのエコーリクエストを送信し、応答時間を印刷する単純なプログラム
afp-serverAFP 1.0/1.1/2.0 と互換のサーバー。
開発途中ですが、クラシック Mac へのファイル操作やディレクトリブラウジングをサポート。
nbp-lookup指定された文字列に基づいて NBP ルックアップを実行し結果を返す
pap-printPAP プリンタ(LaserWriter)へ PostScript ファイルを送信。
※4/600 PS と自家用機でのみテスト済み
tailtalkd物理的な AppleTalk インターフェースを所有する下層デーモン。
Unix/UDP ソケットを通じて DDP、アドレス解決、ルーティングを提供。
tailtalk-guiEtherTalk および LocalTalk(TashTalk を介して)経由でフォルダをボリュームとして共有するためのシンプル GUI

テスト環境

単体テストに加え、実際のハードウェアを使用した検証が最良の方法です。以下のセットアップが使用されています。

  • TailTalk を動作する Linux マシン
  • Ethernet で動作する PowerBook G3 (Mac OS 9.2)
  • AsanteTalk を介した LaserWriter 4/600 PS
  • EtherTalk アダプターを介した Color StyleWriter 2200
  • LocalTalk オプションカード装着の ImageWriter II
  • AsanteTalk で動作する Macintosh SE/30 (System 7.1)
  • AsanteTalk で動作する Macintosh Classic (System 6.0.8)

AsanteTalk の挙動

最初に通電すると、EtherTalk フェーズの選択前にイーサネット側で流入パケットを「聴」きます。

  • フェーズ判定:
    • EtherTalk フェーズ 2 のパケットが見られなければ、デフォルトでフェーズ 1 を選択します。
  • TailTalk の対応状況:
    • フェーズ 1 はサポートしています。
    • LaserWriter や NBP および一部の基本的な操作では問題なく動作。
    • AFP では機能しません
      • Mac が AFP TailTalk サーバーを発見しますが、応答が捨てられているように見えます(原因不明)。

コントリビュート

より包括的な AppleTalk インプリメンテーションへの成長を歓迎します。

  • どのような貢献も歓迎いたします。
  • 変更前に必ず Issue を開いて議論してください。
  • Pull Request にて、その変更がどのシステムで検証されたかを明記してください。
    • 本プロジェクトを通じて古いシステムの奇妙さが実感を伴って理解できました。

ライセンス

本プロジェクトは GNU General Public License v3.0 の下で提供されています。詳細は

LICENSE
ファイルをご参照ください。

同じ日のほかのニュース

一覧に戻る →

2026/09/14 6:06

Claude Fable 5.1 が、370年もの間解読されてこなかったシフラル・ディスティッヒを解読しました

## Japanese Translation: Claude AI が、ロイヤリストのトマス・アークハート(*Logopandecteision* および *The Jewel* の作品)から提示された 2 つの歴史的に未解決のカギ合を成功裏に解読し、ブルートフォース計算や人類による事前の解読なしに、王チャールズ 2 世への隠された祈りを明らかにしました。これらのカギ合は、既知の解法が存在せず、CIA などの組織によってこれまで追求されたことがなかったため、特に選ばれました。大規模なデータ処理ではなく、モデルは単純で埋め込まれた構造的ロジックを認識しました:一方のカギ合は、各数字をアークハートの 32 の「Proquiritations」内の単語インデックスにマッピングし、他方は *The Jewel* のページインデックスに数字をマッピングし、それらのページの最初の一語の頭文字を採用します。これにより、「O GOD UPHOLD KING CHARLS THE SECOND / MAKE HIM THE SUPREME RULER OF THIS LAND」という 2 つのロイヤリストの祈りと、「GREAT LORD, MANTAINE THAT REGAL FAMILIE / WHEREOF KING CHARLS THE SECOND IS THE HEAD...」という ottava rima 形式の祈りが得られ、写本エラー、ハイフン接続語、ページシフトオフセット、および *The Jewel* の不読み可能なセグメントによる軽微な不一致を除いて正確です。検証の結果、275 の位置のうち 231 が正確な最初の単語の一致を示しています。1652 年版の *Jewel* のフリーデジタル画像が存在しないため、残りの不明点を解決するには実物コピーまたはジャック&ライアルの 1983 年版が必要です。この成果は、高度な AI が以前見過ごされてきた微妙な構造的パターンを検出することで歴史的真実を明らかにすることを示しており、暗号解析を計算的なブルートフォースからパターン認識へ転換しました。

2026/09/14 2:37

Google はなぜ依然として不適切な広告を表示し続けているのでしょうか?

## Japanese Translation: Google の高度な AI モデルである Gemini は、iOS システムアラートのパロディを用いてユーザーをクリックさせるよう誘導する欺瞞的な YouTube 広告を特定しました。オペレーティングシステムのダイアログを模倣した広告を禁止する厳格なポリシーが存在にもかかわらず、この誤解を招くクリエイティブは複数回のユーザー苦情にもかかわらず人間による審査官によって以前承認されていました。広告は非機能のボタンを用いて緊急のハードウェア故障状態を偽造し、視聴者にデバイスが直ちに技術的危機に直面しているという錯覚を成功裡に抱かせました。この操作は虚偽表示に関する基本的なルールに違反し、プラットフォームの安全メカニズムに対するユーザーの信頼を損ないます。したがって、Google はクリエイティブコンテンツを即座に承認停止するよう推奨し、ポリシー違反警告を発出することを示唆しています。広告主がこの種の欺瞞的な実践を継続した場合、アカウントの完全な停止のリスクに直面します。この事例は、人間による監視と自動検知の間にある重大なギャップを浮き彫りにしており、Google はこれらの洗練された詐欺を特定できる強力な AI を保有していますが、システムはまだ有害コンテンツがユーザーに到達する前に能動的にブロックするためにそれらを完全に活用していないという状況です。

2026/09/10 21:27

Julia 1.13 のハイライト

## Japanese Translation: Julia 1.13 がリリースされ、回帰と課題を特定することに焦点を当てたテスターおよびコントリビューターからの大きな貢献が反映されています。今回のアップデートは、特に起動時間とパッケージの前コンパイルにおいて劇的なパフォーマンス向上をもたらします。ベンチマークによると、パッケージの読み込みはバージョン 1.12 に比べて約 30% 速く(LTS の 1.10 に比べて約 10-20% 速く)、アプリケーションの起動時間は 1.12 に比べて約 20% 向上しており、平均的なスピードアップ率は約 1.22 倍です。これらの改善は、AbstractString および数値型に対して RapidhashNano を採用したことであり、イメージオブジェクトのマーキングをスキップしてフルコレクション時間を短縮した強化された garbage collection、そして新しいデフォルトのハッシュングアルゴリズムという技術的なアップデートによって実現されています。より迅速な開発ワークフローを支援するために、重要なバグ修正により Ctrl-C を通じた割り込み処理がより信頼性高く、タスクのカANCEL mechanisms が改善されました。また、リリースには REPL に直接組み込まれる貴重な開発者ツールが含まれます:内部実装による構文ハイライトは OhMyREPL.jl などの外部パッケージの必要性を排除し、新しい fzf スタイルの履歴検索(Ctrl-R)がファジー検索と複数結果の選択、そして REPL モードの表示をサポートします。また、Windows では効率的なテキスト入力を可能にする括弧付きペースト機能も利用可能です。診断機能をさらに強化するために、「--trace-eval」フラグにより、テストスイートやスクリプトでの停滞を特定しながらトップレベルの評価進捗を監視することができ、新しい「@__FUNCTION__」マクロは「#self#」の代替としてパブリック API として機能します。さらに、イントロスペクションマクロは型の付いた呼び出し式を受け付けるようになり、Time To First X(TTFX)モニタリングは 2026 年 9 月 7 日より稼働開始される新しい CI ジョブを通じて Julia の開発プロセスの一部として統合されました。これらの改善は、テスト時や大規模スクリプト実行時の待ち時間を大幅に削減し、個人のコントリビューターおよびエンタープライズチームの両方に対して全体の生産性を高め、より速いフィードバックループを提供します。 ## Text to translate: Julia version 1.13 has been released with significant contributions from testers and contributors focused on identifying regressions and issues. The update delivers dramatic performance improvements, particularly in startup times and package precompilation. Benchmarks indicate that loading packages is now roughly 30% faster than in version 1.12 (and roughly 10-20% faster than 1.10 LTS), while application startup times have improved by approximately 20% over 1.12, with a mean speedup of ~1.22x. These gains are driven by technical updates including the adoption of RapidhashNano for AbstractString and numeric types, enhanced garbage collection that skips marking image objects to reduce full collection time, and new default hashing algorithms. To support this faster development workflow, critical bug fixes ensure more reliable interrupt handling via Ctrl-C and improved task cancellation mechanisms. The release also introduces valuable developer tools directly into the REPL: built-in syntax highlighting replaces the need for external packages like OhMyREPL.jl, a new fzf-style history search (Ctrl-R) supports fuzzy searching with multiple result selection and REPL mode indication, and bracketed paste functionality is now available on Windows for efficient text input. Further enhancing diagnostics, the `--trace-eval` flag allows users to monitor top-level evaluation progress to identify hangs in test suites or scripts, while a new `@__FUNCTION__` macro serves as a public API alternative to `#self#`. Additionally, introspection macros now accept call expressions with types, and Time To First X (TTFX) monitoring is now an integrated part of Julia's development process through new CI jobs, going live on September 7, 2026. Collectively, these improvements significantly reduce wait times during testing or large-scale script execution, thereby boosting overall productivity and providing faster feedback loops for both individual contributors and enterprise teams.

TailTalk:Rust と Tokio を用いた現代的な非同期ユーザー空間 AppleTalk スタック | そっか~ニュース