Scheme

Pinball TristanをiOSにリリースしましました

ここ半年ほど本業のピンボールゲームのiOS版を作っておりました。これは20年ほど前に開発したピンボールゲームを全面的に書き直したものです。 当時のコードもちゃんとありましたよ ;^) といっても使えそうなものは一行もないわけなのですが・・・これだけ時…

JelloBench - A practical garbage collection benchmark program

Shibuya Lisp TT#2の発表の時に使った"JelloBench"です :)テクスチャマッピングされたポリゴンをSDL/OpenGLで描画しています。プログラムはすべてSchemeで書かれていますが、Intel Core2 2.4GHzのLinuxで3500フレーム/秒以上の表示が可能です。JelloBenchの…

YpsilonがPS3で動くようになりました

野田 開さんのご厚意によりPS3をSSH経由で提供して頂きました m(_ _)m32bit/64bit対応でFFIもサポート済みですよ。 :)libspe2を使ったテストプログラムを作ってみました。svn trunkのイプシロンをPS3に入れると動きます^^b #!/usr/bin/env ypsilon #!r6rs …

SDL_ttfのバインディングを追加しました

example/sdl-ttf-demo.scmの表示です :)

MySQLのバインディングを追加しました

やっぱりハッシュテーブルだけだとキツイです・・・で、餅は餅屋ということでMySQL 5.1 C APIのバインディングを追加しました。 $ ypsilon Ypsilon 0.9.6-trunk/r443 Copyright (c) 2009 Y.Fujita, LittleWing Company Limited. > (import (ypsilon mysql)) …

nanoasm version 1.0

Digammaに使うJITアセンブラをtrunkにコミットしました。必要な分の小さな命令セットだけを扱うので名前は"nanoasm"です :) テストでは1000万命令以上をアセンブルしてyasmの結果と比較しています。数時間かかって面倒なのですが・・・ミスアセンブルで地獄…

C++ JIT Assembler for Digamma

ディガンマはバグと戦ってこれを倒した。 ディガンマは経験値とJITアセンブラという名前の武器を手に入れた :) Schemeのアセンブラだけだとブートストラップが面倒なのでC++だけで使えるものを作っちゃいました。IA32とAMD64(Intel64)の基本的な命令だけをサ…

SDL on Mac OSX

id:kazuya_aさんにSDLをMac OSXで使う方法を教えて頂きました :D ypsilon+SDL+Mac OSX! SDLMain.mをスタティックリンクしなくても良いというのは素晴らしいですね!

Digamma - Tracing JIT Compiler for Ypsilon

ネイティブコード生成についていろいろと考えていましたが、Tracing JITと呼ばれるものを試してみることにしました。Tracing JITでポイントとなるのはインタープリタとコンパイル済みのコードの切り替えに起因するオーバヘッドかと思います。またYpsilonでは…

FFIに可変引数(variadic arguments)のサポートを追加しました

こんな風に使えます :D > (import (ypsilon ffi)) > (define libc (load-shared-object "libc.so.6")) > (define printf (c-function libc "libc" int printf (char* ...))) > (printf "test %d %f %s %e\n" 100 100.0 "こんにちは" 0.0001) test 100 100.00…

Gtk, Gdk, Pango, GtkGLExtのバインディングを追加しました

Glib, GObjectの一部も作っています。全部で4000個くらい関数があって、Gtkだけでも1万行を越えています@@。あんまりなので、現在はWidgetごとに細かくライブラリファイルを分けた状態にしています。もちろんCのヘッダーファイルから定義をぶっこ抜くスク…

SDLとCairoをライブラリに追加しました

SDLとCairoのバインディングをライブラリに追加しました。WindowsもOKですよ:D

Shibuya Lisp テクニカルトーク #2に参加してきました

Shibuya.lisp テクニカルトーク #2に参加してきました。素晴らしいイベントでとても楽しい時間を過ごさせていただきました。お世話になった皆様にとても感謝いたしております。m(_ _)m今回のトークでは簡単なゲームを作ってデモを行いました。*1 ゲームはす…

SRFI-48を追加しました

SRFI-48を追加したのですが、そのテストの過程でR5RSで不思議に思っていた'#'をPetite Chez Schemeが出力するのを目撃しました :)

R6RSのライブラリ一覧表

R6RSのBase LibraryとStandard Libraryの一覧表を作成しました。各キーワードからr6rs.orgのhtmlページに飛べるようになっています。飛び先の一覧は逆引きSchemeチームから頂きました。感謝感謝です :)http://www.littlewing.co.jp/ypsilon/doc-draft/r6rs.h…

