# 1A.0.0
* cp: Return structure with the one-after-the-end addresses of both dest and src;
* Remove all mathematical functions except divmod (and C++ variants);
* Combine quotrem and frac into new type 'pair';
* Use new versioning: api.ext.patch;
* Remove compatver (and add extver);
# 19.0
* Return the one-after-the-emd address from cp;
* (amd64) Fix wrong registers being used in cp and the function not working at all;
* Add compatibility version constant;
* Add compile-time string functions for C++;
* Check type in compile-time functions;
* Add more type checking constants for C++;
# 18.1
* Enable debug symbols;
# 18.0
* Add integer-string format functions;
* Move string-related facilities to new module 'str';
* Update code style;
* Add aliases for C++;
* Add C++ metaprogramming classes;
* Fix C/C++ standard detections;
* Add more attributes to functions;
* Implement mathematical functions in C++;
* Implement mathematical functions using basic arithmetic types, including (depending on the function) signed, unsigned, and floating-point;
* Add fraction structure;
# 17.0
* Add functions for null-terminated strings: streq (for equality checking), strlen (for getting the length);
* Add type limit macros;
* Rename bytesz to bytelen;
* Remove byte type;
* Remove bool type (and related macros);
* Remove chr8, chr01, and chr02 types;
* Update nullptr definition;
* Update nopos definition;
# 16.7
* Fix segmentation fault in fill caused by usage of wrong register (amd64);
# 16.6
* cp: Use vmovdqu instead of vmovups (amd64);
# 16.5
* Optimise fill (amd64);
* Optimise cp (amd64);
# 16.4
* Update assembly comments;
* Implement fill in AMD64;
* Remove signal support;
* Fix exp;
# 16.3
* Implement exp;
* Fix bad directory name;
* Fix makefile;
# 16.2
* Implement cp and abs in AMD64;
* Fix indentations;
* Implement cp and abs in ARM64;
# 16.1
* Add install target to makefile;
* Fix csys usage;
# 16.0
* Rewrite project (the following is the current feature set);
* Add minimum-width unsigned integer types: i8, i01, i02, i04;
* Add minimum-width signed integer types: i8s, i01s, i02s, i04s;
* Add type for object sizes: sz;
* Add type for pointer values: ptr;
* Add function for logical values: bool;
* Add logical constants: false, true;
* Add function for memory sequence copying: cp;
* Add function for memory sequence filling: fill;
* Add types for storing quotients and remainders: quotrem8, quotrem01, quotrem02, quotrem04;
* Add function for division and modulo: divmod;
* Add function for getting absolute values: abs;
* Add function for memory sequence comparison: eq;
* Add function for radication: root (unimplemented);
* Add function for exponentiation: exp (unimplemented);
* Add function for bytes value searching: srch:
* Add constant for indicating invald positions: nopos;
* Add constant for indicating null pointers: nullptr;
* Add types for UTF-8, UTF-16,a and UTF-32 values: chr8, chr01, chr02;
* Add function for UTF-8 encoding: utf8enc;
* Add function for UTF-8 decoding: utf8dec;
* Add function for UTF-32 to UTF-8 length calculations: utf8enclen;
* Add function for UTF-8 to UTF-32 length calculations: utf8declen;
* Add function for Windows-1252 encoding: win1252enc;
* Add function for Windows-1252 decoding: win1252dec;
* Add function for logarithming: log (unimplemented);
# 15.1
* mem: Implement;
* docs: Add example definition to mem;
# 15.0
* Add new module mth;
* Add mathematical functions: abs, div, exp, log, mul, nrt (currently, only abs has been implemented);
* Add structure for fractions (frac);
* Fix version;
* Re-add documentation;
* Add maximum and minimum values for types;
# 14.0
* memcat: Remove;
* strcat: Remove;
* memcp: Return number of copied bytes;
* memfill: Return number of filled bytes;
# 13.1
* Implement memcnt in assembly;
# 13.0
* Add counting function;
* Rename foreach to memfor;
* Rename fndbtyte to memfnd;
* Rename fndchr to strfnd;
# 12.2
* Improve assembly readability (save utf8enc and utf8enclen for later);
* Update readme;
* Fix memory leak in demo;
# 12.1
* Remove typing of nullptr;
# 12.0
* Add function for getting the length of UTF-32 strings;
# 11.1
* Fix install target;
# 11.0
* Remove memcmp and strcmp;
* Restructure sources;
* Remove root makefile;
# 10.1
* Don't use susinfo;
# 10.0
* Update readme;
* Fix typo in makefile;
* Include headers inside header guard;
* Remove unneeded includes;
* Rename private include directory: 'include-priv' => 'include-private';
* Remove assembly support from (public) headers;
* Remove fastimpl (assembly algorithms are still used);
* Add copyright/license notices to makefiles;
* Seperate sources according to header;
* Require GNU Make;
* Move (most) C-implementations into a seperate project: zapx;
* Restructure assembly;
* Implement strfill in assembly;
* Use new versioning system (api.ver);
* Remove documentation;
* Add features from latest standard;
* Temporarily remove i386 implementations;
* Update readme format;
* Update changelog format;
* Remove impl;
* Remove stdver;
* Readd ver;
* Use git tagging;
# F
* Remove type specifier from version macro;
* Add mathematical functions abs and fma;
* Update documentation;
* Remove nothrw attribute from foreach;
* Remove UB from foreach test;
* Fix parameter mismatch in foreach test;
* Use unsigned char instead of uint_least8_t;
* Remove unnecessary casts;
* Add new headers: 'zap/math.h' (for mathematical functions), 'zap/mem.h' (for memory sequence functions);
* Restructure makefile;
* Fix not using INT_LEAST8_MAX and INT_LEAST8_MIN instead of INT8_MAX and INT8_MIN;
* Remove '/build' from gitignore;
# E
* Fix incorrect version number;
# D
* Add function foreach: Run function on each element;
* Use directive globl instead of global in assembly;
* Use SIZE_MAX instead of negative one;
* Remove asflags from makefile;
* Don't require GNU Make;
* Change the type of fndbyte: (size_t (void const *,size_t,uint_least8_t)) => (size_t (void const *,size_t,unsigned char));
* Change the type of memfill: (void (void *,size_t,uint_least8_t)) => (void (void *,size_t,unsigned char));
* Update readme (add documentation for some functions);
* Update susinfo symbol names;
# C
* Fix install target;
* Remove type literals;
# B
* memdup: Use sus_unlikely instead of __builtin_expect;
* Rename project to zap (from rgo);
* Remove global license file (useless with MPL);
* Migrate test to C++ (for reasons which will be revealed later);
* Restructure headers;
* Add include guards to the private header;
* Add attribute useret to functions;
* Require GNU Make;
* Compile position independent code;
* Update readme;
# A
* Installation script: Create installation directories if they don't already exist;
* Don't use susinfo types;
* Remove declarations for getbinver;
* Add memcmp, strcmp;
* Update makefile;
* Reimplement fastimpl as a global variable;
* Change type of fastimpl (uint_least8_t => _Bool);
* Change the return types of memeq and streq (uint_least8_t => _Bool);
* Enable compilation warnings;
* Add type literals (like those from susinfo);
* Use *int_leastN_t instead of *intN_t;
* Remove restrict-qualifications;
* Remove C++ version of memdup;
# 9
* Fix readme not reflecting that we now support all platforms;
* Rename the 'Building' section in the readme to 'Building & Installing';
# 8
* Use susinfo;
* Implement algorithms in C (with inline assembly on supported platforms);
* Add comments;
* Fix strcpy counting the null-terminator;
* Fix strcpy taking a pointer-to-const as the output;
* Implement strcpy, streq in IA-32;
* Optimise streq: Only use the lower eight bytes for the return value;
* Optimise strlen: Use fewer registers;
* Fix memfill taking a pointer-to-const as the output;
* Fix strfill taking a pointer-to-const as the output;
* Update readme;
* Add private header;
* Remove assembly-specific version macro;
# 7
* Relicense under MPL2;
* Instead of throwing an error, define a macro when the header is included on an unsupported platform;
# 6
* Remove stupid debug return from memcpy;
# 5
* Fix compile flags not indicating new relative header location;
# 4
* Add install target to makefile;
* Merge makefiles;
# 3
* Enable compiler optimisations;
* Optimise memfill;
* Optimise memcpy: Use movdqu instead of movups (AMD64, i386 SSE2), add 256-bit copy (AMD64 AVX, i386 AVX);
* Update makefile;
* Implement fndbyte, fndchr, strlen in IA-32;
* Fix bug in test;
* Update readme;
* Add new planned architectures: Motorola 68000, Power ISA, RISC-V, Sparc;
# 2
* Fix target purge in makefile not being labeled phony;
* Add machien architecture check in header;
* Implement memcpy, memeq, memfill in IA-32;
* Fix some incorrect comments;
* Use a different register order for temporaries and optimise register usage;
* Fix bug in memeq: Should jump if zero, not if equal;
* Update readme;
# 1
* Fix indentation in license notices;
* Fix incorrect declaration for rgo_strcpy, rgo_streq;
* Implement fndbyte,memeq,strcpy,streq;
* Add new tests;
* Fix bug in memcpy: Should jump if zero, not if equal;
* Remove declaration for rgo_memcmp;
* Add macro rgo_ver, defined to the current version number;
* Add assembly declaration for rgo_fndchr, rgo_fndbyte;
* Fix some incorrect comments;
* Use movups instead of movdqu in memcpy;
# 0
* Initial.