* Consistently return UNKNOWN_MSGID for unknown or invalid msgids
* If both client's DMs are stored in persistent history, a single
server.DeleteMessage will delete the single canonical copy of the message.
So the second call will fail, which is fine.
* abstract history DB interface
* make mysql error logging consistent
Consistently propagate database errors to the client, making the client
responsible for logging them.
* move ListCorrespondents from Sequence to Database/Buffer
time.Unix() returns a time.Time with the Location populated to the server's
timezone. Such times will format incorrectly with IRCv3TimestampFormat unless
they are manually converted to UTC.
See 69448b13a10a14517 / #1969; the compiler can now ensure that a uint64
intended for atomic access is always aligned to a 64-bit boundary.
Convert atomic operations on uint32s and pointers as well.
On a 32-bit architecture, 64-bit atomic loads and stores must be aligned to a
64-bit boundary. Since the (mysql.MySQL) struct is directly included in the
Server struct, it is impossible to guarantee this via the standard technique
of putting the 64-bit value at the beginning of the struct definition
(since the point at which it is included in the parent struct may cross a
64-bit boundary).
This optimization is probably pointless anyway, adding an additional
indirection won't make a difference.