Windows版だけが影響を受けます。
.bat
および.cmd
ファイルをsys-exec
経由 (もしくはそれを利用する
run-process
等の高レベルAPI経由) で起動した場合、
外部から細工されたコマンドライン引数が与えられていると、外部コマンドの起動が可能でした:
https://kb.cert.org/vuls/id/123335
Gaucheでは.bat
や.cmd
ファイルを起動する時には拡張子を明示する必要が
あるので、ユーザコード側でその場合に引数のチェックを入れることは可能です。
ただ、穴は無い方が良いでしょう。
このリリースでは、.bat
および.cmd
ファイルを起動する場合に、
(Issue:1017)
build-standalone
が壊れていた
0.9.14でスタンドアローンバイナリを作ろうとするとエラーになっていました。 インストールされないプライベートなヘッダファイルへの依存が入り込んでしまっていたためです。 ソースツリー内でのテストではヘッダファイルが見えているので発見が遅れました。 Issue:1013.
新しめのMbedTLSでTLSサーバソケットを作ろうとするとクライアントからの接続が TLS handshake errorになっていました。
また、--with-tls=mbedtls-internal
でconfigureした場合に
バンドルされるMbedTLSを3.5.2に上げました。 Issue:1018,Issue:1021.
size-of
メソッドがO(n)になる
コレクションの大きさを返すsize-of
メソッドは、
コレクション実装者が最低限のコレクションプロトコルしか実装していない場合、
イテレータで要素を順に呼び出して数えるデフォルトメソッドが使われます。
組み込みのハッシュテーブルとツリーマップでsize-of
にメソッドを定義していなかったので、
これらの構造にsize-of
を適用するとO(n)になっていました。
現在は修正され、またドキュメントでこのデフォルトメソッドの振る舞いについて
注意するようにしてあります。 Issue:987.
define-cproc
でのレガシーキーワード
かつて、Cインタフェース (define-cproc
) の定義には、Common Lisp風の
ラムダキーワード (&optional
等) を使っていました。
Schemeでの拡張ラムダ引数の導入に伴って通常のキーワード (:optional
等)
を使うように切り替えてからずいぶん経ちますが、以前のラムダキーワードも互換性のために
サポートしてきました。近い将来この互換性サポートをやめるつもりです。
警告が出たら、ソースをアップデートしてください。
#<undef>
is used in boolean context'
この警告はだいぶ前から入っていて、デフォルトではoffになっているのですが、
環境変数 GAUCHE_CHECK_UNDEFINED_TEST
を設定してonにすることを強くお勧めします。
これは、#<undef>
が条件分岐の条件判断に使われた時に警告を出すものです。
詳しくはNasty undefinedを参照してください。
gauche-package
populate
サブコマンドを追加。
compile
サブコマンドは、*.scm
ファイルを与えられたら
precomp
でプリコンパイルするようになりました。
これによって、Cインタフェースを書くときに *.stub
ファイルを使う必要がなくなります。
compile
サブコマンドはまた、out-of-treeビルド用に
--srcdir
オプションを受け付けます。
examplesも新機能を使うように書き直されています。 Issues:990?.
gosh
がコマンドラインオプション -l
や -e
の処理中にエラーが
生じた場合、一行だけのサマリではなくエラーに関するもう少し詳しい情報を出すようにしました。
new
と delete
をオペレータとして扱うようになりました。
C++のためですが、現在CiSEはC/C++を区別していないので、Cコードでも影響を受けます。
asm
CiSEディレクティブのサポート。
make install
はドキュメントのインストール時に、install-info
があればそれを呼びます。これはシステムのdir
ファイルをアップデートします。Issue:988.
#f
をパスコンポーネントに許します。これは.
と同じことです。
(set! (unbox B) x)
は
(set-box! B x)
と同じです。
#<unbound>
が返ることがありました
gauche/priv/arith.h
で未定義動作を引き起こしていたのを修正