The Featureless Linux Library stable version 0.6.0 is released.

Several new programs are introduced since the 0.4.0 stable release series:

  • control
  • controller
  • fss_embedded_list_read
  • fss_embedded_list_write
  • fss_extended_list_write
  • fss_identify
  • fss_payload_read
  • fss_payload_write
  • iki_write
  • utf8

Most notable of these programs are the controller program and the utf8 program.

The controller program is a re-interpretation of the Featureless Make program written in a more generalized fashion that is focused on performing a set of tasks. This is very similar to a system initialize program such as sysvinit. Support for running as a system initialize replacement is partially complete. There is currently no way to send messages to the controller program to start and stop anything. The control program, which is used to communicate to the controller program is also incomplete. The next FLL development verrsion, the 0.7.0 series, will heavily focused on network protocols.

The utf8 program is a handy tool to convert from UTF-8 characters to their Unicode value or vice-versa. This can convert entire files.

Featureless Make has some major changes. The fake program now accepts piped data, which must be a valid fakefile. There are new Objects available for the build settings and the fakefile.

The default behavior of Featureless Make is now more similar to the GNU make program. When running fake with no parameters, it will first search for a fakefile in the current directory before checking for one at data/build/fakefile. This is analogous to how running make with no parameters will search for a Makefile in the current directory.

One major change is the complete rewrite of the printing functionality. The new design is heavily focused around formatted printing, similar to the printf() family of functions. Unlike the standard printf() family of functions, the new formatted printing understands the FLL special structures such as dynamic strings. The new formatted printing is UTF-8 aware and can handle printing raw strings, printing safe strings, and printing NULL characters. A safe string is a string where control codes or invalid Unicode sequences are replaced with place holders.

That standard console options have changed. All output changing parameters have had their short parameter argument made upper case. For example, +q is now +Q.

A new +E/++error parameter is introduced. This new parameter acts almost identical to +Q/++Quiet. The difference is that error messages are still printed.

The documentation may be found with the source code. Much of this website has been updated to also provide most of this documentation as well. The API is currently only available in the source code via the header files.

A major improvement of this release is safer and more stable code. This is thanks to a massive amount of time and effort spent into writing unit tests. The unit tests process is performed using the Featureless Make program. In addition to the unit tests, the static analyzer from GCC has been used to better identify and resolve problems.

The following are changes since the 0.5.10 development release.

Security Fixes:

  • FLL: Environment value has invalid read in f_environment_set().
  • FLL: Invalid read for formatted printing using partial ranges on a string.
  • FLL: Invalid reads on NULL terminated strings with a max width greater than 1.
  • Featureless Make: Invalid read when using -s/--settings.
  • Featureless Make: Invalid read when processing not condition minimum value.
  • Featureless Make: Invalid read when processing an empty fakefile.

Features:

  • FLL: Add missing function f_environment_get_all().
  • FLL: Add missing signal functions f_signal_action(), f_signal_pause(), and f_signal_suspend().
  • FLL: Add support for +E/++error and change '+q' to '+Q'.
  • Controller: Expose the "define" and "parameter" at the Entry and Exit level.
  • Featureless Make: Now supports a piped fakefile.
  • Featureless Make: Now supports the "write" operation.
  • Featureless Make: Now supports to the "print" operation for escape sequences just like the "write" operation has.
  • Featureless Make: Now supports the "top" parameter.
  • Featureless Make: Now supports the "current" parameter.
  • Featureless Make: Improve user experience by defaulting specified fakefile and build settings file to present working directory.

Bug Fixes:

  • FLL: IKI variables are incorrectly being processed when there is a non-IKI IKI-like string.
  • FLL: Single quotes are not being properly detected in FSS Extended Read functions.
  • FLL: private_f_file_open_at() has an incomplete set if ifdef conditions.
  • Byte Dump: Parameter after either the -N or -W is being processed when it should not be.
  • Controller: Incorrect information is printed on certain errors.
  • Controller: Delimits are not being applied for IKI variables.
  • Controller: "State is now ..." should not be printed when quiet is passed.
  • Controller: Guarantee that the child processes are terminated.
  • Controller: IKI substitution is incorrectly applied.
  • Featureless Make: Condition blocks are still being processed when they should be skipped.
  • Featureless Make: Empty strings improperly pass validation checks.
  • Featureless Make: IKI variable substitution results in incorrect parameter structure.
  • Featureless Make: Error verbosity is not being preserved.
  • Featureless Make: Text is being incorrectly stripped out.
  • Featureless Make: The copy operation doesn't work properly with trailing slashes.
  • Featureless Make: Copy should destination should be the base name rather than the entire path.
  • Featureless Make: Link operation is incorrect, support new link arguments, and clone, copy, and move operations failure problems.
  • Featureless Make: Block is incorrectly being reset when an else condition precedes an if condition.

Refactors:

  • Controller: Use "settings" instead of "setting" for better consistency between fake program and controller program.
  • Featureless Make: Rename "script" to "engine" to avoid possible confusion with the different uses of "script".
  • Featureless Make: "if defined parameter" and similar are simplified into something more like "if define" and "if parameter".
  • Featureless Make: Rename "exists" to "exist".

Updates:

  • FLL: Change execute error code handling to better accommodate standard GNU Bash return codes.
  • FLL: Further reduce memory allocation pressure by increasing default small allocation.
  • FLL: Restrict environment to PATH and LD_LIBRARY_PATH by default in all FLL build settings files.
  • FLL: The standard program setup should explicitly unblock all signals other than the default
  • FLL: Clarify IKI standard in regards to delimits and improve specification file.
  • FLL: Improve specification files.
  • FLL: The f_color needs to follow latest practices with private functions.
  • Controller: Change default controller settings path to './'.
  • Controller: Strip out NULL characters after applying delimits.
  • Controller: Timeout changes.
  • Featureless Make: Make environment variable handling design consistent between fake and controller programs.
  • Featureless Make: Ensure first if block is initialized to operate.
  • Featureless Make: Replace Unicode Terminate escape sequence with Non-printing escape sequence.
  • Featureless Make: Reduce number of allocations by pre-determining size when easily possible.
  • Featureless Make: Organize the validate operation into separate type functions and improve error handling logic.
  • Featureless Make: The example bzip2 now supports running the tests.

Check out the project on the FLL release page.

The project is built like a tool chest. Individuals who are unfamiliar with the project should have an easier time trying out the pre-packaged monolithic sources. These programs, by default, are designed to build against a library built using the monolithic source tree.

Kevin Day