2009-01-01から1年間の記事一覧

Recent conditions

ここしばらく本体となるピンボールゲームの開発に忙しくイプシロン関連の更新が滞っております :( 新タイトル「MAD DAEDALUS(仮称)」が完成しましたら、その成果をイプシロンにフィードバックいたします、どうぞしばらくお待ち下さい m(_ _)m

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 …