Upgrade embedded sqlite3 library to 3.24.0; add some constants.
Improve documentation; fix some lint warnings.
Use GeneralizedNewtypeDeriving to derive Semigroup and Monoid instances for Utf8 - it should work faster.
Database.SQLite3.Direct.blobRead now allocates memory in Haskell heap instead of malloc. Benchmarks show that this is faster for both small and large blobs.
Safely (wrt asynchronous exceptions) wrap error message pointer that returns from SQLite exec function into Utf8.
Use faster "unsafe" FFI calls for the following functions: reset, blobReopen, blobRead, blobWrite, backupStep, errcode, errmsg as they are frequently used and don't callback to Haskell functions.
Also, I suggest to add step function with "unsafe" FFI call.
Question: what name should we give to the faster step ("unsafe" FFI) function?
Now it is stepNoCB.
GeneralizedNewtypeDeriving
to deriveSemigroup
andMonoid
instances forUtf8
- it should work faster.Database.SQLite3.Direct.blobRead
now allocates memory in Haskell heap instead of malloc. Benchmarks show that this is faster for both small and large blobs.Utf8
.reset
,blobReopen
,blobRead
,blobWrite
,backupStep
,errcode
,errmsg
as they are frequently used and don't callback to Haskell functions.Question: what name should we give to the faster step ("unsafe" FFI) function? Now it is
stepNoCB
.