Inferno

Native Inferno

Hosted Infernoと呼ぶのが正しいのかわからないけど、InfernoはホストOS上で動かすのが一般的だと思う。でも、ベアマシン上でも当然Native Infernoが動作する。id:m-shibaさんのエントリで触れられていたので、試してみることにした。環境はQEMUじゃなくてVi…

Limboでどう書く?

プログラミングのお題をいろんな言語で解く「どう書く?org」にLimboで挑戦している人がいた。 Doukaku? Tag detail: Limbo

pick ADT

styxlibの話に入る前にpickについて書いておく。メッセージパッシングのプログラムでは、メッセージをあるフォーマットのデータ構造にpack/unpackする必要があるが、pickはそんなときに便利な機能だ。Cでは、構造体の先頭にメッセージの種類(or タグ)を格…

Infernoでファイルサーバ

ファイルサーバとしてサービスを実装していくのはPlan9と一緒で、bind/mountやsrvデバイス(#s)等の仕組みも同じ。srvデバイスが変換する通信プロトコルが9PかStyxかの違いはあるが(といってもほとんど違いはないみたいだが)。ファイルサーバの実装という視…

alt

チャネルを使ってプログラムを組むと、一つのスレッドで複数のチャネルからの入出力を待ちたくなる。UNIXでいうところのselect/pollのように。そこで使うのが、alt文*1。ここではtkcmdというTKインタプリタ(?)からコードを引用している。見た目はcase文に…

タイマー関数

ある関数を周期的に呼び出すには、POSIXタイマーやSIGALRMのようにシグナルハンドラを使うことになるけど、Infernoだとチャネルの同期的な性質を利用して、次のように書ける。 implement Timer; include "sys.m"; include "draw.m"; sys : Sys; Timer : modu…

Limboでエラトステネスのふるい

IPWLから。スレッドとチャネルを使った並行版エラトステネスのふるい。initのwhileループが無限整数列を作るジェネレータになっていて、各スレッドがふるいになっている。 implement Eratosthenes; include "sys.m"; include "draw.m"; sys : Sys; Eratosthe…

case文と引数処理

Limboのcase文はCのswitch文よりもシェルのcaseのパターンマッチングに近い。breakを書く必要はない。以下はyacc.bから引数処理のコード。Argモジュールが使われている。先頭からマッチングしていき、'*'はワイルドカード。 arg := Arg.init(argv); while(c …

timeで見るspawn/channel

time(1)はUNIXでもおなじみだが、引数に与えられたコマンドの実行時間を測定するのに使われる。 ; time sh -c 'ps | grep Sh' 1 1 oraccha 0:00.0 release 74K Sh[$Sys] 81 1 oraccha 0:00.0 release 73K Sh[$Sys] 0l 0.011r 0.011t今回はtime(1)を例にスレ…

catから始めるLimboプログラミング

IPWL(Inferno Programming with Limbo)の7章(チャネル)の途中まで目を通した。なんとなくLimboがどんな言語かわかり始めてきたかな。後は実際のコードを読み書きして、実践あるのみか。IPWLはそこそこの規模の例題が示されている点がよい。ずっと前にLimbo版…

Inferno on MacBook (ソースからコンパイル)

"Inferno Programming with Limbo"がAmazonのマーケットプレイスで安く売られていたので思わずポチッとな。著者のPhilip Stanley-Marbellは執筆当時はCMUの博士課程の学生だったようで、講義資料が公開されている。また、同氏がDr.Dobb'sに書いた記事「Infer…

Inferno on Nintendo DS

Nintendo DSでInfernoが動いている。これは今年のGoogle Summer of Codeの成果の一つ。 Inferno on Nintendo DS (MPEG4) GSoCの成果がまとめられているページはこちら。 Plan 9 and Inferno at the Google Summer of Code

Inferno on MacOS X

ひらさんの日記(知性とは強固であり凶暴)経由で読んだが,あろはさんがInfernoについて熱く語っている.最近はInferno/Limboネタが続いているので,要チェックだな. なぜ Inferno/limbo は重要なのか (Why Inferno : Compact Multi-Platform Distributed OS…

Inferno on OLPC

スパコン,HPC関係の国際会議SC2006の写真がアップされている.ANLブースのOLPCで動くInfornoとか,ARMボードのクラスタが注目か. SC 2006 IN TAMPA

Limboプログラミング

Infernoで使われているLimboって,どんなプログラミング言語だろう.Infernoはセットトップブックなど,ネットワークでつながれた情報家電をターゲットにしているので,その手の割と非力な計算機による分散システム上で使われることを想定している.そこで,…

Inferno on Plan9

Infernoの話が出たので,Plan9上でInfernoをインストールするときのメモ.Plan9はQEMU/Linux上で動かしている(インストール方法はこちら).Infernoは,Plan9の兄弟のようなOSだけど,これまた一風変わったOSである.ネイティブマシン上で動くだけでなく,UNI…