The primary focus of the 0.5.8 release is fixing problems and wrapping up the API in preparation for the 0.6.0 stable release.
There are an enourmous amount of API breaking changes.
More in depth code analysis' have been performed and many bugs are fixed, many security problems are solved, and many missing features are added.
Due to the size of the changes and the upcoming stable release, this release is being released as is with additional breaking changes planned following the next release.
Now has an initial implementation of the Control program.
The Control program and the relevant parts in the Controller program are not complete.
This will be addressed in the next development release priot to any stable release.
As part of implementing the Control program, a new FSS specification has been created.
This new specification, FSS-000E, is called "Payload".
The purpose of this is the transport of data over a network, such as a Socket.
This structure allows for binary data embedded along with string-based header data.
This brings in unit tests for a small number of projects.
Fixes a file stream read inefficiency resulting in using ~50% less memory used.
Many build systems build object files separately before the final compilation.
The Featureless Make build mode now better handles these cases by supporting building objects only.
The "example-objects" example provides an example of this new functionality.
The bootstrap.sh script is updated to accomodate all of the Featureless Make changes.
The Featureless make build Objects added are:
- build_objects_library
- build_objects_library_shared
- build_objects_library_static
- build_objects_program
- build_objects_program_shared
- build_objects_program_static
- build_sources_object
- build_sources_object_shared
- build_sources_object_static
- path_object_script script
- path_object_shared shared
- path_object_static static
- path_sources_object
- defines_object
- defines_object_shared
- defines_object_static
- flags_object -fPIC
- flags_object_shared
- flags_object_static
The Featureless Make build settings now allows for almost all of its Objects to be expanded by a mode.
Specifying multiple modes at the same time are tested and confirmed to work.
The "project_name" has been refactored to "build_name" to allow for more consistent terminology in the build settings files.
The "path_headers_preserve" has been refactored to "preserve_path_headers" to allow for more consistent terminology in the build settings files.
The "path_standard" has been refactored to "has_path_standard" to avoid confusing with the Objects that represent actual paths.
There are major structural changes to the project, in some cases breaking up files into multiple files and sub-directories.
Many of the functions now are not only pointers to constants, now they themselves are constants (such as "const f_string_t * const dynamic").
Most of the strings data now guarantees NULL termination after the "X.used" position to make compatibility with libc/POSIX NULL terminated strings easier.
This effectively increases security at the cost of a trivial amount of resources.
This brings in new functionality:
- Control: Initial, but incomplete, implementation.
- Controller: Implement IKI support in controller program.
- Controller: Initial, but incomplete, implementation of Control processing.
- Fake: Add support for "context" IKI in Fakefiles.
- Fake: Build settings now supports compiling only object files.
- Fake: Enable support for modes on (almost) all Fake build settings Objects.
- FLL: Add and implement fss-000e Payload specification.
- FLL: The level 3 programs fss_payload_read and fss_payload_write are now available.
- FLL: Maps and Multi-Maps should support appending a single map rather than just an entire set.
- FLL: Major rewrite of all string management to use f_string_static_t instead of f_string_t, almost everywhere.
- FLL: Console Parameter handling code now handles environment variables passed directly from main(), with new structures available for handling this.
- FLL: Did not fully verify sanity of the passed argc, argv, and now envp (0fda7956).
- FLL Identify: The fll_identify -n/--name now supports full name as well as type code.
Security Fixes:
- Controller: Executed program string is not NULL terminated (c2e3a78a).
- Fake: Invalid read due to wrong parameter in fl_print_format() (ad662162).
- Fake: Invalid read because NULL is added to list but then f_string_dynamic_append_nulless() is used (c6b16ea5).
- FLL: Invalid read in private_f_print() (3864be02).
- FLL: Invalid reads, always add NULL for compatibility (11ac81cc).
- FLL: The va_list has undefined behavior when passed into functions (f8463f12).
- FLL: Invalid va_arg() call resulting in overflow (9706a6d3).
- UTF8: Invalid read when using -bB (5bc794b5).
Fixes and Improvements:
- Byte Dump: Return explicit error code when needing to.
- Controller: Delete socket rather than resize when array is over large.
- Fake: Fakefile inner Objects should load the last Object from settings Section.
- Fake: Do not validate directory existence when cleaning.
- Fake: The build setting path_sources is not being properly used and improve skeleton process.
- Fake: Refactor path_standard to has_path_standard.
- Fake: The path_headers_preserve isn't properly being processed and refactor it to preserve_path_headers.
- Fake: A fakefile should not load the build settings by default.
- Fake: IKI variables are not substituting consistently.
- Fake: Provide more details in the documentation on if/else logic.
- Fake: Partially fix "if is regular for xxx" exposes bug in error handling of and/or.
- Fake: Regression where the "failure" operation if condition type is not working as intended.
- Fake: If/else condition logic is incorrect or incomplete.
- Fake: The "if not defined" is not working as expected.
- Fake: Incorrect string is being printed on error message.
- Fake: Comparison should instead be an assignment.
- FLL: Help ensure va_copy() is defined.
- FLL: Improper IKI vocabulary position for when a quote is immediately to the left of the vocabulary name.
- FLL: Return F_data_not when amount or size is 0 in memory allocation functions and add missing F_string_tripless_t.
- FLL: IKI now accepts a structure f_iki_data_t, reducing the number of parameters passed.
- FLL: Change "one", "two", and "three" into "a", "b", and "c" for f_triple_t.
- FLL: Add clang build mode to the build settings files.
- FLL: Add debugging.txt documentation.
- FLL: Remove todo.txt documentation.
- FLL: Use F_directory_not instead of F_directory for non-existent directories.
- FLL: Improve f_file_name_directory() and f_file_name_base().
- FLL: Remove "_type" from f_type_array functions.
- FLL: Refactor project_name t build_name to match new Featureless Make build settings Object name.
- FLL: Remove fl_console from example bootstrap script.
- FLL: Refactor fl_console_parameter_to_string_dynamic_directory() to f_path_directory_cleanup().
- FLL: Fix bug where the prepend option is being incorrectly applied.
- FLL: File stream read inefficiency, allocation f_string_t instead of char, and actually use state.step_small.
- FLL: Use raw printing whenever safely possible and add missing raw safe print.
- FLL: Incorrect return result for fwrite_unlocked().
- FLL: Use libc functions more in f_color.
- FLL: Console parameter macro, console structure organization, and add initializer for some integer types.
- FLL: Use F_number_t_size_positive_d for F_string_t_size_d and update #ifdef structural logic.
- FLL: Lay out the foundation for proper endianness support.
- FLL: Implement more of UTF-8, finish "is unassigned", add "is surrogate" UTF-8 support, and update "is private use".
- FLL: Update testfiles should detect LD_LIBRARY_PATH.
- FLL: Update documentation and add "context" to IKI-0002.
- FLL: Add F_domain, F_family, F_protocol, and F_property statuses.
- FLL: Improvements to f_path and related.
- FLL: Improvements to file processing code.
- FLL: Additional status codes added.
- FLL: Add socket functions and improve existing ones.
- FLL: Incorrect file mode is being set.
- FLL: Fix bug in socket disconnect.
- FLL: Fix bug where valid comment lines are keeping leading white space.
- FLL: Fix bugs exposed by unit testing.
- FLL: Add additional unit tests.
- FLL: Add missing f_account_name_group_by_id(), cleanup comments, and update macro usage.
- FLL: Make sure constant pointers that are intended to be read-only are just that.
- FLL: Fix bug where an improper if condition range check is performed in the print functions.
- FLL: The private_fl_print_convert_number() is not properly handling number conversion with asterisks in some circumstances.
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.
- Finish the "control" program.
- Review and fix some inconsistencies in the design that would influence the API.
- Update documentation.
-----BEGIN PGP SIGNATURE-----