nmosh
"DITA-OT2.0.M4_client_bin.zip"をダウンロード / 展開する。full_installのようなzipも存在するが、実はclient側のZIPにしかditaコマンドが無いため、clientを利用する。これはちゃんとドキュメントにも有る( https://dita-ot.github.io/2.0/quickstartguid…
で、作ったジェネレータ( http://d.hatena.ne.jp/mjt/20141019/p1 )を使ってnccc( http://d.hatena.ne.jp/mjt/20141001/p1 )へのブリッジソースジェネレータを作る。 yuniFFIにおけるC API呼び出しの考え方 yuniFFIでは、C API呼び出しをパケットの送受信と…
追記: 結局workaroundした。 https://github.com/okuoku/mosh/commit/9b694f84bd9bda3891914c2fdf0ffe153d81d332 git HEADのGaucheだとbootstrap不能なようだ。いつか来るとは思っていたが。。 VMはgaucheとvanilla-moshのある種polygotになっており、vanill…
https://github.com/okuoku/yuni/issues/22 なんとこの期に及んでnmoshにはstring-fill!が無いことが発覚した。RacketのR6RS test suiteに何故か無いので見落していたようだ。まぁ普通mutable stringsは使わないんで。。 Solaris タイムリーにvanilla-moshに…
というわけでSolarisをサポートするために多少努力する。 将来的にはSolaris studio(NetBeansベースの公式IDE)でビルドする必要が有るが、とりあえずは公式pkgのgccで。公式pkgのgccはi386のようだ。 ターゲットの準備 Solaris studioは基本的にクロス開発を…
ふだんSchemeのプログラムを書いていて、たまに使うのがマクロクロージャー(今名付けた)。このテクニックをどうやって各種Scheme処理系で実現するかというのが現在の難問。 (Syntax-caseでは問題なく実現できるが、他の不健全/健全マクロシステムではできた…
(注: nmoshのビルドはできない。) MSはPython2.7のモジュール(*.pyd)をビルドするためのSDKを配布している。 https://mail.python.org/pipermail/python-dev/2014-September/136499.html 告知メール http://www.microsoft.com/en-us/download/details.aspx?i…
いろいろと年を跨ぎそうになってきたけど。。作業量見積りのために目標設定等を具体化する作業。 リリースクライテリア 何をもってリリースとするのかは微妙なポイントだけど、以下を満たしたときにリリースにしましょうということで。ビルド関連は自動化し…
(同じことを何度も書いている。何度も書くとだんだんと内容が洗練されるんじゃないかということで) http://d.hatena.ne.jp/mjt/20130818/p1 http://d.hatena.ne.jp/mjt/20140720/p1 ucid時代はgcccと呼んでいたが紛らわしいのでncccに改名した 目的 yuniFFI…
yuniの移植過程で出た問題をGitHubのissueに入れていくことに。 https://github.com/okuoku/yuni/issues 現時点で12件有るこの前途多難ぶり。。これからFFIを入れはじめたらどうなってしまうことか。。 例えば https://github.com/okuoku/yuni/issues/1 とか…
なんだか各種Scheme処理系のコーナーケースを突く嫌なコーナーになりつつ有るような。。 とにかくyuniは移植できそうなところには全て移植していく心意気でやっていきます。 picrin https://github.com/picrin-scheme/picrin R7RS + 各種ライブラリ https://…
nmoshのexpanderは積極的には低レベルマクロをサポートしないようにしたいので、適当なプリミティブを用意する必要がある。 低レベルマクロをサポートしないのは、1) 低レベルマクロのエラーによって生成されたdiagが通常の人間には理解しづらいため 2) synt…
http://d.hatena.ne.jp/mjt/20140914/p1#c1410723011 er-macroが早ければ次もしくは次の次のバージョンに入るのでそれを待ってください。 なんと。。(そんなに直ぐ入るとは思っていなかったので) 前回( http://d.hatena.ne.jp/mjt/20140914/p1 )のdefine-inj…
前のエントリ( http://d.hatena.ne.jp/mjt/20140914/p2 )でsyntax-rulesは得意みたいなことを書いておきながら、Gaucheはこれが違法なのに今気付いた: (import (scheme base) (scheme write)) (define-syntax defPlusOne (syntax-rules () ((_ nam) (begin (…
というわけで今週はパーサ作り(とかいいつつ先週は1ミリも作業できなかったので今更)。 ステート出し パーサは基本的に有限状態機械なので、作るためには状態を定義しないといけない。状態を手でつくるのとlexとかyaccで作ったものに手を加えるのとどちらが…
長いことやってるのかやってないのか微妙な状況でしたが、ロードマップを作った上で0.2.8は年末を目標に。基本的にteslawire(個人的に制作中のゲーム)のシナリオや他の仕事が有るのであんまし時間は掛けられないですが。。 あと今回から可能な限りちゃんと週…
yuniFFIをGaucheやchibiに移植するにあたって、R7RS形式のライブラリがnmoshで読めないと色々と不便(普段の開発はnmoshでやってるので)。というわけで、お手軽な方法でR7RSライブラリの読み取りに対応してみた。 従来から、R6RSライブラリからR7RS small言語…
yuniFFIはPOSIX(より正確にはいわゆるlibc)の記述を重要な目標としている。つまり、POSIXプログラムをC言語で書く状況に近いユーザビリティをScheme上に実現することが要求される。 POSIXの中には、マクロと関数のどちらで実装しても良いシンボルがいくつか…
yuniFFIはyuniライブラリの一部なので移植性が要求される(API記述から生成したbindingを各種scheme処理系で使い回す)。 一つのscheme処理系に移植するにあたって、トピックはいくつか有る: C bridge: DLLロード/呼び出し DLLからシンボルを解決する generic …
(諸般の事情でUCID/pFFIはyuniFFIに改名される。GenericなAPI記述はC++サポートのために再検討を入れ、yuniFFIはSchemeに一旦特化する。) stubIRはCコードに変換され、Cコンパイラで処理されて呼び出し用のstub(DLL)となる。stubはScheme処理系固有の方法で…
ucid処理系はC API記述から"ABIを抽出する"ためのCコードを出力する必要が有る。従来はUCID記述のS式から直接出力していたが、メンテナンス性がかなりダメだったのでちゃんとIR(intermediate representation)を決めてやりなおすことにした。 ucid処理系がCコ…
(おおきいの - http://storage.osdev.info/pub/idmjt/diaryimage/1405/neta140509l1.png ) ETW(Event Tracing for Windows)を使用するとDTraceやftraceのようなスケジューリングトレースを(比較的低いオーバヘッドで)取得することができる。ETWのログビュー…
諸般の事情で環境を移行しているので細かい修正が続く。。冷静に考えると、pffiへの移行によりnmosh pluginは一度もリリースされないまま消えるのか。。まぁ開発期間が長いとそういう事も有るよね。(ちなみにGStreamer SDK対応もリリースされずに消える見込)…
世間的な要求のために、システムにインストールされた(大抵Shared libraryの)BoehmGCを使用するconfigureオプション --with-system-bdwgc を追加した。特にFedoraのようなRPM系ディストリビューションへの収録のためには事実上必須なので。。 これに伴い、ク…
prev: http://d.hatena.ne.jp/mjt/20130818/p1 callstubによる呼び出し規約の吸収 とりあえず、Racket、Gauche、chibi-schemeとnmoshでR6RS(-light)ライブラリを共有する環境は整ったので、pFFIのランタイムを個々の処理系について実装していくことにする。 …
Gaucheとchibi-schemeではR7RS形式のライブラリを使用する。もともとR7RS対応を念頭にデザインしているシステムなので、大きな問題は無く対応できる。 生成されるstub libraryは: (define-library (yuni base shorten) (export ^) (import (scheme base) (yu…
prev: http://d.hatena.ne.jp/mjt/20131231/p1 nmoshの今年と来年 → yuni: 基盤ライブラリのポータビリティ Teslawire用の組み込みインタプリタを作るにあたって、pFFIとその他の細かいユーティリティに移植性を持たせて色々なR6RS/R7RS実装で使いまわそうと…
ゲームを作る上でCIシステムとCMSは不可欠になっている。teslawireは使用するコンパイル環境だけでも3種(Win32/Mac+iOS/Android)あり、GPU毎に数えると2桁になる。今回はシナリオ等アセットの制作を一切アウトソースしないので、他人の作業がビルドを壊すこ…
API記述の重要なユースケースはAPIトレーサの生成と言える。API記述というと、BridgesupportやIDLのように言語ブリッジとしての役割が主に注目されるが(ucidも本来はそちらが基本的なユースケースだが)、C/C++しか使用しないようなpure native環境でも価値が…
expanderのインターフェースを検討するために、既存のexpanderを改造してライブラリ対応にしてみることにした。 nmoshのbootstrapにはR5RSが必要なので、alexpanderを使用している。 https://github.com/okuoku/mosh/blob/master/boot/runtimes/srfi-mosh/bo…