]> Kevux Git Server - fll/commit
Progress: Various updates.
authorKevin Day <Kevin@kevux.org>
Sat, 20 Jun 2026 22:08:46 +0000 (17:08 -0500)
committerKevin Day <Kevin@kevux.org>
Sat, 20 Jun 2026 22:16:47 +0000 (17:16 -0500)
commit12fb416fc9a0002b79e1123c390d46ab67bfc5af
treeafff954d367801dcef2b19bcf5f8bed96683f66e
parentf5c044a597b867412343439876c80af8267462ec
Progress: Various updates.

The main FSS specification with clarifications.

I'm generally in favor of performing calculations once.
However, I decided to try reducing the memory allocation and deallocation cost of variables by applying the simple math operations each time for some functions where this is performed only once.
This has a cost of some code readability, however.
The affected functions are single purpose and simple making the cost rather moot.

Begin changing the logic to add a new feature to solve a problem with insufficient compliance to the Unicode standards.
The joiners need to be handled.
The combining combines into what is effectively a graph character.
Treat the joiner characters the same, even though one can join two non-printing characters.
New lines must ignore joiners (I have seen this as the standard behavior by a lot of software and decided to go with that to avoid problems).

The is_combining, is_joiner, and is_combining_joiner are new features added to help solve these problems.
A lot of the logic is incomplete as of this commit.

I didn't want to add a cost of auto-checking every character after the first.
This means that I cannot have the is_space, is_graph, or other such functions automnate this.
Therefore, the logic must be changed to check for these spaces.
The code will become more complex but this will not incur as much of a performance cost compared to checking each character 2x+ times.
I also decided not to continue on after the first combining and joiner characters.
The combining already makes something a graph.
The joiner requires more searched and is highly subjective.
Therefore, make life easier and just treat all joiners as graph-making for the purposes of processing and syntax.
88 files changed:
build/stand_alone/byte_dump.config.h
build/stand_alone/example.config.h
build/stand_alone/fake.config.h
build/stand_alone/fss_identify.config.h
build/stand_alone/fss_read.config.fss_basic.h
build/stand_alone/fss_read.config.fss_basic_list.h
build/stand_alone/fss_read.config.fss_embedded_list.h
build/stand_alone/fss_read.config.fss_extended.h
build/stand_alone/fss_read.config.fss_extended_list.h
build/stand_alone/fss_read.config.fss_payload.h
build/stand_alone/fss_read.config.h
build/stand_alone/fss_write.config.fss_basic.h
build/stand_alone/fss_write.config.fss_basic_list.h
build/stand_alone/fss_write.config.fss_embedded_list.h
build/stand_alone/fss_write.config.fss_extended.h
build/stand_alone/fss_write.config.fss_extended_list.h
build/stand_alone/fss_write.config.fss_payload.h
build/stand_alone/fss_write.config.h
build/stand_alone/iki_read.config.eki.h
build/stand_alone/iki_read.config.h
build/stand_alone/iki_write.config.eki.h
build/stand_alone/iki_write.config.h
build/stand_alone/status_code.config.fss.h
build/stand_alone/status_code.config.h
build/stand_alone/utf8.config.h
level_0/f_fss/c/fss.c
level_0/f_fss/c/fss.h
level_0/f_fss/data/build/settings-tests
level_0/f_fss/data/documentation/man/man3/f_fss_is_graph.3
level_0/f_fss/data/documentation/man/man3/f_fss_is_space.3
level_0/f_fss/tests/unit/c/test-fss-is_space.c
level_0/f_fss/tests/unit/c/test-fss-skip_past_combining.c [new file with mode: 0644]
level_0/f_fss/tests/unit/c/test-fss-skip_past_combining.h [new file with mode: 0644]
level_0/f_fss/tests/unit/c/test-fss-skip_past_delimit.c
level_0/f_fss/tests/unit/c/test-fss-skip_past_space.c
level_0/f_fss/tests/unit/c/test-fss.c
level_0/f_fss/tests/unit/c/test-fss.h
level_0/f_parse/c/parse.c
level_0/f_utf/c/private-utf_combining.c
level_0/f_utf/c/private-utf_combining.h
level_0/f_utf/c/private-utf_joiner.c
level_0/f_utf/c/private-utf_joiner.h
level_0/f_utf/c/private-utf_zero_width.c
level_0/f_utf/c/utf.c
level_0/f_utf/c/utf/is.c
level_0/f_utf/c/utf/is.h
level_0/f_utf/c/utf/is_character.c
level_0/f_utf/c/utf/is_character.h
level_0/f_utf/data/build/settings-tests
level_0/f_utf/tests/unit/c/data-utf.c
level_0/f_utf/tests/unit/c/data-utf.h
level_0/f_utf/tests/unit/c/test-utf-character_is_combining_joiner.c [new file with mode: 0644]
level_0/f_utf/tests/unit/c/test-utf-character_is_combining_joiner.h [new file with mode: 0644]
level_0/f_utf/tests/unit/c/test-utf-is_combining_joiner.c [new file with mode: 0644]
level_0/f_utf/tests/unit/c/test-utf-is_combining_joiner.h [new file with mode: 0644]
level_0/f_utf/tests/unit/c/test-utf.c
level_0/f_utf/tests/unit/c/test-utf.h
level_1/fl_fss/c/fss/basic.c
level_1/fl_fss/c/fss/basic.h
level_1/fl_fss/c/fss/basic_list.h
level_1/fl_fss/c/fss/embedded_list.h
level_1/fl_fss/c/fss/extended.c
level_1/fl_fss/c/fss/extended.h
level_1/fl_fss/c/fss/extended_list.c
level_1/fl_fss/c/fss/extended_list.h
level_1/fl_fss/c/private-fss.c
level_1/fl_fss/c/private-fss.h
level_1/fl_fss/data/documentation/man/man3/fl_fss_basic_content_read.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_basic_content_write.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_basic_list_content_read.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_basic_list_content_write.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_basic_list_object_read.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_basic_list_object_write.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_basic_object_read.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_basic_object_write.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_embedded_list_content_read.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_embedded_list_content_write.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_embedded_list_object_read.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_embedded_list_object_write.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_extended_content_read.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_extended_content_write.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_extended_list_content_read.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_extended_list_content_write.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_extended_list_object_read.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_extended_list_object_write.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_extended_object_read.3
level_1/fl_fss/data/documentation/man/man3/fl_fss_extended_object_write.3
specifications/fss.txt