Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prepare release 1.8 #548

Open
3 tasks
wismill opened this issue Nov 29, 2024 · 2 comments
Open
3 tasks

Prepare release 1.8 #548

wismill opened this issue Nov 29, 2024 · 2 comments
Milestone

Comments

@wismill
Copy link
Member

wismill commented Nov 29, 2024

We have already quite a few new features and MR are stalled, let’s cut a release.

This is our current changelog for 1.8:

libxkbcommon 1.8 - 2024-11-29

API

Breaking changes

  • Updated keysyms case mappings to cover full Unicode 16.0. This change
    provides a consistent behavior with respect to case mappings, and affects
    the following:

    • xkb_keysym_to_lower() and xkb_keysym_to_upper() give different output
      for keysyms not covered previously and handle title-cased keysyms.

      Example of title-cased keysym: 0x10001f2 (U+01F2 “Dz”):

      • xkb_keysym_to_lower(0x10001f2) == 0x10001f3 (U+01F3 “dz”)
      • xkb_keysym_to_upper(0x10001f2) == 0x10001f1 (U+01F1 “DZ”)
    • Implicit alphabetic key types are better detected, because they use the
      latest Unicode case mappings and now handle the title-cased keysyms the
      same way as upper-case ones.

    Note: As before, only simple case mappings (i.e. one-to-one) are supported.
    For example, the full upper case of U+01F0 “ǰ” is “J̌” (2 characters: U+004A
    and U+030C), which would require 2 keysyms, which is not supported by the
    current API.

