Hatena::ブログ(Diary)

Y.FUJITA::NOTEPAD::YPSILON このページをアンテナに追加 RSSフィード

2008-12-23

Ypsilon 0.9.6-update3

| 01:39 | Ypsilon 0.9.6-update3を含むブックマーク Ypsilon 0.9.6-update3のブックマークコメント

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

0.9.6-update2からの変更で既存のSchemeプログラムに一番大きな影響を与えるのはimmutable objectの導入になるかと思います。"error in set-car!: attempt to modify literal constant (1 2)"のようなエラーメッセージが出る場合は、

  • --compatibleフラグをつけてイプシロンを起動する
  • スクリプトに#!compatibleコメントを置く(#!r6rsコメントがある場合にはその直後に)

などの方法で一時的に回避することができます。

最後になりますが、イプシロンの開発にご協力いただいた方々にこの場を借りてお礼申し上げます m(_ _)m

*1 イプシロンのすべてのプログラムhttp://code.google.com/p/ypsilon/ にて公開されています。

追伸:id:vvakameさんのトラックバックを拝見してparallel-mapを積み忘れたことに気がつきました(CPUのコアの数を調べる方法を考えていてそのまま忘れてしまったのです orz)お試しにはParallel Schemeに向けたテストその3のn-way-parallel-mapをお使いください >_<

okada-nokada-n 2008/12/25 23:04 CeleronとAthlonXPでビルドに失敗するみたいですが、対応外でしょうか?
こんな感じになります。
g++ -m32 -lpthread -ldl -o ypsilon file.o main.o vm0.o object_heap_compact.o subr_flonum.o vm1.o object_set.o subr_hash.o vm2.o object_slab.o subr_list.o interpreter.o serialize.o vm3.o port.o subr_others.o arith.o printer.o subr_port.o subr_r5rs_arith.o equiv.o reader.o ffi.o subr_base.o bag.o subr_unicode.o hash.o subr_base_arith.o ucs4.o ioerror.o subr_bitwise.o utf8.o subr_bvector.o violation.o object_factory.o subr_ffi.o object_heap.o subr_fixnum.o bit.o list.o fasl.o socket.o subr_socket.o ffi_stub_linux.o
[root@DAICHI ypsilon-0.9.6.update3]# make check
----------------------------------------
r4rstest.scm:
make: *** [check] 不正な命令です
[root@DAICHI ypsilon-0.9.6.update3]# gcc -v
Using built-in specs.
Target: i386-redhat-linux
コンフィグオプション: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-cpu=generic --build=i386-redhat-linux
スレッドモデル: posix
gcc version 4.3.2 20081105 (Red Hat 4.3.2-7) (GCC)
[root@DAICHI ypsilon-0.9.6.update3]# uname -a
Linux DAICHI.LOCALNET 2.6.27.7-134.fc10.i686 #1 SMP Mon Dec 1 22:42:50 EST 2008 i686 athlon i386 GNU/Linux
[root@DAICHI ypsilon-0.9.6.update3]#

fujita-yfujita-y 2008/12/26 00:09 これはSSE2の命令が引っかかっているのかもしれません(AthlonXPはSSE2サポートなし、CeleronもモデルによってはSSE2がないのです)
Makefileの-msse2とある部分をすべて-msseに書き換えてもう一度ビルドしてみて頂けないでしょうか?
もし上手くいきましたら、AthronXPでの"grep sse /proc/cpuinfo"の表示を教えていただけると助かります(Makefileで自動判定するようにしたいと思います)
よろしくお願いいたします m(_ _)m

okada-nokada-n 2008/12/26 17:13 助かりました!!
Makefileの-msse2を-msseに書き換えたらうまく行きました。
AthlonXPで grep sse /proc/cpuinfo を実行した結果は、以下の通りです。
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow up

fujita-yfujita-y 2008/12/26 23:52 コメントありがとうございます。無事に動いて嬉しいです :)

SaitoAtsushiSaitoAtsushi 2011/05/04 18:45 Mingw で動くようにパッチを書きました。
その際にバグではないかと思う箇所があったのでそれについてまとめております。
http://d.hatena.ne.jp/SaitoAtsushi/20110223/1298464738
よろしければ見解を頂きたく思います。