fabb8c0126df923575a39ec1a75530a79c6f95a2
xyzzy 0.2.2.241 では主にバグ修正と Common Lisp との互換性の向上を行なっています。
インストーラはありませんので zip を展開するだけです。 インストールから初期設定までは以下を参照してください。
以下の手順で 0.2.2.235 からアップデートしてください。
lisp/ 配下や etc/ 配下をカスタマイズしている場合は 上書き後に再度カスタマイズをお願いします。
coding
マジックコメントをサポートしました (x022235, #288)
ファイルの先頭に -*- coding: utf-8 -*-
などと書いてある場合に
指定されたエンコーディングでファイルを開くようにしました。
マジックコメントが utf-8 の場合に utf-8n で開く (x022235, #307)
ファイルの先頭に -*- coding: utf-8 -*-
や -*- encoding: utf-8 -*-
などと書いてある場合に
utf-8n (BOM なしの UTF-8) としてファイルを開くようにしました。
ファイルの実際のエンコーディングが utf-8 (BOM 付の UTF-8) だった場合は utf-8 として開きます。
なお、従来の動作 (常に utf-8 として開く) に戻したい場合は以下のように設定してください。
;; encoding: utf-8 の場合に BOM 付き UTF-8 で開く (0.2.2.240 までの動作に戻す)
(setf *find-file-auto-encoding-use-utf8n* nil)
zlib 1.2.7 へ更新しました (x022235, #296)
DEP を有効にしました (x022235, #175)
0.2.2.239 で -ro
, -rw
オプションが使えなくなっていた問題を修正しました (x022235, sabimaru, #306)
Windows 7 でウィンドウの復元位置がずれる問題を修正しました (x022235, #328)
文字エンコードの情報を取得する関数を追加しました (x022235, #307)
char-encoding-type
char-encoding-signature
例:
(char-encoding-type *encoding-utf8*)
=> :utf8
(char-encoding-signature *encoding-utf8*)
=> t
(char-encoding-type *encoding-utf8n*)
=> :utf8
(char-encoding-signature *encoding-utf8n*)
=> nil
FFI: 可変長引数に対応しました (x022235, #294)
c:define-dll-entry
の引数宣言の最後に &rest
を追加し、
呼び出し時に (c:c-vaargs (型1 引数1) (型2 引数2) ...)
という形式で
可変長引数を指定してください。
(require "foreign")
(c:define-dll-entry
c:string
(sqlite3_mprintf :convention :cdecl) (c:string &rest) ; 可変長引数を取る場合 &rest を指定
"sqlite3.dll")
(c:define-dll-entry
c:void
(sqlite3_free :convention :cdecl) ((c:void *))
"sqlite3.dll")
(defun make-sql (text date)
(let ((ptr (sqlite3_mprintf (si:make-string-chunk "INSERT INTO table VALUES ('%q', %d)")
(c:c-vaargs ; 可変長引数の指定
(c:string (si:make-string-chunk text))
(c:int date)))))
(when (not (zerop ptr))
(unwind-protect
(si:unpack-string nil ptr)
(sqlite3_free ptr)))))
(make-sql "It's a happy day!" 31)
=> "INSERT INTO table VALUES ('It''s a happy day!', 31)"
FFI: c:c-size-of
を追加しました (x022235, #313)
(require "foreign")
(require "wip/winapi")
(c:c-size-of c:int)
=> 4
(c:c-size-of c:int64)
=> 8
(c:c-struct-size-of winapi:RECT)
=> 16
si:unpack-string
で C のポインタを指定可能としました (x022235, #311)
si:make-chunk
と同じように CHUNK
引数が nil
の場合は、
OFFSET
をポインタとみなすようにしました。
(require "foreign")
(c:define-dll-entry
c:string
strerror (c:int)
"msvcrt")
(strerror 2)
=> 41155912
(si:unpack-string nil (strerror 2))
=> "No such file or directory"
locally
特殊形式を追加しました (x022235, #271)
Common Lisp の locally を追加しました。
(defun sample-function (y) ;this y is regarded as special
(declare (special y))
(let ((y t)) ;this y is regarded as lexical
(list y
(locally (declare (special y))
;; this next y is regarded as special
y))))
=> sample-function
(sample-function nil)
=> (t nil)
reduce
に :key
パラメータを追加しました (x022235, youz, #322)
(reduce #'+ '((orange . 3) (apple . 5) (grape . 2))
:key #'cdr)
=> 10
macro-function
に environment
引数を追加しました (youz, #326)
(macrolet ((foo (a b)
`(+ ,a ,b))
(env (&environment env)
env))
(setf env (env)))
=> #<environment-object 134287448>
(macro-function 'foo)
=> nil
(macro-function 'foo env)
=> (macro (a b) (block foo (list '+ a b)))
rename-package
で自分自身のニックネームを変更できない問題を修正しました (x022235, snmsts, #302)
(rename-package :common-lisp :common-lisp '(:cl))
=> #<package: common-lisp> ; 0.2.2.240 では => 同じ名前のパッケージが存在します: "common-lisp"
(package-nicknames :cl)
=> ("cl")
:key
に nil
を指定するとエラーになる関数があったのを修正しました (x022235, #324)
(substitute 2 1 '(1 2 3 2 1) :key nil)
=> (2 2 3 2 2) ; 0.2.2.240 では => 関数が定義されていません: nil
fill-pointer
を持つ vector
を :initial-contents
で正しく初期化出来ない問題を修正しました (x022235, youz, #325)
(setf v (make-array 3 :fill-pointer 2 :initial-contents '(1 2 3)))
=> #(1 2)
(setf (fill-pointer v) 3)
=> 3
v
=> #(1 2 3) ; 0.2.2.240 では => #(1 2 nil)
int64
の範囲を超える場合、si:unpack-int64
の結果がおかしい問題を修正しました (x022235, #305)
builtin パッケージを削除すると si:list-builtin-packages
が #<package anonymous>
を返す問題を修正しました (x022235, #303)
NetInstaller で入手可能な以下のパッケージは 0.2.2.241 では 本体に同梱しています。インストールすると古いファイルで上書きされるので インストールしないようにしてください。
keyword file 2007.12.25 2007/12/25 01:27
reference.xml 2007.12.25 2007/12/25 01:23
NetInstaller で入手可能な以下のパッケージの一部の機能は 0.2.2.241 では 本体に同梱しています。インストールするときは注意してください。
lpp 2008.05.05 2008/05/05 09:16
(provide "xyzzy-0.2.2.241")