| 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; - Fix installation script; - Update logo (copy old to 'dux_old.svg'); - Update logo; | 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*.