Uxnエコシステム
(100r.co)- Uxn/Varvaraは、小さな仮想マシンを中心に同じアプリケーションを複数のシステムで実行できるようにする個人向けコンピューティングスタック
- グラフィカルアプリケーションのホスティングという具体的な必要性から始まったが、リリース対象として誰でも採用できるよう公開されている
- プログラムは独自言語のUxntalで書かれ、配布方法は古典的なコンソールエミュレータ向けのゲームROM共有に近い
- 実行にはOSごとのエミュレータが必要で、VM・I/O仕様に基づいて自分でエミュレータを実装することもできる
- 同じROMをデスクトップ、小型電子機器、ハンドヘルド、ブラウザで動かす構造のため、小さなソフトウェアを長く保守し、さまざまな環境へ移植しやすい
Uxn/Varvaraが目指すコンピューティングスタック
- Uxn/Varvaraエコシステムは、小さな仮想マシンを中心とした個人向けコンピューティングスタック
- 中核目標は、同じアプリケーションを複数のシステムで実行できるようにすること
- 設計は実装優先の考え方に基づき、グラフィカルアプリケーションのホスティングという具体的な必要性に合わせられている
- Uxnは独自言語のUxntalでプログラミングする
- Uxnプログラムの配布は、古典的なコンソールエミュレータ向けゲームROMの共有方式に似ている
- より詳しい設計背景はuxn designノートで確認できる
エミュレータとROMの実行
- Uxnプログラムを実行するには、システムに合ったエミュレータが必要
- Linux/BSD
- Mac/Plan9
- Windows
- さらに多くの環境はawesome-uxnエミュレータ一覧にまとめられている
- VMとI/O仕様を見て、自分でエミュレータを実装することもできる
- デスクトップ向けクロスプラットフォームエミュレータにはSDL2が必要
- Arch:
sudo pacman -S sdl2 - Ubuntu:
sudo apt install libsdl2-dev - Void Linux:
sudo xbps-install SDL2-devel - OSX:
brew install sdl2 - openBSD:
doas pkg_add sdl2
- Arch:
- ROMの実行方法はいくつかある
- ランチャープログラムを使う
.romファイルをエミュレータのウィンドウにドラッグする- ターミナルで
bin/uxnemu path/to/example.romを実行する
- 基本的なエミュレータ操作はファンクションキーとボタン割り当てで行う
F1: 拡大・縮小の切り替えF2: デバッガの切り替えF3: スクリーンショットF4:launcher.romを読み込むL-Ctrl: A,L-Alt: B,L-Shift: Select,Home: Start
実行可能な環境とサンプルプログラム
- 同じUxn ROMは、デスクトップコンピュータ、小型電子機器、最新のハンドヘルド、ブラウザで利用できる
- GBA、Nintendo DS、Playdate、DOS、PlayStation Vita、Raspberry Pi Pico、Teletype、ESP32、Amiga、iOS、STM32、IBM PCなどへの移植もあり、一部は未完成
- サンプルとして提供されるUxnプログラムには、おもちゃ、ゲーム、ツールが含まれる
学習資料とコミュニティ
- 入門資料は以下のリンクで提供されている
- 助けが必要なら、
irc.libera.chatの**#uxn**またはCatlang Discordで質問できる
1件のコメント
Hacker Newsのコメント
このグループのあらゆる面が興味深い。船上のデジタルノマドで、記事のひとつひとつが、そんな生き方が可能だと考えたこともなかった世界をのぞかせてくれる。
サイトに入るたびにウサギ穴に落ちていく感じになる。別の人生だったらやってみたかったかもしれない。
https://100r.co/site/dry_toilet_installation.html
https://100r.co/site/solar_evacuated_tube_cooking.html
クロスコンパイルも簡単で、BallesterosのPlan 9入門書を読んでいるとコンピューターサイエンスの勘どころも自然と身についてくる。
本当に素晴らしい内容がたくさんある。
実際のハードウェアのいろいろな場所で動くのも驚きだ。仮想マシンのプロジェクトはたくさん見てきたが、たいていは別のコンピューターの中に閉じこもっている感じだった。極端な制約が設計をまったく別の方向へ押しやっているように思える。
もちろんYouTubeアルゴリズムはYouTubeアルゴリズムだし、資本主義は資本主義なので、航海動画のかなりの部分はビキニコンテンツでもある。同時に、小さなヨットを修理・改造・アップグレードする暮らしも大きな比重を占めている。FRP作業から太陽光、淡水化まで続いて、本当に興味深い人生をのぞかせてくれる。
このチームは本当に尊敬している。より単純なコンピューティングモデルを探る素晴らしい文章もあわせて読む価値がある: https://100r.co/site/weathering_software_winter.html
100rは、今の私たちがもっとも失ってしまったもの、つまり勇気を思い出させてくれる。
私たちは機会をつかみ、アイデアを探求し、少し難しい道を選び、厄介な挑戦に飛び込むことを恐れている。リスク回避的で、新しいことを試そうとしない。
彼らの旅、船上でのあらゆる作業、コードに対する姿勢、特に一人のためのソフトウェアを作るという考え方を読んでいると、自分が臆病者のように感じられる。コードや人生や身の回りの環境への向き合い方において、もっと勇敢になりたいと思う。
RekとDevineのすべての仕事に感謝している。忙しく何もしない姿を見ていると嬉しくなる。
Mastodonの作者アカウント(https://merveilles.town/@neauoire)は、Devineのコンピューターという並行するコンピューティング宇宙から出てきた小さなプロジェクトやスクリーンショットの宝庫だ。
Future of Codingで一緒に出演したポッドキャストのエピソードも強くおすすめする: https://futureofcoding.org/episodes/044.html そして、驚くべきライブ音楽環境であるOrcaを扱った続編もある: https://futureofcoding.org/episodes/045.html
この人と、このフォーラムの昔からのLispユーザーたちのおかげで、代替的なコンピューティングやニッチなプログラミング言語について長いこと考えさせられている。Uxnはやることリストに入っていて、最近はForthとUxnに入る前にSmalltalk系で忙しい :)
この人たちがトップページに上がってくるといつも嬉しい。作っているソフトウェアも面白いが、船をできる限り自給自足可能にするためにやっている作業が本当にすごい。
Blame!ファンいる? https://wiki.xxiivv.com/site/devine_lu_linvega.html https://blame.fandom.com/wiki/Davine_Lu_Linvega
https://100r.co/site/pino.html
この人たちのサイトで実際によく見るのはレシピサイトだ: https://grimgrains.com/site/home.html
料理好きには面白い内容がかなりある。
Basic Block Versioning JITの作業や、最近のyjitで知られるMaxine Chevalier-Boisvertも最近似たようなアイデアを扱っている。
https://pointersgonewild.com/2023/02/24/building-a-minimalistic-virtual-machine/
小さくてエレガントな仮想マシン設計なので、ここにいる多くの人が面白く読めるはず。
誰かのWebページにある設計にとどまらず、ツールやゲームやアートを作っている。
実際にやってみたが、この人たちの命令セットより少し複雑なだけで、大差はない。実際のコンパイラが対象にできるので、事実上どんなソフトウェアでも動かせる。ただし入出力などのために、残りの仮想マシン環境は依然として提供する必要がある。
Forthベースのレトロスタイルゲーム、低スペック、ほぼどこにでも移植された仮想マシンという点でZ-Machineに似ているが、よりピクセル向きだ。
Z80風の命令セットと格闘したり、スプライト表示中の奇妙なサイクルタイミングバグで実機LCDを焼いてしまう心配をしたりせずに、GBスタイルのゲームを作るのによさそうだ。