tcl_platform(machine), instead of using $MACHINE there.
This is in preparation for reverting the recent change
to the net/tcl-scotty PLIST.
Bump PKGREVISION.
switch from guile16 to guile (currently 1.8), and remove the special
accomodations for 1.6.
- 0.44 | 2012-04-20
- distribution now .tar.xz
If you have GNU tar, you can use "tar xf" and it will DTRT.
If not, you can use "xz -dc TARBALL | tar xf -" to unpack.
- bugfix: ‘pg-get-copy-data’ handles unspecified ‘async?’
Previously, if ‘async?’ was unspecified, it was incorrectly
interpreted as true (i.e., "not false"). Now, if unspecified,
it is interpreted correctly as false.
- testing slack for pre-8.1 ‘pg-client-encoding’
Previously, the types-table test was too strict when checking
the ‘pg-client-encoding’ return value, expecting "UTF-8" only.
Now, it accepts also "UNICODE", which is the norm for PostgreSQL
prior to 8.1.
- support for ‘make check KEEPD=1’
If you run "make check" many times, you can avoid daemon bounce
overhead by specifying ‘KEEPD=1’, which inhibits daemon killing.
- maintenance tools
- GNU Autoconf 2.68
- GNU Automake 1.11.5
- GNU Libtool 2.4.2
- Guile-BAUX 20120309.1509.1c4bb92
- SNUGGLE 0.1
- 0.43 | 2012-02-06
[PBI] means "WARNING: potentially backward-incompatible".
- bugfix: ‘sql-quote’ translates backslash (#\\) to ‘\134’
Previously, backslash characters were passed through
unmodified. Now, they are translated to the string "\134"
(i.e., the four characters ‘#\\’, ‘#\1’, ‘#\3’, ‘#\4’).
- [PBI] ‘bytea’ stringifier outputs only one backslash
If the ‘bytea’ stringifier from ‘(database postgres-types)’ is
used standalone, this represents a BACKWARD INCOMPATIBLE change.
In the normal case, however, where the stringifier is used in
conjunction with ‘sql-quote’, this change is transparent.
- new (database postgres-qcons) proc: string-xrep
Some versions of Guile emit ‘\xXX’ to represent the octet with
hex value XX when constructing the external representation of a
string, for certain octets. Furthermore, some versions of
PostgreSQL cannot grok such escape sequences anyway. The new
procedure ‘string-xrep’ is like ‘object->string’ (for a string
arg) except that it explicitly emits the octet itself, except
for ‘#\\’ and and ‘#\"’, which are backslash-escaped as normal.
- ‘(database postgres-qcons) idquote’ no longer emits ‘\xXX’
Before, ‘idquote’ used ‘object->string’ internally, and thus
suffered from the problems described in the preceding NEWS
entry. Now, it uses ‘string-xrep’.
- ‘(database postgres-col-defs) validate-def’ more permissive
A column name may now be any symbol that does not contain
whitespace. Previously it was restricted to a symbol whose
constituent characters were alphanumeric or underscore.
This change makes Guile-PG less strict (in some sense) than
PostgreSQL, which imposes other rules. Overarching is the
recommendation from PostgreSQL to consistently use a "delimited
identifier" (aka "quoted identifier") rather than a naked name.
That's what ‘idquote’ and ‘string-xrep’, both used extensively
in Guile-PG, do. See section "Identifiers and Key Words" in
chapter "SQL Syntax" in the PostgreSQL documentation, for more
information.
- ‘pgtable-manager’ and ‘pgtable-worker’ likewise relaxed
These use ‘(database postgres-col-defs)’ procs and new proc
‘string-xrep’ internally, and thus benefit from the changes
mentioned in the preceding NEWS entries. Notably, table and
column names are less constrained. For example, see file
test/types-table.scm, proc ‘test-m2’.
[Probably "relaxed" is not as good as "strictness relaxed and
multi-byte-fu enhanced", but that does not fit on one line.]
- fake cluster created on-demand for "make check"
In addition to a fake installation, "make check" now also
creates a cluster under test/fake-cluster/ configured for
Unix-domain connections, and kicks/kills the daemon around the
actual ‘runtest TEST’ invocations. This means it is no longer
necessary to set env var ‘PGDATABASE’. In fact, that and env
var ‘PGHOST’ are now silently ignored, since ‘runtest’ clobbers
them internally.
If you previously tested Guile-PG against different PostgreSQL
versions by varying ‘PGDATABASE’, you now need to vary env var
‘INITDB’ instead, and zonk the cluster before the "make check"
invocation. Something like:
$(MAKE) delete-cluster
$(MAKE) check DEBUG=1 INITDB=/a/particular/initdb
in directory test/ would be fine. See README section "Testing".
- 0.42 | 2011-10-04
- bugfix: "make check" no longer clobbers installed file
For Guile versions that require a Scheme wrapper for .so loading
(i.e., Guile 1.8 and later), "make check" does a fake install w/
a ‘prefix’ in the build tree. Unfortunately, in Guile-PG 0.41,
that dir was not specified to the Scheme wrapper, resulting in
its installation under the "real" (as determined / set by the
configure script) ‘prefix’.
The system would reamin in this inconsistent state, with the
wrapper pointing into the build tree, until "make install", at
which point everything was resynchronized. Obviously, if you
never do "make install", the problem persists (silently, until
the build tree is deleted).
This has now been fixed. If you did a "make check" but NOT
"make install" of Guile-PG 0.41, the best way forward is to
configure Guile-PG 0.42 and then "make install; make uninstall".
- ‘pg-print’ now does ‘fflush’ after each operation
This probably kills performance, but it is safer, given Guile's
direct use of ‘write(2)’ et al.
- ‘pg-set-client-encoding!’ also accepts symbolic encoding
- 0.41 | 2011-09-29
- Bugs fixed
- Make ‘idquote’ special-case ‘*’ in second part.
was: (display (idquote 'a.*)) |= "a"."*"
now: (display (idquote 'a.*)) |= "a".*
- Call ‘string-append’ with strings, not symbols.
We no longer rely on this particular Guile 1.4 slack.
- Portability fixes (tested w/ Guile 1.8.7)
With the following (and other, non-user-visible) changes, "make
check" no longer displays "foo is deprecated" messages with
Guile 1.8.7. If you see them for your system, for either "make
check" or subsequent Guile-PG use, please report that as a bug.
- Don't do "defer/allow ints" for Guile 1.8+.
- Revamped Scheme object to C byte range for Guile 1.8+
Access to Scheme string representation was curtailed in Guile
1.8 (API available but deprecated), so all operations that pass
a C byte range to libpq functions now incur an extra conversion
step. The unfortunate user-visible result is performance loss.
- Planned retirement
- procedure ‘(database postgres) pg-getline’
- procedure ‘(database postgres) pg-getlineasync’
These procedures are obsoleted by ‘pg-get-copy-data’ and
WILL BE REMOVED by 2012-12-31.
- New fluid to control ‘(database postgres-qcons) sql-quote’
The fluid ‘sql-quote-auto-E?’ controls whether or not
‘sql-quote’ should check for ‘\’ (backslash) characters and
prefix an "E" in that case. This is relevant if you use
PostgreSQL 8.2+.
- New support for "hex format" in ‘bytea’ objectifier
PostgreSQL 9.0 introduces a more efficient "hex format" for
‘bytea’ output. This is now recognized and parsed, falling back
to handling the traditional "escape format" if not recognized.
- Doc improvements
- Fix omission: Document ‘pg-get-copy-data’ arg ‘async?’.
- Indices merged into one
- Builtin type converters listed and indexed
- Builtin type converter array variants listed
- For ‘make check DEBUG=1’, display the guile(1) invocation.
- Tested w/ latest server versions: 8.[01234], 9.[01]
Additionally, the entries in file test/OK now include the
associated Guile-PG version, and some include a subheading
"other pg" to list the precise server version numbers.
- 0.40 | 2011-06-05
- Changes to configuration
- Bug fixed in finding ‘pg_encoding_to_char’, ‘pg_char_to_encoding’
- Now seeks and arranges to use <postgresql/foo> headers
- No longer clobbers user vars ‘CPPFLAGS’, ‘LDFLAGS’
- Changes to build / test / install
- Bug fixed: Delete everything on "make uninstall"
- Scheme code now punified for install
- Add "no C module" mode for build / install
- Changes to "make check"
- Flaky symlinking replaced w/ partial in-tree installation
- runtest now honors env var ‘GUILE’
- runtest now shows loaded files if env var ‘DEBUG’ set
- New (database postgres-qcons) proc: idquote
- Docs now explicitly UTF-8
- Tested on more platforms (see file test/OK)
- Maintenance uses AAL 2.68, 1.11.1, 2.4; Guile-BAUX 20110605.1656
directory named ${MACHINE}-${OPSYS} not ${MACHINE_ARCH}-${OPSYS},
which the PLIST specifies. Adapt the PLIST accordingly, so that
this builds on amd64 as well, where MACHINE and MACHINE_ARCH is
different...
No pkgrevision bump, since this is merely a build fix, and the
contents of the package does not change for those where it
built already.
File::KeePass gives access to KeePass version 1 (kdb) and version
2 (kdbx) databases.
The version 1 and version 2 databases are very different in
construction, but the majority of information overlaps and many
algorithms are similar. File::KeePass attempts to iron out as many
of the differences.
File::KeePass gives nearly raw data access. There are a few utility
methods for manipulating groups and entries. More advanced manipulation
can easily be layered on top by other modules.
File::KeePass is only used for reading and writing databases and
for keeping passwords scrambled while in memory. Programs dealing
with UI or using of auto-type features are the domain of other
modules on CPAN. File::KeePass::Agent is one example.
This module exports two functions, nsort and ncmp; they are used
in implementing my idea of a "natural sorting" algorithm. Under
natural sorting, numeric substrings are compared numerically, and
other word-characters are compared lexically.
- 2.35 | 2012-11-06
- support for "make installcheck"
This does "make check" at its core, so the same env vars apply.
Obviously, you should do "make install" first for sane results.
- ‘receive-response’ spec takes thunk for ‘custom’ handling
This means that instead of using:
(list 'custom (values P1 P2 P3 P4))
to construct a ‘receive-response’ spec, you can use:
(list 'custom (lambda () (values P1 P2 P3 P4)))
In fact, this is now the preferred way, as support for using
‘values’ directly is now deemed a misfeature and marked for
eventual removal (see below).
- tested against Guile 2.0.6
There are some deprecation warnings, however.
- MARKED FOR REMOVAL
- 2013-05-15 support for values in ‘receive-response’ spec
Out of an explicit ‘call-with-values’ context, Guile 2.x will
silently discard all values but the first if the continuation
expects one value only (the common case).
(cons 0 (values 1 2)) => (0 . 1)
Thus, the ‘receive-response’ spec constructed by:
(list 'custom (values P1 P2 P3 P4))
fails to preserve P2, P3, P4 (w/ Guile 2.x). See above for
thunk support, the future-proof way to specify ‘custom’ procs.
- bootstrap tools upgrade
- GNU Autoconf 2.69
- GNU Automake 1.12.4
- Guile-BAUX 20121026.1208.c21074a
- 2.34 | 2012-03-29
- bug fix: unbotch ‘upath->filename-proc’
- bug fix: unbotch ‘log-http-response-proc’
In Guile-WWW 2.33 (2012-02-29), these procs were changed to use
(ice-9 optargs), but the change was botched.
- bug fix: ‘(www http) http:post-form’ reserves ‘#\&’ and ‘#\=’
That is, in the absense of upload specs, the urlencoding for the
key names and values now also includes ampersand and equal sign,
as those used to delimit pairs and separate key and value within
a pair, respectively.
- bug fix: ‘url-coding:encode’ outputs two hex digits for 0-15
Previously, octets 0 through 15 were output as "%0" through
"%f", respectively. Now, they are "%00" through "%0f".
- portability fix: big dishing loop handles #f ‘sockaddr:path’
For Unix domain sockets, some Guile versions have ‘sockaddr:path’
sometimes return the empty string, others ‘#f’.
- ‘(www url) url:parse’ can handle IPv6 addresses
Handling doesn't imply validation, however. For example:
(url:host (url:parse "http://fool@[::ffff:bogus.0.2.1]:42/foo"))
=> "[::ffff:bogus.0.2.1]"
- ‘(... answer) hqf<-upath’ more efficient
The char-set computation has been moved to load-time.
- ‘(... cookies) simple-parse-cookies’ takes optional arg SEP
By default, tokens are ‘#\,’ (comma)-separated. You can use SEP
to specify another character, e.g., ‘#\;’ (semicolon).
- new ‘(www cgi) cgi:init’ option: cookies-split-on-semicolon
If the server provides the CGI script with a "Netscape style"
(i.e., old and deprecated) set of cookies, you can use this
option to split them.
- ‘(www cgi) cgi:getenv’ recognizes some more "idiomatic" names
The following keys now are recognized by ‘cgi:getenv’ (that is,
they no longer signal "unrecognized key" error): ‘server-name’,
‘server-software’, ‘server-protocol’, ‘auth-type’, ‘http-accept’.
Also, the manual now marks those keys that either are aliases,
or return parts of the associated value, of these idiomatic names.
- new (... parse-request) proc: receive-request
This uses the same underlying machinery as ‘receive-response’
from (www http), and thus sports the same features.
Additionally, there is a new ‘request’ type with five accessor
procs: request-{method,upath,protocol-version,headers,body} and
the new predicate ‘request?’.
- new (... log) proc: string<-sockaddr
This formats AF_UNIX or AF_INET addresses (including port).
- new (... answer) proc: compose-response
This is a stripped down variant of ‘mouthpiece’. It uses the
same underlying machinery as ‘send-request’ from (www http) and
thus sports the same features.
- MARKED FOR REMOVAL
- 2012-12-31 module (www main)
- 2012-12-31 (www url) procs
- url:address
- url:unknown
- 2013-02-28 (... parse-request) procs
- read-first-line
- read-headers
- skip-headers
- read-body
- 2013-02-28 (www http) procs
- http:head
- http:get
- test suite expanded
Previously, there was just one test. Now, there are several,
and they are in directory v/ (for "validation", "verification",
"vouchsafed", and so on).
- doc license upgraded to GNU FDL 1.3
- maintenance uses Guile-BAUX 20120309.1509.1c4bb92
- 2.33 | 2012-02-29
- distribution now .tar.xz
If you have GNU tar, you can use "tar xf" and it will DTRT.
If not, you can use "xz -dc TARBALL | tar xf -" to unpack.
- configure no longer checks for some widely-available modules
The modules ‘(ice-9 and-let-star)’, ‘(ice-9 rdelim)’ and
‘(ice-9 regex)’ have been widely-available since Guile 1.4.x.
- configure uses SNUGGLE for cross-Guile portability
SNUGGLE is Free Software: <http://www.gnuvola.org/software/>.
It provides ‘build-aux/snuggle.m4’, which is more amicable than
the various ‘guile.m4’ in the wild.
- dropped ‘(www server-utils answer) string<-header-components’
This was pre-announced below in Guile-WWW 2.28 (2010-06-22).
- changes to (www http)
- bug fix: ‘http:request’ sends message body as-is
This procedure used to erroneously send ‘CRLF’ after each string
specified in BODY. Now, it sends BODY only.
- ‘http:status-ok?’ also accepts numeric arg
E.g., ‘(http:status-ok? 200)’ and ‘(http:status-ok? "200")’
both return ‘#t’.
- ‘http:request’ also accepts a symbolic method
Of course, a string is still acceptable. Additionally, it is
now an error if ‘method’ is neither string nor symbol.
- new procs: ‘send-request’, ‘receive-response’
These give (www http) a more asynchronous feel; it is now
possible to implement pipelining, connection re-use, etc.
Support for "chunked" transfer encoding and other HTTP 1.1 bits
is built-in, although you can explicitly downgrade to 1.0 if you
wish.
Other features: (optional) caller-directed i/o to reduce data
motion; support for ‘u8vector’ body (see example in the docs);
support for custom body type; caller-specifiable header-name
normalization; procedure names w/o "http:" prefix :-D.
- message field types now documented
The message object returned by ‘receive-response’ has a numeric
status-code and header names normalized by the caller.
In contrast, for backward compatability, the message object
returned by ‘http:request’ has a string status-code and
lower-case header names.
(Header names are symbolic in any case.)
- new fluid: protocol-version
This affects how ‘http:request’ calls ‘send-request’ internally.
It also impacts ‘http:get’, ‘http:head’, and ‘http:post-form’,
which call ‘http:request’.
The default value is ‘(1 . 0)’, i.e., HTTP 1.0. The idea is to
support backward compatability out of the box, but allow users
to experimentally do:
(set-fluid! protocol-version '(1 . 1))
without having to modify their current code. (New code
should use ‘send-request’ and ‘receive-response’ directly.)
This is a transitional feature of Guile-WWW 2.x; 3.x will
drop ‘http:request’ (et al) along with the need for this
fluid, entirely.
- (www cgi) recognizes ‘application/x-www-form-urlencoded’ better
Before, Content-Type recognition was over-constrained, failing
to handle parameters (usually of the form "; charset=...").
Things are now more relaxed.
- documentation now explicitly UTF-8
This has no immediate impact, but if you regenerate the .info,
it may be possible that the makeinfo you use will generate nicer
quotes, e.g., ‘foo’ instead of `foo'. Time will tell.
- maintenance: Autoconf 2.68, Automake 1.11.3, Guile-BAUX 20111227
1e92e5235ded0415d555aa86066b8e4041ee5a53
and
4757cdf73d3675478d645a3ec8250ba02168a230
to fix integer overflow, leading to heap-based buffer overflow
in the ppm image reader (CVE-2012-4433)
bump PKGREV