Article vin/2101 of [2099-2123] on the server localhost:7119
  upper oldest olders older1 this newer1 newers latest
search
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
[Reference:<_A2100@vin.ML_>]
Newsgroups: vin

Re: [vin:2100] vin4.0.0 -- ported onto MacOS X
Tue, 26 Oct 2004 04:03:58 +0900 (JST) ysato@delegate.org (Yutaka Sato)
The DeleGate Project

In message <_A2100@vin.ML_>
on 10/26/04(01:01:50)
you Yasushi Shinjo <pimkabth4-mxhgu4zkrwxw.ml@delegate.org> wrote:
 |新城@筑波大学です。こんにちは。

こんばんワ。さとうです。

 |おお。待っていました。ついに MacOSX 版が出ましたか。先ほど試
 |した所、特に問題はみつかりません。lib-doc-var.tar.gz は、前
 |にコピーしてあった dist3.4.1 のものを使いました。

ほぼ新城さん向けのテスト版のつもりで出したので、ちゃんと動いたようで
なによりです(^^)

ところでMacOS Xは、10.3 をお使いでしょうか?
10.2のターミナルだと、特定のエスケープシーケンスでターミナルが死んで
しまうので困りものです。10.3 だと死ぬことは無いようなのですが、あい
かわらず日本語フォントはしょぼいし(探してはみたんですが。。。)、
vi (vim6.2) は日本語の文字幅をちゃんと扱ってくれなくて、編集すると
画面ぐちゃぐちゃだし。。。でぼくは結局vinを使う時(or vimする)時だけ
X11と昔懐かしktermを使ってるんですが、これだとコピー&ペーストが
出来なくて時々不便。いまさら聞けないなんとやらですが、どうしてます?

 |> 今回のMacOS Xへの移植ですが、やってみるとだいたい一日仕事でした(昨日手を
 |> つけました。のでほとんどテストはしてないのですが)。前処理として、protoize
 |> を利用して ANSI C に変換したのですが、「引数が足りない」呼び出しが2、3
 |> 見つかって修正しました。これらは再現性の無い突然死に関係していたかも知れ
 |> ません(が追求する気力が。。。)。
 |
 |これは、大したものですね。1日仕事というのも、2、3というのも。

まあ、まだ体力はけっこうあって。カクシャクとしてるってんですかね:p。
生涯一プログラマは体力が命です。ボウリングで鍛えてるし。

すでにFreeBSDとLinuxに移植してますから、その関連の #if を足掛かりに
(三+数箇所に)コンパイラに叱られながら、#if defined(__APPLE__) を付け
足すってのが主な移植作業でした。素性から __FreeBSD__ と共通な場合が多い
わけですが、そうでない場合も結構あって面白いです。一方全然面白くないのが、
可変引数への対応で、これが60箇所余りの単純労働。コンパイラに叱られながら。

全般に単なる肉体労働だったのでワールドシリーズ見ながら機械的にできましたが、
一箇所だけこれは深刻かと思ったのが、make の過程でcosmos固有の言語定義を
内部表現に変換するところで出たSIGBUSです。なにしろ20年近く前に書いたきり
のブラックボックスですから。しかしそれも結局、単に文字列定数に '\0' を
書き込もうとしていたのが原因と判明して落着。

あと、makeが通った後に、ひっかかったのが、vinから外部エディタを起動する時の
エラーです。vin では jvim をデフォルトの EDITOR にしていますが、MacOS X
のデフォルトにはそれはありません。そこで sh (bash?) のエラーコードとして
127 が返されて、その部分の実装コードが STOP シグナルによる停止と見わけが
つかないようになっていて、しかもそのように即死してしまう子プロセス(sh)の
死亡を sigpause() で検知するcosmos側の実装が MacOS (BSD系?)ではうまく
動かないようになっていて。。。で結局返信とか編集とかしようとしてエデイタ
起動すると固まるという。そもそも vin の開発環境だった SunOSの /bin/sh では
コマンドが見つからない時の終了コードは 1 で、こういう問題は起こらなかった
わけですね。
これまでのvinの版でも、この問題はあったみたいで、存在しないエディタを指定
すると動作がおかしくなっていました。この移植を機械に太古のバグがひとつ
とれてちょっとしあわせ。


引数の数の不整合については、ファイルの中での整合性として2箇所ばかり実効的
な引数不足があったわけですが(実効的でない過不足は多数あった)、今後C++に
書き換えて(リンク時に)モジュール間の整合性をチェックしてみれば、ぞろぞろ
出てくるのではないかと思います。
それ以上に、山のような引数や返値の型の不整合の修正には、さすがに体力要り
そうで、1年に2回はやりたくないような。。。


 |> たぶん、ザウルスへの移植もそれほどかからないと思うのですが、cosmos は自分
 |> を使って自分を作るというのを2フェイズやらないといけないので、クロスだと
 |> ちょっと面倒。かといってザウルス上でセルフでやると遅いのなんのって。。。
 |
 |なるほど。クロスだとそういう問題もあるわけですね。ザウルスく
 |らいなら、速い CPU で VM を動かした方が速かったりして。
 |(ザウルスの VM ってあるんですか?) 
 |ザウルス遅いと言っても、sun4 より速かったりしませんか。

どうなんでしょう。Linuxが動くってんで面白いから5月の連休に買ってDeleGate
を移植して以来、この子はほとんど動いていませんで(電源は入りっぱなしですが)、
あまり興味も無くなって(^^;
まあ、たしかに性能的にはsun4とコンパラっぽいですね。自分が化石時代の生き
残りだということを再認識させられます。
だとすれば問題なくvin も動きそう。
最近持ち歩き用には結局、ザウルスと一緒に購入したシグマリオンIII(+Pin@Free)
を愛用してるんですが、ザウルスに vin を載せたらそれはそれで可愛いかも。。。

                   D G  
┌─┐┬┌──┬┐ //\^^ ( - ); {Do the more with the less -- B. Fuller}
├─┤│└─┐│ / 877m\_<   >_ <URL:http://www.delegate.org/delegate/>
┴ └┴──┘┴──────────────────────────────
佐藤豊@情報技術研究部門.産業技術総合研究所(独立行政法人)

  admin search upper oldest olders older1 this newer1 newers latest
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
@_@V