Major C API/ABI overhaul
今リリースでは、1.0に向けてC APIを整理したため、互換性を壊すAPI/ABIの変更があります。 C API/ABIは公式に決めてはいませんが、これまでデファクトのAPIをなるべく保つようにしてきました。 しかしその中にはうまくない設計だと判明したものもあります。 今後の開発の足を引っ張らないように、このタイミングで変えることにしました。
おそらく、C拡張モジュールをリコンパイルするだけで済むケースが大半だと思います。
手元のC拡張モジュールはコンパイルしてほぼ互換性が保たれているのを確認しています。
もし壊れた拡張モジュールがあったら教えてください。
変更の詳細は0.9.7におけるAPIの変更を参照してください。
ABIのバージョンも0.9から0.97に上げてあるので、0.9.6以前のGauche用にコンパイルされた
拡張が誤って使われることが無いようになっています。
もし必要があれば、0.9.6と0.9.7の両方をインストールして、-v VERSION
オプションで
切り替えて使うこともできます。
どの拡張モジュールを0.9.6までのGauche用にインストールしていたかは、
${prefix}/share/gauche-0.9/site/lib/.packages/
ディレクトリを
見ればわかります。
<socket>
ほか、
いくつかのクラスがこのインタフェースを実装しています。実装の詳細を抽象化して
通信するコードを書くことができます。
configure
スクリプトをうんと簡潔に書くことができます。
which takes care of common task
of Gauche extensions so that theconfigure
script can now be
very terse.
gauche-package make-tarball
が package.scm
を読むようになりました。
gauche.configure
も使えば、拡張モジュールで
DIST
スクリプトは不要になります。
system
を設定することで、システムの証明書ストアを利用できます。
https://github.com/shirok/Gauche/pull/395 ,
https://github.com/shirok/Gauche/pull/398
<mbed-tls>
がデフォルトのtlsクラスに設定されます。
ref
とobject-apply
について、ジェネリックファンクションディスパッチ
最適化を実験的に有効にしてみました。ジェネリックファンクションの呼び出しが
最大で5倍程度速くなります。効果を見て他のジェネリックファンクションにも使ってゆく予定です。
glob(3)
と同様にソートされるようになりました。
ソートを避けたり、別の順でソートするには:sorter
引数を使ってください。
info
はPAGER
環境引数が設定されていればそれを使ってページング
しますが、そこにコマンド名だけでなく引数も含めて指定できるようになりました。
https://github.com/shirok/Gauche/pull/358
info
が、Gaucheがzlibサポートなしでビルドされていた場合にエラーになっていたのを修正。
element-type
キーワード引数をちゃんと処理するようにしました(Windows環境でのみ
意味があります)。
u8vector
も引数に取れるように
anychar
, upper
, lower
, letter
,
alphanum
, digit
, hexdigit
, newline
,
tab
, space
, spaces
, eof
) および短縮形
($s
, $c
, and $y
) を削除しました。
名前がぶつかりやすい(特に'newline')割にはそれほどものすごく便利というわけでもなく、
必要なら簡単に定義できるからです。
もし、これらの手続きに依存している既存のコードがあるなら、
(use parser.peg.deprecated)
を使ってください。