Mosh/開発者掲示板/log/200811-200902


Top / Mosh / 開発者掲示板 / log / 200811-200902

200811-200902

コメント

最新の1000件を表示しています。 コメントページを参照

お名前:
  • input/output-port のバッファリングは少し厄介。Shibuya.lisp 後に実装完了の見込み。 -- ひげぽん 2009-02-27 (金) 17:15:50
  • output-port-buffer-modeを追加しました。妙にいろいろといじってます。時間が空いたときにでも確認お願いします。 -- ココサブ 2009-02-26 (木) 23:00:47
    • ありがとうございます。拝見しました。特に問題なさそうです。 -- ひげぽん 2009-02-27 (金) 17:15:09
  • Mosh/autotools/problemをまとめました。これ以降 gc-7.3alpha ディレクトリで動かない事があった場合は速やかにお知らせ下さいませ。 -- ひげぽん 2009-02-24 (火) 23:06:43
  • input port 系の実装が終わったので open-file-input/output-port の設計メモ。良いアイデアがあればぜひお願いします>ココサブさん -- ひげぽん 2009-02-23 (月) 11:57:27
    • 戻り値が BinaryPort になる場合は BinaryInputPort, BinaryOutputPort インターフェースを実装する。(実装継承はしない) -- ひげぽん 2009-02-23 (月) 11:57:43
      • まずこれに手をつけます。 -- ひげぽん 2009-02-23 (月) 21:47:53
      • 実装継承しないのは大正解でした。 -- ひげぽん 2009-02-24 (火) 21:34:51
    • 戻り値が TextualPort になる場合は。どうしようかな。TextualInputPort をインターフェースにしてから実装かな。 -- ひげぽん 2009-02-23 (月) 11:57:57
  • FileBinaryOutputPortをposition対応しました。あまり考えなしにバッファリングのクラスを分離しましたが、実装が確かに楽になりました。PortTest.cppの方にテスト追加したらBufferingInputPortのgetU8あたりで小さいバグが見つかったので手を加えています。 -- ココサブ 2009-02-22 (日) 14:29:59
    • この作業関連で相談したいことが二つ。 -- ココサブ 2009-02-22 (日) 14:32:19
    • 1. FileBinaryOutputPortはNONEとLINE,BLOCKでのバッファリングの切り分けまでしか行っていません。position対応上はこれ以上分ける利点はないですが、クラス内のバッファリング分岐がなくなるので行ったほうがよいかと思っています。それに関してひげぽんさんはどちらが良いと思いますか。 -- ココサブ 2009-02-22 (日) 14:36:53
      • 手間でなければきれいに分けた方が良いと思います。Go! Go! -- ひげぽん 2009-02-22 (日) 14:55:36
    • 2. 現在はStandardOutputPortでstdoutとstderrを取り扱う形になっていますが、stdoutはバッファリングモードがLINEで、stderrはバッファリングモードがNONEになるので切り分けないといけなそうです。 -- ココサブ 2009-02-22 (日) 14:38:26
      • お。なるほど。それは失礼しました。対応方法ですが、LineBufferedBinaryOutputPort.cpp という abstract class を作って、LineBufferedFileBinaryOutputPort と、StandardOutputPort がそれを継承する形はどうでしょうか。テンプレートメソッドパターンでうまく分離すれば Line バッファリングは LinedBufferBinaryOutputPort にロジックを分離できるのではないかなと思っています。対応は 1. との兼ね合いもあるのでココサブさんにお願いしても良いでしょうか。 -- ひげぽん 2009-02-22 (日) 14:58:59
    • はい。私がやります。今日中にやれるとよいなあ。 -- ココサブ 2009-02-23 (月) 07:39:43
    • BufferedFileBinaryOutputPortをabstrct classにして、それを継承してBlockBufferedFileBinaryOutputPort, LineBufferedFileBinaryOutputPortを実装。StandardOutputPortをLineBufferedFileBinaryOutputを継承する形に修正。実行速度が遅くなった気がします。 -- ココサブ 2009-02-23 (月) 22:11:38
      • 2点。(1) abstract の Buffered なクラスは必要でしょうか。Buffered なクラスとして外部から扱う(言い換えるなら Buffered なクラスに cast して使う)ことがないならばいらないかもしれません。 追記したのでこれはなし。(2)遅くなったと思う件ですが -DDEBUG をコメントアウトしても遅いでしょうか。 -- ひげぽん 2009-02-23 (月) 22:59:28
      • 少し見てみたのですが、BufferedFileBinaryOutputPort が LINE/BLOCK を認識して、かつ子クラスが、LINE/BLOCK を実装しているというのは親が子を具体的な動作を知っているということなのでおかしいですね。strategy パターンになっているのはとても良いと思うので、LINE/BLOCK の判断は外でするようにすると良さそうですね。ひょっとしてコンストラクタの消し忘れかな。 -- ひげぽん 2009-02-23 (月) 23:41:51
      • デバッグオプションを消したら前くらいの速度でした。BufferedFileBinaryOutput内ではBLOCK/LINEの判定しないようになっていると思います。 -- ココサブ 2009-02-25 (水) 21:10:49
      • ありがとうございます! -- ひげぽん 2009-02-25 (水) 22:06:34
  • buffering と set-position の共存のために、バッファリングのクラスを分離して実装を完了しました。 BufferedFileBinaryInputPort.cppとテスト input-port.scm。 -- ひげぽん 2009-02-21 (土) 22:13:00
    • 変更点で大きいのはバッファリングモードをクラスの中に持たなくなった事です。クラスを作る側がバッファリングのクラスかバッファリングなしを選ぶようにした事で、クラス内のバッファリング分岐がなくなりました。 -- ひげぽん 2009-02-21 (土) 22:13:24
      • テストはバッファリングの境界を越えたり、バッファより大きなサイズを読み込んだりなど境界条件をテストしています。 -- ひげぽん 2009-02-21 (土) 22:15:59
    • FileBinaryOutputPort.cpp の position の対応はどうしましょうか?私がやりましょうか。それともお任せしましょうか。 -- ひげぽん 2009-02-21 (土) 22:13:37
      • やらせてください。 -- ココサブ 2009-02-22 (日) 12:25:13
      • 了解です。ではよろしくお願いします。 -- ひげぽん 2009-02-22 (日) 12:28:23
  • position の実装のために Buffering mode の仕様を見直しています。input port に関しては LINE は BLOCK と同じ動きをしても構わないのですね。(根拠R6RS:line は行末でフラッシュを行ない、読み込みを行末まで行うか、その他の実装系依存の振舞いを・・・) -- ひげぽん 2009-02-21 (土) 12:39:24
    • ということは Buffering on/off それぞれでクラスを2種類に分けると実装がとても楽になりそうです。 -- ひげぽん 2009-02-21 (土) 12:40:05
  • O3 でビルドされるように戻す事。 -- ひげぽん 2009-02-20 (金) 00:58:36
  • CustomBinaryOutputPort.cpp の実装はひとまず完了しました。 -- ココサブ 2009-02-19 (木) 21:44:48
    • お疲れ様です。ひとまずというのは TODO が何か残っているという事でしょうか? -- ひげぽん 2009-02-19 (木) 22:41:52
    • 実装が正しいことの確認が足りないことと、今後機能を付け足していく可能性を考えて「ひとまず完了」といっていました。 -- ココサブ 2009-02-20 (金) 06:48:09
  • custom-binary-input-port の実装が一通り完了しました。custom-binary-output-port の参考になれば幸いです。custom-port はテストがややこしいので、R6RS test-suite からテストを一部切り出して input-port.scm というテストを作っています。output-port.scm を作っておいたのでそこにテストを書いていただけると助かります。 -- ひげぽん 2009-02-19 (木) 14:44:46
  • Port の継承ツリーを変えました。BinaryInputPort < BinaryPort < Port 。TextualInputPort < Port となります。post-position 系でそれぞれに必要なインタフェースが見えたのが背景です。 -- ひげぽん 2009-02-18 (水) 23:11:50
    • この継承ツリーのおかげで以下のように簡単に port-has-port-position? 手続きが実装できました。
      Object scheme::portHasPortPositionPEx(VM* theVM, int argc, const Object* argv)
      {
         DeclareProcedureName("port-has-port-position?");
         checkArgumentLength(1);
         argumentAsPort(0, port);
         return Object::makeBool(port->hasPosition());
      }
  • R6RS I/O 表にhigeとあって分担方針が分りやすかったです。custom-binary-output-port周りの実装を始めました。 -- ココサブ 2009-02-18 (水) 22:00:25
    • port-position 系の実装をしています。 -- ひげぽん 2009-02-18 (水) 22:13:46
  • open-bytevector-input-port, port-eof? を実装しました。次は custom-binary-input-port 周り、get-bytevector-n などをやります。R6RS I/O 表には反映済みです。 -- ひげぽん 2009-02-18 (水) 14:27:41
  • ココサブさんへ。現在 Port の実装をしてもらっていますが、僕にも分担できるところはあるでしょうか?。ココサブさんの邪魔にならない独立した部分でお手伝いできるところがあればやりたいです。 -- ひげぽん 2009-02-17 (火) 11:36:08
    • ありがとうございます。XXXPortクラスでの切り分けは可能だと思います。入力ポートはひげぽんさんにお願いするみたいな形で。あとはPortProcedure.cppをこまめにコミットするとか、ですかね。 -- ココサブ 2009-02-17 (火) 21:32:58
    • では。入力ポートと predicate 系(input-port?) などをやりたいと思います。 -- ひげぽん 2009-02-18 (水) 11:04:15
  • Linux, Darwin で sse 関連のフラグを有効にするようにしました。BSD等は手元に環境がないのでチェックできていません。もし環境があれば configure.ac をいじってみて下さい。 -- ひげぽん 2009-02-10 (火) 23:25:30
  • Repl が動かなくなった。 -- ひげぽん 2009-02-10 (火) 16:23:50
    • readかwrite変えた影響っぽいですね。なるべく早く対応します。 -- ココサブ 2009-02-10 (火) 21:07:25
    • バッファいっぱいになるまで、readしつづける形になっていたためでした。直ったと思います。 -- ココサブ 2009-02-10 (火) 21:43:37
    • 対応ありがとうございます。read/write のエラー処理ですが完成したらお知らせ下さい。もしくは処理に迷ったら相談しましょう。 -- ひげぽん 2009-02-10 (火) 23:30:06
  • アドバイスありがとうございました。コーデックをシングルトン化できたはずです。 -- ココサブ 2009-02-07 (土) 10:48:57
    • 良かったです。 -- ひげぽん 2009-02-08 (日) 16:22:31
  • ひょっとしたら -msse とか。 -- ひげぽん 2009-02-07 (土) 01:11:05
  • srfi-48 の動作に必要だったので write-char を実装しました。TextualOutputPort::putChar を呼んでいるだけです。 -- ひげぽん 2009-02-06 (金) 23:35:11
  • SRFI を新しいシステムに入れ替えました。しばらくおかしなことが続くかもしれません。 -- ひげぽん 2009-02-06 (金) 14:39:20
  • .mjt さんのコードを動かすために必要だったのでミニマム版の put-bytevector を追加しました. -- ひげぽん 2009-02-06 (金) 11:55:32
  • 久しぶりにレビューを書きました。さぼっててすみません。お手数ですがご一読下さい>ココサブさん -- ひげぽん 2009-02-05 (木) 23:34:58
    • レビューありがとうございます。write, readのエラー時以外の対応以外は修正しました。 -- ココサブ 2009-02-07 (土) 10:46:05
      • 確認しました。ありがとうございます。 -- ひげぽん 2009-02-08 (日) 16:22:54
  • (eqv? (utf-8-codec) (utf-8-codec))の結果を真にするためにUTF8Codecなどをシングルトンにしていたのですが、makeして実行すると "CALL: stack expanision" が連続で出て止まらない状態になってしまいました。"CALL: stack expanision"とでるのは call.inc.cpp のクロージャの辺りみたいです。シングルトンの実装は http://www.geocities.jp/ky_webid/design_pattern/009.html を主に参考にして大体そのとおりになっています。書いている途中でSymbolの実装みたいにすればよいのかなーとふと思いました。何かアドバイスをいただけないでしょうか。 -- [[ ココサブ]] 2009-02-05 (木) 22:06:59
    • CALL: stack expansion は恐らく Scheme 的な無限ループを作ってしまったのだと思います。方法ですが以下の方法はどうでしょう(シングルトンの仲間ですね)。(utf-8-code) が必ず同じ object を返すので eqv? を満たすはずです。もし C++ からも同じオブジェクトを参照したいなら別関数に移動して共用すればよいかと。 -- ひげぽん 2009-02-05 (木) 22:15:06
      Object scheme::utf8CodecEx(VM* theVM, int argc, const Object* argv)
      {
         DeclareProcedureName("utf-8-codec");
         checkArgumentLength(0);
         static Object codec = Object::Undef;
         if (codec.isUndef()) {
             codec = Object::makeUTF8Codec();
         }
         return codec;
      }
  • SRFI-1, SRFI-41, SRFI-39, SRFI-38, SRFI-28, SRFI-27 を追加しました。 -- ひげぽん 2009-02-05 (木) 21:49:28
  • 重要:(srfi :1) を別ファイルでインストールするように変更を考えています。(いままではバイナリにくっつけてた)。その前段階として全ての (srfi :1) を (mosh srfi :1) と変更しています。これの影響でビルドが失敗すると思うので以下の方法でビルドをお願いします。 svn up && ./configure && make && sudo make install && ./configure --enable-develper && make 。最初に enable-developer を無効にし安全にビルドして mosh をインストールする形です。 -- ひげぽん 2009-02-05 (木) 19:03:48
  • TODO: srfi-27 -- ひげぽん 2009-02-05 (木) 01:13:40
  • native-transcoderを追加しました。ひとまず codec=utf-8-codec, eol-style=プラットフォームにあわせる, error-handling-mode=ignore_errorにしましたが、nativeなtranscoderってこれでよかったでしょうか。 -- ココサブ 2009-02-04 (水) 21:31:30
    • 良いです。ありがとうございます。 -- ひげぽん 2009-02-04 (水) 21:33:47
  • make update で R6RS ライブラリがプリコンパイルされるようになりかなり速くなりました。srfi 13 とか。 -- ひげぽん 2009-02-04 (水) 21:06:25
  • transcoderの情報をdisplayなどで詳しくでるようにしました。細々といくつか変更しています。make checkは以前どおりのようです。 -- ココサブ 2009-02-03 (火) 22:34:58
    • codec の情報が詳しく出るのは良いですね。 Codec.h は抽象クラスなので return UC("no-name-codec"); はいらないかなと思いました。 -- ひげぽん 2009-02-03 (火) 22:57:09
      • 補足。抽象クラスなので、純粋仮想関数 virtual xx = 0 かなと。 -- ひげぽん 2009-02-04 (水) 10:44:04
      • 誤解してました。そうしました。 -- ココサブ 2009-02-04 (水) 21:28:33
      • 確認しました。ありがとうございます。 -- ひげぽん 2009-02-04 (水) 21:34:10
  • FileBinaryInputPort に bufRead の特殊化メソッド bufRead1 を追加しました。 Fasl で使う getU8 では常に size = 1 しか読まないので memcpy などのオーバヘッドが激しいのを改善する目的です。バッファリングのロジック自体はいじってないです。 -- ひげぽん 2009-02-03 (火) 15:56:26
    • 了解です。見ました。 -- ココサブ 2009-02-03 (火) 22:32:54
  • .mjt/moshでも指摘されていますが、lib/clos/private/rrfast-method-cache.mosh.ssが見つからないとでますね。 -- ココサブ 2009-02-02 (月) 07:47:40
    • 失礼しました。実験用のコードが install 対象となっていましたので外しました。 -- ひげぽん 2009-02-02 (月) 11:12:47
  • 重要:trunk を追っかけている人が出てきたのでデフォルトでは bison, re2c, mosh, gosh によるコード生成はオフにしようと思います。Mosh 開発者(ひげぽんとココサブさん)は、configure --enable-developer するようにお願いします。こうすることで以前のようにコードの変更→コード生成という流れが make で行えます。 -- ひげぽん 2009-02-01 (日) 23:50:13
  • このデザインを持ってくるのはどうでしょう?(ロゴや色などはあとで差し替えます。)About - Mosh -- ひげぽん 2009-01-30 (金) 23:29:21
    • 良いと思います。検索もできるんですね。 -- ココサブ 2009-02-02 (月) 07:43:12
  • ココサブさんへ:FileBinaryOutputPort.cpp で bufIdx_ が初期化されていないように見えます。ご確認をお願いします。勘違いだったらごめんなさい。 -- ひげぽん 2009-01-30 (金) 17:49:25
    • あと error や todo など、あとで実装する予定の箇所は、万が一そこを処理が通ってもすぐに気付く事ができるように MOSH_ASSERT もしくは MOSH_FATAL を入れておくと良いです。(ASSERT には本当に良く助けられています。 詳しくは Writing Solid Code 参照) -- ひげぽん 2009-01-30 (金) 17:54:56
    • bufIdx_の初期化するようにしました。指摘ありがとうございます。 -- ココサブ 2009-02-02 (月) 07:48:24
  • ouput-port のバッファリングに関連すると思われる不具合に遭遇。週末に再現状況を探ります。 -- ひげぽん 2009-01-30 (金) 13:00:25
    • かなりがんばりましたが再現したりしなかったりと不安定。うーむ。困ったな。 -- ひげぽん 2009-01-30 (金) 17:16:20
    • もしかするとwriteに失敗した場合かもしれないですね。とりあえずMOSH_ASSERTで捕捉するようにしました。 -- [[ ココサブ]] 2009-02-02 (月) 07:41:41
      • なるほど。それはありそうですね。 -- ひげぽん 2009-02-02 (月) 11:08:16
  • main.css は id と class が違う。 -- ひげぽん 2009-01-29 (木) 00:04:47
  • Shibuya.lisp tech talk #2 まで 1 ヶ月。 -- ひげぽん 2009-01-28 (水) 15:55:12
    • 目標の日までもう少しですね。なんとかしたいです。 -- ココサブ 2009-01-29 (木) 21:30:13
    • 手伝える事やアドバイスが欲しい事があれば遠慮なくおっしゃって下さい。自分はひたすらドキュメントを書いています。 -- ひげぽん 2009-01-29 (木) 21:39:37
  • ドキュメント追加。Mosh 。 About, Unit Testing, Pretty Printing, Database Interface. -- ひげぽん 2009-01-28 (水) 15:54:38
  • ドキュメントツールを選定し、ドキュメントを書き始めました。 Foreign Function Interface 。どうでしょうか?。まずは ffi やインストール方法など Mosh 特有のものから書き始めようと思います。(rnrs) などのドキュメントは R6RS からぶっこ抜きたいなあ。 -- ひげぽん 2009-01-27 (火) 23:54:00
    • いいですね。R6RSの分は未定義の動作についてだけ述べて、あとは本家参照でも十分じゃないかと思います。それと(c-function lib ret func arg ...)の" arg ... "は可変長引数のようなので" . arg "になるんじゃないかと思いました。 -- ココサブ 2009-01-28 (水) 07:25:41
    • ありがとうございます。手元で args ... を修正しました。R6RS を良く知らずに普通に Scheme をやりたい初心者ユーザーには、R6RS は本家参照ってのがきびしいかなとも思うんですがどうですかね。手間がかかりすぎますよね。 -- ひげぽん 2009-01-28 (水) 12:12:40
  • DBI 経由で MySQL に query を発行できるようになりました。便利。そして CLOS なかなかよろしい。 -- ひげぽん 2009-01-26 (月) 22:50:01
  • Tiny CLOS の print-object method に必要だったので output-port? を実装しました。 -- ひげぽん 2009-01-22 (木) 22:52:21
  • MySQL C API 相当のライブラリ (mysql) を追加しました。./configure --with-mysql=/usr/lib/libmysqlclient.so.15 のように configure するとより確実に動きます。 -- ひげぽん 2009-01-22 (木) 15:50:28
  • FileBinaryOutputPortのbuffer mode lineの方もひとまずできました。flushをC++上では外部から呼べるようにしています(display手続きなどのため)。benchとってみたらclos.scmなどが速くなっているようなのでgraph更新しても良いかもしれません。 -- ココサブ 2009-01-20 (火) 22:14:29
    • (1)お疲れ様です> line 。 -- ひげぽん 2009-01-20 (火) 23:19:31
    • (2)clos は昨日いじっていたのでそのおかげで多少速くなっているのかも。グラフに追記しました。 -- ひげぽん 2009-01-20 (火) 23:19:43
    • (3)ベンチマークですが今からでも遅くないので I/O のベンチマークを書いていただけないでしょうか。性能の指標にもなりますし、Ypsilon や Gauche など他の処理系と比べる事が可能になるなどメリットがたくさんあるので。 -- ひげぽん 2009-01-20 (火) 23:19:57
    • (4) TextualOutputPort::flush の実装ですが port_ を見るのではなくて StringTextualOutputPort の場合などは flush を override して空にする方が良いかなと思いました。(他に似たようなことを僕もやっていそうなのであれですが。あったら直します。) -- ひげぽん 2009-01-20 (火) 23:20:40
      • してみました。 -- ココサブ 2009-01-24 (土) 09:48:59
    • ありがとうございます。 -- ひげぽん 2009-01-25 (日) 22:44:41
  • x86-64 Linux で Mosh が動くようになりました。FFIが動かないので x86-64 gcc の呼び出し規約を調べます。 -- ひげぽん 2009-01-20 (火) 16:00:54
  • OutputPort のバッファはあからさまに速いですね。びっくりしました。Port 関連でテストが通っていなかったので報告します。現象:make update で作成する %3A98.ss.fasl がサイズ 0だった。原因:call-with-port で port を close していなかったため buffer が flush されていなかった。対策:call-with-port で close するようにした。 -- ひげぽん 2009-01-18 (日) 16:51:58
    • 今回はライブラリのバグが原因でしたが、Gauche のように flush-all-ports 的な手続きを用意するのもありなきがしました。R6RSにはないのでしたっけ? -- ひげぽん 2009-01-18 (日) 16:53:09
    • R6RS少し読んでみましたがなさそうです。flush関係の手続きを用意するのは良いかもしれませんね。force-outputとか処理系によって名前も様々のようで興味深いです。 -- ココサブ 2009-01-19 (月) 21:33:38
      • そうでしたか。なるほど。急ぎではないですが flush 系手続きの検討もぜひお願いします。(最低限:内部的に main が終わったときに全て flush するでも良いと思います。) -- ひげぽん 2009-01-19 (月) 22:50:34
  • MySQL ライブラリを書いています。ドキュメントも書いているので意外と面倒。TODO: libmysqlclient を configure 時に発見する -- ひげぽん 2009-01-18 (日) 16:39:07
  • FileBinaryOutputPortのバッファリングを実装中です。make updateが早く終わるようになったと思います。 -- ココサブ 2009-01-18 (日) 11:51:39
    • おお。Outputport は buffer mode line があるのでそれも楽しみです。 -- ひげぽん 2009-01-18 (日) 12:03:16
  • buffer size ですが glibc-2.7 や Gauche は 8192 byte のようです。(根拠は分かりませんが) -- ひげぽん 2009-01-17 (土) 17:20:15
    • 標準的なページサイズは 4096 byte なので、1ページ余分に先読みというイメージですかね。 -- ひげぽん 2009-01-17 (土) 17:23:31
    • ふむふむ。気になったのでbuffer sizeを8192に変えたものとでbenchを取ってみました。4096とどっちもどっちの結果だったので8192に変えた方が安心かなあと思います。ひげぽんさんはどう思われますか? -- ココサブ 2009-01-17 (土) 20:39:50
      • では 8192 byte にしましょうか。お手数おかけします。 -- ひげぽん 2009-01-18 (日) 12:01:15
  • libmysqlclient が存在し、かつ mysqld が動いていないときに mysql-real-connect が NULL を返していました。その後の処理で seg fault になったようです。戻り値をチェックするようにテストを変更しました。ご確認をお願いします。 -- ひげぽん 2009-01-17 (土) 16:43:21
    • 確認しました。 "mysql connect failed" と確かに出ました。 -- ココサブ 2009-01-17 (土) 20:09:45
      • ありがとうございます。 -- ひげぽん 2009-01-18 (日) 12:01:45
  • graph/benchmarks.ods に新しくベンチマーク結果をのせました。バッファがきちんと動いていて以前と同様の速度が出ています。素晴らしい。 -- ひげぽん 2009-01-17 (土) 16:26:14
  • svn up して make && make check すると以下のような GC 警告とエラーが出ます。length という識別子をうまく読めていない? -- ひげぽん 2009-01-17 (土) 09:49:27
    GC Warning: Finalization cycle involving 84abc00
    Running 1924/1934 (10 ToDo)  
    ... passed
    
    
    Exception:
       error in raise: unhandled exception has occurred
    
    Condition components:
       1. &undefined
       2. &who: eval
       3. &message: "unbound variable"
       4. &irritants: (ngth)
    • buffering を off にしても起こるので別件の可能性が高い。 -- ひげぽん 2009-01-17 (土) 10:04:11
    • Running 1924/1934 というのは ./mosh -5 all-tests.scm の箇所だと思うのですが、こちらだと 1928/1940 (12 ToDo) となります。all-test.scmかなにかがそろってない気がします。 -- ココサブ 2009-01-17 (土) 11:03:59
      • test/ffi.scmのmysqlの辺りをコメントにしたのち make && make check しましたが、この警告とこのエラーは出ていないようです。 -- ココサブ 2009-01-17 (土) 11:18:01
      • ffi.scm は別プロセスなので関係なかったです。ただ all-test.scm を消して make check してみたら警告が出なくなりました。一応解決なのですが、相変わらず Running 1924/1934 (10 ToDo) と数が合いませんね。 -- ひげぽん 2009-01-17 (土) 16:17:25
    • all-test.scm消してからやり直したら Running 1924/1934 (10 ToDo) になりました。こちらのが古かったみたいです。お騒がせしました。 -- ココサブ 2009-01-17 (土) 20:08:10
  • open-shared-libraryでセグメンテーションフォールトが起こるケースがあります。(test/ffi.scmをそのまま試験したら起こっていたので、test/ffi.scmを書き換えながら実験) -- ココサブ 2009-01-17 (土) 09:32:54
    • (open-shared-library "libmysqlclient.so.15.0.0")で起こる。 (open-shared-library "./libmysqlclient.so.15.0.0")にすると起こらない。 -- ココサブ 2009-01-17 (土) 09:34:48
    • (open-shared-library "libffitest.so.1.0")では起きない。(open-shared-library "./libffitest.so.1.0")でも起きない。(open-shared-library "./libffitest.so")では例外が起こる。 -- ココサブ 2009-01-17 (土) 09:36:42
    • ありがとうございます。それぞれ以下3つを教えて下さい。1.OSなど環境、2.カレントディレクトリに .so があるか 3.コマンドラインで実行しているコマンド -- ひげぽん 2009-01-17 (土) 09:48:11
      • 1.Ubuntu8.10に autoconfの2.63, libtoolの2.2.6, GCCの4.2.1を入れてあります。2.カレントにあるのは libffitest.so.1.0 のみ 3. ./mosh ./test/ffi.scm -- ココサブ 2009-01-17 (土) 10:52:26
      • libmysqlclient.so.15.0.0が /usr/local/lib の下にあることはあったので、mysqlのサービスが動いていないのが原因のような気がしてきました。 -- ココサブ 2009-01-17 (土) 10:53:55
      • 正解でした。修正しました。確認ありがとうございました。 -- ひげぽん 2009-01-17 (土) 16:44:29
  • FileBinaryInputPortのバッファひとまずできました。こっちでbenchした限りでは速くなっています。 -- ココサブ 2009-01-17 (土) 09:28:10
    • ありがとうございます。見るからに速くなっていますね。 make update とか。素晴らしい。関連するかどうか分かりませんが妙なエラーが出るようになったので上に書いておきます。 -- ひげぽん 2009-01-17 (土) 09:48:46
  • バッファの実装始めました -- ココサブ 2009-01-15 (木) 07:43:26
    • コード見ました。良いですね。バッファが有効になったら教えてくださいませ。 -- ひげぽん 2009-01-15 (木) 14:51:02
  • TODO:Linux x86-64, OSX x86-64 でのビルド。 ./configure --host=x86_64 --disable-threads && ./configure && make -- ひげぽん 2009-01-14 (水) 14:35:29
  • FileTextualInputPort.h が svn add されていないようです。(includeを外せば動きました)。ちなみに FileTextualInputPort クラスは何をするんでしょう? BinaryInputPort を TextualInputPort に渡すだけではできないことがあるのかな? -- ひげぽん 2009-01-14 (水) 11:04:36
    • 一つのポートにつき一つのクラスの印象があり作っていました。BinaryInputPortをTextualInputPortに渡すで問題なさそうです。 -- ココサブ 2009-01-14 (水) 21:01:09
      • ありがとうございます。 -- ひげぽん 2009-01-15 (木) 14:51:29
  • openFileInputPortExの構造をどうするかで悩み中。また、r6rs-example/shell-test.ssがレポジトリに入ってない様子。 -- ココサブ 2009-01-13 (火) 07:40:19
    • より具体的にはどう迷っていますか?すみません。shell-test.ss は帰宅後追加します。 -- ひげぽん 2009-01-13 (火) 10:57:21
      • 追加しました。 -- ひげぽん 2009-01-13 (火) 22:05:32
    • 可変引数であり、引数によりバイナリポートを返すかテキストポートを返すか変わってくる点をどうまとめるのが良いか迷っています。 -- ココサブ 2009-01-14 (水) 07:47:34
      • なるほど。C++的にどうきれいに書くかという話ですね。複雑な仕様なのである程度汚いのはしょうがないと思います。正攻法は関数に入った直後に分岐して別関数へとかですかね。いずれにせよ汚く動くものを作ってテストを書き、きれいにするのが近道かもしれません。 -- ひげぽん 2009-01-14 (水) 10:51:54
  • ffitest.c がリポジトリに入ってないようです。 -- ココサブ 2009-01-12 (月) 07:17:27
    • 申し訳ありません。追加しました。 -- ひげぽん 2009-01-12 (月) 11:28:50
  • バッファリングがなくなって fasl-read が極端に遅くなっている模様。明日考えます。 -- ひげぽん 2009-01-09 (金) 23:27:43
    • Fasl の場合は R6RS の buffer mode "BLOCK" になれば良いだけですね。ココサブさんのバッファリングの実装を待てば速くなりそう。ということでよいでしょうか?(or それともバッファリングは僕が実装しましょうか?) -- ひげぽん 2009-01-10 (土) 11:42:25
    • とりあえず私が実装する方向でお願いします。 -- ココサブ 2009-01-12 (月) 07:09:05
      • 了解です。よろしくお願いします。 -- ひげぽん 2009-01-12 (月) 11:29:15
  • get-bytevector-nに手をつけました。ByteVectorProcedure.cppにあるのに気づかずにやってしまい、なんだか似ている定義がPortProcedures.cppにあります。makeの時点でByteVectorProcedures.cppにあることに気づき、とりあえずByteVectorProcedures.cppの方はコメントにしてmakeを通し、コミット。今回私が作ったのは消去してByteVectorProcedures.cppにあったのをPortProcdures.cppに移すのが良いでしょうか。 -- ココサブ 2009-01-09 (金) 22:46:36
    • 場所が間違っていたのですね。すみません。ココサブさんのものを生かして PortProcedures.cpp にうつして下さい。元のものはお手数ですが消していただいても良いでしょうか。 -- ひげぽん 2009-01-09 (金) 22:52:52
  • おおよその目標として Shibuya.lisp #2 までに R6RS 準拠を果たしてリリースしたいのですがいけそうですかね。ぎりぎりかなあ。 -- ひげぽん 2009-01-09 (金) 21:34:31
    • ぎりぎりな感じですね。逆に目標としてはいいと思います。Shibuya.lisp #2を目標に取り組みます。 -- ココサブ 2009-01-12 (月) 07:11:09
      • ではそれでいきましょう! -- ひげぽん 2009-01-12 (月) 11:30:03
  • TODO:psyntax 最新化すること。 -- ひげぽん 2009-01-09 (金) 12:12:16
  • lookahead-u8をStringポート以外を実装。fileの方はテストもつくってみました。 -- ココサブ 2009-01-08 (木) 22:02:09
    • 確認しました。ありがとうございます。 -- ひげぽん 2009-01-08 (木) 22:21:33
  • fd ベースにしたメリット発見。殆どの資産をネットワーク API にいかせます。 -- ひげぽん 2009-01-08 (木) 21:15:36
  • シェルの実装にどうしても必要だったので input-port? と binary-port? を実装しました。すみません。 -- ひげぽん 2009-01-07 (水) 23:02:49
    • いえいえ。こちらも進みが遅くですいません。 -- ココサブ 2009-01-08 (木) 20:45:32
  • .zshrc などで export GTEST_COLOR=1 としておくと make check が多少楽しく。 -- ひげぽん 2009-01-07 (水) 21:30:25
  • Base class BinaryInputPort, BinaryOutputPort に int fileno() const を追加しました。また BinaryOutputPort も fd 対応をしました。 -- ひげぽん 2009-01-07 (水) 15:28:16
  • C++ から multiple values を返したいときは vm->values でうまくいくことを確認しました。いままでうまく動くか怪しかったのですが確認したところ OK でした。 -- ひげぽん 2009-01-06 (火) 15:39:41
    • 2個値を返す専用に values2 を追加しました。 -- ひげぽん 2009-01-07 (水) 21:04:26
  • ファイル I/O ポートの内部表現ですが現状の FILE* をやめて int fd にすべきですね。そうすれば exec などとの相性も大変よろしくなります。 -- ひげぽん 2009-01-06 (火) 14:30:27
  • TODO: FFI -- ひげぽん 2009-01-06 (火) 11:03:01
  • syntax-case マクロをバックエンドで扱える可能性について。 -- ひげぽん 2009-01-05 (月) 23:04:09
  • TODO: trace Records -- ひげぽん 2009-01-05 (月) 23:00:44
  • 前回のリリースから間が空いて、到達目標がぶれがちなので整理しました。http://img.f.hatena.ne.jp/images/fotolife/h/higepon/20090104/20090104235847.jpg -- ひげぽん 2009-01-05 (月) 00:14:51
  • R6RSライブラリの serialize と、SRFI-19(日付・時刻)をサポートしました。 -- ひげぽん 2009-01-04 (日) 22:55:31
  • 2件ほど問い合わせがあったので libtool を 2.2.6a で統一することで様子を見る事にしました。お手数ですがバージョンをあわせてください。 -- ひげぽん 2009-01-01 (木) 22:59:30
    • あわせました。 -- ココサブ 2009-01-05 (月) 20:12:27
    • ありがとうございます。 -- ひげぽん 2009-01-05 (月) 22:01:38
  • 命名規則に違反していたので PortTest.cpp にリネームしました。テストの種類が増えたらPortクラス毎にテストファイルを作りましょう。 -- ひげぽん 2009-01-01 (木) 09:48:31
  • TestPort.cpp を追加しました。 -- ひげぽん 2009-01-01 (木) 00:10:35
  • 本家で fixnums のテストが追加になっているようです通らないものがあるのでチェックをお願いします。 -- ひげぽん 2008-12-26 (金) 23:24:10
    • 対応してみました。fxdiv0のところの対応(Fixnum.h)がこれでよいのか少し不安ではあります。 -- ココサブ 2009-01-05 (月) 20:56:31
      • テストが通っているので良しとしてしまいましょう。 -- ひげぽん 2009-01-05 (月) 22:02:30
  • 了解ですー。良いお年を。 -- ひげぽん 2008-12-25 (木) 22:54:22
  • 1月4,5日までmosh活動はおそらくしません。よろしくお願いします。 -- ココサブ 2008-12-25 (木) 22:44:40
  • 実は io/ports.sls, io/simple.sls, eval.sps の3つのテストを通せば、全て Pass です。がんばりましょう。ゴールが見えてきましたね。 -- ひげぽん 2008-12-25 (木) 15:32:35
    • ioパート責任重大ですね。がんばります。 -- ココサブ 2008-12-25 (木) 21:34:28
  • 新たに追加されていた R6RS テストで通っていなかったものを通しました。baseとunicode。 -- ひげぽん 2008-12-24 (水) 15:48:32
  • 特殊な状況下での guard がうまく動くようにしました。 -- ひげぽん 2008-12-23 (火) 23:49:35
  • branch から trunk にマージしました。Faslファイルフォーマットが変更になっています。そのためビルド時に使用している mosh を入れ替える必要があります手順は以下の通りです。 -- ひげぽん 2008-12-21 (日) 14:05:38
    svn up
    make
    sudo make install
    Makefile.am の # .scmc.h: を含む3行のコメントを元に戻す
    make clean && make
    • 遅くなりましたがマージしたモノのビルド完了しました。 -- ココサブ 2008-12-25 (木) 22:38:29
  • make-transcoderにあわせてTranscoderのコンストラクタ周りを変更中。切りのいい当たりでコミットしました。 -- ココサブ 2008-12-19 (金) 22:18:07
    • 目を通しました。ありがとうございます。 -- ひげぽん 2008-12-20 (土) 00:13:03
  • latin-1-codecの追加。ファイル名をLatin1CodecにするかLATIN1Codecにするかで少し悩みました。コード自体は常に1バイト処理すれば良いのでできてると思います。 -- ココサブ 2008-12-18 (木) 21:14:52
  • utf-16-codecを追加しました。UTF16Codecのコンストラクタを増やしていますが問題なかったでしょうか。 -- ココサブ 2008-12-18 (木) 07:31:04
    • 確認しました。良いです。 -- ひげぽん 2008-12-18 (木) 10:54:55
    • ありがとうございます。 -- ココサブ 2008-12-18 (木) 20:06:10
  • buffer-mode?の追加。(r833) -- ココサブ 2008-12-17 (水) 07:37:13
  • <buffer-mode symbol>と<error-handling-mode symbol>の追加をしました。 -- ココサブ 2008-12-16 (火) 07:36:23
  • Mosh/最適化/手法リストを完了。もうすぐ trunk にマージします。気持ち速くなっています。 -- ひげぽん 2008-12-15 (月) 23:47:30
    • おお。楽しみです。 -- ココサブ 2008-12-16 (火) 07:35:41
  • native-eol-styleの実装などをしました。軌道に乗るまでは細かくコミットしていくようにしようと思います。 -- ココサブ 2008-12-14 (日) 22:47:27
    • お疲れ様です。了解です。 -- ひげぽん 2008-12-14 (日) 23:34:26
  • 催促してしまったような形になってすみません。了解です。 -- ひげぽん 2008-12-13 (土) 19:36:50
  • 大丈夫ですか。どこかでつまっていたりしませんか?>ココサブさん -- ひげぽん 2008-12-12 (金) 19:04:45
    • 心配させて申し訳ないです。configure.acで困ってはいますが、それより仕事が忙しくなった事などによりmoshに時間をあまり割けていない事が原因です。IOをやる気はあるので後1週間弱ほどは動きがなくても心配しないで待っていただけますか。 -- ココサブ 2008-12-13 (土) 10:14:31
  • svn up 可になりました。ご迷惑おかけしました. branches/pass2define-bug を作りました. -- ひげぽん 2008-12-10 (水) 16:45:02
  • やむにやまれぬ事情がありましてデバッグ中のコードをコミットしてしまいました。 svn up はしないようにお願いします。すみません。ブランチ切ろうかしら。 -- ひげぽん 2008-12-10 (水) 00:06:00
  • <eol-style symbol>を追加しました。eol-style symbolとeol-styleは別物という考え方で良いでしょうか。eol-style(syntax)の「特に、戻り値が make-transcoder の eol-style 引き数に適合する行終端形式シンボルであることもある。(in particular, the result may be an eol-style symbol acceptable as an eol-style argument to make-transcoder. )」辺りを読むとその考え揺らいでしまいました。あと、eol-style(syntax)はコンパイラで扱う領域ですよね。ここはひげぽんさんがやる形でいった方がよいでしょうか。 -- ココサブ 2008-12-07 (日) 14:49:40
    • お疲れ様です。その考えで合っています。ココサブさんが作るのは ./mosh -5 で実行されるバックエンドにおける動きなので eol-style symbol を引数にとる手続きを作っていただく形になります。(Bytevectorにおけるendianness と同様の扱いです。)また以下のように eol-style (syntax) は既に実装されています。R6RS領域に実装されているのでtest-data.scm では使用できないことにご注意下さい。 -- ひげぽん 2008-12-07 (日) 14:58:45
      mosh>(eol-style cr)
      cr
      mosh>(eol-style hoge)
         1. &who: eol-style
         2. &message: "invalid syntax"
         3. &syntax:
             form: (eol-style hoge)
             subform: #f
         4. &source-information:
             file-name: "<string port>"
             character: (0)
         5. &t	
  • いろいろとありがとうございます。まずは navtive-eol-style のためにOSが何かをconfig.h通して分るようにしたいと思います。 -- ココサブ 2008-12-08 (月) 07:47:06
  • Portのクラス構造を検討しました(Mosh/IO/Portのクラス構造)。InputOutputPortがやはり厄介です。Portの構造を考えなくても手を着けれそうな部分(eol-styleとか)はやり始めたいと思います。 -- ココサブ 2008-12-06 (土) 22:09:10
    • ありがとうございます。了解です。いろいろコードを書いてみると見えてくることもあるので賛成です> eol-style から。 -- ひげぽん 2008-12-06 (土) 22:47:00
  • ひたすら最適化のバグを修正中。 -- ひげぽん 2008-12-06 (土) 21:29:51
  • Mosh のビルド時に ./mosh を参照するのをやめて mosh を参照するようにしました。 -- ひげぽん 2008-12-03 (水) 23:34:23
  • letrec の最適化バグを修正したので svn merge -r758:776 ./branches/renv-mosh trunk しました。 -- ひげぽん 2008-12-03 (水) 23:33:56
  • libtool 周りでトラブったら find . -name "*.m4"|xargs rm をしてから autoreconf -ifv するとうまくいくっぽい。 -- ひげぽん 2008-12-02 (火) 12:04:27
  • コンパイラの最適化のバグを安全に直すために、branches/renv-mosh を作りましたのでお知らせしておきます(r758)。ココサブさんは trunk で今まで通り開発を続けてください。 -- ひげぽん 2008-12-02 (火) 11:34:46
  • autotools version(make通ってる) -- ココサブ 2008-11-29 (土) 09:01:12
    • automake-1.10.1 -- ココサブ 2008-11-29 (土) 09:01:27
    • autoconf-2.61 -- ココサブ 2008-11-29 (土) 09:02:10
    • libtool-2.2.4 (入ってなくてもmake通る。さっきmakeした後にいれた) -- ココサブ 2008-11-29 (土) 09:03:25
      • make 通っているようで良かったです。会社のPC2台、家のPCのうちどれかで version が違うらしくて autoreconf -ifv がうまくいかなくなったのでバージョンをそろえました。もしおかしくなったらお手数ですが僕と同じバージョンにして下さい。問題が起きていないときは必要ないですが。 -- ひげぽん 2008-11-29 (土) 21:50:33
  • libtool-2.2.6a -- ひげぽん 2008-11-28 (金) 15:21:53
  • autoconf-2.63 -- ひげぽん 2008-11-28 (金) 15:19:59
  • automake-1.10.1 -- ひげぽん 2008-11-28 (金) 15:18:22
  • autotools version -- ひげぽん 2008-11-28 (金) 15:18:10
  • Fixnumsのコンディション返すところの修正と、行き会ったりばったり仕様を読んだりコードを眺めたりしていて make-taranscoder 周りをちょこっと変更しました。r740です。 -- ココサブ 2008-11-27 (木) 22:31:26
  • IO周りを実装すれば、ほぼR6RSを全て実装できしたことになるはずなので、未実装を見つけたらぜひ共有して下さい。 -- ひげぽん 2008-11-26 (水) 22:19:11
    • また Mosh の次のリリースは IO周りが完了しだい行うように方針を変更します。(年内にリリース目標で) -- ひげぽん 2008-11-26 (水) 22:20:11
  • 早速ですがIO周り実装について情報共有 -- ひげぽん 2008-11-26 (水) 22:12:50
    • 現在の実装状況は最低限ファイルが読み書きできる様な状態です。特に Scheme 側にはファイルの仕組みや Transcoder の仕組みは十分に露出していません。(C++側には実装があっても)。 -- ひげぽん 2008-11-26 (水) 22:14:21
      • ひょっとしたら C++ で書かれたクラスの継承階層を変えないと実装できないものがあるかもしれない。(custom port の一部とか。) -- ひげぽん 2008-11-26 (水) 22:18:00
    • current-input-port などの動的環境は相談が必要。(今の実装は多分だめだとおもう) -- ひげぽん 2008-11-26 (水) 22:15:06
    • なのでやり方としては、仕様の把握→Moshの現実装把握(あれば)→おおざっぱな実装計画を共有→レビュー→実装という形になると思います。 -- ひげぽん 2008-11-26 (水) 22:16:20
  • IO 周り実装 と R6RS test suite 通らないものを次々とつぶす を並行する形でいきたいです。 -- ココサブ 2008-11-26 (水) 22:06:40
    • IO 周りは8.2 Port I/O, 8.3 Simple I/Oの実装という理解でよかったでしょうか。 -- ココサブ 2008-11-26 (水) 22:07:43
    • おお。ぜひおねがいします。その理解であっています。 -- ひげぽん 2008-11-26 (水) 22:11:49
  • Numeric tower 完成わーい。お疲れさまでした。 -- ひげぽん 2008-11-26 (水) 13:43:59
  • Changlog, r6rs-test-suite/Makefile対応しました。次に取り組むテーマは少し考えさせてください。 -- ココサブ 2008-11-26 (水) 07:28:03
    • ありがとうございます。了解です>テーマ -- ひげぽん 2008-11-26 (水) 12:39:59
  • 補足:「僕がやった方が良いもの」と書いたものでも、もちろん担当していただいて構わないです。その場合ちょっとだけ Mosh 特有の事情で苦労したりや勉強が必要かもという意図です。 -- ひげぽん 2008-11-25 (火) 23:38:56
  • 次にやっていただくことを決めましょう。まず前提として次の 0.0.9 のリリース時には
    • Numeric tower 全実装(もう少し)
    • Psyntax のマクロ の serialize(まだ)
    • tiny CLOS の同梱(現実的な速度で動く)(まだ)
  • を実現しようと思っていました。その次のリリースで
    • IO 周りのポート実装
    • 最適化
      • 命令即値化
      • Peep hole 最適化
    • ここで R6RS test 全て通す
  • を予定しています。現在の状況は 0.0.9 のリリースまでにやることはほとんど僕がやった方が良いものになっています。ココサブさんには次リリース用の機能を先行実装してもらうか、Mosh を使用したアプリやライブラリをやっていただければいいなと思っています。重要度・難易度順に選択肢は
    • IO 周り実装
      • 基本的な Port はすでに実装されている
    • ドキュメントツールを選択 or 開発(Moshで)。ドキュメントを整備
      • R6RS ドキュメントやSRFIドキュメントを、ぶっこぬいてきれいに作る。JavaDoc やDoxygen 的。
    • R6RS test suite 通らないものを次々とつぶす
    • 主要な SRFI を R6RS に移植
    • 簡単なテストフレームワーク作成(今の test-data.scm に代わるもの)
    • CGI/Web ライブラリの実装とアプリケーションの作成
      • これを通して Mosh の使いにくい点やバグを指摘してユーザービリティを向上

