Dear all,

I am pleased to announce the release of libxkbcommon 1.12.0:

https://github.com/xkbcommon/libxkbcommon/tree/xkbcommon-1.12.0

The highlight of this release is the performance improvements for keymap 
handling:
- about 1.6× speedup at *serializing* with default options;
- about 1.7× speedup at *parsing* keymaps serialized by libxkbcommon, otherwise
  at least 1.1×.


Changelog
---------

## API

### Breaking changes

- `xkb_keymap_get_as_string()` does not pretty-print the keymap anymore.
  Use `xkb_keymap_get_as_string2()` with `XKB_KEYMAP_SERIALIZE_PRETTY`
  to get the previous behavior.
  ([#640](https://github.com/xkbcommon/libxkbcommon/issues/640))
- `xkb_keymap_get_as_string()` does not serialize *unused* types and
  compatibility entries anymore. Use `xkb_keymap_get_as_string2()`
  with `XKB_KEYMAP_SERIALIZE_KEEP_UNUSED` to get the previous behavior.
  ([#769](https://github.com/xkbcommon/libxkbcommon/issues/769))
- Updated keysyms case mappings to cover full <strong>[Unicode 17.0]</strong>.

[Unicode 17.0]: https://www.unicode.org/versions/Unicode17.0.0/

### Deprecated

- Deprecated keysyms from latest [xorgproto]
    \(commit: `81931cc0fd4761b42603f7da7d4f50fc282cecc6`, [xorproto-103]):

  - `XKB_KEY_XF86BrightnessAuto` (use `XKB_KEY_XF86MonBrightnessAuto` instead)

[xorproto-103]: 
https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/103

### New

- Added `xkb_keymap_get_as_string2()`, which enables to configure
  the serialization.
- Added keysyms from latest [xorgproto]
    \(commit: `81931cc0fd4761b42603f7da7d4f50fc282cecc6`, [xorproto-103]):

  - `XKB_KEY_XF86Sport`
  - `XKB_KEY_XF86MonBrightnessAuto` (alias for `XKB_KEY_XF86BrightnessAuto`)
  - `XKB_KEY_XF86LinkPhone`
  - `XKB_KEY_XF86Fn_F1`
  - `XKB_KEY_XF86Fn_F2`
  - `XKB_KEY_XF86Fn_F3`
  - `XKB_KEY_XF86Fn_F4`
  - `XKB_KEY_XF86Fn_F5`
  - `XKB_KEY_XF86Fn_F6`
  - `XKB_KEY_XF86Fn_F7`
  - `XKB_KEY_XF86Fn_F8`
  - `XKB_KEY_XF86Fn_F9`
  - `XKB_KEY_XF86Fn_F10`
  - `XKB_KEY_XF86Fn_F11`
  - `XKB_KEY_XF86Fn_F12`
  - `XKB_KEY_XF86Fn_1`
  - `XKB_KEY_XF86Fn_2`
  - `XKB_KEY_XF86Fn_D`
  - `XKB_KEY_XF86Fn_E`
  - `XKB_KEY_XF86Fn_F`
  - `XKB_KEY_XF86Fn_S`
  - `XKB_KEY_XF86Fn_B`
  - `XKB_KEY_XF86PerformanceMode`
- Enable to parse the full range of keycodes `0 .. 0xfffffffe`, which was
  previously limited to `0 .. 0xfff`.
  ([#849](https://github.com/xkbcommon/libxkbcommon/issues/849))
- Compose: Custom locales now fallback to `en_US.UTF-8`. Custom locales 
requiring
  a dedicated Compose file are not yet supported. The workaround is to use the
  various ways to [specify a user Compose file].

  [specify a user Compose file]: 
https://xkbcommon.org/doc/current/group__compose.html


## Tools

### New

- `xkbcli {compile-keymap,dump-keymap*}`: Added `--no-pretty` to disable 
pretty-printing in
  keymap serialization. 
([#640](https://github.com/xkbcommon/libxkbcommon/issues/640))
- `xkbcli {compile-keymap,dump-keymap*}`: Added `--keep-unused` to not discard
  unused bit for keymap serialization. 
([#769](https://github.com/xkbcommon/libxkbcommon/issues/769))
- `xkbcli-compile-keymap`: Added `--kccgst-yaml` to output KcCGST components in
  YAML format.


## Build system

### Breaking changes

- The *default* XKB root directory is now set from the *most recent*
  
[xkeyboard-config](https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config)
  installed package, in case [multiple 
versions](https://xkeyboard-config.freedesktop.org/doc/versioning/)
  are installed in parallel.
  If no such package is found, it fallbacks to the historical X11 directory, as 
previously.


Git tag:
--------

git tag: xkbcommon-1.12.0
git commit: f4e247e50dd4d06542c5e177cfe53f82dfab69b6

Cheers, Pierre Le Marre (aka Wismill)

Reply via email to