summaryrefslogtreecommitdiff
path: root/CHANGELOG.txt
blob: 1fc68c2535c3ffd45fc2b9d59243158e315bcea6 (plain) (blame)
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
| 0.0.0

- Revive and rewrite project (current features will be listed);
- Merge with Flux and Burst;
- Use zp versioning: api.ext.pat;
- Use GNU Make;
- Depend on zp;
- Use Git tagging for versioning;
- Add input/output header: io;
- Add function for creating files: crtfil;
- License under LGPL3 or later;
- Add enumerations for errors;
- Add function for aborting: abr;
- Add function for getting error mesasges: errmsg;
- Update gitignore;
- Add structure for files;
- Add integral type for file permissions;
- Add multithreading header: thr;
- Add function for creating threads: crtthr;
- Add private header;
- Add base header: dux;
- Add API and extension version constants: api, ext;
- Add structure for threads: thr;
- Add function for joining threads: joithr;
- Add global file for default input: dfli;
- Add global file for default output: dflo;
- Add global file for default logging: log;
- Add function for exiting the current thread: exi;
- Add function for sleeping: slp;
- Add demo;
- Add structure for storing path information: pthinf;
- Add function for getting the current directory: curdir;
- Add function for getting the home directory: homdir;
- Add function for changing the current directory: chgdir;
- Add function for statting paths: sttpth;
- Add function for setting the permissions of a path: setprm;
- Add function for creating directories: crtdir;
- Add function for copying files: cpy;
- Add function for moving files/directories: mov;
- Add function for removing files: rem;
- Add function for writing to files: wrt;
- Add function for reading from files: red;
- Add function for writing strings to files: wrtstr;
- Rewrite readme and in plain text;
- Add function for starting threads: srtthr;
- Adjust copyright years for oldest versions;
- Note: Currently, only errmsg is implemented;

- Fix installation target;

- Support Linux AMD64;
- Implement crtfil;
- Add private header for I/O;
- Implement abr;
- Remove parameters from abr;
- Update demo;
- Implement crtdir;
- Implement wrt;
- Rename badprm value to noprv;
- Update gitignore;
- Add function for opening files:
- Remove iomod type;
- Rename crtfil to crt;
- Implement wrtstr;
- Add function for opening files in read-write mode: opnwr;
- Add function for opening files in read-only mode: opn;
- Add function for closing files: cls;

- Implement opn;
- Update demo;
- Implement red;
- Fix zp prefix on pthinf;
- Remove thr module;
- Implement cpy;
- Implement sttpth;
- Update parameters to sttpth;

- Fix installation target;
- Update gitignore;

- Perform better error handling in cpy;
- Add new error 'memlim';
- Add new error 'io';
- Implement homdir;
- Rename opnwr to opnrw;
- Add function for getting environment variables: envvar;
- Make homdir and curdir write to user-provided buffers;
- Update demo;
- Implement curdir;
- Update coding style with regards to pointers and references;

- Implement opnrw;
- Implement setprm;
- Add new module 'fs';
- Move to fs: chgdir, crtdir, cpy, curdir, homdir, mov, rem, setprm, and sttpth;
- Rename envvar to getenv;
- Bring back message to abr;
- Make errmsg write message to caller-provided buffer;
- Make getenv, homdir, and curdir not include null-terminator in output;
- Update gitignore;
- Implement wrtstr in the same file as wrt;
- Implement mov;

| 2↋

- Fix signal pipe being renamed to file;

| 2↊

- Update the homepage-URL in CMake and the homepage link in the readme;
- Add I/O modules for file manipulation;
- Simplify debug logs and align them;
- Remove error code noimpl;
- Revert "Make more compile-time objects be internally-linked" from dux-28 as now GCC complains;
- Split module group arr into C and C++ sections like the others;
- Add module memeq for comparing memory regions;
- Implement POSIX functions dux.priv.posix.fsync, dux.priv.posix.read;
- Update gitignore;
- Update update-checklist;
- Rename error code badio to ioerr;

NOTE: dux.pipe.read currently fails on FreeBSD

| 29