New

  • Implement the GroupLatch action, usually activated with the keysym ISO_Group_Latch. (#455.group-latch)

  • symbols: Added support for multiple actions per levels:

    • 1 keysym == 1 action now holds for every keysym count.
    • When no action is specified, interpret statements are used to find an action corresponding for each keysym, as expected.
    • When both keysyms and actions are specified, they should have the exact same count for each level.
    • For now, at most one action of each following categories is allowed per level:
      • modifier actions: SetMods, LatchMods, LockMods;
      • group actions: SetGroup, LatchGroup, LockGroup.
        Some examples:
      • SetMods + SetGroup: ok
      • SetMods + SetMods: error
      • SetMods + LockMods: error
      • SetMods + LockGroup: ok

    (#486.multiple-actions-per-level)

  • rules: Use XKB paths to resolve relative paths in include statements. (#501.rules-includes)

    • Updated keysyms using latest [xorgproto] (commit: d7ea44d5f04cc476dee83ef439a847172f7a6bd1):

      Additions:

      • XKB_KEY_XF86RefreshRateToggle
      • XKB_KEY_XF86Accessibility
      • XKB_KEY_XF86DoNotDisturb

      Relevant upstream merge request: xorgproto-91.

  • Added deprecated keysym warnings:

    • name deprecation (typo, historical alias), reporting the reference name;
    • keysym deprecation (ambiguous meaning, all names deprecated).

    These warnings are activated by setting the log verbosity to at least 2.

    It is advised to fix these warnings, as the deprecated items may be removed in a
    future release.

  • Added the following modifiers names definitions in xkbcommon-names.h:

    • XKB_MOD_NAME_MOD1
    • XKB_MOD_NAME_MOD2
    • XKB_MOD_NAME_MOD3
    • XKB_MOD_NAME_MOD4
    • XKB_MOD_NAME_MOD5
    • XKB_VMOD_NAME_ALT
    • XKB_VMOD_NAME_META
    • XKB_VMOD_NAME_NUM
    • XKB_VMOD_NAME_SUPER
    • XKB_VMOD_NAME_HYPER
    • XKB_VMOD_NAME_LEVEL3
    • XKB_VMOD_NAME_LEVEL5
    • XKB_VMOD_NAME_SCROLL
  • Rules: Added support for special layouts indexes:

    • single: matches a single layout; layout[single] is the same as without
      explicit index: layout.
    • first: matches the first layout/variant, no matter how many layouts are in
      the RMLVO configuration. Acts as both layout and layout[1].
    • later: matches all but the first layout. This is an index range. Acts as
      layout[2] .. layout[4].
    • any: matches layout at any position. This is an index range.

    Also added:

    • the special index %i which correspond to the index of the matched layout.
    • the :all qualifier: it applies the qualified item to all layouts.

    See the documentation
    for further information.

Fixes

  • Previously, setting explicit actions for a group in symbols files made the parser
    skip compatibility interpretations for all the groups in the corresponding key,
    resulting in possibly broken groups with no explicit actions or missing key fields.

    Fixed by skipping interpretations only for groups with explicit actions when parsing
    a keymap and setting relevant fields explicitly when serializing a keymap to a string. (#511.explicit-interp-per-group)

  • registry: Fixed libxml2 global error handler not reset after parsing, which
    could trigger a crash if the corresponding rxkb_context has been freed.

    Contributed by Sebastian Keller. (#529.fix-xml-error-handler)

  • xkb_keymap_new_from_names: Allow only one group per key in symbols sections.
    While the original issue was fixed in xkeyboard-config
    project, the previous handling in libxkbcommon of extra key groups was deemed unintuitive.

    Note: rules resolution may still produce more groups than the input layouts.
    This is currently true for some legacy rules in xkeyboard-config. (#262.only-one-group-per-key)

  • xkb_keysym_to_utf8: Require only 5 bytes for the buffer, as UTF-8 encodes code
    points on up to 4 bytes + 1 byte for the NULL-terminating byte.
    Previous standard RFC 2279
    (1998) required up to 6 bytes per code point, but has been superseded by
    RFC 3629 (2003). (#418)

  • rules: Fix handling of wild card * to match the behavior of libxkbfile.
    Previously * would match any value, even empty one. Now:

    • For model and options: always match.
    • For layout and variant: match any non-empty value.

    (#497)

  • Fixed xkb_keymap_get_as_string truncating the 4 longest keysyms names, such as Greek_upsilonaccentdieresis.

  • The following functions now allow to query also virtual modifiers, so they work
    with any modifiers (real and virtual):

    • xkb_state_mod_index_is_active
    • xkb_state_mod_indices_are_active
    • xkb_state_mod_name_is_active
    • xkb_state_mod_names_are_active
    • xkb_state_mod_index_is_consumed
    • xkb_state_mod_index_is_consumed2
    • xkb_state_mod_mask_remove_consumed

    Warning: they may overmatch in case there are overlappings virtual-to-real
    modifiers mappings.

Tools

New

  • Added --test option to compile-keymap and compile-compose, to enable testing
    compilation without printing the resulting file.

  • Added xkbcli dump-keymap-wayland and xkbcli dump-keymap-x11 debugging tools
    to dump a keymap from a Wayland compositor or a X server, similar to what
    xkbcomp -xkb $DISPLAY - does for X servers.

  • xkbcli how-to-type: added new input formats and their corresponding documentation.

    Unicode code points can be passed in the following formats:

    • Literal character (requires UTF-8 character encoding of the terminal);
    • Decimal number;
    • Hexadecimal number: either 0xNNNN or U+NNNN.

    Keysyms can to be passed in the following formats:

    • Decimal number;
    • Hexadecimal number: 0xNNNN;
    • Name.

Fixes

  • Fixed various tools truncating the 4 longest keysyms names, such as Greek_upsilonaccentdieresis.

Build system

Breaking changes

  • Raised minimal meson version requirement to 0.58.

Fixes

  • Gated the use of --undefined-version in the linker because it breaks on older
    GNU ld. (#481)

There are still a 2 MR initially planned for 1.8:

While I am eager to see both merged, a reasonable option is to cut a release now, even if we cut another one “soon”.

TODO:

  • Decide if we wait for remaining MRs
  • Fix typos in the changelog (i.e. in the fragments)
  • Publish the changelog and delete fragments

Some previous release issues/MRs for reference:

@bluetech @whot

@wismill wismill added this to the 1.8.0 milestone Nov 29, 2024
@wismill
Copy link
Member Author

wismill commented Dec 1, 2024

Hold on, #549 must be fixed before.

EDIT: false alarm.

@bluetech
Copy link
Member

bluetech commented Dec 7, 2024

I will try this week to set up and document the website & release process so that all maintainers can do a release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants