nmosh

週刊nmosh - DLL化 / メッセージパッシングフレームワーク

アプリケーション組み込み機能のまとめ中。いまままでちゃんと整備していなかったので。。 DLL化 nmoshをWin32/64のDLLとして使えるように整備中。まぁ世間的にはLuaで良いだろというポイントでもあるけど、バイトコードの埋め込み等要求の高い機能は抑えて…

補助構文のrename

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が正…

MacOS対応 / C++ APIのバインディング

GUIアプリってこんなにパッケージング面倒だっけ。。 0.2.8のリリースに向けてWindowsだけでなくOSXでもGUIビルドを用意したい。昔のMacOSのスクラップブック( http://en.wikipedia.org/wiki/Scrapbook_%28Mac_OS%29 )みたいなイメージでScheme式をコピペし…

wxWidgetsふたたび

Windowsだと出るトレイアイコンが、UbuntuのwxWidgets 2.8だと出ない。 結局、諸般の事情でwxWidgetsのサポートをすることに。。AndroidはSDLでそれなりにサポートできそうなので。 今回の重要な変更は、wxWidgets2.8を視野に入れている点。要するにcallback…

SRFI-19実装がおかしい

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"のように名前が付いている。 実は殆…

Android対応

nmoshがAndroidで動くようになった。事前にCMakeで準備していたので、まぁリコンパイルすれば動くだろうと甘いことを考えていたら、結局三が日を丸ごと消費することになってしまった。 SDLはCMakeでビルドし、cairoはGStreamer SDKからとってきている。なの…

週刊nmosh - nmoshの今年と来年

結局今年のnmoshはリリース無しという難易度の高い状況。今はリリースに向けた整理と安定化の作業中。。 来年は、nmosh自体というよりはnmoshを組み込んだアプリケーションとしての展開が主になりそう。 今年の展開 率直に言ってほぼ展開しなかったんだけど…

非同期I/O APIの分類学

nmoshに色々な非同期I/O APIのバインディングを書いていると、非同期I/O APIはいくつかのパターンがあることがわかってきた。 基本的には、完了通知の方法 x リクエストの方法と言える。 リクエスト手法 リクエスト手法は以下の点で分類できる リクエストに…

週刊nmosh - UDPサポート / makeIntegerとC++オーバーロード の2

まぁ、マイペースで。。 UDPサポートと入出力の表現パターン nmoshの非同期I/OはTCPに加えてUDPをサポートした。まだWinsockのみでBSD Socketはそのうち。pcapによるrawパケット入出力もそのうちサポートするつもり。 TCPは通常のファイルI/Oやpipeと同様の…

pFFIライブラリ規約

現状のnmosh pFFI呼び出し(!= mosh本来のFFI)はかなり非効率的で、呼び出しの度にアロケーションが発生する。これをC stack側に取ってアロケーションを減らし、ついでにもうちょっとマシなエラーセマンティクスを持たせたい。 C APIに要求するポイント nmosh…

週刊nmosh - 改行コードの変換 / Customポートの怪

全然週刊じゃない! ...年内に1リリースはしたいところだが。。 R7RSライブラリをDraft 7相当に更新、現在Chibi-schemeのtest suiteで150/1009 Fail。殆どはexact/inexact mismatchとreader関連。 改行コードの変換 nmoshは伝統的にutf8→stringで改行コード…

パスワード/秘密情報格納API調査 の2

prev: http://d.hatena.ne.jp/mjt/20120902/p2 最近のgitは、ID/パスワードをOSネイティブのストアに格納するために、credential-helperという仕組みを備えている。 というわけで、gitのcredential-helperの実装が↑で見ていたAPIをほぼカバーしているので参…

WaitOnAddressは何の役に立つのか

prev: http://d.hatena.ne.jp/mjt/20120916/p1 注目すべきWindows 8の新機能に、新規に導入された幾つかの同期プリミティブがある。Windows 8/2012のSDKでは、Synchapi.h等のヘッダが追加され、同期プリミティブはそちらに移動した。 WaitOnAddress WakeByAd…

MessagePack・JSONとnil

nmoshはMessagePackやJSONを読み書きできる。が、JSON(JavaScript)とS式(Scheme)には絶妙な表現力の違いが有って、なかなか難しい。 バイナリと文字列 MessagePackはバイナリと文字列を区別できない( https://github.com/msgpack/msgpack/issues/116 )。nmos…

週刊nmosh - 非同期FFI関数呼び出し / makeIntegerとC++オーバーロード

Win64対応で逆に32bitビルドが壊れたので修正に追われるでござるの巻。 async FFI call pthreadでは非同期FFI関数呼び出しをサポートしている...といってもこれは単純に通常のFFI呼び出しをメッセージパッシングインターフェースにしただけ。つまり、通常のF…

トレースAPIの調査

そろそろスクリプトのパフォーマンス測定をしたい事が増えてきた。 例えばゲームなら ゲームロジック→頂点演算→頂点リスト生成(VBOのバッファ)→頂点キック の各ステージでどれくらいの時間を食っているかを知りたい。 もちろんVMのプロファイラも考えられる…

週刊nmosh - x64対応復活 / 寝ているスレッドの起こし方 / groonga

『MSBuild に "VCTargetsPath" プロパティの値が含まれていません。』病に悩む。Visual Studio2012(Visual Studio 11時代)のベータ版をアンインストールすると起こるようになるらしい。 http://stackoverflow.com/questions/8497931/msbuild-does-not-contai…

週刊nmosh - ライブラリのstart/stop / プロンプトライブラリ

恥ずかしい誤字などを修正。 ライブラリのstart/stop nmoshでは、"同一R6RSライブラリのinvokeはプログラムの実行中に高々1回"というルールを作っている。このルールが便利なのは、ライブラリの中で副作用のある初期化を行うことが出来る点で、nmoshのライ…

パスワード/秘密情報格納API調査

nmoshにcURLバインディングを追加するにあたって、パスワードを適当なところにストアするAPIについて調べた。 というのも、ユーザに入力させたパスワードを補完する上手い方法が必要とされている。デスクトップには全文検索システムが入っているのがいまや普…

週刊nmosh - 非同期手続きのパターン / 表整形手続き / 名前付き引数マクロとキーワード

新REPLが纏まったら0.2.8にしようということで一つ。。あとcurlバインディング。 非同期手続きのパターン (あとでちゃんと書く) nmoshはsocketや諸々の処理が全て非同期でデザインされている(DNS Lookupのようにまだ非同期になっていないものも有るが...)。…

週刊nmosh - build-idの提供

そろそろリリースしないとヤバいという気持ちは有るけど。。 BSDの64bitビルドをFIX __WORDSIZEがdefineされていないと、SIZEOF_INTPTR_Tが4になって悲しい気持ちになるのを修正。 少なくともFreeBSDの場合はLONG_BITが定義されているのでこれを利用できる。…

- タスク

手動だとこんなに面倒なのか。。twitterだと短すぎるけど、ここに書く程でもないという絶妙なポイント。 メールfetch手段の作成 libcurlプラグインの作成 - とりあえずlibcurlがIMAPをアクセスできたはずなのでそれを試してみる → ダメ。 どうもlibcurlのIMA…

タスク管理ツールを作る - 要件

そろそろタスク管理をしないといけないトシになってきた。個人的には、タスク管理をして"頭がスッキリ"というのは創造性を殺すので反対なんだけど、仕事が多いものはしょうがない。 タスク管理ツールの要件 いろいろと探し回ったけど良いのが見当たらない。…

週刊nmosh - SDL2 / プラグインのFFI不要化

nmoshは脱boehm GCにむけてじわじわ進捗中。なんだかんだ言ってBoehmGCもそれなりに早いので、パフォーマンスを求める用途のために現状のVMも残す。 全体をCC0ライセンス(= パブリックドメイン)にするのは手間の面から言っても現実的でないので、まずはstub…

メモリデバッガ Dr. Memoryとコード操作ライブラリDynamoRIO

Dr. MemoryはValgrindのmemcheckのような、リークや未初期化メモリ参照を検出することのできるメモリデバッガで、Valgrindと違ってWindowsにも対応している。ただし、64bitアプリケーションとBSD/MacOSのサポートが無い。LGPL2でコードは公開されている。ビ…

週刊nmosh - UIサポートの拡充

ypsilonのforkを見つけた。まだ1つしかコミットは無い。 https://github.com/cNoNim/ypsilon/tree/new 記憶が正しければ他にもforkは有ったような気がする。他の実装としてはVicare(https://github.com/marcomaggi/vicare - Icarusのfork)のようなケースも…

週刊nmosh - Msgpack-RPC

非常に細かいバグを2,3修正。(match)ライブラリでellipsisを使ったマッチが出来なかった問題を修正。 本来の(match)は、 (define x '(1 2 3 4 5)) (match x ((1 e ... 5) (write e) ;; => (2 3 4) (newline))) のように、...を使ってリストの一部分にマッチ…

週刊nmosh - Win32コンソールの色付け / プリロード強制モード

Win32のコンソールでcursesを使わずにカラー出力できるように。 Win32コンソールとパレット 実はWin32コンソールはVista以降でアプリケーション実行中にアプリケーションから動的にパレットを変更できるようになった(GetConsoleScreenBufferInfoEx)。 nmosh…

週刊nmosh - R7RSパブコメ期限延長 / VS2012 RC / うるう秒対応

R7RSのパブリックコメント期限は6/30だったんですが、この度7/15に延長されました。 http://permalink.gmane.org/gmane.lisp.scheme.chicken/16642 パブリックコメントの期限後に、コミュニティによる投票が行われて、R7RS smallは成立する見込み。 Visual S…