Branch :
| Author | Commit | Date | CI | Message |
|---|---|---|---|---|
| f3210cbf | 2023-05-15 14:23:16 | compose: drop the 65535 node limit (#343) In commit 1638409b22aef33d487863876ab214b949db4984, the number of compose nodes was limited to 65535 to enable "future optimizations", which apparently means slightly reduced memory usage due to fitting in a uint16_t. At this time, it was mentioned that the author was not aware of "any compose files which come close". However, I'm one of the users that actually do require a larger number of nodes for their compose file. Thus, use a uint32_t again and raise the limit significantly. | ||
| b4e81ca1 | 2022-12-16 01:26:25 | context: add XKB_CONTEXT_NO_SECURE_GETENV flag (#312) This flag is useful for clients that may have relatively benign capabilities set, like CAP_SYS_NICE, that also want to use the xkb configuration from the environment and user configs in XDG_CONFIG_HOME. Fixes: https://github.com/xkbcommon/libxkbcommon/issues/308 Fixes: https://github.com/xkbcommon/libxkbcommon/issues/129 Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| b064b609 | 2022-05-14 01:11:32 | Do not clear sibling entries when override. lokid and hikid actually stores the sibling to current node, which should not be cleared when override. This would break the sequence with a common prefix when override another. Fix #286 Signed-off-by: Weng Xuetian <wengxt@gmail.com> | ||
| 0b3d9092 | 2022-03-14 16:44:13 | scanner: prefix functions with `scanner_` to avoid symbol conflicts Particularly `eof()` in mingw-w64. Fixes: https://github.com/xkbcommon/libxkbcommon/pull/285 Reported-by: Marko Lindqvist Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 7e6d942a | 2021-04-02 15:00:46 | compose: fix max compose nodes check Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 02b9cabf | 2021-03-29 16:05:14 | compose: use a ternary tree instead of a regular trie Previously we used a simple trie with a linked list for each chain. Unfortunately most compose files have very long chains which means the constructions performs an almost quadratic number of comparisons. Switch to using a ternary search tree instead. This is very similar to a trie, only the linked list is essentially replaced with a binary tree. On the en_US/Compose file, the perf diff is the following (the modified function is `parse`): Event 'cycles:u' Baseline Delta Abs Shared Object Symbol ........ ......... ................ ................................. 39.91% -17.62% bench-compose [.] parse.constprop.0 20.54% +6.47% bench-compose [.] lex 17.28% +5.55% libc-2.33.so [.] __strcmp_avx2 12.78% +4.01% bench-compose [.] xkb_keysym_from_name 2.30% +0.83% libc-2.33.so [.] __GI_____strtoull_l_internal 3.36% +0.78% bench-compose [.] strcmp@plt Thanks to some careful packing, the memory usage is pretty much the same. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 8b09e177 | 2021-03-30 20:12:08 | compose: use anonymous union Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 1638409b | 2021-03-30 17:52:36 | compose: add a limit of 65535 sequences Fits in uint16_t, which enables some future optimizations. But also a good idea to have some limit. Not aware of any compose files which come close. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| da4a90c1 | 2019-12-28 13:49:40 | Open files in binary mode This turns off some misfeatures on Windows, and does nothing on POSIX. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 40aab05e | 2019-12-27 13:03:20 | build: include config.h manually Previously we included it with an `-include` compiler directive. But that's not portable. And it's better to be explicit anyway. Every .c file should have `include "config.h"` first thing. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 406beeca | 2019-11-12 22:06:02 | Replace some tabs that sneaked in with spaces Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 842e4351 | 2018-03-12 09:43:55 | compose: fix infinite loop in parser on some inputs The parser would enter an infinite loop if an unterminated keysym literal occurs at EOF. Found with the afl fuzzer. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 47f45194 | 2017-12-12 15:44:52 | compose/parser: be more careful when checking if sequence overrides or duplicates another Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| ce38f96e | 2017-04-11 15:09:23 | Add explicit fallthrough case statements When we fall through to another label in a case, add an explicit comment noting so, to quiet GCC 7's warnings. Signed-off-by: Daniel Stone <daniels@collabora.com> | ||
| 1ec14d09 | 2016-12-02 22:46:53 | compose: remove the keysym_from_name cache The hit rate is high, but either the cache is slow or the function is not fast enough -- the cache no longer holds its weight, leading only to very modest improvements. If it's the former, it can definitely be improved, the code is very dumb (though it worked just as well as any other I tried back then). But instead, let's just kill it. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 2cca0289 | 2015-11-19 00:44:27 | src/utils: change map_file to not take const string argument map_file() uses PROT_READ, so const seems fitting; however unmap_file calls munmap/free, which do not take const, so an UNCONSTIFY is needed. To avoid the UNCONSTIFY hack, which is likely undefined behavior or some such, just remove the const. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 8e1fed6c | 2015-03-24 16:40:29 | compose: correctly parse modifier syntax As described in: http://cgit.freedesktop.org/xorg/lib/libX11/commit/?id=ddf3b09bb262d01b56fbaade421ac85b0e60a69f Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| a4cc119b | 2014-10-18 12:36:40 | compose/parser: save len in keysym_from_name cache This reduces a lot of strcmp's, and allows to use a faster memcmp. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| c6e63fd7 | 2014-10-14 11:28:17 | compose/parser: fix parsing of multiple modifiers Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| d1c5dd14 | 2014-10-13 18:19:16 | compose/parser: parse (! mods) properly We don't actually do anything with them. But if someone uses them we can at least not choke. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 3c0c3afa | 2014-10-13 15:47:13 | compose/parser: resolve keysyms in parser instead of scanner It will become context-sensitive. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 0b99c63c | 2014-10-13 15:05:48 | compose/parser: use parameter as intended Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 8bba4b34 | 2014-10-13 00:16:59 | compose/parser: one more skip_to_eol() Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| a3116f97 | 2014-10-13 18:51:12 | compose/parser: fix segfault when including The keysym cache for the new scanner was not initialized. To avoid such errors also in the future, require passing the priv argument in scanner_init(), instead of initializing it separately. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 65c355aa | 2014-10-13 14:28:27 | COPYING: add copyright notice from libX11:modules/im/ximcp/imLcPrs.c We have used some portions of it, so add the notice. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 8a0acf2c | 2014-10-07 23:42:08 | scanner-utils: optimize one-line comments Compose files have a lot of those. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| edc98b54 | 2014-09-12 18:44:30 | compose: add xkbcommon-compose - implementation Signed-off-by: Ran Benita <ran234@gmail.com> |