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
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
|
# 1.1.0
* Bump extension version;
* Add type for storing either errors or return values: res;
# 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 syscalret to syscalres;
* Rename cpyret to cpyres;
* Update syscalid and syscalres 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;
* Add matching concepts for C++20;
* Rename bs module to bas;
* Rename is* metaprogramming classes back to is*typ;
* Rename isconsteval to iscstevl;
* Rename syscal to syscal;
* Don't declare C++ syscal as noexcept;
* Rename syscalid to syscalidt;
* Add more comments to headers;
* Update and fix standard-detection macros;
* Update target detection in makefile;
* Update readme;
* Add isnan to C++;
* Rename nthrw to nthw;
* Add constant-evaluated mathematical functions;
* Rename dist to dst;
* Implement cpy, equ, fil, and srh in C++11;
* Use shared implementation files;
* Fix install target;
* Rename nret back to noret;
* Rename useq to unseq;
* Rename urch to unrch;
* Rename ulik to unlik;
* Rename bas module to zp;
* Rename extver to ext;
* Rename ver to api;
* Fix installation target;
* Update header guards;
* Typedef structures again;
* Rename nthw to nothw;
* Add missing prefix to divmod types;
* Use structure for version constant (use oldstyle in C);
* Use maxval for inf fallback;
* Fix trtval;
* Add optional type: opt;
* Remove minimum-width integral types;
* Guarantee fixed-width integral types;
* Guarantee fixed-width floating-point types;
* Remove extended fixed-width integral types;
* Remove extended fixed-width floating-point types (including f01);
* Only overload mathematical functions for fixed-width types;
* Move inf and nan to zp;
* Fix urch not being renamed to unrch in C++;
* Remove constant mathematical functions;
* Fix isnan not being present in C++ API;
* Fix prefixes and sufixes being present on C++ objects;
* Fix changelog;
* Add more math tests;
* Implement C++ isnan;
* Don't implement isnan as a macro;
* Fix syscal not being translated;
* Rename targ variable to tar;
* Don't use "fast" optimisation;
* Add signed equivalent to siz: sizerr (size error);
* Remove nopos;
* Fix ptrdif not being defined;
* Rename intptr to ptr;
* Use int long and int long long instead of long and long long;
* Update type identifiers;
* Fix long doulbe type suffixes;
* Remove fmtlen;
* Temporarily disable fmt;
* Temporarily disable opt;
* Update file structure of private headers;
* Use int short instead of short;
* Rename implementation file directory: imp => det;
* Fix *fil functions;
* Bring back restr (as rsr and private);
* Fix text paddings;
* Fix utf32srh
* Rename sys identifiers:
- openbsd => opnbsd;
- freebsd => frebsd;
- drgnfly => drgfly;
- hurd => hrd;
- linux => lnx;
- minix => mnx;
- unix => unx;
* Rename imp identifiers:
- clang => cln;
- cray => cry;
- msvc => msc;
- tiny => tcc;
- watcom => wat;
* Remove logo section from readme;
* Update logo;
* Remove u8c logos;
* Revert logo resize;
* Update logo colour;
* Fix install target;
* Fix comments;
* Fix typings of vectors;
# 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 syscal;
* 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.
|