2 ポイント 投稿者 GN⁺ 2023-07-16 | 1件のコメント | WhatsAppで共有
  • Uxn/Varvaraは、小さな仮想マシンを中心に同じアプリケーションを複数のシステムで実行できるようにする個人向けコンピューティングスタック
  • グラフィカルアプリケーションのホスティングという具体的な必要性から始まったが、リリース対象として誰でも採用できるよう公開されている
  • プログラムは独自言語のUxntalで書かれ、配布方法は古典的なコンソールエミュレータ向けのゲームROM共有に近い
  • 実行にはOSごとのエミュレータが必要で、VM・I/O仕様に基づいて自分でエミュレータを実装することもできる
  • 同じROMをデスクトップ、小型電子機器、ハンドヘルド、ブラウザで動かす構造のため、小さなソフトウェアを長く保守し、さまざまな環境へ移植しやすい

Uxn/Varvaraが目指すコンピューティングスタック

  • Uxn/Varvaraエコシステムは、小さな仮想マシンを中心とした個人向けコンピューティングスタック
  • 中核目標は、同じアプリケーションを複数のシステムで実行できるようにすること
  • 設計は実装優先の考え方に基づき、グラフィカルアプリケーションのホスティングという具体的な必要性に合わせられている
  • Uxnは独自言語のUxntalでプログラミングする
  • Uxnプログラムの配布は、古典的なコンソールエミュレータ向けゲームROMの共有方式に似ている
  • より詳しい設計背景はuxn designノートで確認できる

エミュレータとROMの実行

  • 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
  • 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プログラムには、おもちゃ、ゲーム、ツールが含まれる
    • Oquonie: 奇妙な世界
    • Donsol: カード型ダンジョンクローラー
    • Left: テキストエディタ
    • Noodle: ドローイングプログラム
    • Orca: ライブコーディング環境
    • Nasu: スプライトエディタ
    • Turye: フォントエディタ
    • Catclock: デスクトップ時計
    • Dexe: 16進エディタ
    • Bicycle: インタラクティブREPL

学習資料とコミュニティ

1件のコメント

 
GN⁺ 2023-07-16
Hacker Newsのコメント
  • このグループのあらゆる面が興味深い。船上のデジタルノマドで、記事のひとつひとつが、そんな生き方が可能だと考えたこともなかった世界をのぞかせてくれる。
    サイトに入るたびにウサギ穴に落ちていく感じになる。別の人生だったらやってみたかったかもしれない。
    https://100r.co/site/dry_toilet_installation.html

    • 本当に面白いものが多い。個人的には太陽熱集熱管がいちばん気に入っていて、日光で料理をしてパンまで焼いている。
      https://100r.co/site/solar_evacuated_tube_cooking.html
    • この人たちは依存関係や肥大化したOSにうんざりしていて、9frontも活発に使っている。9frontはとても小さく、すべてが静的コンパイルされ、APIも小さい。
      クロスコンパイルも簡単で、BallesterosのPlan 9入門書を読んでいるとコンピューターサイエンスの勘どころも自然と身についてくる。
    • 興味があるなら、Devineの個人Wikiもある: https://wiki.xxiivv.com/site/home.html
      本当に素晴らしい内容がたくさんある。
    • こうした「現実世界」の問題を全部こなしながら、なお仮想マシンを作るだけのエネルギーと動機と時間があるのが本当に印象的。
      実際のハードウェアのいろいろな場所で動くのも驚きだ。仮想マシンのプロジェクトはたくさん見てきたが、たいていは別のコンピューターの中に閉じこもっている感じだった。極端な制約が設計をまったく別の方向へ押しやっているように思える。
    • YouTubeには航海生活を送る人たちの大きなサブカルチャーがあって、個人的には現実逃避用コンテンツとして楽しんでいる。
      もちろん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系で忙しい :)

    • 1年をAからZまで26個の2週間単位に分けるカレンダーに触れていたが、26回の2週間は364日しかない。このカレンダーでは1年を364日にするつもりなのか、26個の2週間単位の外に余りの日を追加するのか、それとも別のやり方なのか気になる。
    • Mastodonプロフィールにははっきりthey/themと書かれている。
  • この人たちがトップページに上がってくるといつも嬉しい。作っているソフトウェアも面白いが、船をできる限り自給自足可能にするためにやっている作業が本当にすごい。

  • Blame!ファンいる? https://wiki.xxiivv.com/site/devine_lu_linvega.html https://blame.fandom.com/wiki/Davine_Lu_Linvega

  • この人たちのサイトで実際によく見るのはレシピサイトだ: 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ページにある設計にとどまらず、ツールやゲームやアートを作っている。
    • この概念をもっと主流寄りの形で見たいなら、RISC-Vも見てみるとよい。拡張なしの基本RISC-Vインタプリタ仮想マシンを実装するだけなら、おおよそ1日でできる。
      実際にやってみたが、この人たちの命令セットより少し複雑なだけで、大差はない。実際のコンパイラが対象にできるので、事実上どんなソフトウェアでも動かせる。ただし入出力などのために、残りの仮想マシン環境は依然として提供する必要がある。
  • Forthベースのレトロスタイルゲーム、低スペック、ほぼどこにでも移植された仮想マシンという点でZ-Machineに似ているが、よりピクセル向きだ。
    Z80風の命令セットと格闘したり、スプライト表示中の奇妙なサイクルタイミングバグで実機LCDを焼いてしまう心配をしたりせずに、GBスタイルのゲームを作るのによさそうだ。