となっています。
さてどれがやってみたいですか? or 他にもやってみたいことがあればぜひ提案して下さい。

  • fxシリーズ最後まで来ました。テストも全部パスします。fx-が返しているコンディションが違っていたので直したのは秘密です。 -- ココサブ 2008-11-25 (火) 23:04:15
    • うお。すごい。内容も良いと思いました。ChangeLog にテスト全て通ったと書いておいて下さい。あと r6rs-testsuit/Makefile にテストの実行の追記をお願いします。 -- ひげぽん 2008-11-25 (火) 23:14:30
  • ココサブさんにやっていただきたい候補。IO・SRFI・CGI・テストフレームワーク。思いついたら追記する。 -- ひげぽん 2008-11-25 (火) 21:37:01
  • fxbit-count, fxlength, fxfirst-bit-set, fxbit-set?やりました。疑問が二つ。 -- ココサブ 2008-11-25 (火) 07:38:47
    • 1. Arithmetic.cppの関数を使っても構わないですか? Fixnum専用につくって少しでも速度稼ぐのと、似たような関数が増えるのとどっちがよいのかという疑問です。どっちでも特に構わないってのが楽ではあります。 -- 2008-11-25 (火) 07:39:54
      • おつかれさまです。一番望ましいのは、Arithmetic.cpp に書かれている Fixnum 用のコードを Fixnum.cpp/h に移動することですね。それをArithmetic.cpp や fx系の手続きから使うと。もし面倒であれば Arithmetic.cpp の関数をつかってください。 -- ひげぽん 2008-11-25 (火) 11:11:48
    • 2. fxbit-set?相当のbitwise命令ってないのだろうか -- 2008-11-25 (火) 07:41:22
      • 自己解決しました。 bitwise-bit-set? がありますね。 -- ココサブ 2008-11-25 (火) 07:45:00
  • R6RS test suite にバグがあるような気がしたのでバグレポートを PLT のMLに投げました。ドキドキ。 -- ひげぽん 2008-11-24 (月) 17:00:17
    • パッチが受領された。やったね。 -- ひげぽん 2008-11-25 (火) 11:14:13
  • (expt 2 (fixnum-width)) のところを (abs (+ (least-fixnum) (least-fixnum))) に置き換えてみました。 (+ (greatest-fixnum) (greatest-fixnum) 2) よりは見た目は良い気がします。 -- ココサブ 2008-11-24 (月) 07:31:59
    • ありがとうございます。 -- ひげぽん 2008-11-24 (月) 11:20:23
  • R6RS Test suite ですが一番大きなテスト base が 48 of 1958 tests failed. と全てパスするのが見えてきました。(今までは数値のReadやコア機能の未実装で実行エラーになっていた)。これはうれしい。 -- ひげぽん 2008-11-23 (日) 23:39:57
    • おお。残り2.5%くらいですね。 -- ココサブ 2008-11-24 (月) 07:36:18
  • 論理演算系のをやりました。単位元を思い出したり、英語ではidentity elementっていうのだと覚えたりと勉強になりますね。 -- ココサブ 2008-11-23 (日) 13:49:52
    • 1 とかは2の補数表現を正しく理解しているかみたいな復習にもなりますよね。本当はC++に2進数リテラルがあれば良いんでしょうけど。 -- ひげぽん 2008-11-23 (日) 17:19:24
  • fx+/carry, fx-/carry, fx*/carryやってみました。例外周りの処理とかこれでよいでしょうか? -- ココサブ 2008-11-23 (日) 08:09:06
    • お疲れ様です。早起きですね。良いです>例外周り。 -- ひげぽん 2008-11-23 (日) 11:25:03
  • 多値を使っているのを移動しました。それと svn propset svn:keywords "Id" hogehoge を試してみました。自動でIdの展開とか素敵です。 -- ココサブ 2008-11-22 (土) 20:30:37
    • ありがとうございます。 keywords はファイルを追加したときに設定すればよいのですが忘れてしまうのですよね。気付いたらやるようにしているのですが。 -- ひげぽん 2008-11-22 (土) 21:52:16
  • うお。早いですね。実装が追いつかれる。><。 -- ひげぽん 2008-11-22 (土) 20:13:36
    • いまのところflonumのとかを参考にすれば難しくないものばかりなのでこんなものじゃないかと。今日はほとんど家にいますし。早く進めているのだとしたら、ひげぽんさんのコードがパクりやすい(良い意味で)からだと思います。 -- ココサブ 2008-11-22 (土) 20:34:00
      • お。そうですか。fx+/carry あたりから事情が変わるのかな。 -- ひげぽん 2008-11-22 (土) 21:52:41
  • fx+/carryのような / が入ってる手続きの関数名はどうすればよいでしょうか? -- ココサブ 2008-11-22 (土) 20:08:27
    • おお。初めてのケースですね。fxAddCarry または fxAddcarry となるように scripts/gen-cproc.scm の調整をお願いします。 -- ひげぽん 2008-11-22 (土) 20:10:58
    • なにやらすでに fx+/carry は fxAddCarry になるようになっているかも。しかも、fx+/carryらは多値を返す手続きの模様。 -- ココサブ 2008-11-22 (土) 20:40:40
  • 除算, 剰余算をやりました。多値の使い方とかあってるでしょうか。 -- ココサブ 2008-11-22 (土) 20:07:38
    • ありがとうございます。C++側から多値を使うインターフェースは今のところありません。多値が必要な場合は可能であれば Scheme 側に定義していただけますか。see lib/core/base.scm -- ひげぽん 2008-11-22 (土) 20:09:27
  • r707は fx*の演算の間違いの修正, (fx- (least-fixnum))対応, Fixnum::BITSの修正に伴うテストの変更です。よろしくお願いします。 -- ココサブ 2008-11-22 (土) 14:30:03
  • all-test.scm が落ちたのはGaucheを0.8.14にしたら直りました。これまで使っていたのは0.8.11で、0.8.13でも駄目でした。+nan.0 がシンボル扱いされいたためのようです。compiler-with-library.scmcでtop-level:$:+nan.0 とかなってたのが+nan.0になってます。 -- ココサブ 2008-11-22 (土) 14:06:31
    • なるほど。はまりがちですね。そろそろ gosh に依存しない方が安心なのかもしれませんね。 -- ひげぽん 2008-11-22 (土) 14:14:30
  • fx-追加しました。checkArgumentLengthBetweenがあることに気づいたらそんなに悩むことなくいけました。 -- ココサブ 2008-11-22 (土) 08:17:43
    • お疲れ様です。OKです。 -- ひげぽん 2008-11-22 (土) 11:19:20
  • fx*を直しました。Fixnum::BITS = 30にしました。sedのオプションはMakefile.amを変更済みだったのでautomakeすれば良いはずです。 -- ココサブ 2008-11-22 (土) 07:34:31
    • 修正ありがとうございます。 fx* のテストが通っていないようです。 const int64_t ret = fx1 + fx2; は * の間違いではないでしょうか。 -- ひげぽん 2008-11-22 (土) 11:19:04
  • fx*やっている中でFixnumのビットの扱いが仕様と違っているようなので変更しました。11.2 Fixnumsのwが29であると考えると、2^(29 - 1) - 1 になり変更後のほうが合っているはずです。 -- ココサブ 2008-11-21 (金) 22:41:35
    • ありがとうございます。状況を整理します。Fixnumに割り当てているのは30bit(Mosh固有)。30bit では -2^29 〜 2^29-1 までを表現できる(一般論)。fixnum-widh が返す w はこの場合 w-1 = 29 より w = 30 となります。つまり間違っていたのは fixnum-width が返す値ですね。このように修正していただけないでしょうか。お手数おかけします。 -- ひげぽん 2008-11-21 (金) 23:14:20
      • もしくはココサブさんの修正に加えて Fixnum::Bits = 30 とする。 -- ひげぽん 2008-11-21 (金) 23:16:37
      • ↑の修正の方が良さそうですね。 -- ひげぽん 2008-11-21 (金) 23:17:33
  • fx*をやってみました。なるだけBignumを使わないように考えてみましたがどうでしょうか。 -- ココサブ 2008-11-21 (金) 22:39:10
    • ありがとうございます。int64_t に int * int を格納する方がコストが低いのを利用するのはどうでしょう? -- ひげぽん 2008-11-21 (金) 22:43:10
  • scmceというファイルですが、見間違えではなかったようで psyntax.scmc に対して sed で処理するときのオプションによるものでした。 -ie で iオプションと eオプションではなく、 iオプションの引数?としてeをとってしまっていたようです。 -- ココサブ 2008-11-21 (金) 22:37:56
    • おお。本当だ。良く気付きましたね。すみませんが修正をお願いできますか。 -- ひげぽん 2008-11-21 (金) 23:15:42
  • fx+関連をレビューに沿って直してみました。詳細なレビューありがとうございます。callLexicalViolationAfterをなぜ見間違えたのかが謎です・・・ -- ココサブ 2008-11-20 (木) 21:40:03
    • おつかれさまです。レビュー書きました。 -- ひげぽん 2008-11-20 (木) 21:58:55
  • all-test.scm が途中で落ちた件ですが、(rationalize +inf.0 +inf.0)によるものでした。出てくる例外は「 1. &assertion, 2. &who: "eval", 3. &message: "unbound variable", 4. &irritants: (+nan.0)」です。試しにcompiler-with-libaray.scmのrationalizeで +nan.0 となっているところを数字にしたら例外ではなく書き換えたとおりの数字が表示されました。 -- ココサブ 2008-11-20 (木) 21:34:46
    • ありがとうございます。相変わらず再現しなくて困っています。うーむ。 -- ひげぽん 2008-11-20 (木) 22:05:08
  • fx+を実装しました。それにあわせて &implementation-restriction を上げる関数を作ってみました。 &implementation-restriction はまだ捕捉できないコンディションという理解であっていたでしょうか。レビューよろしくお願いします。 -- ココサブ 2008-11-20 (木) 07:40:54
    • レビュー書きました。僕の事前情報の少なさが一因となって書き直しの部分が発生してしまっています。すみません。でも逆に言えば fx+ だけの実装をレビューに出してもらって正解でした。 -- ひげぽん 2008-11-20 (木) 11:37:38
  • Flonum の Fasl に対応したため、ビルドがそのままでは通らなくなっている可能性があります。その場合は Makefile.am の.scmc.h: ./mosh scripts/scmc2fasl.scm $(PWD)/$< $(PWD)/$<.fasl ./mosh scripts/binary2c.scm $(PWD)/$<.fasl $(PWD)/$@ をコメントアウトして make 。その後コメントを戻して make で対応をお願いします。 -- ひげぽん 2008-11-19 (水) 23:06:31
    • ビルドがそのままでは通らなかったのでMakefile.amを一時変更して対応しました。そのときにautomakeとかしたためconfigureとかが変更扱いになっています。autotoolsのバージョンが違う模様です。ここでずる?したためか all-tests.scm のテストを実行した後、に Unhandled exception が発生します。 -- ココサブ 2008-11-20 (木) 07:36:50
      • 発生するようです。ですね恐らくtodoの計算の割り算辺りで起こっているのではないかという予想です。Running 1505/1517 まではでているので。 -- ココサブ 2008-11-20 (木) 07:38:15
      • configure などが変更扱いになるのは問題ないです。気にしない方針で。エラーに関してはこちらでは再現していなかったのですが見直してみます。すみません。 -- ひげぽん 2008-11-20 (木) 11:36:11
  • fxmax, fxminを追加しました。次はfx+をやろうと思っていたら、コンディションをC++から触る方法が見つけられずにつまづきました。申し訳ないですが、参考になる関数かなにかを教えていただけないでしょうか。 -- ココサブ 2008-11-19 (水) 07:31:33
    • お疲れさまです。 ErrorProcedures.cpp の void scheme::callLexicalViolationAfter の真似をして &implementation-restriction を上げる関数を作ってみてください。 -- ひげぽん 2008-11-19 (水) 11:11:45
  • fxzero?, fxpositive?, fxnegative?, fxodd?, fxeven?を追加しました。レビューよろしくお願いします。 -- ココサブ 2008-11-18 (火) 07:37:57
    • もう何かをつかんだ感じですね。素晴らしい。問題ありませんでした。 -- ひげぽん 2008-11-18 (火) 09:32:23
  • 連絡です。 -- ひげぽん 2008-11-17 (月) 16:18:03
    • (1)fxand について。テストに必要だったの library.scm 末尾に fxand の実装(手抜き)を書きました。fxand の本実装のときには消してくださいませ。 -- ひげぽん 2008-11-17 (月) 16:19:05
    • (2)Fixnum.cpp を追加しました。 Fixnum 固有の実装はできるだけ、Fixnum.h/cpp に集めるようにしましょう。.h/.cpp のどちらに実装するかは、速度が要求されるようなものはできるかぎり .h に、ヘッダの依存性などから .h には実装するのが難しいものは .cpp にお願いします。 -- ひげぽん 2008-11-17 (月) 16:21:04
    • 了解です。 -- ココサブ 2008-11-17 (月) 23:23:34
  • 多くの10進数表現がそのまま read できるようになりました。ぜひテストでご利用下さい。 -- ひげぽん 2008-11-16 (日) 11:09:37
  • fx>?, fx<?, fx>=?, fx<=?を実装しました。あと実装率集計用のGoogle Docsのflonum?, fixnum?のところをテストもされているようなのでokにしておきました。 -- ココサブ 2008-11-16 (日) 07:21:05
    • ありがとうございます。順調ですね。確認しましたが問題ありません。 -- ひげぽん 2008-11-16 (日) 11:08:23
  • 拡張子がfasl, scmceであるものをignore設定したら上手くいったみたいです。すでにバージョン管理対象に入っているファイルをignore設定しても特に変わらないということなのでしょうか。 -- ココサブ 2008-11-15 (土) 10:01:20
    • scmceの方は間違って作ってしまったファイルみたいですね。すいません消しときます。 -- ココサブ 2008-11-15 (土) 10:02:24
    • scmceってscmcと同じに見えたので間違って作ってしまったのかと思ったのですが、そんなことはないみたいですね。Makefileにはscmceの文字が見当たらないのですが、これって何のファイルなんでしょうか。scmceを先に作ってそれを最適化してscmcにしている感じなのでしょうか。 -- ココサブ 2008-11-15 (土) 13:36:39
      • scmce ですが覚えていないです。いまレポジトリに scmce の拡張子ファイルがあるわけではないですよね? -- ひげぽん 2008-11-15 (土) 14:01:20
      • すいません。僕の勘違いです。なんども言ってる事が変わってすいません。レポジトリにscmceのファイルはありませんし、ignoreの設定もscmceのはしていない状態なので現状で問題ないです。 -- ココサブ 2008-11-16 (日) 06:40:36
      • 了解です。 -- ひげぽん 2008-11-16 (日) 11:07:55
  • fx=?を実装しました。FixnumProcedures.h/cppの追加でMakefile.amとかVM.cppなど結構変更したファイルが多いです。 -- ココサブ 2008-11-15 (土) 09:33:45
    • また、ignoreの設定もしてみたのですが、上手くいってないみたいです。もう少しがんばってみます。 -- ココサブ 2008-11-15 (土) 09:34:12
    • fx=? 対応お疲れ様です。ばっちりです。 -- ひげぽん 2008-11-15 (土) 09:48:43
  • 【重要】現在 svn trunk に壊れたコードをコミットしてしまっています。 svn up しないようにお願いします。もし svn up してしまった場合は svn up -r リビジョン番号で古めのものを使って下さい。OSX で動いていたので安心してコミットしたら Linux で動かなかったという事情です。ごめんなさい。(そして今でも動かない理由が分からない) -- ひげぽん 2008-11-13 (木) 23:37:56
    • 解決しましたので最新版に svn up していただいて構いません。お騒がせしました。 -- ひげぽん 2008-11-14 (金) 17:12:07
  • レビューにそってmaxとminの修正をしました。コミットし忘れたファイルがあって、2回連続でコミットしています。レビューよろしくお願いします。 -- ココサブ 2008-11-13 (木) 20:51:54
    • 確認しました。ありがとうございます。 -- ひげぽん 2008-11-13 (木) 23:35:52
  • max関連をコミットしなおしました。レビューお願いします。 -- ココサブ 2008-11-13 (木) 00:23:38
  • max/minが完了したらfxシリーズをやってみます。ある程度作業してテスト通った状態になったらコミットして、ここにコメントを書いていけば良いですか? -- ココサブ 2008-11-11 (火) 23:20:05
    • はい。そのようにお願いします。こまめなコミットの方がうれしいので、最初のうちは例えば1手続き実装毎にコミットとかが良いかもしれません。多分 Arithmetic.cpp あたりで僕と変更が conflict する可能性があるのでお互いそのあたりは注意しましょう。(やってみないと分からないですが) -- ひげぽん 2008-11-11 (火) 23:24:39
  • という感じで fx シリーズ(Fixnum)とか実装してみませんか。Flonumバージョンの fl シリーズが既にあるので多少やりやすいしある程度まとまっているので作業が被ることもあまりなさそう。 -- ひげぽん 2008-11-11 (火) 23:11:52
  • お疲れ様です。コミットとテストありがとうございます。以下レビューです。短いのでここに書きます。やりとりが長くなるようならばページを移します。 -- ひげぽん 2008-11-11 (火) 23:02:33
    • max/min は引数は実数です。(仕様書の表現が x,yなので)。それ以外はエラーにしなければならないのが抜けていますので追加して下さい。(元から抜けていますねこれhば僕が悪い) -- 2008-11-11 (火) 23:03:03
    • テストにはFlonum、Fixnum のテストしかないので Bignum, Ratnum のテストも必要。 -- 2008-11-11 (火) 23:03:14
    • 3つ以上の引数で正しく動くかチェックが必要 -- 2008-11-11 (火) 23:03:26
    • 実装は flmax の実装が参考になるかもしれません。 -- ひげぽん 2008-11-11 (火) 23:03:43
  • min, maxのテストが通りました。mosh/r6rs-test-suite/tests/r6rs 以下のテストと同様のものでテストしています。実装を変更せずとも通りました。 -- ココサブ 2008-11-11 (火) 21:07:33
    • 早いですね。ではレビューしますのでコミットしていただけますでしょうか。 -- ひげぽん 2008-11-11 (火) 22:03:37
    • コミットしました。 -- ココサブ 2008-11-11 (火) 22:56:46
  • コードは日々僕がいじって変わるので1日か2日に一度くらいは svn up すると良いかもしれません。(大きな変更をしているときは逆に邪魔になるかもしれませんが) -- ひげぽん 2008-11-08 (土) 20:43:41
  • 例の Google Docs の表と R6RS を見て、どこかやってみたいなというところはありますか?(多少難易度に差があるとは思うのですがまずはファーストインプレッションを聞いておこうかと) -- ひげぽん 2008-11-06 (木) 23:06:18
    • odd, evenを手始めにやってみたいなと思います。特にやってみたい箇所は今のところないです。 -- ココサブ 2008-11-08 (土) 00:48:18
    • 発言が矛盾してますね。odd,evenが簡単そうなのでとりあえず手始めにやりたい。という意図です。 -- ココサブ 2008-11-08 (土) 00:55:36
    • では、odd?, even? をお願いします。library.scm に odd? と even? があるのですが、これはNumeric Tower 実装前に作ったものなので Fixnumでしか動かないものなので、ココサブさんの新しい実装で置き換えてしまって下さい。(C++で書く場合は消して下さい)。とりあえず実装を始めていただいて何か分からないことがあればここで質問していただくという感じで。 -- ひげぽん 2008-11-08 (土) 09:58:37
    • odd? even? を実装するのに必要な剰余の手続きがないのでそこからになってしまうので多少難易度が高いかも。そういう意味では max, min などをNumeric Tower 対応させるの方が多少簡単かも。 -- ひげぽん 2008-11-08 (土) 10:09:40
    • 仕様読んだりしてodd?,even?は難易度高いのが分りました。max,minから手を着ける形でいいでしょうか? -- ココサブ 2008-11-08 (土) 10:14:34
    • はい。もちろん。既存の実装を上書きしまって構いません。実装とテストがだいたい終わったら教えて下さいませ。 -- ひげぽん 2008-11-08 (土) 10:25:17
  • Mosh/コードの書き方Mosh/デバッグ をまとめました。Scheme の max 手続に相当する、AritmeticProcedures.cpp の Object scheme::maxEx(int argc, const Object* argv) などを見て感じをつかんでみたりいじってみたりして下さい。分からないことがあったらまたここでお願いします。 -- ひげぽん 2008-11-06 (木) 23:02:01
  • 「./mosh scripts/scmc2fasl.scm /home/miura/Repos/mosh-scheme/psyntax.scmc /home/miura/Repos/mosh-scheme/psyntax.scmc.fasl /bin/bash: ./mosh: No such file or directory」とエラーが出て止まりました。 -- ココサブ 2008-11-06 (木) 21:37:41
    • 自分でも少し追っかけてみます。 -- ココサブ 2008-11-06 (木) 21:38:04
    • このエラーは、mosh のビルドに必要な ./mosh がないというエラーです。check out したてのころは ./mosh がないのでこのエラーになってしまいます。Makefile.am の「# when you release comment out start」という行から「# when you release comment out end」という行をコメントアウトすると、./mosh で生成されるはずだったソースファイルを使わずにデフォルトのものを使うようになると思うので試していただけないでしょうか。 -- ひげぽん 2008-11-06 (木) 21:42:15
    • 別途moshのバイナリを取得してこないといけない感じですね。 -- ココサブ 2008-11-06 (木) 21:42:40
      • mosh-0.0.7 を持ってくると言うのもありかも。とにかくローカルに最新 mosh が必要という。(Gaucheもビルド過程はこんな感じですよね。) -- ひげぽん 2008-11-06 (木) 21:45:30
    • mosh-0.0.7をインストールして、「ln -s /usr/local/bin/mosh ./mosh」してビルド中です -- ココサブ 2008-11-06 (木) 21:54:13
      • make 通りました。上書きが怖くなって ./mosh を一旦消してから sudo make install しました。ソフトリンクだったし問題なかったかもしれませんね。 -- ココサブ 2008-11-06 (木) 22:00:41
    • おめでとうございます。では次の2つのことを試してみて下さい。どちらも再び make が通れば OK です。 -- ひげぽん 2008-11-06 (木) 22:01:25
      • library.scm に適当に追記して make 。(Schemeとして valid なものを何か追記して下さい)
      • ArithmeticProcedures.cpp にコメントを追記して make。
    • library.scmの方もArithmeticProcedures.cppの方も大丈夫でした。 -- ココサブ 2008-11-06 (木) 22:46:29

MENU

now: 4

リンク


最新の20件
2019-02-26 2018-10-07 2018-09-20 2018-05-09 2017-09-29 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-05-29 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 974, today: 2, yesterday: 0

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2009-03-24 (火) 00:12:18 (3648d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.282 sec.