* Guile-PG 0.47 available
@ 2015-02-23 9:53 Thien-Thi Nguyen
0 siblings, 0 replies; only message in thread
From: Thien-Thi Nguyen @ 2015-02-23 9:53 UTC (permalink / raw)
To: guile-sources; +Cc: guile-user
[-- Attachment #1: Type: text/plain, Size: 11550 bytes --]
release notes:
The big news is that Guile-PG now works w/ Guile 2.0.11. This
required a moderately invasive (from user pov) design change,
but the result should be upward-compatible. There are a bunch
of smaller changes, too. Hint: Study NEWS before upgrading!
NB: All interaction w/ Guile 2.x ("./configure", "make", "make
check", "make install") is done w/ ‘GUILE_AUTO_COMPILE=0’ in the
environment. Probably we will find the courage to auto-compile
some day, but that day is not today.
A correspondingly big thanks go to Greg Troxel (already in the
THANKS file for some time, now) for spurring Guile 2.x support.
The other change i want to point out is the bug-report address.
thi
README excerpt:
Guile-PG is a collection of modules for Guile allowing access to
the PostgreSQL RDBMS from Scheme programs.
The low-level module ‘(database postgres)’ provides an almost
one-to-one correspondence with the PostgreSQL "libpq" C library
interface. Other higher-level modules, typically named
‘(database postgres-FOO)’, provide abstractions and convenience
procedures.
This is alpha code (pre 1.0 release), tested with various, but
not all, versions of Guile and PostgreSQL. It may have bugs,
and the interfaces may change from version to version.
NEWS for 0.47 (2015-02-23):
- bug-report address changed
Please send bug reports to the address shown by running command:
./configure --help
Mail sent to the previous address is likely to be misplaced.
- changes in configuration
- env vars ‘PQ_CPPFLAGS’ and ‘PQ_LDFLAGS’ precious
That is, they are now declared with ‘AC_ARG_VAR’ and thus
documented (in ‘--help’ output), checked for change on next
invocation, etc (info "(autoconf) Setting Output Variables").
- dropped ‘configure’ script options
The configure script no longer supports ‘--with-libpq=DIR’,
‘--with-libpq-includes=DIR’ and ‘--with-libpq-lib=DIR’. You
should use ‘PQ_CPPFLAGS’ and ‘PQ_LDFLAGS’ for this.
- error if PostgreSQL headers not found
No ‘libpq-fe.h’ and ‘libpq/libpq-fs.h’? Configuration fails.
- error if sane libpq not found
Here, sanity means "from PostgreSQL 7.4 or later", as evidenced
by libpq having func ‘PQfreemem’.
- bugfixes
- memory leak in parameterized-exec procs
Since their introduction w/ Guile-PG 0.30 (2006-04-04), the
‘(database postgres)’ procs:
pg-exec-params
pg-exec-prepared
pg-send-query-params
pg-send-query-prepared
would leak memory proportional to the number of parameters in
the call. Now, that memory is properly ‘free’d.
- ‘pg-result-error-field’ works as advertized
Since its introduction w/ Guile-PG 0.30 (2006-04-04), this proc
would always return ‘#f’, i.e., discarding the proper value!
Now, it returns an integer, a symbol or a string, depending on
the field-specified, and ‘#f’ only when the result has no info.
- non-integer exact numbers no longer accepted
Previously, ‘(database postgres)’ procs would silently accept
and perhaps behave strangely because of, non-integer exact
numbers (e.g., rational numbers). Now, such usage results in a
"wrong type arg" error.
- (doc) type converters properly indexed
Guile-PG 0.45 (released 2013-03-10) introduced a regression in
the guile-pg.info indexing of type converters, including the
(pretty) single-quotes in the index, e.g.:
‘float4’ (type converter)
such that typing ‘i float4’ in Emacs Info node could not find
the entry. This is arguably a bug in Texinfo. Now, indexing
once again produces an entry in guile-pg.info w/o quotes:
float (type converter)
Hopefully this is immune to future Texinfo changes, if any.
- portability fix: don't assume ‘(set! (P O) V)’ returns ‘V’
Proc ‘(database postgres-types) oid-type-name-cache’ used to
return the unspecified object for some versions of Guile.
- retired ‘(database postgres)’ procs
These procs are no longer available.
pg-getline
pg-getlineasync
pg-putline
pg-endcopy
This was pre-announced in Guile-PG 0.46 (2013-03-14) NEWS.
- planned retirement
These items WILL BE REMOVED by 2015-12-31.
- proc ‘(database postgres) pg-lo-read’
This returns a string, which is often inconvenient or worse,
unsuitable, and anyway Guile already provides various procs for
reading from a port.
- module ‘(database postgres-resdisp)’
Not very useful; will not be missed.
- obsolete ‘(database postgres-types)’ procs
The proc ‘dbcoltypes’ was deemed "not so useful", and the
rest are obsoleted by new abstractions:
dbcoltypes
dbcoltype-lookup
dbcoltype:stringifier
dbcoltype:default
dbcoltype:objectifier
define-db-col-type-array-variant
There is no migration path for ‘dbcoltypes’ -- sorry. For the
rest, code of the form:
(dbcoltype:FOO (dbcoltype-lookup TYPE))
can be replaced with:
(type-FOO TYPE)
where FOO is one of "stringifier", "default", "objectifier".
For ‘define-db-col-type-array-variant’, you should change calls
of the form:
(define-db-col-type-array-variant COMPOSED SIMPLE ...)
where COMPOSED is SIMPLE followed by N "[]" pairs, to:
(register-array-variant N SIMPLE ...)
and furthermore change symbols that are spelled with N "[]"
pairs to those with N leading "*". For example:
;; was
(define-db-col-type-array-variant 'int4[][] 'int4 ...)
;; now
(register-array-variant 2 'int4 ...)
A defs form (for ‘pgtable-manager’) would use ‘**int4’ instead
of ‘int4[][]’. The latter spelling is still supported for the
time being, but will probably be phased out later as Guile 2
becomes more widespread. (Guile 2 can handle square braces in
symbol names but that requires modification to ‘read’, i.e.,
‘(read-disable 'square-brackets)’. This is the method used by
test/table-types.scm, for example.)
- ‘define-db-col-type-array-variant’ more/less strict
This ‘(database postgres-types)’ proc now throws an error if arg
COMPOSED is not "based on" arg SIMPLE, or if COMPOSED does not
have square braces. Thus, what was documented previously as
mere convention is now elevated to requirement.
On the other hand, COMPOSED may now be a string, as well as a
symbol. (This is the "less strict" part.)
NB: This proc is obsolete (see above).
- new ‘(database postgres-types)’ procs
These are new:
type-registered?
type-stringifier
type-objectifier
type-default
type-sql-name
register-array-variant
- changes in testing
- bugfix: test ‘alive.scm’ checks ‘pg-guile-pg-loaded’
Previously, if the shared-object library failed to load, the
test would display the "dynamic-link: file not found" message
and then (bogusly) pass anyway. How lengthly lameness lasts!
- bugfix: ‘INITDB’ value propagated
Previously, for "make check INITDB=/some/dir/initdb", the
specified ‘INITDB’ was ignored. Now it DTRT.
- bugfix: adherence to cancellation protocol
The ‘pg-request-cancel’ test now does "COMMIT TRANSACTION" to
finish, and validates that command's success as well. Not doing
so did not cause problems before because the test is the last
one immediately prior to disconnect (see test/basic.scm).
- ‘pg-result-error-field’ rv checked
Had this been in place earlier, the bug (above) would not have
stood so long. Sigh.
- ‘COPY’..‘STDIN’ no longer sends "\\.\n"
This is "deprecated" in protocol version 3.0, and probably will
be removed in the future.
- delays precise
Previously, the test machinery would use delays to effect
synchronization between client code and the daemon, and
furthermore relied solely on pidfile existence. How lame! Now,
it uses the recommended method, i.e., successful execution of
"psql -l". See README section "Testing".
- test database ‘guile_pg_test’ created once
Previously, each test did "CREATE DATABASE" and "DROP DATABASE",
a huge time-consuming redundancy. Now, database creation is
done once on cluster init, and tests take care to delete the
tables that they use, either explicitly with "DROP TABLE", or by
using "CREATE TEMPORARY TABLE" in the first place.
Should a test fail, leaving stray tables behind, you can use new
command "make drop-database" in test/ to rid yourself of the
evidence (after filing a bug report, right!? :-D); the database
will be freshly created on next "make check".
- PostgreSQL 9.3 accomodations
- server config var ‘unix_socket_directories’
PostgreSQL 9.3 replaces config var ‘unix_socket_directory’ w/
‘unix_socket_directories’. No problem!
- overcome "CREATE TABLE .. serial" spew reticence
PostgreSQL prior to 9.3 emits a notice on "CREATE TABLE" w/ a
‘serial’ column. As of 9.3, the message is suppressed by
default and only emitted if the client verbosity is at least
‘DEBUG1’. Details in test/basic.scm ‘test:set-notice-out!-1’.
- less output by default / new option ‘VERBOSE=1’
By default, "make check" now inhibits fine-grained status
output. To re-enable it, use ‘make check VERBOSE=1’.
- daemon killed even on "make check" failure
Previously, if "make check" failed, the daemon would be left up,
necessitating manual "make kill-daemon" invocation. Now, there
is test/cleanup.scm, which does not actually test anything;
instead, it kills the daemon (unless ‘KEEPD=1’ is specified).
See README.
- documentation changes
- license now GNU FDL
The previous text was a weird conglomeration of old
best-practices blurbs (probably).
- title now "Guile-PG Manual"
Subtitle is the old title: "The (database postgres*) Modules".
- index expanded
The index has grown by several dozen items.
- bootstrap tools
upgraded:
Guile-BAUX 20150108.1006.f6573e4
GNU Texinfo 5.2
GNU Automake 1.15
GNU gnulib 2015-02-17 05:38:02
GNU Libtool 2.4.6
as before:
GNU Autoconf 2.69
Note that SNUGGLE functionality is now provided by Guile-BAUX.
tarball and its detached signature in dir:
http://download.savannah.gnu.org/releases/guile-pg/
homepage:
http://www.nongnu.org/guile-pg/
--
Thien-Thi Nguyen
GPG key: 4C807502
(if you're human and you know it)
read my lisp: (responsep (questions 'technical)
(not (via 'mailing-list)))
=> nil
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2015-02-23 9:53 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-02-23 9:53 Guile-PG 0.47 available Thien-Thi Nguyen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).