- Add homepage-URL to CMake;
- Add an update checklist ("/update-checklist.txt");

| 28

- Add module dux.ismainthrd;
- Make more compile-time objects be internally-linked;

| 27

- Correct comment in "/dux/src/exit.cc";
- Add project description to CMake;
- Remove initialisation for the lock in dux.abrt as it's deprecated in C++20;
- Fix return type not being specified in the C-implementation for dux.onexit;
- Fix ld complaining about multiple definitions of compile-time objects when the project is compiled with Clang;

| 26

- Rewrite and restructure project;
- Update readme;

| 25

- Merge with dux.
- Make new logo (based on dux_boxes).
- Merge maths facilities and sequence facilities.
- Implement alternatives for stdlib.
- Use new header structure
- Make thread API cleaner.
- Make windowing API cleaner.
- ...

TO-DO: Expand and improve the changelog for this version.

| 24

- Remove constructor taking a single value for `u8c::arr`.
- Add new overload taking a single value for `u8c::arr::app`.
- Add function `u8c::arr::log` to enable logging of array operations *(doesn't currently log a lot)*.
- Remove `u8c::trunc`.
- Initialise memory allocated by `u8c::arr`.
- Add overload taking value used for memory-initialisation for `u8c::arr::alloc`.
- Update code formatting.

| 23

- Rewrite for C++ *(read readme for list of current features)*.
- Use CMake for building.
- Update logo.

| 22

- Remove documentation (too hight-maintainence).
- Rename `include/u8c/is.h` to `include/u8c/chk.h`
- Revert u8c-9 “Remove some optimisations, as they prevent C++ compatibility.”.
- Fix #1.
- Use binary literals for bitwise operations.
- Add more control characters to `u8c_iscntrl`.
- Change type of result of the `u8c_is`* functions fromt `uint_least8_t` to `bool`.
- Add more characters to `u8c_ispunct`.
- Update Makefile.
- Revert u8c-21 “Rename `u8c_unimax` to `u8c_u32max` and move it to `u8c/u32.h`.”.
- Add function for checking if a character is a surrogate point; `u8c_issurro`.
- Split `u8c_isalpha` into `u8c_islower` and `u8c_isupper`, move current mapping to `u8c_islower`. All characters that are neither upper case or lower case must be put in `u8c_isalpha`.
- Add function for getting the name of an Unicode codepoint; `u8c_uninm` (has currently only mapped around ⅔% of all Unicode characters).
- Revert accidental changes to changelog (please be more careful and observant in the future).
- Delete `u8c_errtyp_maxerrtyp` (in favour of `u8c_errtyp_all`).
- Switch the arguments of `u8c_seterr`.
- Add function for getting the name of the block an Unicode codepoint is located in; `u8c_uniblk` (has currently only mapped around 39% of the Unicode blocks).
- Rename all instances of `u32` to `str`.
- Optimise for size (`-Os` instead of `-O3`).
- Update Readme.
- **MAJOR**: Return a tuple (structures) in all returning functions, otherwise void.
- Add help screen to test program.
- Update Gitignore.
- Restructure test program.
- Add more characters to `u8c_islower`.
- Add more characters to `u8c_isupper`.
- Remove the `runtest` target (just use `make && export LD_LIBRARY_PATH=$PWD && ./test`, which can more easily be modified to pass arguments).
- Add more characters to `u8c_isalpha`.
- Fix incorrect error being set (somewhere, I forgot where).
- Fix `SIZE_C`.

| 21

- Update readme.
- Require C23 (C2x).
- Use GCC (has better C23 support).
- Cleanup UTF-8 decoder and encoder (using binary literals).
- Rename `u8c_unimax` to `u8c_u32max` and move it to `u8c/u32.h`.
- Don't clear last error message on calls to `u8c_geterr`.
- Restructure source files.
- Fix makefile.
- Update test program.

| 20

- Update documentation.
- Optimise `u8c_println`,
- Make `u8c_print`, `u8c_println`, and z`u8c_vprint` thread-safe (if thread-safe is not disabled).
- Create base for UTF-16 related functions:
	- Add function for allocating UTF-16 strings; `u8c_u16alloc`.
	- Add function for deallocating UTF-16 strings; `u8c_u16free`.
- Restructure headers:
	- `u8c/SIZE_C.h`:
		- `SIZE_C`
	- `u8c/err.h`:
		- `u8c_errtyp`
		- `u8c_errhandltyp`
		- `u8c_geterr`
		- `u8c_regerrhandl`
		- `u8c_seterr`
	- `u8c/fmt`:
		- `u8c_dbgprint`
		- `u8c_fmt`
		- `u8c_fmttyp`
		- `u8c_print`
		- `u8c_println`
		- `u8c_setfmt`
		- `u8c_vfmt`
		- `u8c_vprint`
	- `u8c/is.h`:
		- `u8c_isalnum`
		- `u8c_isalpha`
		- `u8c_iscntrl`
		- `u8c_isdigit`
		- `u8c_ispunct`
		- `u8c_isspace`
		- `u8c_isxdigit`
	- `u8c/main.h`:
		- `u8c_dbg`
		- `u8c_abrt`
		- `u8c_end`
		- `u8c_init`
		- `u8c_thrdsafe`
		- `u8c_unimax`
		- `u8c_ver`
	- `u8c/u16.h`:
		- `u8c_u16alloc`
		- `u8c_u16free`
	- `u8c/u32.h`:
		- `u8c_u32alloc`
		- `u8c_u32cat`
		- `u8c_u32cmp`
		- `u8c_u32cp`
		- `u8c_u32fndchr`
		- `u8c_u32fndpat`
		- `u8c_u32free`
		- `u8c_u32ins`
		- `u8c_u32substr`
		- `u8c_u32sz`
	- `u8c/u8.h`:
		- `u8c_u8alloc`
		- `u8c_u8dec`
		- `u8c_u8enc`
		- `u8c_u8free`
- Disable *-Wpadded*.
- Update `SIZE_C`.
- Always use character constants (instead of numerical values).

| 1↋

- Add more codepoints to `u8c_ispunct`.
- Don't use Zstandard for man page compression. Use Gzip.
- Remove Zstandard as a dependency.
- Update gitignore.

| 1↊

- Initialise error handler array.
- Initialise and destroy error handler array mutex.
- Fix Makefile.
- Update gitignore.

| 19

- Fix error when compiling with GCC: *src/u8c/dat.c:22:29: error: initializer element is not constant [-Wpedantic]*.
- Improve error handling:
	- Add enumeration type for error types; `u8c_errtyp`.
	- Add function for registering error handlers; `u8c_regerrhandl` (see `test.c`).
- Add function for inserting UTF-32 strings into UTF-32 strings; `u8c_u32ins`.
- Enable more warnings.
- Add man pages.
- Fix `u8c_u32cat` skipping the last character in `lstr`.
- Remove the `uninstall` target (it was deemed to unsafe).
- Add *Zstandard* as a dependency.

| 18

- Update `.gitignore`.
- Remove core dump.

| 17

- Create new logo.
- Update headers.
- Invert status values.

| 16

- Add function for concatenating UTF-32 strings; `u8c_u32cat`.
- Add functions for allocating UTF-32 and UTF-8 strings; `u8c_u32alloc` and `u8c_u8alloc`.
- Add function for finding a given codepoint in an UTF-32 string; `u8c_u32fndchr`.
- Add function for finding a given pattern (string) in an UTF-32 string; `u8c_u32fndpat`.
- Update `SIZE_C`.
- Add function for aborting; `u8c_abrt`.
- Rename `u8c_debug` to `u8c_dbg`.
- Use `bool` (`_Bool`) for return values instead of `uint_least8_t`.
- Add more format types.
- Fix incorrect unabbreviated names in headers.
- Add another function from `ctypes.h`; `u8c_isxdigit`.
- Use `char32_t` (from `uchar.h`) instead of `uint_least32_t` in UTF-32.
- Use `unsigned char` instead of `uint_least8_t` in UTF-8.
- Move all data into `u8c_dat` (of type `struct u8c_dattyp`).
- Add function for setting the format (base and endian) of `u8c_fmt` and company; `u8c_setfmt`.
- Remove `u8c_txt` in favour of Unicode string literals (much clearer code, but less portable).
- Add function for getting a sub-string of an UTF-32 string; `u8c_u32substr`.
- Don't count the null-terminator in string sizes.
- Add macro for maximum valid Unicode codepoint; `u8c_unimax`.
- Remove `txttolit`.
- Add function for deallocating UTF-8 strings; `u8c_u8free`.
- Turn both `u8c_dbg` and `u8c_thrdsafe` into type `bool` from `uint_least8_t`.
- Add more letters to `u8c_isalpha`.

| 15

- Add missing include directives to `include/u8c/u32free.h` and `include/u8c/u8free.h`.

| 14

- Free error message when `u8c_geterr` is called (after copying, of course).
- Update `u8c_freeu8`.
- Rename `u8c_freeu32` to and `u8c_u32free` and `u8c_freeu8` to `u8c_u8free`.

| 13

- Fix `u8c_txt` in C++.

| 12

- Use `u8c_println` instead of `u8c_print` in `u8c_dbgprint`.

| 11

- Update README.
- Update Makefile.
- Use constant variables more.
- Create macro for creating human-readable UTF-32 strings; `u8c_txt`.
- Add macros for deallocating UTF-32 and UTF-8 strings (use these instead of `free` or `std::free`); `u8c_u32free` and `u8c_u8free`.
- Optimisations.

| 10

- Make `u8c_seterr` public.
- Update logo.

| ↋

- Fix `u8c_ver`.
- Add Turkish letters to `u8c_isalpha`.

| ↊

- Add UTF-32 alternatives to some of the functions from `ctypes.h`; `u8c_isalnum`, `u8c_isalpha`, `u8c_iscntrl`, `u8c_isdigit`, `u8c_isspace`, and `u8c_ispunct`.
- Add assertions.
- Create new logo (move old logo to `u8c_old.svg`).

| 9

- Optimisations.
- Remove some optimisations, as they prevent C++ compatibility.
- Fix memory leak in test program.
- Add function for comparing UTF-32 strings; `u8c_u32cmp`.

| 8

- Optimisations.

| 7

- Optimisations.

| 6

- Remove unneeded include directives.
- Update `SIZE_C` to utilise the C++23 `std::size_t` literal suffix (`uz`).
- Fix include guard in `include/u8c/stat.h`.
- Add more error messages.

| 5

- Add logo (`u8c.svg`).
- Fix UTF-8 decoder.
- Update README.

| 4

- Add link to PKGBUILD in README.

| 3

- Remove `include/u8c.h`.
- Fix minor errors.

| 2

- Move PKGBUILD to seperate project.
- Create a *master* header that includes every other header.
- Create `size_t` constant macro.
- Add colour to text formatting.
- Specify what file to print to in `u8c_print`.
- Add C++ compatibility to headers.
- Add functions for initialising and ending *u8c*.
- Add dedicated function for text formatting (altough not working at the moment); `u8c_fmt`.
- Remove `u8c_free`.
- Improve error handling in the form of error messages (which can be retrieved by the programmer via `u8c_geterr`).
- Split `u8c_print` into two functions: `u8c_print` and `u8c_println`.
- Break the UTF-8 decoder somehow.
- Add compile-time option to be thread-safe (requiring C11 threads if enabled).
- Add function for copying UTF-32; `u8c_u32cp`.
- Add function for getting the size of an UTF-32 array; `u8c_u32sz`.
- Add `va_list` alternatives to `u8c_fmt` and `u8c_print`; `u8c_vfmt` and `u8c_vprint`.
- Add test-program (run via `make runtest`).
- Add program to make human-readable UTF-32 strings machine-readable.
- Turn `u8c_ver` into a compile-time macro.
- Enable more warnings when compiling.
- Add assertions.

| 1

- Fix Makefile compiling *u8c.so* instead of *libu8c.so*.
- Add global variable for version control.

| 0

- Fork from *luma*.