nmosh
アプリケーション組み込み機能のまとめ中。いまままでちゃんと整備していなかったので。。 DLL化 nmoshをWin32/64のDLLとして使えるように整備中。まぁ世間的にはLuaで良いだろというポイントでもあるけど、バイトコードの埋め込み等要求の高い機能は抑えて…
http://code.google.com/p/mosh-scheme/issues/detail?id=235 (import (prefix (rnrs) rnrs.)) (rnrs.define-record-type (foo make-foo foo?) (rnrs.fields (rnrs.mutable brr))) (make-foo 1) のようなコードが正常に動作しないというバグ(rnrs.fieldsが正…
GUIアプリってこんなにパッケージング面倒だっけ。。 0.2.8のリリースに向けてWindowsだけでなくOSXでもGUIビルドを用意したい。昔のMacOSのスクラップブック( http://en.wikipedia.org/wiki/Scrapbook_%28Mac_OS%29 )みたいなイメージでScheme式をコピペし…
Windowsだと出るトレイアイコンが、UbuntuのwxWidgets 2.8だと出ない。 結局、諸般の事情でwxWidgetsのサポートをすることに。。AndroidはSDLでそれなりにサポートできそうなので。 今回の重要な変更は、wxWidgets2.8を視野に入れている点。要するにcallback…
nmoshのSRFI-19実装が微妙におかしい挙動を示していることに気づいてしまった。 http://srfi.schemers.org/srfi-19/srfi-19.html SRFI-19は日付と時刻に関するSchemeのAPIで、Gaucheのような他のSchemeにもそれなりに備わっている。で、 $ nmosh nmosh top p…
マルチスレッド対応のrefactor中。nmoshのスレッド対応はこれが3周め(multivm、id:higeponによるconcurrent、これ)。 スレッドの名前付け スレッドに名前を付けられるようにする。↑のスクリーンショットでは、"Mosh VM1"のように名前が付いている。 実は殆…
nmoshがAndroidで動くようになった。事前にCMakeで準備していたので、まぁリコンパイルすれば動くだろうと甘いことを考えていたら、結局三が日を丸ごと消費することになってしまった。 SDLはCMakeでビルドし、cairoはGStreamer SDKからとってきている。なの…
結局今年のnmoshはリリース無しという難易度の高い状況。今はリリースに向けた整理と安定化の作業中。。 来年は、nmosh自体というよりはnmoshを組み込んだアプリケーションとしての展開が主になりそう。 今年の展開 率直に言ってほぼ展開しなかったんだけど…
nmoshに色々な非同期I/O APIのバインディングを書いていると、非同期I/O APIはいくつかのパターンがあることがわかってきた。 基本的には、完了通知の方法 x リクエストの方法と言える。 リクエスト手法 リクエスト手法は以下の点で分類できる リクエストに…
まぁ、マイペースで。。 UDPサポートと入出力の表現パターン nmoshの非同期I/OはTCPに加えてUDPをサポートした。まだWinsockのみでBSD Socketはそのうち。pcapによるrawパケット入出力もそのうちサポートするつもり。 TCPは通常のファイルI/Oやpipeと同様の…
現状のnmosh pFFI呼び出し(!= mosh本来のFFI)はかなり非効率的で、呼び出しの度にアロケーションが発生する。これをC stack側に取ってアロケーションを減らし、ついでにもうちょっとマシなエラーセマンティクスを持たせたい。 C APIに要求するポイント nmosh…
全然週刊じゃない! ...年内に1リリースはしたいところだが。。 R7RSライブラリをDraft 7相当に更新、現在Chibi-schemeのtest suiteで150/1009 Fail。殆どはexact/inexact mismatchとreader関連。 改行コードの変換 nmoshは伝統的にutf8→stringで改行コード…
prev: http://d.hatena.ne.jp/mjt/20120902/p2 最近のgitは、ID/パスワードをOSネイティブのストアに格納するために、credential-helperという仕組みを備えている。 というわけで、gitのcredential-helperの実装が↑で見ていたAPIをほぼカバーしているので参…
prev: http://d.hatena.ne.jp/mjt/20120916/p1 注目すべきWindows 8の新機能に、新規に導入された幾つかの同期プリミティブがある。Windows 8/2012のSDKでは、Synchapi.h等のヘッダが追加され、同期プリミティブはそちらに移動した。 WaitOnAddress WakeByAd…
nmoshはMessagePackやJSONを読み書きできる。が、JSON(JavaScript)とS式(Scheme)には絶妙な表現力の違いが有って、なかなか難しい。 バイナリと文字列 MessagePackはバイナリと文字列を区別できない( https://github.com/msgpack/msgpack/issues/116 )。nmos…
Win64対応で逆に32bitビルドが壊れたので修正に追われるでござるの巻。 async FFI call pthreadでは非同期FFI関数呼び出しをサポートしている...といってもこれは単純に通常のFFI呼び出しをメッセージパッシングインターフェースにしただけ。つまり、通常のF…
そろそろスクリプトのパフォーマンス測定をしたい事が増えてきた。 例えばゲームなら ゲームロジック→頂点演算→頂点リスト生成(VBOのバッファ)→頂点キック の各ステージでどれくらいの時間を食っているかを知りたい。 もちろんVMのプロファイラも考えられる…
『MSBuild に "VCTargetsPath" プロパティの値が含まれていません。』病に悩む。Visual Studio2012(Visual Studio 11時代)のベータ版をアンインストールすると起こるようになるらしい。 http://stackoverflow.com/questions/8497931/msbuild-does-not-contai…
恥ずかしい誤字などを修正。 ライブラリのstart/stop nmoshでは、"同一R6RSライブラリのinvokeはプログラムの実行中に高々1回"というルールを作っている。このルールが便利なのは、ライブラリの中で副作用のある初期化を行うことが出来る点で、nmoshのライ…
nmoshにcURLバインディングを追加するにあたって、パスワードを適当なところにストアするAPIについて調べた。 というのも、ユーザに入力させたパスワードを補完する上手い方法が必要とされている。デスクトップには全文検索システムが入っているのがいまや普…
新REPLが纏まったら0.2.8にしようということで一つ。。あとcurlバインディング。 非同期手続きのパターン (あとでちゃんと書く) nmoshはsocketや諸々の処理が全て非同期でデザインされている(DNS Lookupのようにまだ非同期になっていないものも有るが...)。…
そろそろリリースしないとヤバいという気持ちは有るけど。。 BSDの64bitビルドをFIX __WORDSIZEがdefineされていないと、SIZEOF_INTPTR_Tが4になって悲しい気持ちになるのを修正。 少なくともFreeBSDの場合はLONG_BITが定義されているのでこれを利用できる。…
手動だとこんなに面倒なのか。。twitterだと短すぎるけど、ここに書く程でもないという絶妙なポイント。 メールfetch手段の作成 libcurlプラグインの作成 - とりあえずlibcurlがIMAPをアクセスできたはずなのでそれを試してみる → ダメ。 どうもlibcurlのIMA…
そろそろタスク管理をしないといけないトシになってきた。個人的には、タスク管理をして"頭がスッキリ"というのは創造性を殺すので反対なんだけど、仕事が多いものはしょうがない。 タスク管理ツールの要件 いろいろと探し回ったけど良いのが見当たらない。…
nmoshは脱boehm GCにむけてじわじわ進捗中。なんだかんだ言ってBoehmGCもそれなりに早いので、パフォーマンスを求める用途のために現状のVMも残す。 全体をCC0ライセンス(= パブリックドメイン)にするのは手間の面から言っても現実的でないので、まずはstub…
Dr. MemoryはValgrindのmemcheckのような、リークや未初期化メモリ参照を検出することのできるメモリデバッガで、Valgrindと違ってWindowsにも対応している。ただし、64bitアプリケーションとBSD/MacOSのサポートが無い。LGPL2でコードは公開されている。ビ…
ypsilonのforkを見つけた。まだ1つしかコミットは無い。 https://github.com/cNoNim/ypsilon/tree/new 記憶が正しければ他にもforkは有ったような気がする。他の実装としてはVicare(https://github.com/marcomaggi/vicare - Icarusのfork)のようなケースも…
非常に細かいバグを2,3修正。(match)ライブラリでellipsisを使ったマッチが出来なかった問題を修正。 本来の(match)は、 (define x '(1 2 3 4 5)) (match x ((1 e ... 5) (write e) ;; => (2 3 4) (newline))) のように、...を使ってリストの一部分にマッチ…
Win32のコンソールでcursesを使わずにカラー出力できるように。 Win32コンソールとパレット 実はWin32コンソールはVista以降でアプリケーション実行中にアプリケーションから動的にパレットを変更できるようになった(GetConsoleScreenBufferInfoEx)。 nmosh…
R7RSのパブリックコメント期限は6/30だったんですが、この度7/15に延長されました。 http://permalink.gmane.org/gmane.lisp.scheme.chicken/16642 パブリックコメントの期限後に、コミュニティによる投票が行われて、R7RS smallは成立する見込み。 Visual S…