# 1.0.0
* Update API-BREAK file;
* Don't call run-time functions from translation-time functions;
* Remove Zap version tags;
* Implement memcpy on ARM;
* Update readme;
* Update logo;
* Implement memcpy on ARM64;
* Update run-time tests;
* Wrap arguments in parantheses in isnan;
* Return the one-after-the-end address of the destination from memfil and fil;
* Increment the extension version;
* Add metaprogramming class for determening pointer types: isptr;
* Fix run-time tests printing equal on inequality;
* Rename API-BREAK to FEATURE-WISHLIST;
* Don't build project in installation script;
* Add development branch 'development';
* Rename arch-macros to arc;
* Update versioning scheme;
* Rename impl macros to imp;
* Rename os macros to sys;
* Remove FEATURE-WHISHLIST and move relevavnt content to readme;
* Bump API version;
* Update readme (fix typo);
* Fix useq;
* Add more comments to headers;
* Rename sysclret to sysclres;
* Rename cpyret to cpyres;
* Update sysclid and sysclres types;
* Add development guidelines to readme;
* Fix nulptrtyp;
* Remove C++ nulptr;
* Add license file;
* Actually don't build project in installation script;
* Remove logo from readme;
* List logo colours in readme;
* Add logo section to readme;
* Remove development branch;
* Revert u8c merge;
* Remove build artefacts;
* Rebase (post-zp commits only);
* Implement remaining C functions in C++;
* Use NASM on AMD64;
* Remove build artefacts;
* Switch back to GNU Make;
* Add u8c logos;
* Remove installation script;
* Update target detection script;
* Update gitingore;
* Use NASM on IA-32;
* Don't use libfmt in rttest;
* Fix uninitialised variable in rttest;
* Make test support C++20;
* Fix out-of-bounds write in strcpy;
* Fix installation target;
* Add more run-time tests;
* Rename likly and ulikly to lik and ulik;
* Fix memcpy results on ARM;
* Fix order of parameters in memcpy on ARM;
* Add more assembly comments;
* Update run-time test start message;
* Assemble missing objects;
* Fix object variable names in makefile;
* Fix wrong symbols;
* Support C++11;
* Make constexpr conditional;
* Use raw metaprogramming classes;
* Remove specialisations for nulptrtyp;
* Rename private namespace: priv => prv;
* Rename isarith to isari;
* Clean up makefile;
* Support C++98;
* Make some facilities standard-dependent;
* Don't implement one-line functions in seperate files;
* Remove restr;
* Update optimisation flags;
* Use reference for value in fil and srh;
* Qualify template parameters correctly;
* Update template typings;
* Make all C++ functions (except cpy, equ, isconsteval, fil, and srh) run-time;
* Implement some functions in C again;
* Add private header directory;
* Add function for filling strings: strfil;
* Don't always define nulptrtyp;
* Mind the digraphs;
* Combine tests;
* Support C90;
* Don't use C++-style comments;
* Fix typings of constants;
* Remove pair type (replace with divmodres);
* Remove member functions from vector classes;
* Don't implement mathematical functions as templates in C++;
* Update naming convention for vector functions;
* Add more trigonometric functions;
* Temporarily remove fmt;
* Fix missing include in test;
* Disable metaprogramming classes in standards before C++11;
* Use double long instead of long double;
* Overload metaprogramming classes with qualified types;
* Fix C++ memcpy;
* Add metaprogramming classes for removing references and pointers;
* Make test support C++17;
* Compile position-independent code;
* Fix installation target installating old private header directory;
* Use tagging for development versions;
* Fix minval and maxval;
* Rename sz to siz;
* Update readme;
# 0.0.2
* Migrate to CMake;
* Fix useres using the nodiscard attribute in all C++ editions;
* Fix the nodiscard attribute being used;
* Fix nthrw not always being specified;
* Don't use designated initialisation in C++;
* Fix trp definition in any;
* Add new file for listing potential API-breaks (API-BREAK.txt);
* Disable system calls by default;
* Fix getarch script on IA-32;
* Rename getarch script to getTarget;
* Add installation script;
* Update gitignore;
# 0.0.1
* Fix unused parameter and invalid invocation in overload of srh;
# 0.0.0
* Rename C++ cp to cpy;
* Rename C++ eq to equ;
* Rename C++ srch to srh;
* Rename C cp and C++ bytecp to memcpy;
* Rename C eq and C++ byteeq to memequ;
* Rename C fill and C++ bytefill to memfil;
* Add function for copying strings: strcpy;
* Add function for searching strings: strsrh;
* Rename cpyret.dest to cpyret.dst;
* Add new headers to makefile;
* Rename math to mth;
* Rename root to nrt;
* Rename unreach to urch;
* Make likly and ulikly public;
* Add extver to C++;
* Fix fixflt macros;
* Rename trap to trp;
* Add functions for UTF-16 encoding/decoding;
* Add C++ variants to UTF-8, UTF-16, and Windows-1252 functions;
* Move public C++ definitions to implementation files ('.ii);
* Make C++ string functions call their C equivalent at run-time;
* Add wide-string and UTF-32-string functions to C;
* Rename typeq to typequ;
* Use built-in type _Bool in C;
* Fix language-detection macros;
* Don't typedef cpyret;
* Fix C-implementation of cpy;
* Fix C-implementation of syscall;
* Define wchr as wchar_t in C++;
* Add minimum-width character types;
* Add minimum-width integral types;
* Update type codes;
* Remove type identifiers;
* Install implementation files;
* Fix non-existent source being referenced on ARM64;
* Use trailing return types;
* Fix isflttyp;
* Add more fixed-width floating-point types;
* Add more fixed-width integer types;
* Make ifconsteval public in the form of a compile-time function;
* Don't typedef pair;
* Add mathematical functions to C++;
* Add NaN constants;
* Add infinity constants to C;
* Add mathematical function for natural logarithm (unimplemented);
* Add mathematical function for binary logarithm (unimplemented);
* Add mathematical function for common logarithm (unimplemented);
* Add mathematical function for cube root (unimplemented);
* Add mathematical functions for distance (unimplemented);
* Add mathematical function for arc cosine (unimplemented);
* Add mathematical function for arc sine (unimplemented);
* Add mathematical function for arc tangens (unimplemented);
* Add mathematical function for logarithm (unimplemented)s
* Add mathematical functions for dot product;
* Add structures for vectors;
* Add classes for vector;
* Add mathematical function for fourth root (unimplemented);
* Assert arithmetic types in mathematical templates;
* Rename sign to sgn and usign to usgn;
* Add functions for adding vectors;
* Add functions for subtracting vectors;
* Implement 'any' architecture using C++;
* Add metaprogramming class for determening signed and unsigned types;
* Add UTF-8 encoders/decoders to C++;
* Add format to C++;
* Change type of fmtlen to sz;
* Remove attr prefix from attributes;
* Support shared libraries;
* Rename unuse to nuse;
* Remove sys and move members to bs;
* Add types for system call return values and system call identifier;
* Rename C srch and C++ bytesrch to memsrh;
* Restructure headers and implementations files;
* Add constant that defines the largest Unicode codepoint: unimax;
* Clean up code;
* Use binary literals;
* Rename is*typ to is*;
* Add functions for determening non-numbers;
* Add minimum-value and maximum-value constants to floating-point types;
* Define dos on DOS-like systems;
* Don't use file extensions for C++ headers;
* Update type codes;
* Change namespace to zp;
* Rename noret to nret;
* Rename project to zp (from zap);
* Add readme;
* Reset version epoch;
* Add logo;
* Add csys logo;
* Add null pointer type: nullptrtyp;
* Rename cmp to impl;
* Rename lang to std;
* Rename syscall to syscl;
* Add more comments to headers;
* Rename nullptr to nulptr;
* Add attribute for warning against unused results;
* Change type of ver and extver to i04m;
* Add type for storing the result of pointer subtraction: ptrdif;
* Rename ptr to intptr;
* Update gitignore;
* Rewrite test program;
# 1B.0.1
* Fix CSys still being included;
# 1B.0.0
* Move C++ facilities to their own headers;
* Add more C++ variants;
* Add fixed-width floating-point types;
* Make minimum-width integer types fixed-width;
* Update code style;
* Add new module 'sys';
* Add syscall function;
* Add option to disable sys module;
* Add function to mark unreachable code;
* Make trap public;
* Remove version checks;
* Add floating-point mathematical functions;
* Add compiler detection macros;
* Fragmentate headers;
* Add character sign detection;
* (Temporarily) remove support for MIPS, POWER, and SPARC;
* Make noret public;
* Add attributes;
* Use MSVC constructs;
* Make restr public;
* Fix C++ srch;
* Install new headers;
* Add "bytewise" overloads for C++ memory functions;
* Add metaprogramming class for removing type qualifiers;
* Overload C++ maxval and minval for character types and the boolean type;
* Add wchr type to C;
* Add macros for detecting the language standard;
# 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.