Upstream update available: harfbuzz 11.4.1 → 14.2.0 #2
Labels
No labels
ai-summary
bot
needs-build
needs-triage
priority/high
update/major
upstream-update
upstream/github
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
rpms/harfbuzz#2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Upstream update available:
harfbuzz11.4.1→14.2.0Package
harfbuzzharfbuzzniceos-5.211.4.1-1majorpython_rpmleafgithub-upstreamUpstream
githubharfbuzz/harfbuzz14.2.014.2.0github_release_latest2026-04-20T03:15:55ZFalseSignals
FalseFalse-ai-summary, bot, needs-build, needs-triage, priority/high, update/major, upstream-update, upstream/githubNiceSOFT AI preliminary analysis
1. Краткий вывод
Это мажорное обновление библиотеки HarfBuzz с версии 11.4.1 до 14.2.0, включающее стабилизацию экспериментальных GPU, векторных и растровых подсистем. Обновление сопровождается значительными изменениями в API (возвращаемые типы функций, новые методы, переименования) и удалением устаревших функций.
2. Риск для НАЙС.ОС
high. Обновление является мажорным (major), что подразумевает потенциально несовместимые изменения ABI/API. Библиотека широко используется как зависимость для многих приложений (например, LibreOffice, браузеры), поэтому любые изменения в публичном API могут вызвать крах или ошибки времени выполнения у пользователей дистрибутива.
3. Security/CVE
Во входных данных отсутствуют явные указания на наличие уязвимостей (security_keywords_detected_by_script: False). Упоминание "fuzzer fixes" указывает на исправление потенциальных проблем безопасности, но конкретных CVE или описаний эксплойтов в тексте релиз-нотов нет.
4. ABI/API риск
Критический уровень риска. В релиз-нотах детально описаны изменения, влияющие на бинарную совместимость и контракт разработчика:
hb_gpu_draw_glyph(),hb_vector_draw_glyph(),hb_raster_draw_glyph()и их аналоги для paint теперь возвращаютvoidвместоhb_bool_t. Это требует изменения кода всех потребителей, ожидающих проверку успеха операции.hb_gpu_draw_get_extents()удалена, её функционал перенесён в параметр выхода другой функции.hb_gpu_draw_darken()->hb_gpu_stem_darken(), а также изменения в именах функций для векторной подсистемы.constк аргументам и переход на указатели на контекст вместо глобальных синглтонов для получения функций отрисовки.push_clip_path_start/end) меняет логику работы с путями.5. Риск для RPM-сборки
bool, могут начать проваливаться.6. Проверки мейнтейнера
harfbuzz(RPM-дерево зависимостей), особенно те, которые сами являются библиотеками или имеют публичный API.hb.hи связанные) для подтверждения списка измененных функций.harfbuzz, в изолированной среде.%check) для зависимых пакетов, обращая внимание на ошибки компиляции или падения при запуске.harfbuzz, и актуализировать их.7. Рекомендация
blocked manual review
8. Основание рекомендации
Несмотря на то, что обновление полезно и содержит важные улучшения (стабилизация GPU/Vektor), мажорный скачок версии с фундаментальными изменениями сигнатур API (изменение возвращаемых типов, удаление функций, переименования) создает высокий риск поломки зависимых пакетов и приложений в дистрибутиве. Автоматическое обновление недопустимо. Требуется тщательная ручная проверка всех зависимых пакетов и, при необходимости, внесение корректирующих патчей или ожидание следующего минорного выпуска, если текущий критичен для стабильности.
Upstream release notes / description
In this release, the experimental raster, vector, and GPU libraries went through several rounds of code review and cleanup to make sure they follow the high standards expected of HarfBuzz code. The API has also been extensively reviewed based on experience gained from using these libraries. We consider the code and API to be ready for stabilization, and we expect to graduate them from experimental in the near future. If you are using or planning to use these libraries and have any concerns about the API, it is time to raise them. Once a library is deemed stable, we will never change the API or ABI in an incompatible way.
GPU library:
hb_gpu_paint_twalks a font's paint tree (COLRv0 or COLRv1) and encodes its layers (solid fills, linear / radial / sweep gradients, transforms, composite groups) into a compact blob.A new fragment-shader function
hb_gpu_paint()renders the blob in premultiplied RGBA; monochrome glyphs are handled transparently via a synthesized foreground-colored layer.Shader sources provided in GLSL, WGSL, MSL, and HLSL.
unsupportedand returnsNULLwhennum_opswould exceed 32767,push_groupnests deeper than 4, or the paint tree calls back through the image callback (PaintImage).Nested glyph clips are intersected up to 3 levels; a few composite modes use approximate fallbacks;
push_clip_rectangleis silently ignored.get_extents()is gone.is_foreground) now correctly preserves the paint-tree alpha from the encoded color data instead of discarding it.--draw/--paintflags with per-font auto-detect, and--output-file/-ofor headless single-frame rendering to a PPM image.Vector library:
hb_vector_paint_set_svg_prefix).<defs>/<use>caching._glyph()functions are now thin convenience wrappers documented as equivalent expansions of the underlying font draw/paint API.Raster library:
Across Draw / Paint subsystems:
_reset()methods gain matching_clear()companions that drop accumulated data while preserving user configuration. Getter companions added for setters across raster, vector, and gpu types.Various fuzzer fixes for raster, vector, and GPU libraries.
Paint API:
hb_paint_push_clip_path_start/_endlet callers clip to a caller-supplied outline, not just a font glyph.push_clip_path_start()returns the draw-funcs (and matching draw data) for the backend’s path accumulator; the caller driveshb_draw_*()into it, then callspush_clip_path_end(), followed by painted ops, thenhb_paint_pop_clip()to release the clip. Implemented for all paint backends: vector (SVG defs + clipPath + url ref), vector PDF (q / path / W n), raster (path rendered to an alpha mask, intersected with the current clip), and GPU (the path is encoded into a Slug sub-blob so the fragment shader clips against it the same way it clips against glyph outlines).Shaping:
Changed API
GPU library:
hb_gpu_draw_glyph()now returnsvoid(washb_bool_t). Usehb_gpu_draw_glyph_or_fail()if you need the success status.hb_gpu_paint_glyph()now returnsvoid(washb_bool_t) and internally synthesizes a foreground-colored layer for non-color glyphs viahb_font_paint_glyph(), so every glyph with an outline produces output. Usehb_gpu_paint_glyph_or_fail()(which delegates tohb_font_paint_glyph_or_fail()) if you need to distinguish color vs synthesized paint. Encoder-level limits (unsupported ops, group-stack overflow) no longer fail paint_glyph; they surface fromhb_gpu_paint_encode()returningNULL.hb_gpu_draw_encode()now takes anextentsout-parameter and auto-clears the encoder on return.hb_gpu_draw_darken()renamed tohb_gpu_stem_darken().Vector library:
hb_vector_svg_set_precision()and its paint counterpart renamed tohb_vector_draw_set_precision()/hb_vector_paint_set_precision()(SVG-specific naming is inaccurate with the PDF backend added).hb_vector_draw_glyph()/hb_vector_paint_glyph()now returnvoid(werehb_bool_t). Paint additionally gains a draw fallback for non-color glyphs. Use the matching_or_fail()variants for thehb_bool_treturn.Raster library:
hb_raster_draw_glyph()/hb_raster_paint_glyph()now returnvoid(werehb_bool_t). Paint additionally gains a draw fallback for non-color glyphs. Use the matching_or_fail()variants for thehb_bool_treturn.General:
hb_raster_draw_get_funcs (const hb_raster_draw_t *)`
hb_ras
...[truncated 3718 chars]
NiceOS maintainer checklist
Versionand related fields inSPECS/*.speconly if policy allows it.SOURCES/sources.lock.json, manifests, metadata and SBOM.Bot metadata
niceos_upstream_monitor.py 1.42026-04-27T22:14:42Z