HN 日本語サマリー

← 一覧へ戻る
プログラミング

EndBASIC 0.14: マルチメディア対応はまだか?

EndBASIC 0.14: Are we multimedia yet? (endbasic.dev)

39 pointsby jmmv8 コメント

要約

EndBASIC 0.14がリリースされ、サウンドサポートが追加されたことで、バージョン1.0への道が開かれました。今回のアップデートでは、三角形やポリゴン描画、塗りつぶしなどの新しいグラフィック機能、レトロなVGAフォントへの切り替え、macOSでのSDLコンソールの修正、Shebangサポート、そして待望のサウンド機能が導入されています。

全文翻訳

公開日: 2026年7月4日 ちょうど1ヶ月ほど前、私は新しいコンパイラとVM実装を備えたEndBASIC 0.13を発表しました。0.13は6ヶ月間の作業の結果であり、気分転換のために「それらを洗い流す」必要がありました。しかし、結局のところ、0.13は「単に」パフォーマンスを向上させただけでした。確かに、その成果は巨大でしたが、EndBASICを皆さんにとってよりクールにするにはあまり貢献しませんでした。 今日の0.14は別物です。この輝かしいリリースは、基本的なサウンドサポートという特別な追加機能とともに、あらゆる場所に新しい機能が詰め込まれています。特に後者の理由から、0.14は、可能な1.0への最後のフロンティアを切り開くという点で、大きなマイルストーンとなります。このリリースに含めたかったことは他にもたくさんあり、そして最終的に難しさのために断念せざるを得なかった機能も1つありますが、どこかの時点では立ち止まってコードを公開しなければなりません。ということで、ここにあります! 話すべきことはたくさんありますが、その前に、必ず訪れるべきリンクはこちらです。 オンラインインタプリタを起動する デスクトップおよび組み込みデバイス向けにダウンロードする リリースノートを読む インタラクティブプロジェクトギャラリーを訪れる グラフィックス、さらにグラフィックス! 0.13によってもたらされた大規模なパフォーマンス向上後に私がやりたかった主なことは、その追加されたパフォーマンスを輝かせるための追加のグラフィックプリミティブを提供することでした。現在、三角形(GFX_TRIおよびGFX_TRIF)、ポリゴン(GFX_POLYおよびGFX_POLYF)を描画するコマンド、および領域をバケットフィルする(GFX_FILL)コマンドがあります。 この作業の一環として、EndBASICのために最初に書いたデモの1つを「製品化」しました。これは、多数の円を描画し、それらをコンテナボックス内でバウンドさせる小さなプログラムで、新しいグラフィックプリミティブを実演します。このデモは現在、EndBASICのDEMOSドライブにバンドルされており、ギャラリーからアクセスできます。以下でそれを見ることができますが、これはビデオではなく、リアルタイムで実行されているプログラムであることに注意してください!ブラウザで、ここで直接操作できます。 レトロVGA、誰か? EndBOXのためにLCDディスプレイとNetBSDバックエンドのコンソールをサポートしたとき、フレームバッファ用のビットマップフォントレンダリング「エンジン」を実装する必要がありました。これはクールでしたが、WebおよびSDLコンソールとの不整合も導入しました。これらはIBM Plex Mono TTFフォントに依存していました。このフォントは見た目は良かったのですが、古いPCフォントにインスパイアされていましたが、それでもあまりにも…「モダン」でした。 そのため、すべてのコンソールのルックアンドフィールを統一し、EndBASICをより「レトロ」に見せるために、TTFサポートをすべて削除し、代わりに独自のフォントレンダリング機能を使用するように切り替えました。この一環として、標準のIBM VGA 8x16フォントをフォントコレクションに追加し、すべてのコンソールでデフォルトにしました。 これにより、コンソールはレトロに見えますが、同時に地味でもあります。初めてEndBASICを起動した場合、そのコンソールがテキストとグラフィックスを混在させることができるとは想像もつかないかもしれません。そのため、コンソールがハイブリッドであることを最初から明確にするために、長年変更されていなかったウェルカムバナーも変更し、その横に小さなアイコンが表示されるようにしました。どうぞ、ご覧ください! EndBASIC 0.14の新しいハイブリッドウェルカムバナー。 macOS、ついに修正 EndBASICのSDLグラフィカルコンソールは数年前から存在しており、私が最初にコードを書いたときはmacOSで正しく動作していました。残念ながら、私の元の実装はすべてのグラフィック操作を別のスレッドにオフロードしていましたが、重大な欠陥がありました。その別のスレッドはプライマリ スレッドではありませんでした。macOSはその時は文句を言いませんでしたが、それほど最近ではないリリース以降、EndBASICは起動時にクラッシュし始めました。 この問題を修正するのは概念的には簡単でした。なぜなら、別のスレッドアーキテクチャはすでに配置されていたからです。しかし、役割を反転させるのは難しいことが証明されました。いずれにせよ、これもついに再び動作するようになりました! とはいえ、macOSでプリビルドされたEndBASICバイナリを実行するのはかなり面倒であることを警告しておきます。Apple Developer証明書を持っていないため、コード署名していません。macOSのリリースごとに、署名されていないバイナリを実行するのがますます困難になっています。macOS Tahoeでの最後の試みでは、バイナリの実行とバンドルされた共有ライブラリの両方を、一度に1つずつ承認する必要がありました。Windowsでも信頼されていないバイナリに関する同様の怖い警告が表示されますが、少なくともそれらをバイパスするのは簡単です。 インターネットからのランダムなバイナリを信頼するのは難しいことだと理解しています。そのため、少なくとも、ダウンロードできるバイナリはすべて、チェックインされたコードからGitHub Actions経由で生成されているため、どこから来たのかを明確に監査できることをお伝えします。これは数年前に設定するのが大変でしたが、意図的にそうしたのは、あなたが「開発者のワークステーションからのランダムなバイナリ」という状況を信頼する必要がないようにするためでした。 shebangサポート もう一つの隠し玉は、UnixライクシステムでのEndBASICバイナリの直接実行の新しいサポートです。大したことないですよね?結局のところ、インタプリタとしては基本的な機能です。しかし、それでもクールな新機能です! 原則としてこれは些細なことでしたが、少しばかり問題がありました。一部のプログラムは特定のコンソール寸法を必要とする可能性があり、一般的な#!/usr/bin/env endbasic shebangを使用する場合、shebang行には2つの引数しか含めることができないため、コンソールフラグを指定できません。私はコンソール設定を調整するための二次的なメカニズムを実装する必要があり、もちろんこれはEmacsのプロパティラインにインスパイアされました。shebangの後にマジックコメントを付けることで、特定のプログラムに使用するコンソールを指定できるため、プログラムは「スタンドアロン」になります。 #!/usr/bin/env endbasic REM endbasic cli: console=sdl:resolution=1024x768 #!/usr/bin/env は(私自身によって、はい)有害と見なされていることを思い出しておきます。 以下は、テキストインターフェイス(同じターミナルウィンドウ)を提供する1つと、グラフィカルコンソールを別のウィンドウとして起動する1つの、実行可能な2つのスクリプトを実演する短いビデオです。 実行可能な(グラフィカルな!)スクリプトの新しいサポート。 サウンド、ついに そして、文字通り何年も実装したかった最大の機能、サウンドサポートにたどり着きました。実装が非常に面倒だと思って延期していましたが、ふとひらめきました。オーディオはコンソールのもう1つの出力「タイプ」にすぎないということです。新しい抽象化を実装する必要はありませんでした。すでに存在するConsoleフレームワークに沿って、それを通じてオーディオプリミティブを実装できるのです! この考え方で、実装は実際には些細なことだったので、ターミナルでも機能するBEEPコマンドと、任意のトーンを再生できるSOUNDコマンドができました。今のところこれだけです。QBASICのようなPLAYコマンドの実装を考えましたが、それには独自のミニ言語パーサーとバックグラウンド再生が必要であり、正直言って、それらはかなりの作業量です。 簡単なサウンドデモを今すぐ再生できます。埋め込みインタプリタをクリックして、キーを押すだけです。 さあ、楽しんでください。 EndBASIC 0.14における主な変更点のまとめは以上です。言及する価値のある他の小さなアップデートがいくつかありますが、この記事に入れるほど大きくはありません。詳細はNEWS.mdファイルにすべて記載されています。 EndBASIC 0.14は、1.0への道をアンブロックする大きなマイルストーンとなります。前述したように、スプライト、ファイル管理、レコードなどのサポートなど、常に追加できるものがありますが、0.14は、2020年にこのプロジェクトを開始したときに私が考えていたすべてをもたらします。BASICのシンプルさでレトロスタイルのミニゲームを書く能力です。 ぜひ試してみてください。いつものように、楽しんでください!そして、もしあなたが私と同じように🇺🇸にいるなら、250周年おめでとうございます! 前の投稿 »