nmosh
とりあえず、R6RSとR7RSのライブラリをシンボルで比較してみて、何が共通で何が独自なのかのリストを作成する。 https://gist.github.com/okuoku/7f5b3fa0d4dbd0230b9a 集計に使ったスクリプト https://gist.github.com/okuoku/020f3dbbf7d00c91d21c/2bd47ac…
基本的に、nmoshでのプログラミングはyuniを推奨するようにしたいと考えている。yuniはR6RS実装にR7RSの語彙を提供するので、少くともR7RSの範囲(と、yuniFFIが提供するネイティブOSインターフェース)で書ける範囲のプログラムは問題なく記述できる。 問題は…
http://d.hatena.ne.jp/mjt/20150319/p1#c1426798218 この用途に合うかは分かりませんが、HEADでは(address bv offset)形式でバイトベクタの途中のアドレスを渡せるようにしてみました。 なんと! というわけで、SagittariusでもDynamic bindingだけでnccc呼…
前々回: http://d.hatena.ne.jp/mjt/20150213/p1 nmosh / Gauche / Racket 前回: http://d.hatena.ne.jp/mjt/20150316/p1 chibi-scheme / Larceny というわけで、yuniFFIのFFIブリッジ作戦も終盤。Guile / Vicare / Sagittariusの3つはRacket同様libffiベー…
前回: http://d.hatena.ne.jp/mjt/20150213/p1 nmosh / Gauche / Racket というわけで、chibi-schemeと最近R7RSサポートがリリースされて話題のLarcenyにもFFIブリッジを書く。ncccやFFIブリッジの目的については前回参照。 これで、nmosh / Gauche / Racket…
先月: http://d.hatena.ne.jp/mjt/20150208/p1 どういう形式でアップデートを挙げていくのが良いのかはまだまだ模索中。nmosh Retrocomputing editionはしばらく報告なし。 nmosh / yuni https://github.com/okuoku/mosh nmoshはR6RS/R7RS Schemeインタプリ…
(簡単のため、図中のsendは手続きのように描かれているが、実際にはマクロとなる。これは _ (underscore)をパラメタの省略記号として使用するためで、_は補助構文なのでマクロの外では使用できない。) yuniFFIの重要なポイントは、構造体や手続きに"制約"(co…
正直作っている本人すらよく説明できていないnmoshのスレッドモデル。0.2.8に向けて用語を整理する。 NMosh Offload 従来FFI VMと呼んでいた、FFI専用のlightweight VMをNMosh Offloadとマーケティング向けの名称に改称。NMoshと名前が付くがyuniの方に実装…
nmosh 0.2.8ではドキュメントを少くとも日本語のものは入れたいと思っている。というわけで、ドキュメンテーションのワークフローを考える。 APIリファレンスについては後回しにする。というのは、リファレンスは他のドキュメンテーションとは大きく内容が異…
yuniFFIのAPI記述フォーマットであるstubIR( http://d.hatena.ne.jp/mjt/20141127/p2 )の処理系を作っていく。ひとまず、処理系に期待するCソース出力を手書きしてみることにした。 https://github.com/okuoku/yuni/blob/ac93456515136d2ba418e99da2b9f17f0d…
というわけで、nmosh / Gauche / Racket の各Scheme処理系で共通のncccブリッジを実装できた。chibi-scheme(と、Guile2)については後日。 nccc nccc(Normalized C Calling Convention)は、yuniFFIフレームワークで使用する共通呼び出し規約。yuniFFIで呼び出…
こういうコーナーを書けるくらい目的を認識してやらないとなかなか最終製品に辿り付かないので。。このフォーマットだと最初の段落は常に同じことを書くことになりそうだけどその辺は追々考える。 本業との兼ね合いも有り、週締めだと短かすぎる、年締めだと…
プチコンのバグを整理している( https://github.com/okuoku/ptc3sim/issues )と、プチコン3号のBASIC実装には"言語処理系あるある"がかなり含まれているような気がしてくる。 (BASICの伝統に従って、SmileBasicでは戻り値を取るサブルーチンを関数、そうでな…
前回決めたStubIRフォーマット( http://d.hatena.ne.jp/mjt/20141127/p2 )のテストを書いた。 https://github.com/okuoku/yuni/tree/21b4826a2af373729ff7ae2974d9c474d138bd8e/tests/yunistub/trivial FFIのwrap対象となるCコード(中身無し) https://github…
去年の: http://d.hatena.ne.jp/mjt/20131231/p1 今まさにやっております。。年度末くらいにもう一度。というかこれ多分四半期くらいにやった方が良い(週刊は厳しいので)。 今年やったこと 細かいステップが多い。。 DITAを評価してビルド環境を作った(ドキ…
ちょっとnmoshの手が止まっていた。今日から再開予定。 nmoshは一応MIT/BSDライセンスということで方々で使ってきた。一度は( http://d.hatena.ne.jp/mjt/20111204/p2 )legalの方も入れて、使うコンポーネントについてはクリアランスもしている。 しかし今回…
http://www.gnu.org/software/kawa/ Java上のScheme実装であるところのKawaがR7RSをサポートしたそうなのでyuniのサポートもtryしてみた。Kawaには従来からR6RS readerとsyntax-caseが有るので、ライブラリ機能としては十分なものがあると言える。 が、微妙…
edit: Windows以外の〜 を削除。WIREDはMSの担当者に取材している。 https://wired.jp/2017/12/27/microsoft-time-lords/ nmoshのSRFI-19実装を自前のものに変更しようとしているところ。つまり、OSというかlibcのネイティブ手続きを使用した実装に切り替え…
Cソースprinter( http://d.hatena.ne.jp/mjt/20141019/p1 )の次は、stubジェネレータの入力となるS式構文(stubIR: stub intermediate representation)を設計する。 (もっとも、Cソースprinterは使わないことにした。出力がみづらくてデバッグに支障があるた…
FFI VMのフレームワークを拡張し、FFI関数の呼び出しだけではなくバッファの処理にも使用できるようにすることを考える。つまり、パケットの処理のような分岐の多い処理やジオメトリ処理のような純粋な計算処理をカバーする。 ComputeVMはFFI VMのスーパーセ…
ゲームはリアルタイム性を要求されるタスクがそれなりに存在する。このため、どうしてもカーネルに依存した方法でリアルタイムスレッドを作る必要が有る。リアルタイムスレッドに依存したプログラムとしてはjack(オーディオサーバ)が有るので、これの実装を…
いわゆるインスタレーションアートのための"分散型"オーディオAPI - 多数のPCとそれに接続されたスピーカを駆動するためのAPIにはそれなりの需要が有ると考えていて、現状有力な実装も存在しないように見える。 APIデザインはコンテンツの制作に与える影響も…
MSはWindowsのサーバ向けOS Windows Serverのサブセットである"Windows Hyper-V Server"を無料で提供している。これは、Server CoreインストールとHyper-Vロールのみを備えたWindows Serverそのものであり、実際に機能する。 VirtualBoxはnested virtualzati…
http://saito.hatenablog.jp/entry/2014/11/18/233209 explicit renaming でスコープを曲げる ここで定義されているlet/scopeマクロは、"定義位置に引数をbeginで囲って展開する"という動作をしている。 これが期待通り動作しないのはマクロの合成問題( http…
(FIXME: メモ。後で動画入れる。) prev: http://d.hatena.ne.jp/mjt/20120529/p1 シーケンサのUIとデータ構造 現在制作しているteslawireは一種のリズムアクションなのでシーケンサを実装している。 これはchild of edenとかrezがMIDIベースのゲームエンジン…
SoC上のパフォーマンスがなかなか確保できない状況に有るので、カットシーンをプリレンダにすることを検討した。結論から言うとリアルタイムレンダリングの方が良いと判断した(制作の必要があるゲームアセットの量は変わらない)のでメディアエンジンもほぼ活…
Android SDKに付属するエミュレータは、ターゲットのOpenGL ES描画をシリアライズしてホストに転送し、ホスト側のOpenGLスタックで描画する機能が有る。 https://android.googlesource.com/platform/sdk/+/android-5.0.0_r2/emulator/opengl/DESIGN デザイン…
追記: see comment。 Gaucheにer-macro-transformerが入ったようだ。 https://github.com/shirok/Gauche/commit/84908bd56cdf540c02e705fe053a762d21107295 早速置き換えてみた: https://github.com/okuoku/yuni/commit/36d965b5a7152fefca288b141d0a3827237…
(歴史と伝統のある開発プラットフォームを斜めから見る企画。MS-CとMPW、Watcomかな。HX DOS Extenderが見事に消滅していてショックだったのでできるうちから。。) MPW(Macintosh Programmer's Workshop)はApple公式のClassic MacOSのための開発環境で、MPW …
結論: qemuを使うべき MSDNサブスクリプションでは歴史的なバージョンのWindowsをまだ配布しているので、これを使ってWindows3.x環境を構築することができる。 raw diskイメージの作成 ImDiskのようなディスクイメージツールでディスクを操作するためには、r…