This release contains the long-awaited migration to fully @safe
mysql-native. Please see the Safe Migration Document for all the details.
- Fixed: #175: Compiling with vibe.d 0.8.3 gives deprecation warning
This release adds logging to mysql-native! If you are using it with vibe, it will by default use the vibe logging facilities. Otherwise, it will use std.experimental.logger.
This release is thanks to the efforts of @singingbush
- Fixed: #113:
use vibe.core.log when
Have_vibe_d_core
A warning to users of this new version, std.experimental.logger prior to DMD
version 2.099.0, used a default level of all
, which includes trace messages.
If you do not wish to see these messages (there will be a lot of them), either
use a compiler based on DMD 2.099.0 or later, or change the log level of the
default logger to something less.
A couple minor behind-the-scenes fixes. First, all body
keywords have been
removed in favor of the do
keyword. This cuts down on the wall of warnings
that come from the latest compiler.
Second, thanks to prodding from @kubo39 and @webloft, I have changed the default socket creation routines to mimic the standard mysql library in turning off Nagle's algorithm (TCP_NODELAY), and enabling KEEPALIVE. If you wish to reverse this, you can use the connection constructor which accepts a socket setup routine.
- Fixed: #222: Column name is empty in result row if column value was NULL
- Change: #246:
Change
body
todo
(@jrfondren), #245: Fix outdated URLs (@kubo39), #242: Fix nullable errors from 2.097, #249: Standard mysql uses the socket options for TCP_NODELAY and KEEPALIVE
Migrate all CI to github actions. This release has a large amount of shuffling around of tests and uses the new github actions CI instead of travis-ci (which has become unusable for this project).
Also, the dub file has been greatly simplified. All the testing has been moved from the main dub file into subpackages, to keep the library itself clean of spurious dependencies. This also fixes the issues with Dub from DMD 2.095+
- Tests: #227: move CI from travis to github actions. (@singingbush)
- Fixed: #224: Basic mysql-native dub app does not compile with dmd 2.095.0.
- Change: #220: By default mysql-native will use the utf8mb4 instead of utf8 as the default collation for servers that support it. (@kubo39)
Hot fix for issue regarding autoPurge not always running properly in a vibe-d environment, causing out-of-order server packets.
Update from vibe-d:core
to vibe-core
, and various other improvements.
- Change: Switched from outdated
vibe-d:core
to modernvibe-core
. - Fixed: #199: It is immposible to use this package anymore without libevent.
- Fixed: #200, #210: Expose vibe.d connection pool's removeUnused function. (@schveiguy)
- Fixed: #201:
Always selects
vibe-d:core
, cannot selectvibe-core
. - Fixed: #204, #211: Fix nullable deprecations (@schveiguy)
- Fixed: #205, #209: Deprecation: foreach: loop index implicitly converted from size_t to ushort. (@SingingBush)
- Tests: Add NO_VIBE option for travis-ci (DMDFE 2.075.x and below don't work with vibe-core).
- Tests: #197: Travis-ci build issues on various compiler versions. (@SingingBush, @Abscissa)
- Tests: Fixed: USE_UNIT_THREADED envar doen't actually use unit-threaded.
- Tests: Better diagnostics when using alternate
dub.selections.json
. (@SingingBush) - Docs: Add documentation and CI-related policies to
.travis.yml
. - Docs: Update modified ddox from 0.16.6 to 0.16.12.
- Internal: #212: Add .editorconfig file. (@schveiguy)
- New: #188:
Expose column names in Row struct via
Row.getName(index)
. (@jpf91) - Tests: #186: Fix metadata tests on MariaDB 10.2 and 10.3
- Tests: Rework travis config and scripts, including:
- General cleanup.
- Convert test scripts from bash/batch to D.
- Testing on more versions of MariaDB server.
- #173:
Support for per-job
dub.selections.json
overrides (needed for testing on DMD 2.079+). - #184: Speed up full Phobos+Vibe testing by skipping redundant tests between both Phobos and Vibe builds.
Minor updates.
- Fixed: #177: Update unit-threaded, and don't lock mysql-native to a specific version of unit-threaded. (@ghost91)
- Fixed: #178, #179: Fix deprecation message in DMD v2.080.0: Replace enforceEx by enforce (@ghost91)
Bugfixes.
- Fixed: #170: Assertion when concurrently using multiple LockedConnection. (@s-ludwig, @Abscissa)
- Fixed:
MySQLPool.lockedConnection
returnsConnection
instead of the intendedLockedConnection!Connection
as per the spec. (@s-ludwig) - Fixed: Assert failure on closed connections on
vibe-core
(used by default in vibe.d as of vibe.d v0.8.3). (@Abscissa) - Fixed: Program crash upon auto-purge on a closed connection when using
vibe-core
(used by default in vibe.d as of vibe.d v0.8.3). (@Abscissa) - Tests: #163: Travis should treat sporadic dub outages as a "job error" not "tests failed" (@Abscissa)
Maintenance release.
- Fixed: #165: MySQLPool should automatically reopen any closed connections. (Not as big of a deal as it sounds because closed connections automatically reconnect upon use anyway. This just makes it eager instead of lazy and ensures there's no confusion from the pool handing out a "closed" connection.) (@Abscissa)
- Fixed: #167: ResultRange doesn't get invalidated upon reconnect. (@Abscissa)
- Fixed: Remove unnecessary precondition that connection must be
closed before calling
Connection.connect
. (@Abscissa) - Fixed: #121:
Use
const(char[])
instead ofstring
for queries. (@Abscissa) - Fixed: #13: No support for type modifiers in prepared statement parameters. (@Abscissa)
- Tests: Add tests for reconnecting. (@Abscissa)
- Internal: #144: Move all packet handling, etc., into mysql.protocol.comms (@Abscissa)
New prepared statement features.
Since v2.1.0-rc2:
- Fixed: #28: MYXProtocol thrown when using large integers as prepared parameters. (@Abscissa)
Since v2.1.0-rc1:
- Docs: Update readme example for new simplified prepared statement interface. (@Abscissa)
Since v2.0.0:
- New: #118: Convenience exec/query overloads that do parameterized SQL. (@Abscissa)
- New: #162: Create Connection.releaseAll (@Abscissa)
- New: Add a Connection.register overload that takes an sql string, for symmetry with Connection.release (@Abscissa)
- New: #160:
Pool-level prepared statement management tools for
MySQLPool,
including
autoRegister
/autoRelease
/etc... (@Abscissa) - Tests: #149: Optionally support unit-threaded for vibe tests (not used by default) (@Abscissa)
- Tests: #161: Added tests for ParameterSpecialization (ie, chunked transfer). (@Abscissa)
Connection-independent redesign of Prepared, plus other new features and housekeeping. See the migration guide.
Since v2.0.0-rc2:
- Fixed: ParameterSpecialization chunked transfer fails unless the total size is a multiple of the chunk size. (@Abscissa)
- Docs: Improve documentation relating to chunked transfer. (@Abscissa)
Since v2.0.0-rc1:
- Change: The query functions which take prepared statements no longer
support
ColumnSpecialization
. UsePrepared.columnSpecials
instead. (@Abscissa) - New: Added
Prepared.columnSpecials
to get/set the array ofColumnSpecialization
. (@Abscissa) - Docs: More CSS improvements. (@Abscissa)
Since v1.2.2:
- Change: #95, #97, #157: Redesigned Prepared to be connection-independent, support auto-registration and fix a few problems. For details, see ABOUT_PREPARED_V2.md (@Abscissa)
- Change:
prepare
,prepareFunction
andprepareProcedure
have moved frommysql.prepared
tomysql.connection
. This is because they are specific toConnection
, and the newPrepared
design (and thusmysql.prepared
) is completely non-dependent onConnection
. - New: #115: Added Prepared.lastInsertID to retrieve last ID inserted by the given prepared statement. (@Abscissa)
- New: #147: Pools can take optional callback for when new connections are created (@Abscissa)
- Removed: Re-removed all deprecated symbols that were removed in v1.2.0 (@Abscissa)
- Removed: Removed additional deprecated symbols: (@Abscissa)
- MySQL[whatever]Exception: Use
MYX[whatever]
instead. - querySet/ResultSet: Import std.array and use
query(...).array
to receiveRow[]
instead of a ResultSet. - MYXDataPending: No longer thrown by mysql-native, as of v1.1.4. You can safely remove all MYXDataPending handling from your code.
- MySQL[whatever]Exception: Use
- Removed: Removed long-outdated Vibe.d
EventedObject
interface fromConnection
. That is:acquire()
,release()
,isOwner()
andamOwner()
(@Abscissa) - Removed: #96:
Removed public access to
Connection.getNextRow
, which was intended as internal, and has been documented as such for awhile now. (@Abscissa) - Deprecated:
MYXNotPrepared
: The new prepared statement design eliminates the need for this exception which is no longer thrown. (@Abscissa) - Docs: #146: Make sure all ddox cross-linking is fixed. (@Abscissa)
- Docs: #158: Fixed images missing in sidebar, and updated DDOX styles/scripts (@Abscissa)
- Internal:
Renamed debug symbol
MYSQL_INTEGRATION_TESTS
to the more accurateMYSQLN_TESTS
. (@Abscissa)
Bugfix
Fix semver mistake by re-adding deleted symbols.
- Fixed: Semver Requires ALL breaking changes to bump the MAJOR version number, never just the MINOR. Fixed this by re-adding the old deprecated symbols which were deleted in the previous release. They will be removed again in the next release, v2.0.0.
Housekeeping: Deprecations, cleanup and doc improvements.
- Fixed: Glaring mistakes in the example from
README
andexample.d
. (@Abscissa) - Fixed: #133:
Sometimes null is incorrectly indicated by Variant containing
void
rather thannull
as intended. (@Marenz) - Fixed: #152: Exception when sending Timestamp in prepared statement. (@Abscissa)
- Removed: Removed deprecated symbols: (@Abscissa)
- queryResult: Use querySet instead.
- querySequence: Use query instead.
- queryTuple: Use queryRowTuple instead.
- struct Command: This is obsolete pre-v1.0.0 interface. Use the functions in mysql.commands and mysql.prepared instead.
- mysql.db: Use mysql.pool instead.
- MysqlDB: Use mysql.pool.MySQLPool instead.
- struct DBValue: Use std.variant.Variant instead.
- ResultSequence: Use ResultRange instead.
- Deprecated: Newly deprecated symbols: (@Abscissa)
- Docs: API documentation now displays the lib version and permalinks to the homepages of the project, the current API docs, the latest API docs and the list of api docs for previous versions. (@Abscissa)
- Docs: Various documentation updates. (@Abscissa)
- Docs: #128: Show connection string format in readme example. (@Abscissa)
- Docs: #136: Document D <-> MySQL type mappings. (@Abscissa)
- Tests: Include
example.d
in tests. (@Abscissa) - Tests: Fixed deprecation messages when compiling tests. (@Abscissa)
- Tests: #140:
Add a travis job to test after a
dub upgrade
. (@SingingBush)
Introduced auto-purge to fix a few problems.
- Fixed: #117: ResultRange cannot be copied. (@Abscissa)
- Fixed:
#119:
Is a defensive
Connection.purgeResult
call necessary before executing another statement? (As of this release, the answer changed from "sometimes" to "no") (@Abscissa) - Fixed: #139: Server packet out of order when Prepared is destroyed too early. (@Abscissa)
- Change: MySQLDataPendingException (aka, MYXDataPending) is no longer necessary, and no longer thrown. When issuing a command that communicates with the server while a ResultRange still has data pending, instead of throwing, mysql-native now automatically purges the range and safely marks it as invalid and no longer usable. This was changed in order to fix #117, #119, and #139. This change should neither break user code nor require any changes. (@Abscissa)
- Change: Manually releasing a prepared statement is no longer guaranteed to notify the server immediately. In order to facilitate the above fixes, and avoid any nasty surprise with struct dtors triggering results purges implicitly, any release of prepared statements from the server is now queued until mysql-native can be certain no data is already pending. This change should neither break user code nor require any changes. (@Abscissa)
- Change: Prepared statements are no longer released automatically, due to the fix for #117. However, prepared statements and their lifetimes are tied to individual connections, and thus will die along with their connection, so manual release is not strictly necessary either. Accordingly, this change should neither break user code nor require any changes. (@Abscissa)
- Fixed: #143: Keep travis-ci build times under control by limiting the number of compiler versions tested on OSX. (@SingingBush)
- Fixed: #138: Prepared: Prevent mem allocs during cleanup. (@Marenz)
- Fixed: #135: Now works on DMD 2.076 and up. (@SingingBush)
- New: #135: Add travis-ci testing for OSX. (@SingingBush)
- Fixed: DMD 2.074.x gives compile error when building tests. (@Abscissa)
- Fixed: #130: Compilation error when compiling in singleFile mode. (@Marenz)
- Fixed: #116: Prevent segfault on copying ResultRange. (@schveiguy)
- Fixed: #120: Fix typos / grammars in documentation (@Marenz)
- Fixed: #124: Fix deprecations: Change deprecated std.string.munch to std.algorithm.skipOver. (@Kozzi11)
- Fixed: #99: Update dub.sdl to allow vibe-d 0.8.* releases.
- Fixed:
#111:
NEWDECIMAL type returns the wrong value. Since this type is intended as arbitrary
precision, the server itself sends it as a string. In order to avoid unexpected
loss of precision, mysql-native does not attempt to convert the string to a
floating-point type. If conversion to floating point is required, users can simply
pass the string to Phobos's
to!real
themselves.
- Summary: API overhauled for better safety, reliability and ease-of-use. Deprecated and replaced entire Command struct with better design. Better handling of null. Improved/expanded docs. Various bugs fixed. More rigorous test suite.
- New:
#85:
Redesigned SQL-based functions. Use the various
query
functions for SELECT-like commands (to receive a result set), or theexec
function for non-SELECT commands to receive "rows affected". - New:
New modules for better organization of features:
- New:
Module
mysql.prepared
: Home of the newly redesigned prepared statement functionality. - Change:
Module
mysql.exceptions
: Contains all exceptions defined by mysql-native. - Change:
Module
mysql.metadata
: Metadata-related symbols formerly frommysql.protocol.extra_types
. - Change:
Module
mysql.types
: Structures for MySQL types not built-in to D/Phobos, formerly frommysql.protocol.extra_types
.
- New:
Module
- New:
Prepared statement improvements, including much improved support for null.
- New:
Prepared
struct to represent a prepared statement. - New:
Prepared statements support setting arguments directly to
null
orNullable!T
. UsingsetNullArg
(formerlysetNullParam
) is no longer necessary (but still supported). - Change:
Row.opIndex
no longer throws if the value is null. Instead, it returnsVariant(null)
. - Change:
#89:
Values bound to prepared statement parameters are now taken by value, not by
reference (but only when using the new
Prepared
struct, not the now-deprecatedCommand
struct). - Fixed: #76: Prepared statements are auto-released when their reference count reaches zero.
- New:
- New:
Various new subclasses of
MySQLException
added, for better fine-grained control. - New:
Row
struct now supportslength
property andopDollar
. - New:
#74:
mysql.pool.MySQLPool
(formerlymysql.db.MysqlDB
) now supports vibe.d'sConnectionPool.maxConcurrency
feature. - Change: Drop support for DMDFE 2.067.x and below. Compiles on DMDFE 2.068.2 through 2.072.1. See .travis.yml for full list of supported compilers.
- Change:
#86,
#87:
Command
struct is now deprecated. Its functionality has been split and moved (as appropriate) into Connection, various free-functions, and a new reference-countedPrepared
struct exclusively for prepared statements. - Change:
Renamed
mysql.db.MysqlDB
(misleading. confusing name) tomysql.pool.MySQLPool
. - Change:
Module
mysql.connection
no longer acts as a package.d, publicly importing other modules. To import all of mysql-native, useimport mysql;
. - Change:
ResultSet.asAA
andResultRange.asAA
now return Variant[string] instead of DBValue[string]. DBValue is no longer needed and now deprecated (as it was only used byasAA
and Variant now handles null properly.) - Change:
Improved separation between internal (
mysql.protocol
) and external interfaces.- Change: No longer publicly imports internal-only symbols by default.
- Change:
Renamed module
mysql.protocol.commands
tomysql.commands
. - Change:
Moved
ParameterSpecialization
intomysql.prepared
(was inmysql.protocol.extra_types
). - Change:
Moved
ColumnSpecialization
intomysql.commands
(was inmysql.protocol.extra_types
). - Change:
Moved the other public-API members of
mysql.protocol.extra_types
into new modulesmysql.metadata
andmysql.types
. - Change:
Removed module
mysql.common
: Its contents have been moved intomysql.exceptions
andmysql.protocol.sockets
.
- Fixed: #75, #89: Fixed problems where various structs and user data was unsafe to move/copy due to usage of internal pointers/references. Such usages of internal pointers/references have been eliminated.
- Fixed: Better safety against new commands being issued before an earlier command is complete.
- Fixed: Reliability: Now get an MySQLInvalidatedRangeException instead of undefined behavior when using a ResultSequence after it's been invalidated by either a new command being issued or the results being purged.
- Fixed: Many documentation improvements and fixes.
- Fixed: More unittests.
- New: Test suite automatically tests with both Vibe and Phobos sockets, not just Phobos. (@Abscissa)
- Change: Drop support for DMDFE 2.066.1 and below. Compiles on DMDFE 2.067.1 through 2.072.0. See .travis.yml for full list of supported compilers.
- Fixed: Fix an import deprecation message for DMD 2.071. (@Abscissa)
- Fixed: #57: Added support for passing null parameters in prepared statements by using Variant(null) (@machindertech)
- Fixed: #63/#69: Add escape module to package import (@Marenz)
- Fixed: #68: Update alias syntax (@Marenz)
- Change: If not using dub, vibe.d support is now enabled with -version=Have_vibe_d_core, not -version=Have_vibe_d (@Abscissa)
- Fixed: Linker error when using dub to import just vibe-d:core, but not all of vibe.d. (@Abscissa)
- Fixed: Use 'dub.json', not outdated 'package.json' name. (@Abscissa)
- New: #73: Integration testing via travis-ci. (@Abscissa)
- New: Started this changelog. (@Abscissa)
- Fixed: #20: Contract failure in consume!string (@Marenz)
- Fixed: #50: bindParameters example was wrong (@Abscissa)
- Fixed: #67: Fix unittest for escape (@Marenz)
- Fixed: #70: Check for errors where we expect the greeting packet (@Marenz)
- Fixed: #78: Use vibe-d sub package dependency and a more current version (@s-ludwig)
- Fixed: #79: Dub fetch all vibe-d dependencies, even if there is no reason (@s-ludwig)
- New: Add script to automatically compile/run the tests. (@Abscissa)
- Fixed: #61: Add escape functions (@Marenz)
- Fixed: #62: Documentation typo (@eco)
- Fixed: #66: Can't connect when omitting default database (@Abscissa)
- New: #60: Add 'execSQL' overload for when you don't care about "rows affected". (@Abscissa)
- Fixed: #55: Replace string with const(char)[] for sql string (@mathias-baumann-sociomantic)
- Fixed: #56: Result set quantity does not equal MySQL rows quantity (@Abscissa)
- Fixed: Wrong number of bytes read (@sshamov)
- Fixed: Test don't compile on DMD 2.064.2 (@Abscissa)
- Fixed: #24: BIT type handled incorrectly (@Abscissa)
- Fixed: #33: "*TEXT" types treated as ubyte[], not string (@Abscissa)
- Fixed: #42: Can't login with empty password (@Abscissa)
- Change: Split into multiple modules.
- Fixed: Remove redundant (and outdated) "homepage" field from package.json. (@s-ludwig)
- Fixed: #39: Unsupported SQL type NEWDECIMAL (@bhechinger)
- Fixed: #45: Retrieving table metadata fails with an exception for certain server versions. (@Abscissa)
- Fixed: #48: Unittests don't work on MariaDB 5.5 (@Abscissa)
- New: Add lots of tests (@Abscissa, @simendsjo)
- Fixed: Fix MetaData.columns (@Abscissa)
- Fixed: Tightened word wrapping in docs. (We don't have to stick to 80 cols, but let's keep it in the general ballpark. Long lines of text are hard to read.) (@Abscissa)
- Fixed: docs: A few function names were out of date. (@Abscissa)
- Fixed: #29: Misleading error message when trying to access results via an index (@nomad-software)
- Fixed: #36: Add colNames and colNameIndicies to ResultSequence (@MartinNowak)
- Fixed: #37: Detect nullable types and call nullify in toStruct (@MartinNowak)
- Fixed: #38: Fix empty for ResultSequence (Range wouldn't stop correctly when all rows were fetched) (@MartinNowak)
- Fixed: #40: Hangs when receiving a value > 250 bytes. (@Abscissa, @fsw)
- Fixed: Avoid using deprecated vibe.d symbols. (@s-ludwig)
- Fixed: #30: Thrown exceptions leave connections in an undefined state. (@Abscissa)
- New: #32: Add gitignore (@Geod24)
- Fixed: #26: Remove checking _valid (which no longer exists) from execFunction and execTuple (@schancel)
- Fixed: #27: Added 2 missing casts reported as errrors by DMD-2.065 head. (@ArjanKn)
- Fixed: #31: Error message was not displayed (@Geod24)
- Fixed: Add vibe.d as an optional dependency so that Have_vibe_d gets defined for separate builds (as for "dub generate visuald"). (@s-ludwig)
- Fixed: #25: Fix compiler error for the latest vibe.d master. (@s-ludwig)
- New: Add opDollar to ResultSet. (@Abscissa)
- Fixed: Add license field to DUB json file. (@s-ludwig)
- Fixed: Bug with TIMESTAMP that's almost undetectable. (@sshamov)
- Fixed: #19: Move towards pure, const and nothrow (@simendsjo)
- Fixed: #21: Fix purity of exceptions + enforce for dmd 2.064+ (@simendsjo)
- New: Add function: Connection.reconnect (@Abscissa)
- New: Support using connection string for Vibe.d connection pool. (@Abscissa)
- New: For connection strings, port is now optional. (@Abscissa)
- New: Test app enhancements: Optional conn string on cmdline, better default connection settings, and compile-time option to use Vibe.d connection pool. (@Abscissa)
- Fixed: Commented out: Obsolete enforcing inside execPreparedTuple() (@sshamov)
- Fixed: Assertion failure when retrieving a TIMESTAMP (@sshamov)
- Fixed: Not release prepared stmt if there is no such one (@sshamov)
- Fixed: Fix building with DUB and without vibe.d. (@s-ludwig)
- Fixed: RangeError when connecting via connection string. (@Abscissa)
- Fixed: 64-bit fixes. (@Abscissa)
- Fixed: Phobos has SHA1 since v2.061. Use it instead of this project's version. (@Abscissa)
- Fixed: #10: Hangs on certain code (Fix compilation for latest vibe.d master) (@s-ludwig)
- Fixed: #11: Compiler warnings (@s-ludwig)
- Fixed: #12: Ddoc warning (@Abscissa)
- Fixed: #15: Compile error on LDC. (@Abscissa)
- New: Get field/param information. (@Abscissa)
- New: Support null values in prepared statements. (@Abscissa)
- New: Support Phobos sockets as optional (but default) alternative to vide.d sockets. (@Abscissa)
- Fixed: Removed Connection's dtor. (@Abscissa)
- Fixed: Don't bother reopening closed connection just to send QUIT command. (@Abscissa)
- Fixed: Compile errors for bindParameter (@Abscissa)
- Fixed: Assertion failure when retrieving a TIMESTAMP or an unsigned floating-point/fixed-point type. (@Abscissa)
- Fixed: Fixed compilation for latest vibe.d/dub/DMD versions. (@s-ludwig)
- Fixed: Retrieving NULL from a '*BLOB' or '*TEXT' column handles wrong, and messes up the rest of the reterived data. (@Abscissa)
- New: Subclassed exception MySQLProtocolException for invalid data is received, violating MySQL's network protocol. (@Abscissa)
- New: Subclassed exception MySQLReceivedException for when the server returns an error packet. (@Abscissa)
- Fixed: Removed the version entry from package.json - not necessary anymore. (@s-ludwig)
- Fixed: consume(T:Date) doesn't consume the bytes it used. (@Abscissa)
- Fixed: #7: Internal AssertError: Attempting to fetch the front of an empty array of ubyte (@Abscissa)
- Fixed: #8: Fixed Date type handling. (@fearfullymade)
- New: Auto repair of dead connections (@sshamov)
- New: Support for Nullable(T) members in toStruct() (@sshamov)
- New: Support for null values in toStruct() (@sshamov)
- New: #4: Add optional port and capFlags args to mysql.db.MysqlDB connection pool. (@Abscissa)
- Fixed: #1: Fix incorrect error connecting to v4.1.1+ server (@Abscissa)
- Fixed: #2, #5: Remove unintended additions to the interface (@Abscissa, @simendsjo)
- Fixed: #3: Bug with capability flags (@sshamov)
- Fixed: #6: Bugs with fetching VARCHAR/BLOB/TEXT (@sshamov)
- Fixed: Removing again the empty packet assertion. (@s-ludwig)
- Fixed: Second attempt to rewrite parseGreeting - now uses getPacket(), just like any other packet. (@s-ludwig)
- Fixed: Removed (now) invalid enforcement. (@s-ludwig)
- Fixed: Rewrote the greeting message parsing code to not rely on TCP quirks. (@s-ludwig)
- Fixed: Merge simendsjo branch with many misc cleanups (@simendsjo, @JollieRoger)
- Fixed: Fixed up the test application. (@s-ludwig)
- Fixed: Fixed compilation on latest vibe.d master. (@s-ludwig)
- Fixed: JSON syntax error in DUB json file. (@s-ludwig)
- New: First tagged version (@s-ludwig)
- Fixed: Adjusted package.json for the new VPM registry. (@s-ludwig)
- New: Original releases by @britseye (Steve Teale)