nmosh

R6RSとR7RSライブラリの比較 - とりあえずリストを作る

とりあえず、R6RSとR7RSのライブラリをシンボルで比較してみて、何が共通で何が独自なのかのリストを作成する。 https://gist.github.com/okuoku/7f5b3fa0d4dbd0230b9a 集計に使ったスクリプト https://gist.github.com/okuoku/020f3dbbf7d00c91d21c/2bd47ac…

R6RS互換ライブラリの方針を考える

基本的に、nmoshでのプログラミングはyuniを推奨するようにしたいと考えている。yuniはR6RS実装にR7RSの語彙を提供するので、少くともR7RSの範囲(と、yuniFFIが提供するネイティブOSインターフェース)で書ける範囲のプログラムは問題なく記述できる。 問題は…

FFIブリッジを作ろう - Sagittarius / DLLを何処に置くか問題

http://d.hatena.ne.jp/mjt/20150319/p1#c1426798218 この用途に合うかは分かりませんが、HEADでは(address bv offset)形式でバイトベクタの途中のアドレスを渡せるようにしてみました。 なんと! というわけで、SagittariusでもDynamic bindingだけでnccc呼…

FFIブリッジを作ろう - Sagittarius / Guile / Vicare

前々回: 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ベー…

FFIブリッジを作ろう - chibi-scheme / Larceny

前回: 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のスレッドモデルを整理したいの会

正直作っている本人すらよく説明できていないnmoshのスレッドモデル。0.2.8に向けて用語を整理する。 NMosh Offload 従来FFI VMと呼んでいた、FFI専用のlightweight VMをNMosh Offloadとマーケティング向けの名称に改称。NMoshと名前が付くがyuniの方に実装…

ドキュメントワークフローを考える会

nmosh 0.2.8ではドキュメントを少くとも日本語のものは入れたいと思っている。というわけで、ドキュメンテーションのワークフローを考える。 APIリファレンスについては後回しにする。というのは、リファレンスは他のドキュメンテーションとは大きく内容が異…

C言語マクロもCPS化して合成可能にする

