The primary focus of the 0.5.7 release is completing existing incomplete projects.
This release contains an enormous amount of UTF-8 compatibility improvements.
A lot of incomplete code is now completed.
Not everything is complete, such as the unassigned block range for 3-byte wide characters (these are marked with todo comments).
A new program, called "utf8", is provided to help assist in converting to and from UTF-8 codepoints and the binary character.
This program should be capable of generating complete binaries but is not very well tested as of yet.
A lot of problems have been identified and solved, including security issues.
The goal of completing the controller and control programs is pushed off to the next release cycle as a result.
A major addition is the support for cmocka and writing tests.
Tests will be slowly added until there is reasonably full coverage of the project and all of its programs.
This will take time but will greatly assist in identifying problems and regressions down the road.
The cmocka unit test process is still not fully hashed out and many changes in the future are expected as a result.
This brings in new functionality:
- A small number of cmocka tests as well, utilized via a fakefile named "testfile".
- The utf8 program now exists and is available.
- New UTF-8 processing functions.
- Support the C11 aligned_alloc() but still provide an optional fallback to posix_memalign().
- The fake program now supports "not" with if-conditions as well as "and" and "or" if-conditions.
Security Fixes:
- Fix memory leak in fake program (e126c92439fd54005b043e89ca022a3a9e2bfd97).
- Segfault when "load_build yes" and "build settings" of fake program (634e4402b887d5abc8b6928909dafbf1dab4c42a).
- Buffer overflow in f_file (647417282a9c2cd0f06b9e571cb3410f49ba25a0).
- Invalid memory access in interrupt handlers of fake program (9e72630517b6dd27cfdf0e553592c713742a16f9).
The summary of fixes and improvements:
- All Programs: Performance is slow due to process signal checks.
- Byte Dump: Wrong characters being printed, switch to newer print functions.
- Controller: The controller_time_micro() is waiting too long.
- Controller: Functions like nanosleep() are not receiving interrupt signals and similar.
- Controller: Improve sleeping logic, also replacing sleep() with nanosleep().
- Controller: Use BLOCK after UNBLOCK rather than UNBLOCK again.
- Controller: Add two example entries for testing delay so that terminate signals may be tested.
- Controller: Script and Utility are no longer working when using "Extended" rather than "Extended List" format.
- Fake: Restructure fake settings, moving examples into a new projects directory.
- Fake: Individual build should be building with "version_file micro" and "version_target minor".
- Fake: Reset fakefile buffer and only call resize when necessary.
- Fake: Switch to simple string and cleanup syntax and comments.
- Fake: Ensure terminating NULLs, remove unnecessary arguments array, and cleanups.
- Fake: The "if defined parameter .." is not supporting reserved parameters.
- Fake: Relocate fake_main_t position in function arguments and make it a constant pointer.
- Fake: Move main data into the data make structure.
- FLL: Add "success" color context and initialize color "set" in programs.
- FLL: UTF-8 functions fail to properly handle ASCII.
- FLL: Fix print function bugs and add missing functions.
- FLL: Experimentally cast characters to uint8_t in UTF-8 processing code.
- FLL: NULL is being printed and fix inline function
- FLL: The color set context should also have the "reset".
- FLL: Signal related updates, consistency improvements, and miscellaneous code cleanups.
- FLL: Remove old color print functions.
- FLL: The print safely functions are now UTF-8 aware.
- FLL: Base 10 was used in hexdigit for comparison, resulting in invalid number conversion.
- FLL: Implement double support in print functions and add missing functionality.
- FLL: Improve UTF-8 Control detecting, expanding to distinguish Control Code and Control Format.
- FLL: Major UTF-8 changes and optimizations.
- FLL: f_utf_unicode_string_from() is not functioning correctly.
- FLL: Improve error handling and add F_utf_fragment to generic FLL error printing.
- FLL: Raw formatted print sometimes prints trailing NULL.
- FLL: Support printing errors for F_signal and F_interrupt statuses.
- FLL: f_utf_unicode_string_to() not treating numbers larger than 0x10FFFF as invalid.
- FLL: Cygwin documentation notes are slightly out of date.
- FLL: Use C11's aligned_alloc() by default, but keep posix_memalign() via macro _f_memory_USE_po
six_memalign_.
- FLL: Update: Improve performance by removing redundant memset().
- FLL: Handle more error messages for file types and cleanup organization a little.
- FLL: Add support for tests in the packager.
- FLL: Add cmocka tests for f_memory project.
- FLL: Don't bother checking, just always update pointer (in the memory allocator functions).
- FLL: IKI improvements, cleanups, and bugfixes.
- FLL: Incorrect return values in some print functions.
- FLL: The character 'o' is not properly detected as a mode.
- FLL: Signal id should be -1 the id should be passed to signalfd().
- FLL: Add tests for f_type_array.
- FLL: Numerous code cleanups and documentation improvements.
Remaining planned changes for preparing 0.5.x branch for 0.6.x:
- Finish writing UTF-8 support for existing functionality.
- Finish the "controller" program, which is another part of the non-systemd init design.
- Write the "control" program, which is intended to interact with the "controller" program.
- Review FSS and IKI standards for consistency in both specification and implementation.
- Bring "firewall" up to date.
- Cleanup existing code, getting the style back in sync for a stable release.
- Review and fix some inconsistencies in the design that would influence the API.
- Update Featureless Make to fully handle creating parent paths.
- Update Featureless Make to support overriding settings using program parameters.
- Update documentation.