summaryrefslogtreecommitdiff
path: root/changelog.md
blob: 4f2de287a3978cdd746f43ee4724840394c13566 (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
# 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 `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*.