<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kconfig.git/src/core, branch v5.91.0</title>
<subtitle>hurd kconfig.git</subtitle>
<link rel='alternate' type='text/html' href='https://netuse.dynamicmalloc.com/cgit/kconfig.git/'/>
<entry>
<title>Add KF*/KConfig to the interface include directories</title>
<updated>2022-01-15T21:56:12+00:00</updated>
<author>
<name>Ahmad Samir</name>
<email>a.samirh78@gmail.com</email>
</author>
<published>2022-01-15T21:56:12+00:00</published>
<link rel='alternate' type='text/html' href='https://netuse.dynamicmalloc.com/cgit/kconfig.git/commit/?id=3bbe9de5d59a6572f3549cc3a553dd44db421b68'/>
<id>3bbe9de5d59a6572f3549cc3a553dd44db421b68</id>
<content type='text'>
So that #include &lt;kconfig_version.h&gt; still works after changing its
location in the previous commit.

NO_CHANGELOG
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
So that #include &lt;kconfig_version.h&gt; still works after changing its
location in the previous commit.

NO_CHANGELOG
</pre>
</div>
</content>
</entry>
<entry>
<title>Use KDE_INSTALL_FULL_LIBEXECDIR_KF</title>
<updated>2022-01-03T09:09:56+00:00</updated>
<author>
<name>Laurent Montel</name>
<email>montel@kde.org</email>
</author>
<published>2022-01-03T09:09:56+00:00</published>
<link rel='alternate' type='text/html' href='https://netuse.dynamicmalloc.com/cgit/kconfig.git/commit/?id=4b440665f2e15cf9f9934fe7bcc91cac2768df1f'/>
<id>4b440665f2e15cf9f9934fe7bcc91cac2768df1f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Extract isNonDeletedKey() helper function</title>
<updated>2022-01-02T18:20:55+00:00</updated>
<author>
<name>Igor Kushnir</name>
<email>igorkuo@gmail.com</email>
</author>
<published>2021-12-25T06:29:27+00:00</published>
<link rel='alternate' type='text/html' href='https://netuse.dynamicmalloc.com/cgit/kconfig.git/commit/?id=9151f1dacf59d0af10b11729b53ad23824ec1693'/>
<id>9151f1dacf59d0af10b11729b53ad23824ec1693</id>
<content type='text'>
The eliminated duplication of the composite condition was error-prone
and less readable.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The eliminated duplication of the composite condition was error-prone
and less readable.
</pre>
</div>
</content>
</entry>
<entry>
<title>Look for entries with common group prefix in entryMap's subrange</title>
<updated>2022-01-02T18:20:55+00:00</updated>
<author>
<name>Igor Kushnir</name>
<email>igorkuo@gmail.com</email>
</author>
<published>2021-12-25T07:46:44+00:00</published>
<link rel='alternate' type='text/html' href='https://netuse.dynamicmalloc.com/cgit/kconfig.git/commit/?id=acccefbc667e7ee2c481b2fd0b45ba2f12e9237a'/>
<id>acccefbc667e7ee2c481b2fd0b45ba2f12e9237a</id>
<content type='text'>
entryMap is ordered by the group name first. So there is no need to
iterate over the entire map to process entries whose group names start
with some prefix. Find the group name prefix's lower bound and iterate
over the proper subrange instead. This should be much faster, especially
if the subrange's size is much less than the entryMap's size.

Adjust isGroupOrSubGroupMatch() helper function to assert the extracted
startsWith() condition instead of rechecking it. Pass
KEntryMapConstIterator in place of the group name to this function in
order to simplify its callers' code. Reuse this helper function in
KConfigPrivate::copyGroup().
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
entryMap is ordered by the group name first. So there is no need to
iterate over the entire map to process entries whose group names start
with some prefix. Find the group name prefix's lower bound and iterate
over the proper subrange instead. This should be much faster, especially
if the subrange's size is much less than the entryMap's size.

