MIT Schemeの多値が多値じゃない問題

SECDV VMのインタプリタできた。後で何か書く。https://github.com/okuoku/yuni/commit/42b819b3ca09f716eb2f180d54065a4291e313e3 基本的にスムースに動いて後はヒープとかコンパイラを残すのみだけど、MIT Schemeの微妙な多値の実装に半日悩んだ。 MIT Sch…

SECDV Schemeを考える - VM命令セット

前回( http://d.hatena.ne.jp/mjt/20170505/p1 )はVMで使用するレジスタと実行時の用法を考えた。今回はVMの根幹になるVM命令セットを決める。 今回のVMのコンセプトとして: ゲームのスクリプティングに使うので多少は効率的 - 少くとも元のSECDR Scheme程度…

SECDV Schemeを考える - レジスタ構成と呼び出しプロトコル

前回( http://d.hatena.ne.jp/mjt/20170501/p1 )はVMの基本的なコンセプトを考えた。今回はとにかくVMコンパイラを作る上で最初に必要になる、レジスタの構成と手続きの呼び出しプロトコルを考える。 SECDV VM のレジスタ SECDVのレジスタ構成は、SECDR Sche…

多値を扱えるシンプルなVMが欲しい会

というわけで、前回( http://d.hatena.ne.jp/mjt/20170321/p1 )見たSECDRマシンをベースに、多値を扱えるVM(SECDVマシン?)を考えていく。 多値を直接的に扱うことで、メモリ効率が改善できるのではないかと考えている。SECDRマシンでは環境(Environment)を表…

Windows 10 Creators UpdateとWindows Sonic立体音響の統合

現在配信中のWindows 10 Creators Updateでは、WindowsのオブジェクトベースオーディオであるWindows Sonicが統合され、スピーカーアイコンの右クリックという超一等地に"立体音響"のメニューを追加している。 今のところ、ヘッドホンではWindows標準のHRTF…

SECDRマシンのコンパイラを読む

コンパクトなVMベースのScheme処理系としてはSECDR Schemeが有る。というわけで、SECDR Schemeのコンパイラを読んでみる。 http://www.maroon.dti.ne.jp/nagar17/mulasame/ SECDR-Scheme https://gist.github.com/okuoku/3f2e469497bbf12575e8 SECDR scheme…

Bash on WindowsでNetBSD rumpkernelを動かす

Bash on WindowsのWindows Subsystem for Linux(WSL)は要するにLinuxなので普通にrumpkernelが動いた。まる。 rumpkernelはNetBSDのデバイスドライバやプロトコルスタック類を動作させるためのAPI( http://netbsd.gw.com/cgi-bin/man-cgi?rumpuser )を切った…

Nintendo Switchのシステム描画戦略の予想

追記: TVのオーバスキャンを考慮して表示領域を縮小する機能を備えているが、PS4と異なり画面全体が(システムUI含め)縮小される。また、ARIB標準( http://d.hatena.ne.jp/mjt/20150726/p1 )の90%デフォルトではなく100%デフォルトとしている。このとき、スク…

Nintendo SwitchのUI戦略

というわけでNintendo Switchを発売日に(会社をサボって)入手した。 全体的に素晴しいデキで、ゲームコンソールのあるべき姿を提示したのではないかと思う。細かい変な仕様も散見されるが、実装面ではマルチユーザ型コンテンツプレイヤの模範と言って良いの…

ナカバヤシBluetoothトラックボール Digio2 MUS-TBLF134SL

https://www.nakabayashi.co.jp/news/2017/release/277 製品のWebサイトが存在しないのでニュースリリース 今迄Logicool M570tを使ってきたけど、ホイールボタンがダメになってきたので買い替え。アキヨドで7000円くらい。M570tは2014/8/15以来使ってるらし…

AVerMedia HDMIキャプチャ AVT-C878

http://www.avermedia.co.jp/product_swap/avt-c878.html UVCなHDMIキャプチャ。アキヨドで27000円くらい。 実はUVCなHDMIキャプチャはあまり市場に選択肢が無く、以前使っていたSKNET MonstarX Live( http://d.hatena.ne.jp/mjt/20121216/p1 )以来な気がす…

MIT SchemeにR7RS bytevectorが登場

yuniが急にMIT/GNU Schemeで動かなくなったので調べてみると、どうも最近のMIT Scheme(9.4になるバージョン)にはbytevector関連の手続きが一通り用意されているようだ。 https://github.com/okuoku/yuni/commit/ea9d9737ea3b4e08c7228eb0aad56a0e32963ccf yu…

インストール不要のEWDKにVisualStudio 2013のビルド環境を追加する

追記: IncludePathは別にWindowsSDK_IncludePathで良いみたいなので変更 Visual Studio 2015以降、MSは.zipを展開するだけで使えるビルド環境であるEWDK(Enterprise WDK)を提供している。 https://msdn.microsoft.com/windows/hardware/drivers/develop/inst…

SoftEther VPNを使ってVM用のローカルNATを構築する(VPN機能は使わない)

要約: SoftEtherはWindows上で動作するGUI付きSlirpとして便利に使える。未来型てるろーど( http://hamradio1.life.coocan.jp/~telroad.htm )。 VMをネットワークに見せるのに従来はWindowsのICS(Internet Connection Sharing: いわゆる"インターネット接続…

いろいろ諦めてobject→integerを用意する

前回( http://d.hatena.ne.jp/mjt/20170211/p1 )書いたように、FFIのコールバックでScheme手続きを呼び出すためには、Cオブジェクト、要するにCポインタを通してScheme手続きを受け渡す必要がある。 例えばnmoshにはobject→pointerが有ったり、Chez schemeに…

各種処理系のFFIコールバック仕様を見てみる会

YuniFFIは今のところ10くらいの処理系のScheme→C呼び出しを抽象化している。しかし、コールバックを取るC APIは地味に多いため、コールバックにも真面目に対応しないといけない。。 YuniFFIではScheme→Cの呼び出しAPIをNCCCと呼んでいる特定のCプロトタイプ…

Bash On WindowsとWin32の間で共有メモリしたらどうなるのか問題

クライアント版のWindows10にはWSL(Windows Subsystem For Linux)と呼ばれるLinuxカーネルエミュレータが搭載されており、これを使用したBash On WindowsとしてLinuxのバイナリ互換環境を提供している。 世間にはいろいろとこのWSLを使ってアプリケーション…

ARM版のyuniもamd64のDockerでCIする

追記: RunaboveのようなARM VPSを使えば良いじゃんというツッコミ( https://twitter.com/nalsh/status/827884020591505408 )が有った。ごもっとも。。 諸般の事情でARM版のCI環境が必要になったので、ついでにyunibaseでも同様に用意した。 http://blog.hypr…

Windows Server ContainerなDockerのイメージをNexus 3.xに作ったプライベートリポジトリに入れておく

追記: 現在では、より直接的な、"allow-nondistributable-artifacts"を使える: http://www.sonatype.org/nexus/2017/11/28/setting-up-sonatype-nexus-3-as-your-windows-docker-container-registry/ ( https://github.com/docker/docker-ce/commit/8fabd694…

KING JIM PORTABOOK XMC10

http://www.kingjim.co.jp/sp/portabook/xmc10/ 公式サイト Nintendo Switchの予約のついでに有楽町ビックカメラで購入。ポイントで購入した。(本来の開店時間よりも前でも普通に販売をしているようだ) 世間的な評判はイマイチだけど、それなりに使いやすい…

各処理系向けのアプリケーション実行環境生成

前回: http://d.hatena.ne.jp/mjt/20160831/p1 Schemeで作ったゲームをどうやって配布するか考える 今のところyuniのアプリケーションはCMakeのスクリプトで書かれたランチャ経由で起動される。単体で動作させるためには、これをなんとかScheme側に持ってく…

リモコンでの操作体系を考える会

前回: http://d.hatena.ne.jp/mjt/20150926/p1 ゲームプラットフォームとしてのスマートTV 現状"テレビに映るゲーム"を考える上で、リモコンを使用した操作体系を考えておく必要がある。...営業的な意味では、ゲームを買う層はゲームパッドも用意しているは…

Android-x86のhoudiniはどこから来ているのか

Android-x86プロジェクトはCyanogenModベースのAndroid x86インストールイメージを配布( http://www.android-x86.org/download )している。これはPC版RemixOSのベースにもなっていて、実はこれらにはIntelのhoudiniが何故か含まれておりARMバイナリを直接実…

CygwinでYouCompleteMeを無理矢理つかう

YouCompleteMeはvim用の補完プラグインで、基本的にCygwinはサポートしていない。まぁでも手でビルドすれば(動く動かないという意味で言えば)動くので使っている。 ycm_core.dllのビルド YouCompleteMeは、 vimスクリプトで書かれたプラグイン本体 と、ycmd…

SHIELD Stories が興味深い の2

前回から1年程経過したので ( http://d.hatena.ne.jp/mjt/20151123/p1 )。 去年から見て重要な違いは: Nintendo SWITCHがほぼSHIELD TVと同スペックで登場した。パフォーマンスに関する考察が同様に適用できる。 逆にNVIDIAはShieldコンソールをほとんど止め…

素のqemuでAndroidが起動しなかったメモ

(追記: http://stackoverflow.com/questions/18497701/emulating-android-jb-on-qemu 検索したら普通にJBをVExpressで動かしている投稿があった。。) シミュレーションのために適当なPDAの動作中の命令トレースが欲しい。まぁ今だとAndroidで良いんじゃない…

RaspbianをCygwin上のNFSサーバのnfsrootとWindows上のqemuで起動するメモ

追記: nfs.enable_ino64=0 が必要なので追記、あとinit=/bin/shでrootパスワードをセットする必要があるのも。 そろそろteslawireのエンジン側をARM11に載せる算段を考えないといけないので、Raspbianの開発環境をWindows上で揃えることにした。 というわけ…

R7RS smallをSDK用にサブセットする

yuniは基本的にR7RSを基盤としている。が、ゲームエンジンなりなんなりを書いていく上で互換性の維持が難しかったり、マイナーであったりする機能は削って移植性を確保したい。他のScheme共通ライブラリ、例えばslibはもっと心が広い( http://srfi.schemers.…

matchを廃止/改名したい

なんだか偶にLarcenyでコンパイルしたライブラリが動作しない現象が発生するようになった(Larcenyのバイナリを使ったテストがAppVeyorでだけ失敗する)。常に(yuni base match)ライブラリで起こるので、たぶんLarceny側のexpanderにバグが有るんじゃないかと…

不正なテクニックを駆使してdefine-valuesもR5RSサポートする

追記: SCM自体にはdynamic loadingは有るが、Win32向けのバイナリディストリビューションでは有効にされていない 前回( http://d.hatena.ne.jp/mjt/20160825/p1 )、結局R5RSでのdefine-valuesは諦めた雰囲気を出していたが、結局サポートした。...実際には偶…