|
6c9806ae
|
2025-02-12T07:46:07
|
|
xkbcomp: Fix ExprResolveMaskLookup error message
|
|
558447d8
|
2025-02-11T17:34:27
|
|
xkbcomp: Explicit vars initialization
The `Resolve*` functions do not always initialize the parameters
that they can modify, so it is safer to always initialize them at the
call site.
|
|
2d94da3d
|
2025-02-11T17:34:15
|
|
xkbcomp: Fix the int type of ExprInteger
Avoid implicit conversion from `int64_t`.
|
|
befa0cdd
|
2025-02-12T15:38:58
|
|
test: Check integers syntax
|
|
97698fca
|
2025-02-11T17:34:23
|
|
xkbcomp: Use explicit int sizes for Expr resolution
|
|
4cef822a
|
2025-02-12T07:44:34
|
|
test: Check masks syntax
|
|
16e3e3cb
|
2025-02-12T16:12:42
|
|
utils: Fix missing headers
|
|
afb9c135
|
2025-02-11T16:24:57
|
|
Update .clang-tidy
|
|
3a0b77f0
|
2025-02-12T16:41:09
|
|
xkbcomp: Fix parser headers
|
|
ce9bcbe0
|
2025-02-07T16:31:37
|
|
scripts: Rename keysyms-related files
Previous names were too generic. Fixed by using explicit names and add
the `.py` file extension.
|
|
945c5e3b
|
2025-02-08T00:03:24
|
|
Add clangd configuration file
It mostly works by default, as long as the meson build directory is
called "build". Just needs a couple of project-specific tweaks.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
bb5e464e
|
2025-02-07T14:30:51
|
|
xkbcomp/expr: remove comment on ExprResolveIntegerLookup
What it says mostly no longer holds, I think it's more confusing than
helpful now.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
aa3e4c71
|
2025-02-07T14:10:16
|
|
xkbcomp/expr: remove unused ExprResolveKeyCode
This function was added in commit
4e22851141d89436c0659e68da57e91bbf971461. But that commit also changed
the grammar:
-KeyNameDecl : KeyName EQUALS Expr SEMI
+KeyNameDecl : KeyName EQUALS KeyCode SEMI
i.e. while before you could write
<AE01> = 9+1;
now this is a syntax error, an integer literal is expected. I'm not sure
if it was intended to remove this ability. In any case, this rendered
`ExprResolveKeyCode` useless since there's no longer an expression to
evaluate, and after some refactoring it went unused.
Even if we choose to restore Expr here, I don't see a reason for the
specialized function over `ExprResolveInteger` except the type (which we
should probably widen from int to int64_t...). So remove it.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
d9fc01b3
|
2025-02-06T15:12:53
|
|
xkbcomp/ast: combine expr_op_type into stmt_type
It's better to have a single AST type enum.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
635c48f8
|
2025-02-06T14:47:15
|
|
xkbcomp: remove unused EXPR_TYPE_ACTION
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
a4d782c7
|
2025-02-06T16:00:19
|
|
xkbcomp/ast: remove ExprCommon
It's now empty and no longer serves a purpose.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
9d7eb849
|
2025-02-06T15:25:03
|
|
xkbcomp/ast: combine expr_value_type into stmt_type
This field is a funky attempt at type inference, or perhaps some
optimization? Anyway, after careful examination I conclude it serves no
purpose except specifying the type of a literal
(string/integer/float/boolean/keyname) when `STMT_EXPR_VALUE` (i.e.
literal).
Remove it and replace `STMT_EXPR_VALUE` with specific statement types
for each literal type.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
a5c2c746
|
2025-02-06T12:27:25
|
|
Fix a few direct modifications to generated files
Accidentally modified generated files in a couple of recent changes.
Sync the templates.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
f4e95280
|
2025-02-02T22:29:05
|
|
xkbcomp/scanner: avoid unneeded strdup of IDENT tokens
The allocation is immediately discarded, either turned into a keysym or
an atom. So use an sval slice into the input string instead strdup'ing.
memusage ./release/bench-compile-keymap --iter=1000 --layout us,de --variant ,neo
Before:
Memory usage summary: heap total: 534063576, heap peak: 581022, stack peak: 18848
total calls total memory failed calls
malloc| 11240525 291897104 0
realloc| 1447657 192307328 0 (nomove:37629, dec:0, free:0)
calloc| 430573 49859144 0
free| 13993903 534063576
After:
Memory usage summary: heap total: 506839909, heap peak: 581022, stack peak: 18960
total calls total memory failed calls
malloc| 8016419 264673437 0
realloc| 1447657 192307328 0 (nomove:37278, dec:0, free:0)
calloc| 430573 49859144 0
free| 10769797 506839909
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
113ac304
|
2025-01-25T03:18:01
|
|
meson: link tests and benches against shared library, not static library
This makes the tests, and especially benches, more realistic, since
xkbcommon is almost always used as a shared library.
Also significantly reduces the build time with LTO enabled (for me, from
90s to 30s).
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
2fb1b2e1
|
2025-01-25T06:18:59
|
|
Make XKB_EXPORT do dllexport on Windows
Without this, the test-internal libraries (which don't use the .def file
because they contain additional private symbols) can't be made shared.
But it also makes sense for consistency with GCC.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
a380ba52
|
2025-01-25T07:00:43
|
|
Move XKB_EXPORT to headers
The Windows dllexport annotation wants to be on the declarations, not
the definitions.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
7e918f2e
|
2025-02-05T15:49:26
|
|
tools: add Windows compat for S_ISFIFO
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
cfe53fe4
|
2025-02-05T15:37:49
|
|
tools: add Windows include for execv
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
b5cde5c1
|
2025-02-05T11:47:56
|
|
doc: Improve README
|
|
a93fd7db
|
2025-02-05T11:43:37
|
|
doc: Fix Doxygen config
- Use classical layout without a side bar, which is the default in
recent Doxygen versions.
- Use Github-style heading IDs: more user-friendly and stable.
- Enable the Javascript-base search engine.
- Generate `sitemaps.xml`.
- Fix CSS width incompatible with small devices.
|
|
c051d0ae
|
2025-02-05T14:09:17
|
|
Replace include guards by `#pragma once` (again)
Follow-up of df2322d70cb0922f67c41db639a5c70733b4ce66.
|
|
df2322d7
|
2025-02-05T14:41:21
|
|
Replace include guards by `#pragma once`
We currently have a mix of include headers, pragma once and some
missing.
pragma once is not standard but is widely supported, and we already use
it with no issues, so I'd say it's not a problem.
Let's convert all headers to pragma once to avoid the annoying include
guards.
The public headers are *not* converted.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
d75702ba
|
2025-01-25T06:14:55
|
|
utils: remove ifdefs for some ancient or obscure compilers
If someone needs this, they can let us know...
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
4601b20e
|
2025-01-25T05:46:50
|
|
meson: fix typo
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
42dd1ca4
|
2025-02-03T11:50:14
|
|
meson: suppress MSVC C4100 unreferenced formal parameter warnings
Equivalent to `-Wno-unused-parameter` which we use.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
02456c14
|
2025-02-02T21:51:20
|
|
xkbcomp/keymap: avoid some allocations in ApplyInterpsToKey
Reuse the darray.
memusage ./release/bench-compile-keymap --iter=1000 --layout us,de --variant ,neo
Before:
Memory usage summary: heap total: 552866360, heap peak: 581022, stack peak: 18848
total calls total memory failed calls
realloc| 2035244 211110112 0 (nomove:37629, dec:0, free:0)
After:
Memory usage summary: heap total: 534063576, heap peak: 581022, stack peak: 18848
total calls total memory failed calls
realloc| 1447657 192307328 0 (nomove:37629, dec:0, free:0)
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
7e84c845
|
2025-02-01T17:04:33
|
|
xkbcomp/scanner: avoid extra copies for keynames, keywords, identifiers
The tokens don't have escapes so no need to use the `buf` for them.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
43f6036d
|
2025-02-01T16:34:00
|
|
xkbcomp/keywords: don't require C string for keyword lookup
Needed for next commit, but good regardless. No noticeable effect on
performance.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
4b498b69
|
2025-02-05T09:59:21
|
|
ci: fix link to NEWS file in releases
Fixes 737706fe83f2 doc: Use towncrier to handle release notes
|
|
e120807b
|
2025-01-29T15:35:22
|
|
Update license notices to SDPX short identifiers + update LICENSE
Fix #628.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
63b488af
|
2025-02-05T00:20:15
|
|
ci: remove mention of tarball for github-release workflow
We no longer publish tarballs.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
bb78ed90
|
2025-02-05T00:19:40
|
|
RELEASING: fix the push tag command
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
76740e0c
|
2025-01-30T14:21:00
|
|
Bump version to 1.8.0 and update changelog
|
|
80233f96
|
2025-01-30T15:21:28
|
|
tests: Fix env variables messing tools arguments checks
|
|
3e26bc43
|
2025-02-01T15:53:16
|
|
build(deps): bump dawidd6/action-download-artifact from 7 to 8
Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 7 to 8.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](https://github.com/dawidd6/action-download-artifact/compare/v7...v8)
---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
|
|
1f436703
|
2025-01-24T23:04:43
|
|
xkbcomp: rework KeysymList AST representation
This is similar to the previous commit, for keysym lists.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
39689867
|
2025-01-24T22:43:45
|
|
xkbcomp: rework ActionList AST representation
The AST is heavily based on intrusive lists for representing lists, but
actions are an exception, instead using darray. I don't see any reason
for this; it ends up allocating more, and we don't especially need a
flat array for this.
Change it to use the familiar linked-list style.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
848ecacf
|
2025-01-30T09:12:54
|
|
tools: Enable Compose file positional argument and piping
Also deprecate the `--file` flag as redundant.
|
|
6e97f57e
|
2025-01-29T19:21:43
|
|
scanner: speed up token position -> location using a cache
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
26807a90
|
2025-01-28T20:24:05
|
|
scanner: compute token line/column lazily on errors
The scanner functions are hot, and the line/column location tracking is
quite expensive. We only use it for errors, which don't need to be fast,
because we bail if there are too many; and for warnings, which are
usually not shown by default. So only keep the token start pos, and
compute the line/column lazily from that. This will also allow some
further improvements ahead.
bench/rulescomp
before: compiled 1000 keymaps in 1.669028s
after: compiled 1000 keymaps in 1.550411s
bench/compose:
before: compiled 1000 compose tables in 2.145217s
after: compiled 1000 compose tables in 2.016044s
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
3249223f
|
2025-01-30T07:58:20
|
|
test: Add check for keymap and compose compilation logs
|
|
502e9e5b
|
2025-01-29T12:19:10
|
|
xkbcomp: Add stricter bounds for keycodes and levels
Our current implementation uses continuous arrays indexed by keycodes
and levels. This is simple and good enough for realistic keymaps.
However, they are allowed to have big values that will lead to either
memory exhaustion or a waste of memory (sparse arrays).
Added the much stricter upper bounds `0xfff` for keycodes[^1] and 2048
for levels[^2], which should still be plenty enough and provides stronger
memory security.
[^1]: Current max keycode is 0x2ff in Linux.
[^2]: Should be big enough to satisfy automatically generated keymaps.
|
|
307ce5a7
|
2025-01-29T00:25:23
|
|
test/compose: reduce quickcheck iterations
They're a *bit* too slow for interactive test runs when running in
debug+sanitizers.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
ff2ac493
|
2025-01-29T06:59:48
|
|
tests: Fix deprecated keysyms in Compose data
The data set is big enough so we can just drop most sequences with
deprecated keysyms and fix most keysyms an alternative non-deprecated
name.
We keep a handful of them for testing purpose.
|
|
c85c9bdc
|
2025-01-27T17:15:06
|
|
symbols: Allow levels with different keysyms and actions counts
Contrary to groups, there is no reason for levels to restrict the same
count of keysyms and actions.
|
|
27ac30b2
|
2025-01-27T17:13:44
|
|
symbols: Normalize levels by dropping NoSymbol & NoAction
|
|
c12df477
|
2025-01-28T18:52:55
|
|
tests: Reactivate the Python test suite for Linux
|
|
bcb16d29
|
2025-01-28T13:19:06
|
|
tools: Miscellaneous enhancements
|
|
b168623c
|
2025-01-28T13:24:14
|
|
tools: Enable using keymap file as a positional argument
|
|
313001ce
|
2025-01-28T13:48:02
|
|
tools: Add --keymap alias and enable loading keymap files
Add `--keymap` as a more intuitive alias to `--from-xkb`; it also makes
it consistent with `interactive-evdev`. It optionally accepts a keymap
file path; if the argument is empty or `-` then the keymap is read from
`stdin`.
|
|
ae473f9f
|
2025-01-28T09:25:33
|
|
tools: Fix return code of compile-keymap
Previously when using `--keymap` we mistakenly returned a boolean so
that `true` (resp. false) translated to `EXIT_FAILURE` (resp.
`EXIT_SUCCESS`).
Fixed by returning the proper return code integer.
|
|
af5704dc
|
2025-01-25T11:01:03
|
|
state: Fix empty level not breaking latches
In essence empty levels are levels with just a `NoSymbol` keysym and
a `NoAction()`, which breaks latches.
Fixed regression introduced in fdf2c525977e7e8af4135d593110f5bc1454abd8.
Added tests also for the case where the keycode is unknown.
|
|
7a08b145
|
2025-01-24T11:10:17
|
|
tests: Modifier and group latch
- Added a big bunch of tests for modifier latch. No yet exhaustive,
but should cover the most usual use cases.
- Added missing test cases for breaking the group latch. Ideally, more
tests should be added to match the coverage of modifiers latches.
WARNING: it is ambiguous what prevents a latch when multiple keys are
*simultenously* operated together. We currently assuming that
any action that is not identical to the considered latch
prevents it.
|
|
a5bdb954
|
2025-01-24T20:08:01
|
|
tools: Fix signed literal used as a mask
|
|
4ac22263
|
2025-01-16T23:22:40
|
|
keysyms: Check clashes between keysyms names and keywords
Due to how our parser is implemented, keysyms names that are also valid
keywords require special handling.
Added a check for these clashes in the keysym generator. The only
current clash, `section`, is already handled. Note that it means that
e.g. `section`, `Section` and `sEcTiOn` all parse to the same keysym.
This side effect is fine here, because *currently* there is no other
keysym that clashes with any possible of the case variation of `section`.
But in order to be extra cautious, we now test thoses clashes too.
Hopefully we will never have a clash again, but while it is unlikely
that we modify the keywords, the keysyms are not a frozen set.
|
|
a2c9b6b4
|
2025-01-22T16:57:54
|
|
x11: Make assumption explicit
|
|
fc3c8cfd
|
2025-01-22T16:56:45
|
|
Replace STATIC_INSERT with official C11 static_assert
|
|
3ee08251
|
2025-01-22T16:50:19
|
|
clang-tidy: Fix possible leak
|
|
357ab0cb
|
2025-01-23T16:42:30
|
|
clang-tidy: Fix missing default case in switch statement
|
|
842497d9
|
2025-01-22T16:46:11
|
|
clang-tidy: Fix implicit or incorrect integer casts
|
|
5389a31e
|
2025-01-22T17:33:03
|
|
clang-tidy: Use memcpy instead of the insecure strcpy
|
|
b76617e6
|
2025-01-22T16:42:47
|
|
clang-tidy: Various fixes related to IO
|
|
53b3f446
|
2025-01-22T17:43:53
|
|
clang-tidy: Fix headers includes
|
|
0c940827
|
2025-01-22T16:39:35
|
|
clang-tidy: Macro arguments should be enclosed in parentheses
|
|
c6b29f9f
|
2025-01-22T16:17:38
|
|
Add .clang-tidy
|
|
7c124fd9
|
2025-01-22T17:20:04
|
|
rules: Fix incrementing a variable in a complex condition
|
|
818b1b6b
|
2025-01-22T17:19:41
|
|
symbols: Simplify GetGroupIndex call
|
|
88a3d3c2
|
2025-01-23T16:03:51
|
|
tests: Refactor buffercomp
Move tests into proper functions and log tests names.
|
|
b1e1aae6
|
2025-01-23T15:20:44
|
|
xkbcomp: Fix memory leak when extra content after keymap
It triggers with e.g.:
```
xkb_keymap { xkb_keycodes { }; };
}; // erroneous
```
|
|
709027ec
|
2025-01-23T09:12:15
|
|
symbols: Fix inconsistent error handling
Currently the following keymap triggers a critical error (invalid
`vmods`) only for the second key statement, while it should handle both
equally.
```
xkb_keymap {
xkb_keycodes { <> = 9; };
xkb_types { };
xkb_compat { };
xkb_symbols {
key <> { vmods = [], repeats = false };
key <> { repeats = false, vmods = [] };
};
};
```
Fixed by parsing the whole symbols body and failing if any error was found.
|
|
ec2915fe
|
2025-01-22T17:18:21
|
|
symbols: Fix a possible null pointer deference
Introduce a new Expression type, `EXPR_EMPTY_LIST`, to avoid the
ambiguity between action and keysym empty lists. Two alternatives were
rejected to keep the semantics clear:
- Using `EXPR_KEYSYM_LIST`: because we would end up accepting an empty
keysym list while processing actions.
- Using NULL: convey no info and is hazardous.
|
|
9b7466cf
|
2025-01-21T16:02:55
|
|
atom: Fix missing return value in atom_intern
Ensure all control paths return a value.
|
|
425dc634
|
2025-01-21T15:40:33
|
|
Fix some implicit integers casts
|
|
9ef45dc5
|
2025-01-21T19:55:47
|
|
Fix incompatible pointer types with enums
The enum casts can possibly lead to unaligned access.
The warnings trigger in the Windows CI but not on Linux. One may use
`-fshort-enums` with gcc in order to trigger the errors.
|
|
b1aecd47
|
2025-01-21T17:51:56
|
|
actions: Fix SwitchScreen screen value range
Currently we accept values of -255..255 while parsing the screen value
of `SwitchScreen` actions`, but then we silently cast it against `int8_t`,
i.e. in range -128..127.
We actually do as xkbcomp, but this seems a bug because the target storage
is a `char`. Let’s simply raise a parse error if the value does not fit
in our type.
|
|
4b0209df
|
2025-01-21T07:26:33
|
|
bench: Fix embedded directive within macro arguments
Embedding a directive within macro arguments has undefined behavior.
|
|
e74e9cbc
|
2025-01-21T10:53:18
|
|
meson: change warning level 2 -> 3
Who doesn't like more warnings? :)
In gcc/clang, 3 adds -Wpedantic, which sucks, so we turn it off. So no
difference there.
On msvc, it turns on "level 4 informational warnings that aren't off by
default" and is recommended[0].
[0] https://learn.microsoft.com/en-us/cpp/build/reference/compiler-option-warning-level
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
2f0bc3e0
|
2025-01-21T10:51:45
|
|
meson: show compiler id in summary
Useful for seeing whether the compiler is gcc, clang, etc.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
38557e5b
|
2025-01-21T10:49:06
|
|
meson: remove explicit `b_lundef=true`
It is already the default.
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
26069b76
|
2025-01-21T10:48:28
|
|
xkbcomp/parser: silence a set but unused warning
```
libxkbcommon.so.0.7.0.p/parser.c:1632:9: warning: variable '_xkbcommon_nerrs' set but not used [-Wunused-but-set-variable]
1632 | int yynerrs = 0;
```
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
8c071403
|
2025-01-21T10:40:03
|
|
test/keysym: fix comparison of integers of different signs
```
../test/keysym.c:320:9: warning: comparison of integers of different signs: 'int' and 'unsigned long' [-Wsign-compare]
320 | U16_APPEND(cp_string, offset, ARRAY_SIZE(cp_string), cp, isError);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/unicode/utf16.h:396:47: note: expanded from macro 'U16_APPEND'
396 | } else if((uint32_t)(c)<=0x10ffff && (i)+1<(capacity)) { \
| ~~~~~^ ~~~~~~~~
```
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
91e58f0e
|
2025-01-21T10:38:35
|
|
test/registry: remove unused function
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
2a60432e
|
2025-01-21T10:25:55
|
|
test/xvfb-wrapper: remove unused code
Signed-off-by: Ran Benita <ran@unusedvar.com>
|
|
db5e6d30
|
2025-01-21T11:35:57
|
|
registry: Refactor to avoid hazardous casts
Inline `rxkb_object_unref` for each type and remove the `destroy` field.
|
|
c0762c49
|
2025-01-20T16:33:50
|
|
keymap: Fix buffer unnecessary written twice
When dumping the keymap, we first try to write to the buffer and get
the min size requirement. Then we reallocate if necessary. However, we
should not write it again if we got enough space previously!
|
|
ddb731ce
|
2025-01-20T18:01:08
|
|
bench: Add xkb_keymap_get_as_string
Based on the `compile-keymap` benchmark.
|
|
24fe4bac
|
2025-01-20T16:31:44
|
|
Fix undefined behaviours with NULL pointer
Issues detected by the sanitizers:
- fix indexing NULL pointer
- fix zero offset to NULL pointer
|
|
454b18f5
|
2025-01-20T14:04:49
|
|
ci: Enable sanitizers for Linux
Since `asan` and `ubsan` overlap Valgrind, we run separate pipelines
for each.
Enable only for gcc for now, as we could not make it work with clang.
|
|
8d0df44a
|
2025-01-15T19:11:58
|
|
text: Ensure mod mask can always be printed entirely
|
|
b0d9a790
|
2025-01-15T12:03:10
|
|
vmods: Fix explicit vmods not dumped
|
|
11140ded
|
2025-01-10T13:58:39
|
|
Use test map for checking --version-script, instead of full map
Various problems can occur when using the full `xkbcommon.map` file when
checking whether the `--version-script` linker option works in
`meson.build`.
For instance, newer linkers typically complain about non-existing
symbols, so in commit ebe4157 `--undefined-version` was added to work
around that. But then in commit 1d8a25d6 another workaround needed to be
added for older linkers.
It is better to use a minimalistic linker script for testing instead.
The other workarounds can then be removed.
|
|
c7fdf506
|
2025-01-16T20:23:28
|
|
Use portable integer literal suffixes
|
|
e3e44998
|
2025-01-16T20:23:47
|
|
Fix missing or incorrect integer literal suffixes
The correct suffix is required in order to have the expected value
in a portable way.
|
|
3fdd822d
|
2025-01-16T02:21:29
|
|
state: Fix mods not being independently cleared (#584)
The modifiers filters should ensure minimal interaction between them,
but currently the Latch mod filters are overzealous and mess with the
mods from other filters set to be cleared, resulting in some modifiers
permanently set.
Fixed by clearing mods properly with `OR` rather than direct setting
of `state::clear_mods`.
While we are at it, `state::set_mods` should be `OR`ed as well. This
should not have any impact for now, but this is more future-proof.
Fixes #583
Co-authored-by: Jules Bertholet <julesbertholet@quoi.xyz>
Co-authored-by: Pierre Le Marre <dev@wismill.eu>
|