Gauche-gtk2 0.6.2
マイナーアップデート。APIをひとつ足したのと、新しめのGaucheへの適応。
Practical Scheme Scripting
マイナーアップデート。APIをひとつ足したのと、新しめのGaucheへの適応。
最新の開発版ソースから毎日作られる"bleeding-edge" tarballの提供を始めました。 既にGaucheがインストールされていなくても最新のバグフィクスを試すことができます。 BleedingEdgeTarballを参照してください。
リリースノートを参照してください。
リリースノートを参照してください。
[[リリースノート](?リリース% 0.9.13]を参照してください。
[[リリースノート](?リリース% 0.9.12]を参照してください。
バグフィクスを少々。tarballの名前がGauche-gtk2-0.6.1.tgzになっていることに注意。
これは単に現状のコードを新しくパッケージにしたものです。前回の正式リリースからかなり時間が経っていて、いくつか断続的にバグフィクスがコミットされていました。それらをまとめたものです。
0.9.11のWindowsインストーラで入るバージョンには、明示的にrfc.tls.mbedをuseしていないとTLS接続がエラーになるという問題がありました。WindowsインストーラからGaucheを利用している方は新しいインストーラでアップデートしてください。
これは、0.9.11の時点で、パッケージする環境によってmbedtlsモジュールのオートロードがセットアップされないという問題があったためです。tarballから入れている場合、 --with-tls=mbedtls-internalを指定していない限りはアップデートの 必要はありません。
リリースノートを参照してください。
リポジトリから開発版をビルドして使っている方のために、開発版HEADのドキュメントのドラフトの掲載も始めました。
リリースノートを参照してください。
最新のMinGWではgccが10.1になったのですが、リリースtarballでもソースからのビルドがエラーになっていました。本日付けのコミットで修正されていますが、それをコンパイルするにはWindowsバイナリインストーラでGaucheをインストールしてください。
リリースノートを参照してください。
リリースノートを参照してください。
リリースノートを参照してください。
リリースノートを参照してください。
リリースノートを参照してください。
大きな変更はたいしてありませんが、前回のリリースからずいぶん経つので。ダウンロード方法は拡張パッケージのページに。リリースノートはこちら。
リリースノートを参照してください。
ソースコードリポジトリをGitHubに移行しました: https://github.com/shirok/Gauche。開発版を追っかけている方はoriginを変更してください。
(ファイルリリースやメーリングリストはSourfeForge.netに止まります。リポジトリだけの移行です。
0.9.3.2からいくつかのバグフィクスと、2つばかり新機能の追加です。 バグのひとつが、ある条件でビルドが失敗するというものだったので、 新たなリリースにした方が良いと判断しました。
Gaucheがutf-8以外の文字エンコーディングを使うようにconfigureされた場合に ドキュメントのビルドに失敗するという問題が見つかったので、これを修正したリリース(0.9.3.2) を出しました。Gaucheをデフォルトのutf-8以外のエンコーディングでコンパイルしたい 場合はダウンロードしてください。utf-8でコンパイルする場合は急いでアップデート する必要はありません。
Windows/MinGW上で0.9.3リリース版がgit HEADバージョンをコンパイルできない という問題が見つかったので、修正したバージョン(0.9.3.1)を用意してあります。 他のプラットフォームには影響はありません。
開発用リポジトリをSubversionからGitに切り替えました。 チェックアウトやブラウズの方法についてはダウンロードのページを 参照してください。
Windowsインストーラによるインストールの際に、Gaucheのパスを追加した結果のPATHが ある長さを越えると、PATHの内容が破壊されるという問題が報告されました。 (これはNSISで報告されている問題のようです。Winampフォーラムの類似事例。) PATHの内容が既に1000文字に近い場合は、Gauche-mingw-0.9.1.exeによるインストールを 避けてください。現在対応策を考えています。
gauche-configに、 拡張ライブラリのインストールに影響を与えるバグを見つけました。 0.9.1のリリースパッケージはfixされたものに置き換えられています。 既にダウンロードしてしまった方は、お手数ですがmd5sumをチェックしてください。 以下が最新版のmd5sumです。
6134e9c16aef2bc9fd3fa7e8fbebdd10 Gauche-0.9.1.tgz dce3a5f438506bfcbb63687e2debdeb1 Gauche-mingw-0.9.1.exe
Gauche 0.9のWindowsバイナリ配布ファイルが、いくつかのアンチウィルスソフト の経験的検出アルゴリズムによって"Dropper"タイプのウィルスと判断されるようです。 SourceForge.netに現在上がっているバイナリは常にウィルススキャンされている開発者の マシンで作成されたもので、これは誤検出であると考えています。念のためオリジナルの バイナリパッケージのmd5を掲載しておきます。
5801c5a91a8e1c09e0a4b1ec30d37dee Gauche-mingw-0.9.exe 0a1470b3a96e658c8e3c812aca880ffd Gauchebox-0.9-box1.exe
大きな機能拡張
メンテナンスリリース
Lots of small improvements
(apply list (iota 50000)) "Suppose this is very very long line." as "Suppose this is very \
very long line." for example.Maintenance release
メンテナンスリリース
Cygwin上でGL拡張が使えない問題を修正しました。 (Patch from Takashi Ishizaki).
大きなメンテナンスリリース
メンテナンスリリース
メンテナンスリリース。GLUオブジェクトのファイナライザの バグを修正しました。
Gauche 0.8.8についての重要なパッチ: Schemeスクリプトが捕捉されないエラーを投げた場合に、goshが エラーの報告を出力せずに黙って終了するというバグがありました。 問題を解決するには、次のメッセージに含まれるパッチを当てて下さい。 https://sourceforge.net/mailarchive/forum.php?thread_id=30949517&forum_id=2043
大きなメンテナンスリリース
いくつかのビルド時の問題をフィックスしたリリースです。
大きなメンテナンスリリース
Major feature enhancement.
メインテナンスリリース
いくつかの重要なバグを修正したリリースです。アップデートをお薦めします。
大幅な機能強化
Gcc-4を使うと0.8.4のコンパイルがうまくいきません。 この問題にあたってしまった方は、お手数ですが以下のファイルをダウンロードして src/ 以下の同名のファイルと置き換えてから再コンパイルして下さい。
https://practical-scheme.net/vault/autoloads.c https://practical-scheme.net/vault/compile.c https://practical-scheme.net/vault/scmlib.c https://practical-scheme.net/vault/objlib.c
コンパイラとVMが書き直され、以前よりも少ないメモリで速く走るように なりました (ベストケースで1.9倍の速度、もしくは0.7倍のメモリ消費。 もちろんケースにより数値は大きく異なります)。コンパイラが簡単な クロージャ最適化を行うようになったので、ローカル関数の末尾再帰を しているような典型的なコードは恩恵を受けやすいでしょう。 一方で、OO中心だったりライブラリで多くの時間を費すコードは あまり改善が見られないかもしれません。
クロージャ解析を行うようになった結果、Gaucheはローカル関数の引数の 不一致のエラーを実行時ではなくコンパイル時に検出するようになりました。 この変更で、今まではほとんど実行されることのないコードにあった ために発見されなかったバグが見つかり、コンパイルエラーで実行できなくなる スクリプトがあるかもしれません。 後でバグに思いがけず出くわすよりは、早目に見つけられる方が良いと 我々は考えています。
この変更のもう一つの副作用は(あまり望ましくないことですが) プログラムのロード時間が長くなるというものです。Gaucheがコンパイル時の 最適化により多くの時間をかけるようになったためです。 手元のテストケースではロード時間が70%ほど増加しました。 以降数リリースでこの数字は改善される予定ですが、これが問題になるようなら あまり使わない機能をautoloadにしてloadを遅らせるなどの手段を取って 下さい。
エラーメッセージ (コンパイルエラーもランタイムエラーも) には まだかなり改善の余地があります。こちらも徐々に直してゆく予定です。
他の変更:
バグフィクスリリース
0.8.2のソースコードエンコーディング検出機能にバグが見つかりました。 Windows式の行末 (CRLF) を使っている場合に、coding-aware port が2行目の最初の文字を繰り返してしまうというものです。 先頭の数行がコメントであるようなソースコードでは問題が現れませんが、 踏むと厄介なバグなので、修正したバージョンをリリースします。
他に2点程改善点があります。coding-aware portはEmacsが使っている 修飾サフィックス付きのコーディング名 (euc-jp-unix等) も認識し、 サフィックスを除いたものを文字エンコーディングとして用います。 また、f32vectorとf64vectorの外部表記がより正確なものとなりました。
インフラストラクチャを大きく修正しました。
メインテナンスリリースです。
また、最近のGaucheでコンパイルに問題が出ていたのを修正した Gauche-kakasi-0.1もリリースしました。
このリリースでは、クラス再定義に関するやや重要なバグが 修正されています。このバグは、クラスの再定義を繰り返すと、元のクラスに 定義されていたメソッドが失われるというものです。クラスの再定義機構を 積極的に利用していない場合はこのバグに当たることは少ないと思われるので、 次のリリースまでアップデートを待っても良いでしょう。
そのほか、以下のバグが修正されています。
リリース0.7.4には、dbm.fsdbmのデータベースに以前のバージョンとの 互換性が無いというバグがありました。fixしたものを0.7.4.1としてリリースしています。
(このリリースでは、CのAPIが若干変更されており、libgaucheを使う既存の Cアプリケーションには互換性の問題が出るかもしれません。下の"C API Change" を見てください)。
行列の分解ルーチンのバグと、コンフィグレーション時 の問題のfix。また、Gauche-0.7.3への適合。
新しいGtk-2.2でのコンパイル時の問題のfix。 gtk-accel-groupとgtk-window-get-sizeのサポート (Patch from Michal Maruska).
Cygwinで走るようになりました (OpenGL 1.1.0-6使用、X不使用。)
gtk-2.2に対応しました
メンテナンスリリース
詳しくは拡張パッケージを参照して下さい。
0.6.7に2つのバグが見付かりました。アプリケーションによっては大きな 影響を受けるので、パッチを適用した版を0.6.7.1としてリリースします。 修正されるバグは以下の2つです。
機能拡張
たくさんのバグフィクスと機能拡張
このリリースでは、FreeBSDでのインストールに 関する問題が解決され、またgl.math3dの不具合が修正されています。
gtk-text-viewとgtk-tree-modelのAPIを 追加しました。gtk-tree-view-set-cursorを修正しました。 インタラクティブリスナーがEOFを読んだ時にアプリケーションを終了 するようにできるオプションを追加しました。
Schemeレベルのコンストラクタがウィジェットを だぶって作ってしまうというバグを修正しました。また、gtk-dialog-new-with-buttons を追加しました。
様々なバグフィクスと機能拡張
gtk-mainを呼んだ後でもインタラクティブなreplが 持てるようになりました。gauche.listenerを使って実装されています。 詳しくはREADMEファイルを見て下さい。また、GtkTreeStore, GtkTreePath, GtkTreeSelection他いくつかのAPIが追加されました。
若干のバグフィクスと機能拡張です。
gosh -q -Imy/local/directory -lgauche-initgl.math3dモジュールを追加。 3D homogeneous coordinatesを扱うベクタや行列演算、及び四元数演算の モジュールです。
テクスチャ関連とセレクション関連のAPIを 追加しました。 また、gl-call-listsが文字列もバイトアレイとして引数に取れるようになりました。 Exampleもいくつか追加されました。拡張パッケージ からダウンロードできます。
TAGA Yoshitakaさんからの、UTF-8エンコーディング でのコンパイルの問題をfixするパッチを取り込みました。また、gtk-radio-menu-item のサポートを追加しました。拡張パッケージ からダウンロードできます。
最近のいくつかのGaucheのリリースに、手違いによりインストール手順の説明ファイル が含まれていませんでした。 こちらのINSTALL.eucjpを参照して下さい。
(define-method object-apply ((s <string>) (i <integer>))
(string-ref s i))式 ("abcde" 2) が #\c を返すようになります。
このメカニズムは手続きが許されるほとんどの場所で使えます。例えば:
(map "abcde" '(1 2 3)) => '(#\b #\c #\d).
詳しくはリファレンスマニュアルの「適用可能なオブジェクト」の章を
参照して下さい。 (define m (#/(\d+) (\d+:\d+:\d+)/ "Sep 22 00:01:02 2002"))
m => #<regmatch>
(m) => "22 00:01:02"
(m 1) => "22"
(m 2) => "00:01:02"
(m 'before) => "Sep "
(m 'after) => " 2002"#[[:alpha:]]。日本語MLをSourceForge.netからSourceForge.jpに移しました。
Gauche-gtk に、Gaucheの内部エンコーディングをUTF-8にしていると コンパイル出来ないというバグがありました。TAGA Yoshitakaさんから パッチを提供して頂きました。
GtkGLExtバインディング、<g-timer>サポート、 <pango-font-description> サポート、GDK keysymsサポートが追加されました。 拡張パッケージのページからダウンロード できます。
GaucheのGTK2バインディングの最初のリリースです。 欠けているAPIがまだ大量にあると思いますが、試してみてください。 拡張パッケージのページからダウンロード できます。
バグフィクスリリースです
バグフィクス・機能追加リリースです。
機能追加リリースです
(define map2* (map$ (pa$ * 2)))
(map2* '(1 2 3)) => (2 4 6)
(define dot-product (compose (apply$ +) (map$ *)))
(dot-product '(1 2 3) '(4 5 6)) => 32主としてI/O関係の機能追加です。
バグフィクスリリースです。
Gaucheからslib2d3を使おうとするとエラーになります。これを避けるには、 src/gauche-init.scmにある 'use' マクロの定義を以下のものに置き換えて下さい。
(define-macro (use module)
(let* ((mod (cond ((symbol? module) module)
((identifier? module) (identifier->symbol module))
(else (error "use: symbol required:" module))))
(path (string-join (string-split (symbol->string mod) #.) "/")))
`(begin (with-module gauche (require ,path))
(import ,mod)))
)
バグフィクスと若干の機能拡張です。
Patch for 0.5.1: 次の二つの問題を解決します。
他のプラットフォームに影響はありません。
移植といくつかのバグフィクス
ドキュメントの日本語マニュアルへのリンクが 英語マニュアルを指していたのを直しました。
メンテナンスリリース
FreeBSD 4.4 附属の libiconv 2.x (/usr/local以下のもの)では gauche.charconvの動作に不具合が出るとの報告がありました。GNU libiconvを 使えばうまく行くようです。tarballに含まれるINSTALL.eucjpを参照してください。
パッチ: リリース0.4.11に、会話環境でエラー時にスタックが リセットされないというバグがありました。そのまま使っているとエラーメッセージが見にくく なってしまいます。パッチGauche-0.4.11.patch を適用して下さい。
(fold + 0 '#(1 2 3 4)) => 10
(map-to <vector> + '#(1 2 3) '#(4 5 6)) => #(5 7 9)
(subseq '#(a b c d e) 1 4) => #(b c d)
詳しくはリファレンスマニュアルの該当する項目を参照して下さい。またまたライブラリの追加とバグフィクス。
さらにライブラリの追加とバグフィクス。
再びライブラリの追加とバグフィクス。
また、GaucheのOpenGLバインディングGauche-gl 0.1を 別パッケージとして公開しました。 OpenGL 1.0/1.1 の大部分の関数と、GLUとGLUTを部分的にカバーします。 Mesaでも動きます。
メインテナンスリリース。あと3週間くらいはこちらの開発に時間を 割けないので、これまでのバグフィックスを一度まとめます。リーダーが、厳密にはR5RS に従わないけどよく使われている数値/シンボルを読み込むようになりました (例:".12" は数値0.12と読まれる)。また、特殊文字を含むシンボルは `|' でエスケープすることに より表記できます。 "apropos" を改良しました。 VM関係のバグを2つばかり潰しました。 configureスクリプトはautoconf-2.52で生成されたものになっています。
バグフィックスの他、デザインの一貫性のためにいくつかの非互換な変更を 行いました。
お知らせ:NetBSD/i386及びFreeBSD/i386では、拡張モジュールをdynamic load すると動作が不安定になります。GCがdynamic loadingに対応していないためです。 おいおい直して行きますが、ちょっと時間がかかると思います。
お知らせ:OSによっては、gethostbyname_rが未定義などのエラーがext/net/libnet.soの ビルド時に出るようです。こちらから Gauche-0.3.15.patchを取って、Gauche-0.3.15.tgzを展開して出来る Gauche'' ディレクトリの下でパッチを当ててみてください。
Release 0.3.14: 文字コード変換モジュールgauche.charconvを実装しました。 iconvを利用して、各種文字コード間の変換ができるほか、エンコーディングの 判定ルーチンなどを備えています。インターフェースの詳細に関しては、 リファレンスマニュアルの gauche.charconvモジュールの記述を参照してください。
また、portとregexp関係のバグをいくつか修正しました。
ドキュメントのページから リファレンスマニュアルをオンラインで参照できるようにしました。 と言ってもまだ中身は関数名が羅列してあるだけですが。
Release 0.3.13: メンテナンスリリース。iconvの無いシステムでコンパイルが 失敗するという0.3.12の問題を修正しました。ほか、uvectorモジュール、bignum、 dynamic load関連でのバグを修正。
Release 0.3.11: キャラクタコード変換のサポートの前段階として、不完全な 文字列(正規のマルチバイト文字列として解釈できない文字列)のサポートを強化しました。 また、リテラル文字列はimmutable stringとなり、 それを変更しようとするとエラーになります。これらのサポートのため、String APIが 変更されました。
不完全な文字列は #"..." のように表記されます。リーダーとプリンタがこの構文を サポートするように拡張されました。
また、いくつかのビット演算オペレーション (ash, lognot, logand, logior) が 追加されました。
Release 0.3.10: 数値計算コード再訪。解析関数が複素数の範囲まで動作するように なりました。『Common Lisp, the Language 2nd Edition』 の "Numbers" の 章にあげられている、解析関数の値の複素平面でのプロットがGaucheでも生成できます (思ったより大変でした… 同書339-349ページに示されたプログラムをSchemeにポートした コードはディストリピューションには含まれませんが、良いテストベッドだと思うので、 興味のある方はメイルを下さればお送りします)。
また、インライン展開されるScheme関数中でエラーが起きた場合にコアダンプする バグや、複素数がeqv?にならないバグなどが修正されました。
Release 0.3.9: 文字列ライブラリSRFI-13のほとんどをカバーしました。 また、configure時のオプションにより、文字列の内部エンコーディングとして EUC-JP以外にUTF-8、shift jis、そしてマルチバイトを使わないという選択が出来ます。 (EUC-JP以外はあまりよくテストしていませんが)。方法についてはINSTALLを見て下さい。
Release 0.3.8: bignumの除算ルーチンまわりのバグが修正されました。 やっとgcdとlcmも動きます (これでようやくr4rstest.scmが<i>ほとんど</i> 通るようになりました)。srfi-13の実装へ向けて、文字列ルーチンの整理に 取り掛かりました。
Release 0.3.7: 数値の入出力まわりとインライン展開される数値計算コードの バグが修正されました。bignumも加減乗算はまともに動作します (除算はまだ…)。 正規表現に \s, \S, \d, \D, \w, \W の表現が使えるようになりました。 リテラルキャラクタセットを記述するのに拡張構文 #[...] が使えるようになりました。
Release 0.3.6: 正規表現ルーチンを多少まともにしました。現在使えるのは リピート (?, *, +)、キャラクタレンジ ([a-z] etc.)、括弧によるグルーピング、 alternative (|)、BOL/EOLアンカー (^, $) のみです。test/regexp.scmを 見て下さい。また、number.c にあった segvを起こすバグを修正しました。
Release 0.3.5: SRFI-4 (homogeneous numeric vector) をextentionとして追加。 正規表現も一応動き始めましたが、まだごく基本的な機能しか提供されていません。 また、SourceForge にプロジェクトとして登録しました。