
2025/12/29 22:43
**Libgodc:Sega Dreamcast 用の Go プログラムを書く**
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
## 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 プロジェクトを実現できることを目指しています。
本文
libgodc – Sega Dreamcast 用 Go ランタイム
概要
libgodc は、Dreamcast の制約に合わせて最適化された Go ランタイムを提供します。標準の Go ランタイムを置き換え、以下の環境で動作します。
- メモリ:16 MB RAM
- CPU:200 MHz の SH‑4 シングルコア
- OS:無し
ガベージコレクション、ゴルーチン、チャネル、そして基本的なランタイム機能を備えています。
速攻開始
必要条件
- Go 1.25.3 以降
makegit
go install github.com/drpaneas/godc@latest godc setup # (任意)godc doctor # 環境を確認する
プロジェクトの作成と実行
mkdir myproject && cd myproject godc init # 新規プロジェクトの雛形を生成 # main.go や他の *.go ファイルを書き込む godc build godc run
完全な最初のプログラムの手順は Quick Start Guide を参照してください。
ドキュメント
- 📚 Full Documentation
- インストール – 設定と構成
- Quick Start – 最初のプログラム walkthrough
- Design – ランタイムアーキテクチャ
- Effective Dreamcast Go – ベストプラクティス
- KOS Wrappers – C を Go から呼び出す
- Limitations – 動作しない機能
パフォーマンス(実機、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 – BIOS フォントで画面上に Hello World を表示
- blue_screen – 最小グラフィックス
- input – コントローラ入力
- goroutines – 同時実行でバウンスボールを描く
- channels – プロデューサ/コンシューマパターン
- timer – フレームレート非依存アニメーション
- bfont – BIOS フォントのレンダリング
- filesystem – ディレクトリブラウザ
- vmu – VMU LCD とブザー
- brkout – Breakout クローン(GPL v2、Jim Ursetto のオリジナルを移植)
- pong – 1P/2P モード、パーティクル効果、AI を備えた Pong クローン
ライセンス
BSD 3‑Clause License。詳細は
LICENSE ファイルをご覧ください。