* binary SMP protocol encoding (server tests fail) * use 1 byte for bytestring length when encoding/decoding * Encoding class, binary tags * update server tests * negotiate SMP version in client/server handshake * add version columns to queues and connections * split parsing SMP client commands and server responses to different functions * check uniqueness of protocol tags * split client commands and server responses/messages to separate types * update types in SMP client * remove pattern synonyms for SMP errors * simplify getHandshake * update SMP protocol encoding in protocol spec * encode time as a number of seconds (64-bit integer) since epoch
SQLite database migrations
These migrations are embedded into the executable and run when SMP agent starts (as a separate executable or as a part of simplex-chat app).
Migration file names must have a format YYYYMMDD-name.sql - they will be executed in the order or lexicographic sorting of the names, the files with any other extension than .sql are ignored.
The proposed approach is to minimize the number of migrations and merge them together when possible, to align with the agent releases.
Please note: Adding or editing migrations will NOT update the migrations embedded into the executable, unless the Migrations module is rebuilt - use stack build --force-dirty (in addition to edited files it seems to rebuild the files with TH splices and their dependencies, not all files as with stack clean).