1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
|
# 0.1.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';
# 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.
|