yuniFFIのAPI記述フォーマットであるstubIR( http://d.hatena.ne.jp/mjt/20141127/p2 )の処理系を作っていく。ひとまず、処理系に期待するCソース出力を手書きしてみることにした。 https://github.com/okuoku/yuni/blob/ac93456515136d2ba418e99da2b9f17f0d…

FFIブリッジを作ろう - nmosh / Gauche / Racketのncccブリッジ

というわけで、nmosh / Gauche / Racket の各Scheme処理系で共通のncccブリッジを実装できた。chibi-scheme(と、Guile2)については後日。 nccc nccc(Normalized C Calling Convention)は、yuniFFIフレームワークで使用する共通呼び出し規約。yuniFFIで呼び出…

今月の"今なにやってんの"

こういうコーナーを書けるくらい目的を認識してやらないとなかなか最終製品に辿り付かないので。。このフォーマットだと最初の段落は常に同じことを書くことになりそうだけどその辺は追々考える。 本業との兼ね合いも有り、週締めだと短かすぎる、年締めだと…

SmileBasic3.xxの変数セマンティクス

プチコンのバグを整理している( https://github.com/okuoku/ptc3sim/issues )と、プチコン3号のBASIC実装には"言語処理系あるある"がかなり含まれているような気がしてくる。 (BASICの伝統に従って、SmileBasicでは戻り値を取るサブルーチンを関数、そうでな…

StubIRのテストを書く

前回決めたStubIRフォーマット( http://d.hatena.ne.jp/mjt/20141127/p2 )のテストを書いた。 https://github.com/okuoku/yuni/tree/21b4826a2af373729ff7ae2974d9c474d138bd8e/tests/yunistub/trivial FFIのwrap対象となるCコード(中身無し) https://github…

nmoshの今年と来年 は年度末に延期

去年の: http://d.hatena.ne.jp/mjt/20131231/p1 今まさにやっております。。年度末くらいにもう一度。というかこれ多分四半期くらいにやった方が良い(週刊は厳しいので)。 今年やったこと 細かいステップが多い。。 DITAを評価してビルド環境を作った(ドキ…

ライセンスの諸問題

ちょっとnmoshの手が止まっていた。今日から再開予定。 nmoshは一応MIT/BSDライセンスということで方々で使ってきた。一度は( http://d.hatena.ne.jp/mjt/20111204/p2 )legalの方も入れて、使うコンポーネントについてはクリアランスもしている。 しかし今回…

Kawa2.0のR7RS(未遂)

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のネイティブ手続きを使用した実装に切り替え…

stubIRの設計

Cソースprinter( http://d.hatena.ne.jp/mjt/20141019/p1 )の次は、stubジェネレータの入力となるS式構文(stubIR: stub intermediate representation)を設計する。 (もっとも、Cソースprinterは使わないことにした。出力がみづらくてデバッグに支障があるた…

FFI VM用ストリーム・プロセッシング拡張(ComputeVM)の検討

FFI VMのフレームワークを拡張し、FFI関数の呼び出しだけではなくバッファの処理にも使用できるようにすることを考える。つまり、パケットの処理のような分岐の多い処理やジオメトリ処理のような純粋な計算処理をカバーする。 ComputeVMはFFI VMのスーパーセ…

(ソフト)リアルタイム処理 - スレッドスケジューリング

ゲームはリアルタイム性を要求されるタスクがそれなりに存在する。このため、どうしてもカーネルに依存した方法でリアルタイムスレッドを作る必要が有る。リアルタイムスレッドに依存したプログラムとしてはjack(オーディオサーバ)が有るので、これの実装を…

3DオブジェクトベースオーディオAPIの分類学

いわゆるインスタレーションアートのための"分散型"オーディオAPI - 多数のPCとそれに接続されたスピーカを駆動するためのAPIにはそれなりの需要が有ると考えていて、現状有力な実装も存在しないように見える。 APIデザインはコンテンツの制作に与える影響も…

無償のWindows Hyper-V Server 2012 R2で遊ぶ

MSはWindowsのサーバ向けOS Windows Serverのサブセットである"Windows Hyper-V Server"を無料で提供している。これは、Server CoreインストールとHyper-Vロールのみを備えたWindows Serverそのものであり、実際に機能する。 VirtualBoxはnested virtualzati…

explicit renaming占い

http://saito.hatenablog.jp/entry/2014/11/18/233209 explicit renaming でスコープを曲げる ここで定義されているlet/scopeマクロは、"定義位置に引数をbeginで囲って展開する"という動作をしている。 これが期待通り動作しないのはマクロの合成問題( http…

統合タイムラインシーケンサAPIの可能性

(FIXME: メモ。後で動画入れる。) prev: http://d.hatena.ne.jp/mjt/20120529/p1 シーケンサのUIとデータ構造 現在制作しているteslawireは一種のリズムアクションなのでシーケンサを実装している。 これはchild of edenとかrezがMIDIベースのゲームエンジン…

メディアエンジンのAPI調査

SoC上のパフォーマンスがなかなか確保できない状況に有るので、カットシーンをプリレンダにすることを検討した。結論から言うとリアルタイムレンダリングの方が良いと判断した(制作の必要があるゲームアセットの量は変わらない)のでメディアエンジンもほぼ活…

AndroidエミュレータのOpenGL ESトランスポートに見るAPI記述

Android SDKに付属するエミュレータは、ターゲットのOpenGL ES描画をシリアライズしてホストに転送し、ホスト側のOpenGLスタックで描画する機能が有る。 https://android.googlesource.com/platform/sdk/+/android-5.0.0_r2/emulator/opengl/DESIGN デザイン…

週刊nmosh - Gaucheにer-macro-transformerが入る / FFI VMの必要性

追記: see comment。 Gaucheにer-macro-transformerが入ったようだ。 https://github.com/shirok/Gauche/commit/84908bd56cdf540c02e705fe053a762d21107295 早速置き換えてみた: https://github.com/okuoku/yuni/commit/36d965b5a7152fefca288b141d0a3827237…

MPWでClassic Mac OSなプログラムをビルドする

(歴史と伝統のある開発プラットフォームを斜めから見る企画。MS-CとMPW、Watcomかな。HX DOS Extenderが見事に消滅していてショックだったのでできるうちから。。) MPW(Macintosh Programmer's Workshop)はApple公式のClassic MacOSのための開発環境で、MPW …

MSDN上のMS-DOSやWindows for WorkgroupsをVirtualBoxにインストールするメモ

結論: qemuを使うべき MSDNサブスクリプションでは歴史的なバージョンのWindowsをまだ配布しているので、これを使ってWindows3.x環境を構築することができる。 raw diskイメージの作成 ImDiskのようなディスクイメージツールでディスクを操作するためには、r…