Adjust isGroupOrSubGroupMatch() helper function to assert the extracted
startsWith() condition instead of rechecking it. Pass
KEntryMapConstIterator in place of the group name to this function in
order to simplify its callers' code. Reuse this helper function in
KConfigPrivate::copyGroup().
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve the documentation of KConfigPrivate::allSubGroups()</title>
<updated>2022-01-02T18:20:55+00:00</updated>
<author>
<name>Igor Kushnir</name>
<email>igorkuo@gmail.com</email>
</author>
<published>2021-12-27T09:39:54+00:00</published>
<link rel='alternate' type='text/html' href='https://netuse.dynamicmalloc.com/cgit/kconfig.git/commit/?id=117835244a23ccc906ee0b0d462d67c38480b914'/>
<id>117835244a23ccc906ee0b0d462d67c38480b914</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>KConfigPrivate::copyGroup: remove redundant entryMap lookup</title>
<updated>2022-01-02T18:20:55+00:00</updated>
<author>
<name>Igor Kushnir</name>
<email>igorkuo@gmail.com</email>
</author>
<published>2021-12-25T07:37:04+00:00</published>
<link rel='alternate' type='text/html' href='https://netuse.dynamicmalloc.com/cgit/kconfig.git/commit/?id=9ca42038a09307b04a4e6be39b60f25c23105fe1'/>
<id>9ca42038a09307b04a4e6be39b60f25c23105fe1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>groupList: convert each group name from UTF-8 once</title>
<updated>2022-01-02T18:04:58+00:00</updated>
<author>
<name>Igor Kushnir</name>
<email>igorkuo@gmail.com</email>
</author>
<published>2021-12-25T06:41:02+00:00</published>
<link rel='alternate' type='text/html' href='https://netuse.dynamicmalloc.com/cgit/kconfig.git/commit/?id=af6b3a375d99ce5ec5ecf5a30c6bc2b1b9db6102'/>
<id>af6b3a375d99ce5ec5ecf5a30c6bc2b1b9db6102</id>
<content type='text'>
Usually multiple key entries belong to each group. Before this commit
every key entry's group name was converted from UTF-8 to UTF-16 and then
inserted into a set. With this commit every key entry's group name is
inserted as a std::string_view into a set, and only unique group names
are converted to UTF-16 in the end. This should improve performance.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Usually multiple key entries belong to each group. Before this commit
every key entry's group name was converted from UTF-8 to UTF-16 and then
inserted into a set. With this commit every key entry's group name is
inserted as a std::string_view into a set, and only unique group names
are converted to UTF-16 in the end. This should improve performance.
</pre>
</div>
</content>
</entry>
<entry>
<title>Exclude deleted groups from groupList()</title>
<updated>2022-01-02T08:31:39+00:00</updated>
<author>
<name>Igor Kushnir</name>
<email>igorkuo@gmail.com</email>
</author>
<published>2021-12-24T11:22:35+00:00</published>
<link rel='alternate' type='text/html' href='https://netuse.dynamicmalloc.com/cgit/kconfig.git/commit/?id=295ea7632ac7cc2cc3eda79b7af8614d5ff95a41'/>
<id>295ea7632ac7cc2cc3eda79b7af8614d5ff95a41</id>
<content type='text'>
This commit is an alternative to the earlier incorrect and reverted
b3dc879e8b108c26c929bfbe551bcdf77f140e94. That commit contained several
mistakes and an algorithmic complexity increase:
1) the added conditions were inverted: should have been
   `hasNonDeletedEntries` (without `!`);
2) KConfigPrivate::groupList() passed group instead of key.mGroup to
   hasNonDeletedEntries();
3) The complexity of hasNonDeletedEntries() is O(entryMap.size()). Calls
   to this function were added into loops that iterated entryMap.size()
   times. So the overall complexity of groupList() increased from linear
   to quadratic.

This fix collects `mGroup`s of non-deleted key entries instead of
`mGroup`s of group entries. The number of key entries can be much
greater than the number of group entries, so this fix hurts performance.
But at least the algorithmic complexity of groupList() stays linear.
Future commits can optimize the loops and make them almost as fast or
even faster than before this fix.

The `!key.mKey.isNull() &amp;&amp; !entryMapIt-&gt;bDeleted` checks added in this
commit are consistent with the check in
KConfigPrivate::hasNonDeletedEntries(). KConfig::hasGroupImpl() forwards
its argument to hasNonDeletedEntries() with the following comment:
// No need to look for the actual group entry anymore, or for subgroups:
// a group exists if it contains any non-deleted entry.

BUG: 384039
FIXED-IN: 5.90
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This commit is an alternative to the earlier incorrect and reverted
b3dc879e8b108c26c929bfbe551bcdf77f140e94. That commit contained several
mistakes and an algorithmic complexity increase:
1) the added conditions were inverted: should have been
   `hasNonDeletedEntries` (without `!`);
2) KConfigPrivate::groupList() passed group instead of key.mGroup to
   hasNonDeletedEntries();
3) The complexity of hasNonDeletedEntries() is O(entryMap.size()). Calls
   to this function were added into loops that iterated entryMap.size()
   times. So the overall complexity of groupList() increased from linear
   to quadratic.

This fix collects `mGroup`s of non-deleted key entries instead of
`mGroup`s of group entries. The number of key entries can be much
greater than the number of group entries, so this fix hurts performance.
But at least the algorithmic complexity of groupList() stays linear.
Future commits can optimize the loops and make them almost as fast or
even faster than before this fix.

The `!key.mKey.isNull() &amp;&amp; !entryMapIt-&gt;bDeleted` checks added in this
commit are consistent with the check in
KConfigPrivate::hasNonDeletedEntries(). KConfig::hasGroupImpl() forwards
its argument to hasNonDeletedEntries() with the following comment:
// No need to look for the actual group entry anymore, or for subgroups:
// a group exists if it contains any non-deleted entry.

BUG: 384039
FIXED-IN: 5.90
</pre>
</div>
</content>
</entry>
<entry>
<title>groupList: don't copy unnecessarily; add const</title>
<updated>2022-01-02T08:31:39+00:00</updated>
<author>
<name>Igor Kushnir</name>
<email>igorkuo@gmail.com</email>
</author>
<published>2021-12-24T13:25:10+00:00</published>
<link rel='alternate' type='text/html' href='https://netuse.dynamicmalloc.com/cgit/kconfig.git/commit/?id=c0ad1374408c9acea8a4de6fd7d68563dcc89b2e'/>
<id>c0ad1374408c9acea8a4de6fd7d68563dcc89b2e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Complete fixing the Windows CI</title>
<updated>2021-12-18T18:51:03+00:00</updated>
<author>
<name>Ahmad Samir</name>
<email>a.samirh78@gmail.com</email>
</author>
<published>2021-12-18T18:51:03+00:00</published>
<link rel='alternate' type='text/html' href='https://netuse.dynamicmalloc.com/cgit/kconfig.git/commit/?id=eac8e43e25717fcef579a25bd40d777fc5556255'/>
<id>eac8e43e25717fcef579a25bd40d777fc5556255</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