ドキュメント: (ypsilon socket)

ソケット関係のドラフトを追加しました。 http://www.littlewing.co.jp/ypsilon/doc-draft/ドキュメントは仕様の再検討とテストも行いながら書くので時間がかかりますね。でも、これは貴重なリファクタリングの機会にもなりますので少しづつ進めるつもりです…

FFIでFastCGIを使ってみた

Socket関連のドキュメントを書くにあたりhttpを試していました。lighttpdと簡単なCGIを書いてテストしていたのですが、CGIではイプシロンの起動の遅さが気になりました。そこでFastCGIというのを試してみることにしました。

SchemeからCへの実験

さて、いまイプシロンのドキュメントを書いているわけなのですが、そうすると何か新しいことを試したくなってきます。これは本能なのでしょうか :p

ドキュメント

バグの方も落ち着いてきたので、APIを整理しながらドキュメントを書き始めることにしました。最初に手をつけたのは一番面倒そうなFFIとCの構造体の部分で、下記のURLにドラフトをアップロードしています。 http://www.littlewing.co.jp/ypsilon/doc-draft/

SRFI-1更新

(srfi :1)をアップデートしました。リビジョン356から(rnrs)とコンフリクトする以下の手続きもexportされます。 assoc fold-right for-each map member remove (rnrs)と一緒にimportする場合には。例えば以下のようにして衝突を回避してください。 > (import…

Filesystem関連の手続きを追加

リビジョン356で以下の手続きを追加しました。WindowsもOKです。 file-size-in-bytes file-regular? file-directory? file-symbolic-link? file-readable? file-writable? file-executable? file-stat-ctime file-stat-mtime create-symbolic-link (*1) crea…

define-macro

リビジョン342でコアからdefine-macroの実装を外しました。新しいdefine-macroは次のように定義しています。 (define-syntax define-macro (lambda (x) (syntax-case x () ((_ (name . args) . body) #'(define-macro name (lambda args . body))) ((_ name …

Ypsilon 0.9.6-update3

Ypsilon 0.9.6-update3をリリースしました(*1)。このバージョンは0.9.6-update2のリリース後に行われたすべてのバグの修正と機能の追加を含んでいます。またx86_64またはamd64で動作するLinuxとFreeBSDではデフォルトで64bitプログラムがビルドされるように…

Ypsilon PowerPC version

イプシロンはずっとx86ベースのマシンで開発してきました。当初よりPowerPCプラットフォームへの移植を予定していましたのでビッグエンディアン用のコードは仕込んでありましたが一度も動かしていませんでした。夕方犬の散歩をしているときに「Rosettaってコ…

FFIにCの構造体サポートを追加しました

例えばFFIでlinuxのgetrusageを呼び出すライブラリはこんな感じになります。

Ubuntu 8.10 2.6.27-9-generic SMP

左がカーネル2.6.27-9、右がカーネル2.6.24-22でのシステム・モニタの表示になります。イプシロンで(fibfp 35)を計算させて作成しました。 どうも新しいカーネルはプロセッサのスケジューリングに何か問題がありそうです(*1)。この現象は同じコードでも必ず…

Immutableオブジェクト

immutableオブジェクトの実装を行いました。以下のようなエラーの検出が可能となります(*1) Ypsilon 0.9.6-trunk/r317 Copyright (c) 2008 Y.Fujita, LittleWing Company Limited. > (define const (list 1 2 '(3 4 5) 6 7)) > (set-car! (caddr const) 4) e…

SRFI関係のライブラリを少し整理しました

svn trunkのリビジョン281から逆引きSchemeで使われている(srfi :1)などの名前でimportできるようになりました。また"SRFI 98: An interface to access environment variables by id:higepon"も実装しています :)

並列化したYpsilonVMをsvn trunkで公開しました

ちょっと仕上がり具合を確認してみましょう :)大きめなテストプログラムということで、すべてがSchemeで書かれているDorai Sitaramさんによる正規表現ライブラリ(pregexp.scm: Portable regular expressions for Scheme)を使うことにします。高レベルなAPIと…

Parallel Schemeに向けたテストその4

いろいろと考えてイプシロンではVMの並列化を: 各スレッドは独立したヒープを持つ。これはスレッド終了時に自動的に回収される。 各スレッドは独立してコンカレントGCを行う。 各スレッドは親子関係を持つ。 子は親のヒープを読むことができるが書くことはで…