mona
exit(0) するだけのプロセスを20000回起動を繰り返しても落ちなくなった。
Mosh を複数回起動するとメモリが足りなくなる解放漏れがあるっぽいので調べる。
移植完了というと語弊があるか。verify なしの HTTPS GET は完全に動いている。 w3m も SSL を有効にした。これで各種サービスのログイン画面もアクセスできる。
何かOpenSSLのビルドが通って libssl.a と libcrypto.a ができあがった。 https://www.hatena.ne.jp が GET できたよ。というか移植終了?
内部リリースです。mona-0.3.2 マイクロカーネルの各コンポーネント(サーバー)の名前を管理する name server の追加 mg (Emacs クローン)の移植 File API のバグ修正と追加
Facebook API や普通のウェブサイトのログインなどで必要性を強く感じるようになったので SSL をどうにかしたい。OpenSSL を移植すれば済む話なのかな?全く分からないので調べるところから。
mg エディタがまともに動くようになってきた。検索、置換、dired などなど。 移植に際して困るのは Mona には存在しない tty の部分。幸いにも mg では*ある程度* tty が抽象化されているので何とかうまく動かすことが出来た。 一番ハマったのはスクロール…
配布されている mplus の bitmap フォントは iso8859-1 。UCS-2 (ISO 10646-1) の方が色々とうれしいので変換する。 monafont に同梱されている tools/jis2unicode を使う。 ./jis2unicode -b < mplus_j12r.bdf > mplus_j12r_u.bdf CHARSET_REGISTRY ヘッダ…
mg エディタ移植中。ファイルを開き、簡単な編集して閉じるくらいは動いている。
Mona 上の Mosh で動くコードを Mona 上のエディタで本格的に書くようになってきた。本格的といっても数十行の世界。 エディタは gnote という id:hetappi さんが 2005 年頃に作ってくださったものを少しずつ機能追加してきたものを使っている。愛着もあるし…
name server が実装されたので名前を引けるようになった。
Mona にマイクロカーネル的な name server を実装した。従来はプロセス名をキーにして相手にメッセージを送っていたが、これからは "/servers/file" のようにファイルパス構造に似た名前でアクセスするようになる。 Mosh から各種サービスにアクセスする場合…
Mosh に Mona の Message type (例えば MSG_GUISERVER_CREATEWINDOW) を export したくなったので落ち着いて整理してみた。 よくよく考えると Message は 2種類の type に分類される事が分かった。 1つ目はサーバー固有メッセージ。例えばファイルサーバーは…
こまめにリリースをする事に決めて 0.3.1 を出した。w3m などもりだくさん。Windows 用の QEMU を同梱したものが用意できていないのでおおっぴらな告知はまだ。 0.3.2 は Mosh から Mona の Window システムに触る部分の足場を作る予定。 とりあえず Message…
Mona の File API など様々な箇所で使われてい共有メモリ APIる monapi_cmemoryinfo を全面的に廃止にした。 理由は 共有メモリの unmap とオブジェクト自身の解放の両方をプログラマが面倒を見なければならずバグの温床になっていた。 File Server と一部密…
エディタに Emacs キーバインド ctrl-k を追加した。実装して初めて気がついたがカーソルが行頭かどうかで挙動が変わるのだな。 facebook の notification RSS は parse できた。しかしほとんど情報がなくてログインしないと見られないものばかり、SSL も必…
Mosh で HTTP GET のスクリプトを書いていて気づいたのだが Mosh のキャッシュファイルが壊れていた。原因は FAT32 の Long file name 周りのバグ。このバグの修正に苦戦して時間がかかった。 これまで dogfooding ということもあり Mona 内の USER ディレク…
accept がブロックしていたのをなおした ファイルを削除時にキャッシュがうまく消えないバグ修正
dogfooding で Host (Ubuntu) から Guest (Mona) に Facebook のプライベートフィードURL を送りたかったのでクリップボードを実装中。
ドッグフードは続くよ。 エディタを開いてコードの断片を書く。 terminal で動かしてみる コードを追加・修正する 動くものができあがる というサイクルを Mona 内で完結させるために不足しているものを徐々に追加中。 旧 Scheme シェルはすぐ廃止かと思って…
typoしとる。
コマンドヒストリが /USER 以下に保存されるようになった。
Mosh のコンパイルキャッシュファイルが /USER/TEMP に出力されるようになった。 あわせて /USER に書かれたものは QEMU を落としても保存されて永続化されるようになった。よしよし。
動いた。/User にマウントされた FAT32 の HDD にファイル書き込みも上手くいってる。
FAT32 を実際にマウントした。うまく動いている。さて Mosh で例のスクリプトを動かすかな。
VFAT の LFN の仕様は後方互換性を残していて賢い。short name の checksum が正しくないとだめとか、クラスタ境界超えられないと*1か色々罠があった。 *1:仕様をきちんと調べたわけでない
あとは細かいリファクタリングと、LFN 対応。
ルートディレクトリにおいて ファイル読み込み ファイル作成 ファイル書き込み が動くようになってきた。きっちり TDD で書いている。 まじめに書き出すとブロックキャッシュが欲しくなってくる。ぐっとこらえて今は実装しない。完成後計測して許容できない…
Mosh on Mona がほぼ正しく動いているので実用的なスクリプトを動かしはじめた。例の英単語記憶スクリプトなら毎日使うだろうという事で、動かしたらファイル書き込みが問題に。テンポラリとしてならば RamFS があるのだが、そろそろちゃんと永続記憶をもと…