Ypsilon 0.9.5-update2をリリースしました。今回のアップデートでかなりのバグを取ることができたと思います。ご協力頂いた方々に感謝いたしております。最近アナウンスされたPLTのR6RS test suiteを動かしてみたところ、98.9%のカバー率になりました。
今回のリリースでは、とても見つけにくいコンカレントGCのバグを2つ消すことができたのが個人的には嬉しいです。これはWilliam D Clingerさんからメールで教えて頂いたR6RS Benchmarksの中のgcbenchというテストプログラムで発覚しました。御大に感謝です!:D
Ypsilon 0.9.5-update2は http://code.google.com/p/ypsilon/ からダウンロードすることができます。現在、MacOS X, Windows Vista, Linuxがサポートされています。
– Fujtia
2008年7月のアーカイブ
目を閉じると見えるバグもある・・・だからちゃんと寝よう!
プログラミング雑記, リトルウイング, タグ R6RS, Scheme, Ypsilon へ投稿: 7月 26, 2008 | 2件のコメント »
ちなみに一般的なピンボールの直径は2.699cm(1 1/16インチ)で重さは80gです
「思ったより小さい」と感じますか?それとも「大きい」と感じるでしょうか?
以前シカゴのピンボールメーカーで教えてもらいました。プレイヤーからの質問で一番多いのが「ボールの直径と重さ」なんだそうです。確かに手のひらに乗せたことのある人は少ないですよね。
Ypsilonのバグフィックス版をリリースしました。皆様のご協力のおかげで思ったより早く安定してきたと思います。コメントやバグレポートをお送り頂いた方々に感謝いたしております m(_ _)m
こういったソフトウエアのデバッグは一人では難しいものです。なぜならテスト用のプログラムが偏ったものになるからです。これはプログラマーがそれぞれ自分のコーディングスタイルを持っていることに起因します。「こんな使い方あったのか〜」という発見があり、そしてその中にバグが潜んでいることもしばしばです
最近そんな例に関連する投稿がcomp.lang.schemeにありました。
(define (((f x) y) z) (+ x y z))
というプログラムはR6RS Schemeではエラーにしなければなりません。でも、これが使えると便利そうなんだけど・・・ そういう場合R6RSでは下記のようにポータブルに実現することができます。
(library (define+)
(export (rename (define+ define)))
(import (rnrs))
(define-syntax define+
(syntax-rules ()
((_ (f . args) . body)
(define+ f (lambda args . body)))
((_ var val)
(define var val)))))
(import (define+))
(define (((f x) y) z) (+ x y z))
(define g ((f 1) 2))
(g 3) ;=> 6
でも、私は自分のプログラムではこういう書き方はしません・・・で、この使い方にはバグが潜んでいたわけですね(汗
もしも私が一人でデバッグしていたら、これって何時まで潜んでいたことやら