[Haskell-cafe] ANNOUNCE: Takusen 0.8.6

austin seipp as at 0xff.ath.cx
Sun Aug 1 15:12:21 EDT 2010

Hi Jason,

I've had my eye on the 'Takusen' approach for a while. In particular I
think it's a wonderful idea to use the left-fold based interface.
Takusen is also well supported and pretty stable, having been around
for a while.

Despite this, it seems to have a couple faults:
 * Few tutorials, aside from the Haddocks in Database.Enumerator
 * Very crufty old code in some sports (I see lots of references to
GHC 6.6 and the 'extensible exceptions' changes in the cabal file
among other places, which I believe we're all well beyond now. There
also seems to be random tidbits that could be removed in favor of a
library/removed because they're not necessary.) This should IMO all be
removed under the argument "Get a more recent GHC" although people may
disagree here.
 * It would be nice if we could make it depend on nicer libraries
instead of rolling its own stuff - for example, we have Lato's
excellent iteratee package, and Bas van Dijk has written a (IMO
woefully underappreciated!) 'regions' package with encapsulate the
lightweight monadic regions idea Oleg proposed. Of course, due to
design, neither of these may work properly for Takusen's case, and if
they did they would very likely facilitate API changes, but it's
something I've been thinking about in the name of making the library
smaller and more lightweight.

These things were somewhat motivating me to perhaps write a small
competitor library, but if Takusen is looking for a maintainer, it may
certainly be more productive to remove some of the old cruft and
modernize a bit of the existing code.

Does anybody else have similar feelings? I am somewhat busy, but if
someone else has some spare time to dedicate with me - either to
coding or simply brainstorming right now - perhaps we could transform
Takusen into a much more lightweight, better documented library. If it
comes down to this I think I might be willing to maintain it, but I'd
like feedback before just going out and wildly making changes to a
venerable library like this.

On Sat, Jul 31, 2010 at 1:10 PM, Jason Dagit <dagit at codersbase.com> wrote:
> Hello,
> The Takusen team would like to announce the latest release of Takusen,
> 0.8.6.  This is primarily a bug fix and test suite enhancement
> release.  The most notable new feature is limited support for string
> encodings with ODBC.  The full list of changes is included at the
> at the end of this announcement.
> = Interested in Takusen development? =
> Takusen is looking for a new long term maintainer.  I have agreed to
> fill the role of maintainer for now, but we are seeking an
> enthusiastic individual with spare time and a desire to lead Takusen
> development.
> = How to get it =
> This release is available on hackage:
>   cabal update && cabal install Takusen
> The source code is available on code.haskell.org:
>   darcs get http://code.haskell.org/takusen
> = New features =
> - Alistair Bayley:
>   * Database/PostgreSQL/PGFunctions.lhs: show instance for UUID prints
>     Word64s in hex.
>   * Database/PostgreSQL/Enumerator.lhs: add UUID and marshaling
>     functions.
>   * Database/PostgreSQL/PGFunctions.lhs: add UUID and marshalling
>     functions.
>   * Database/ODBC/OdbcFunctions.hsc: add support for different String
>     encodings. New functions to marshal to/from various encodings
>     (Latin1, UTF8, UTF16), and bind/get functions changed to use
>     these.
> - Daniel Corson
>   * binary data with postgres
> = Bug fixes =
> - Alistair Bayley:
>   * Database/ODBC/OdbcFunctions.hsc: fix bug in
>     mkBindBufferForStorable for Nothing (null) case: pass -1
>     (sqlNullData) as value size.
>   * Database/ODBC/OdbcFunctions.hsc: use sqlNullData in
>     bindParamString Nothing case, rather than -1. A bit more
>     descriptive.
>   * Database/ODBC/Enumerator.lhs: store bind buffers in stmt object,
>     so we retain reference to them for lifetime of statement. Destroy
>     with statement (well, lose the reference). Should fix bind errors
>     found by Jason Dagit.
>   * Database/ODBC/Enumerator.lhs: Oracle only supports two transaction
>     isolation levels (like Postgres). String output bind parameters
>     have max size 8000 (we use 7999 because module OdbcFunctions adds
>     one to the size).
>   * Database/ODBC/OdbcFunctions.hsc: string parameters have different
>     SQL data types when binding columns (SQL_CHAR) and parameters
>     (SQL_VARCHAR). Oracle only supports two transaction isolation
>     levels.
>   * Database/PostgreSQL/PGFunctions.lhs: fix byteaUnesc and add
>     byteaEsc.
> = Refactoring =
> - Jason Dagit:
>   * update urls in cabal file
> - Alistair Bayley:
>   * Takusen.cabal: fixed QuickCheck version spec.
>   * Takusen.cabal: bump version to 0.8.6.
>   * Database/ODBC/OdbcFunctions.hsc: makeUtcTimeBuffer: pass struct
>     size as both buffer size and data size in call to mkBindBuffer.
>   * Database/ODBC/OdbcFunctions.hsc: mkBindBufferForStorable calls
>     mkBindBuffer (reduces duplicated code).
>   * Database/ODBC/Enumerator.lhs: add instance for EnvInquiry to
>     change session char encoding.
>   * Database/ODBC/Enumerator.lhs: add comments to beginTransaction.
>   * Database/Util.lhs: print "printArrayContents", to match function
>     name.
>   * Database/PostgreSQL/Enumerator.lhs: expose byteaEsc and
>     byteaUnesc.
> = New tests and changes to tests =
> - Alistair Bayley:
>   * Database/ODBC/Test/OdbcFunctions.lhs: added testBindDouble to test
>     Nothing (null) case for Storable types.
>   * Database/ODBC/Test/OdbcFunctions.lhs: split transaction isolation
>     level tests so there is one test per level. String marshaling
>     tests use 0x10FF40 as max unicode codepoint, because that keeps
>     Oracle happy. Max size for String parameter buffer is 7999 (SQL
>     Server restriction). Don't bury errors raised by tests; print, but
>     continue. Fix fixture cleanup bug in testBindOutput (dropped wrong
>     procedure).
>   * Database/ODBC/Test/Enumerator.lhs: suffix xxx to bindOutput test
>     expected value.
>   * Database/PostgreSQL/Test/PGFunctions.lhs: tests for UUID.
>   * Database/PostgreSQL/Test/Enumerator.lhs: round-trip test for UUID.
>   * Database/PostgreSQL/Test/PGFunctions.lhs: test select of UUID
>     value.
>   * Database/ODBC/Test/OdbcFunctions.lhs: set client charset to UTF8
>     when postgresql.
>   * Database/Test/Enumerator.lhs: add order-bys to tests with unions.
>   * Database/PostgreSQL/Test/PGFunctions.lhs: add order-by to union
>     test.
>   * Database/ODBC/Test/Enumerator.lhs: set char encoding to
>     UTF8. inquire InfoDbmsName already returns lowercase.
>   * Takusen.cabal: add random to build-depends for tests.
>   * Database/Test/Enumerator.lhs: make test fixtures more friendly to
>     MS Access.
>   * Database/ODBC/Test/OdbcFunctions.lhs: tests modified for MS Access
>     (date tests), plus use new char-encoding aware functions.
>   * Database/ODBC/Test/Enumerator.lhs: change boundary dates test to
>     not use union. Union seems to make MS Access choke.
>   * Database/PostgreSQL/Test/PGFunctions.lhs: add tests for bytea,
>     including QuickCheck roundtrip.
>   * Database/PostgreSQL/Test/Enumerator.lhs: add bytea bind and select
>     test.
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

- Austin

More information about the Haskell-Cafe mailing list