# 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.