2008-02-01から1ヶ月間の記事一覧

acmeの使い方

Skip Tavakkolianさん@Rangboomによって、acmeセッションのビデオが公開されている。実際の動きを見ながらじゃないと、acmeはなかなか使いこなせないと思うので、こういうのは貴重だな。マウス操作をキャプチャするために、mspyスクリプトとtippiというツー…

GSoC2008

Wikiページがオープンされた。もうそんな季節?

9P、9P2000、Styx

Infernoで使われている通信プロトコルStyxって、9Pとどれくらい違うのだろうか?IPWLによると3rd editionでは、接続確立時にSessionなしにAttachメッセージから始まると書いてあった。4th editionでは、Styxも9P2000ベースに更新されていて、/module/styx.m…

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…

インラインアセンブリ

9fansにHello worldをアセンブリで書きたいという投稿が流れていた。最終的には以前「アセンブリでHello, world!」で書いたようなプログラムになったようだが、Oberonでインラインアセンブリはこう書くというコードがフォローされていた。バイナリアンな感じ…

Drawterm.app

以前、DrawtermをApple Script経由で実行する方法を書いたけど、.app化する方がよさそうだ。方法は次のページを見れば、すぐわかる。 シェルスクリプトとかの CUI アプリケーションを Mac OS X 方式の .app にする方法 一応やり方を書いておくと、/Applicati…

Plan9おわた

まずはこの記事「[WSJ] Windows 7に望むこと」を読んでもらおう。全然Plan9と関係ないじゃんと思っていると、こんなくだりが。 Microsoftの研究部門は「Singularity」という独自の実験用OSを持っている。 この種の研究の中で最も有名なのは、ベル研究所が1…