<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>55586</bug_id>
          
          <creation_ts>2025-08-13 10:45:28 +0300</creation_ts>
          <short_desc>Библиотеки не соотвествуют shared library policy</short_desc>
          <delta_ts>2026-10-18 22:25:02 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>wasmtime</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergey Zhidkih">rx1513</reporter>
          <assigned_to>kiper</assigned_to>
          <cc>kiper</cc>
    
    <cc>lav</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>270808</commentid>
    <comment_count>0</comment_count>
    <who name="Sergey Zhidkih">rx1513</who>
    <bug_when>2025-08-13 10:45:28 +0300</bug_when>
    <thetext>https://www.altlinux.org/Shared_Libs_Policy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270809</commentid>
    <comment_count>1</comment_count>
    <who name="Sergey Zhidkih">rx1513</who>
    <bug_when>2025-08-13 10:47:07 +0300</bug_when>
    <thetext>Мне также непонятно отсутствие макросов для сборки растовской части.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270811</commentid>
    <comment_count>2</comment_count>
    <who name="Sergey Zhidkih">rx1513</who>
    <bug_when>2025-08-13 10:55:00 +0300</bug_when>
    <thetext>Можете объяснить как вы собирали этот пакет?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270888</commentid>
    <comment_count>3</comment_count>
    <who name="">kiper</who>
    <bug_when>2025-08-14 13:43:26 +0300</bug_when>
    <thetext>(Ответ для Сергей Жидких на комментарий #2)
&gt; Можете объяснить как вы собирали этот пакет?

В соответствии с https://www.altlinux.org/RPM/Rust и подсматривая, как данный пакет собирался в других дистрибутивах.

(Ответ для Сергей Жидких на комментарий #1)
&gt; Мне также непонятно отсутствие макросов для сборки растовской части.

Прошу простить мою некомпетентность в данном вопросе как человеку, проходящему join. Будет исправлено в следующей сборке.

(Ответ для Сергей Жидких на комментарий #0)
&gt; https://www.altlinux.org/Shared_Libs_Policy

А вот тема баги чуть сложнее, чем может показаться на первый взгляд. В upstream-е wasmtime уже поднимался issue по поводу soname в 2021 году(https://github.com/bytecodealliance/wasmtime/issues/2996).
На текущий момент, насколько я знаю, проблема не решена(хоть issue и закрыт). В документации нет явного указания, что версия ABI wasmtime-c-api привязана к версии самого wasmtime.
В связи с чем можно сделать вывод, что нет явного версионирования ABI, как и определённых гарантий с версионированием основного проекта в отношение API wasmtime-c-api.

Как возможные варианты решения проблемы:
1. Пинать upstream в новой issue, объясняя плюсы soname и версионирования ABI в wasmtime-c-api во второй раз. Возможно приложив PR.
2. В случае, если issue затухнет во второй раз, взвалить версионирование ABI на человека X, которым могу выступить и я, когда руки дойдут до использования в своём личном проекте.

Но эти решения требуют определённого времени, так что сразу предложу временные варианты решения:
1. Оставить как есть. Но я чувствую, что данный вариант не устроит вас и CMake(https://gitlab.kitware.com/cmake/cmake/-/issues/22307#note_971562).
2. Использовать в качестве soname полную версию пакета. Данный вариант уже собран в тестовой задаче #392354(https://git.altlinux.org/tasks/392354).

Эти два временных варианта - две крайности, которые не решают настоящую проблему, описанную в https://www.altlinux.org/Shared_Libs_Policy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270908</commentid>
    <comment_count>4</comment_count>
    <who name="Sergey Zhidkih">rx1513</who>
    <bug_when>2025-08-14 16:21:12 +0300</bug_when>
    <thetext>(Ответ для kiper на комментарий #3)
&gt; (Ответ для Сергей Жидких на комментарий #2)
&gt; &gt; Можете объяснить как вы собирали этот пакет?
&gt; 
&gt; В соответствии с https://www.altlinux.org/RPM/Rust и подсматривая, как
&gt; данный пакет собирался в других дистрибутивах.

Вы пробовали собирать без RUST_MIN_STACK? Если разработчик явно не указал требование к размеру стека при сборке, значит переполнение стека может указывать на проблемы с компилятором. Совсем недавно из-за этого некоторые пакеты периодически падали при сборке.

&gt; (Ответ для Сергей Жидких на комментарий #1)
&gt; &gt; Мне также непонятно отсутствие макросов для сборки растовской части.
&gt; 
&gt; Прошу простить мою некомпетентность в данном вопросе как человеку,
&gt; проходящему join. Будет исправлено в следующей сборке.
&gt; 
Спасибо. Обратите также внимание на используемую лицензию, она имеет дополнительный пункт &quot;LLVM Exceptions to the Apache 2.0 License&quot;. Поскольку у нас нет такой лицензии её нужно паковать вместе с пакетом как &quot;Apache-2.0 with LLVM-exception&quot; по названию используемому в cargo.toml. Можете в качестве примера взять https://packages.altlinux.org/ru/sisyphus/srpms/llvm17.0/specfiles/

&gt; (Ответ для Сергей Жидких на комментарий #0)
&gt; &gt; https://www.altlinux.org/Shared_Libs_Policy
&gt; 
&gt; А вот тема баги чуть сложнее, чем может показаться на первый взгляд. В
&gt; upstream-е wasmtime уже поднимался issue по поводу soname в 2021
&gt; году(https://github.com/bytecodealliance/wasmtime/issues/2996).
&gt; На текущий момент, насколько я знаю, проблема не решена(хоть issue и
&gt; закрыт). В документации нет явного указания, что версия ABI wasmtime-c-api
&gt; привязана к версии самого wasmtime.
&gt; В связи с чем можно сделать вывод, что нет явного версионирования ABI, как и
&gt; определённых гарантий с версионированием основного проекта в отношение API
&gt; wasmtime-c-api.
&gt; 
&gt; Как возможные варианты решения проблемы:
&gt; 1. Пинать upstream в новой issue, объясняя плюсы soname и версионирования
&gt; ABI в wasmtime-c-api во второй раз. Возможно приложив PR.
&gt; 2. В случае, если issue затухнет во второй раз, взвалить версионирование ABI
&gt; на человека X, которым могу выступить и я, когда руки дойдут до
&gt; использования в своём личном проекте.
&gt; 
&gt; Но эти решения требуют определённого времени, так что сразу предложу
&gt; временные варианты решения:
&gt; 1. Оставить как есть. Но я чувствую, что данный вариант не устроит вас и
&gt; CMake(https://gitlab.kitware.com/cmake/cmake/-/issues/22307#note_971562).
&gt; 2. Использовать в качестве soname полную версию пакета. Данный вариант уже
&gt; собран в тестовой задаче #392354(https://git.altlinux.org/tasks/392354).
&gt; 
&gt; Эти два временных варианта - две крайности, которые не решают настоящую
&gt; проблему, описанную в https://www.altlinux.org/Shared_Libs_Policy.
Спасибо за развёрнутый ответ, было очень полезно узнать про проблемы растовских C-подобных библиотек. Очень плохо что upstream не понимает назначение soname.

Оба временных решения являются плохими. Если разработчики не понимают для чего нужен soname, значит и гарантий что будет однозначное соответствие между C API и версией пакета нет. В таком случае ручное задание soname будет надёжнее.

Я считаю стоит всё-таки достучаться до upstream-а и если откажется идти на сотрудничество, то заниматься версионированием самостоятельно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270914</commentid>
    <comment_count>5</comment_count>
    <who name="">kiper</who>
    <bug_when>2025-08-14 17:31:04 +0300</bug_when>
    <thetext>(Ответ для Сергей Жидких на комментарий #4)
&gt; Вы пробовали собирать без RUST_MIN_STACK? 

Да. Насколько я помню, падала сборка на x86. В логах сборки прямым текстом была рекомендация.

&gt; Если разработчик явно не указал
&gt; требование к размеру стека при сборке, значит переполнение стека может
&gt; указывать на проблемы с компилятором. Совсем недавно из-за этого некоторые
&gt; пакеты периодически падали при сборке.

Попробую собрать без RUST_MIN_STACK. По итогу сборки отпишусь сюда. Задача #392457

&gt; Спасибо. Обратите также внимание на используемую лицензию, она имеет
&gt; дополнительный пункт &quot;LLVM Exceptions to the Apache 2.0 License&quot;. Поскольку
&gt; у нас нет такой лицензии её нужно паковать вместе с пакетом как &quot;Apache-2.0
&gt; with LLVM-exception&quot; по названию используемому в cargo.toml. Можете в
&gt; качестве примера взять
&gt; https://packages.altlinux.org/ru/sisyphus/srpms/llvm17.0/specfiles/

Благодарю. Возьму на заметку и исправлю!


&gt; Оба временных решения являются плохими. Если разработчики не понимают для
&gt; чего нужен soname, значит и гарантий что будет однозначное соответствие
&gt; между C API и версией пакета нет. В таком случае ручное задание soname будет
&gt; надёжнее.

Согласен с вами.

&gt; Я считаю стоит всё-таки достучаться до upstream-а и если откажется идти на
&gt; сотрудничество, то заниматься версионированием самостоятельно.

Так и поступлю.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270915</commentid>
    <comment_count>6</comment_count>
    <who name="">kiper</who>
    <bug_when>2025-08-14 17:57:21 +0300</bug_when>
    <thetext>(Ответ для kiper на комментарий #5)
&gt; (Ответ для Сергей Жидких на комментарий #4)
&gt; &gt; Вы пробовали собирать без RUST_MIN_STACK? 
&gt; 
&gt; Да. Насколько я помню, падала сборка на x86. В логах сборки прямым текстом
&gt; была рекомендация.
&gt; 
&gt; &gt; Если разработчик явно не указал
&gt; &gt; требование к размеру стека при сборке, значит переполнение стека может
&gt; &gt; указывать на проблемы с компилятором. Совсем недавно из-за этого некоторые
&gt; &gt; пакеты периодически падали при сборке.
&gt; 
&gt; Попробую собрать без RUST_MIN_STACK. По итогу сборки отпишусь сюда. Задача
&gt; #392457

Этап сборки прошёл. Ошибки переполнения стека не произошла. 
Благодарю за информацию!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270917</commentid>
    <comment_count>7</comment_count>
    <who name="Sergey Zhidkih">rx1513</who>
    <bug_when>2025-08-14 18:02:21 +0300</bug_when>
    <thetext>﷐[U+1F44D]﷑</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285127</commentid>
    <comment_count>8</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2026-04-04 02:20:54 +0300</bug_when>
    <thetext>А чем закончилась сборка?
Хотелось бы увидеть более новую версию (39 хотя бы)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302728</commentid>
    <comment_count>9</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2026-10-17 22:20:38 +0300</bug_when>
    <thetext>Переработку из ветки people/kiper/packages/wasmtime (SONAME, подпакеты common и docs, ExcludeArch %ix86) перенёс в обновление 49.0.3-alt1, таск #437259.

Библиотека теперь libwasmtime.so.49 (только мажорная версия: патч-выпуски wasmtime совместимы), пакет libwasmtime49 с Obsoletes старого libwasmtime. Спасибо за подготовленную работу. Задачу #392457 (43.0.1) можно удалить.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302764</commentid>
    <comment_count>10</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2026-10-18 22:25:02 +0300</bug_when>
    <thetext>wasmtime-49.0.3-alt1 -&gt; sisyphus:

Fri Oct 16 2026 Vitaly Lipatov &lt;lav@altlinux.ru&gt; 49.0.3-alt1
- new version 49.0.3
- exclude i586 build (rustc runs out of memory on 32-bit)
- build libwasmtime with SONAME libwasmtime.so.49 and package it as libwasmtime49
  according to Shared Libs Policy (closes: #55586)
- add common (license) and docs subpackages, make examples noarch
- use Rust macros (added BuildRequires: rpm-macros-rust),
  fix License (Apache-2.0 with LLVM-exception)
- added BuildRequires: gcc-c++ (cpp.req for the C++ API headers)
- package C API headers in libwasmtime-devel (only conf.h was packaged)
- based on the work of Korney Gedert (thanks to kiper@)
- security fixes:
  + CVE-2026-34941, GHSA-hx6p-xpx3-jvvv: fix heap OOB read in UTF-16 to latin1+utf16 string transcoding.
  + CVE-2026-34942, GHSA-jxhv-7h78-9775: fix panic when transcoding misaligned utf-16 strings.
  + CVE-2026-34943, GHSA-m758-wjhj-p3jq: fix panic when lifting flags component value.
  + CVE-2026-34944, GHSA-qqfj-4vcm-26hv: fix segfault or out-of-sandbox load with f64x2.splat on x86-64.
  + CVE-2026-34945, GHSA-m9w2-8782-2946: fix host data leakage with 64-bit tables and Winch.
  + CVE-2026-34946, GHSA-q49f-xg75-m9xw: fix host panic when Winch executes table.fill.
  + CVE-2026-34971, GHSA-jhxm-h53p-jm7w: fix miscompiled guest heap access (sandbox escape) on aarch64 Cranelift.
  + CVE-2026-34983, GHSA-hfr4-7c6c-48w2: fix use-after-free after cloning wasmtime::Linker.
  + CVE-2026-34987, GHSA-xx5w-cvp6-jv83: fix sandbox-escaping memory access with Winch on aarch64.
  + CVE-2026-34988, GHSA-6wgr-89rj-399p: fix data leakage between pooling allocator instances.
  + CVE-2026-35186, GHSA-f984-pcp8-v2p7: fix improperly masked table.grow return value with Winch.
  + CVE-2026-35195, GHSA-394w-hwhg-8vgm: fix out-of-bounds write or crash when transcoding component model strings.
  + CVE-2026-44216, GHSA-p8xm-42r7-89xg: fix panic when allocating a table exceeding host address space.
  + GHSA-32h6-97mm-8q3c: fix stack buffer overflow from unvalidated async-lifted callback result count.
  + GHSA-hgjw-h833-99q9: fix stores mixing up type indices between engines.
  + GHSA-jqpg-j7w6-42pr: fix dynamic record lifting allocating beyond hostcall fuel limit.
  + GHSA-q554-3cjc-rx7p: fix component-model handle tables not charged to any limit.
  + GHSA-vcg5-q8m5-8379: fix async-entrypoint requirement enforcement.
  + GHSA-vqjp-4c8c-hfgg: fix filesystem sandbox escape via trailing slashes in paths or symlinks.
  + GHSA-wjc8-633q-pwxr: fix stack overflow dropping a long chain of recursive types.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>