Skip to content

Export internal symbols for shared library builds (#1283)#1284

Merged
ArthurSonzogni merged 1 commit into
mainfrom
fix-internal-symbols
Jun 3, 2026
Merged

Export internal symbols for shared library builds (#1283)#1284
ArthurSonzogni merged 1 commit into
mainfrom
fix-internal-symbols

Conversation

@ArthurSonzogni

Copy link
Copy Markdown
Owner

These symbols are internal to FTXUI (located in src/), but they must be exported when building as shared libraries because of internal dependencies between the screen, dom, and component libraries. This also allows the test suite to link correctly in shared library mode.

@github-actions

github-actions Bot commented May 31, 2026

Copy link
Copy Markdown

⚠️ ABI Compatibility Report

Comparing main (base) with HEAD (PR)

ABI fingerprints changed from 396e5a0e8a1982216fe0c4caadecddd7e19ad609aaff274c118c87d385978fad to da1c90b9f852f08bb50b586bc091f5d83ed48d40698edf2b0941fe2c8a83a5bc.

Detailed ABI Analysis
Checking ABI changes between origin/main and HEAD...
Building origin/main...
Building HEAD...
--------------------------------------------------------------------------------
Comparing libftxui-screen.so...
ABI changes detected for libftxui-screen.so!
  - FORWARD INCOMPATIBLE CHANGES DETECTED.

Summary of changes:
Functions changes summary: 0 Removed, 0 Changed, 11 Added functions
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
11 Added functions:

Detailed Report (filtered for ftxui::):
11 Added functions:
  [A] 'function ftxui::WordBreakProperty ftxui::CodepointToWordBreakProperty(uint32_t)'    {_ZN5ftxui28CodepointToWordBreakPropertyEj}
  [A] 'function bool ftxui::EatCodePoint(std::string_view, size_t, size_t*, uint32_t*)'    {_ZN5ftxui12EatCodePointESt17basic_string_viewIcSt11char_traitsIcEEmPmPj}
  [A] 'function bool ftxui::EatCodePoint(std::wstring_view, size_t, size_t*, uint32_t*)'    {_ZN5ftxui12EatCodePointESt17basic_string_viewIwSt11char_traitsIwEEmPmPj}
  [A] 'function int ftxui::GlyphCount(std::string_view)'    {_ZN5ftxui10GlyphCountESt17basic_string_viewIcSt11char_traitsIcEE}
  [A] 'function size_t ftxui::GlyphIterate(std::string_view, int, size_t)'    {_ZN5ftxui12GlyphIterateESt17basic_string_viewIcSt11char_traitsIcEEim}
  [A] 'function size_t ftxui::GlyphNext(std::string_view, size_t)'    {_ZN5ftxui9GlyphNextESt17basic_string_viewIcSt11char_traitsIcEEm}
  [A] 'function size_t ftxui::GlyphPrevious(std::string_view, size_t)'    {_ZN5ftxui13GlyphPreviousESt17basic_string_viewIcSt11char_traitsIcEEm}
  [A] 'function bool ftxui::IsCombining(uint32_t)'    {_ZN5ftxui11IsCombiningEj}
  [A] 'function bool ftxui::IsControl(uint32_t)'    {_ZN5ftxui9IsControlEj}
  [A] 'function bool ftxui::IsFullWidth(uint32_t)'    {_ZN5ftxui11IsFullWidthEj}
  [A] 'function std::vector<ftxui::WordBreakProperty, std::allocator<ftxui::WordBreakProperty> > ftxui::Utf8ToWordBreakProperty(std::string_view)'    {_ZN5ftxui23Utf8ToWordBreakPropertyESt17basic_string_viewIcSt11char_traitsIcEE}
--------------------------------------------------------------------------------
Comparing libftxui-dom.so...
ABI changes detected for libftxui-dom.so!
  - FORWARD INCOMPATIBLE CHANGES DETECTED.

Summary of changes:
Functions changes summary: 0 Removed, 0 Changed, 2 Added functions
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
Function symbols changes summary: 0 Removed, 0 Added function symbol not referenced by debug info
Variable symbols changes summary: 0 Removed, 3 Added variable symbols not referenced by debug info
2 Added functions:

Detailed Report (filtered for ftxui::):
2 Added functions:
  [A] 'method virtual void ftxui::NodeDecorator::ComputeRequirement()'    {_ZN5ftxui13NodeDecorator18ComputeRequirementEv}
    note that this adds a new entry to the vtable of class ftxui::NodeDecorator
  [A] 'method virtual void ftxui::NodeDecorator::SetBox(ftxui::Box)'    {_ZN5ftxui13NodeDecorator6SetBoxENS_3BoxE}
    note that this adds a new entry to the vtable of class ftxui::NodeDecorator
--------------------------------------------------------------------------------
Comparing libftxui-component.so...
No ABI changes detected for libftxui-component.so.
--------------------------------------------------------------------------------
ABI changes detected between origin/main and HEAD.

@ArthurSonzogni ArthurSonzogni force-pushed the fix-internal-symbols branch 3 times, most recently from ceff73a to 8b6c740 Compare June 3, 2026 06:45
These symbols are internal to FTXUI (located in src/), but they must be
exported when building as shared libraries because of internal
dependencies between the screen, dom, and component libraries.

- SCREEN symbols in string_internal.hpp are used by COMPONENT.
- DOM symbols in node_decorator.hpp are used by COMPONENT.

Also:
- Bump minor version to 6.2.0 due to ABI changes.
- Update tools/abi_fingerprint.txt.
- Fix Meson build for Windows and shared library mode by setting
  necessary export definitions.
@ArthurSonzogni ArthurSonzogni force-pushed the fix-internal-symbols branch from 8b6c740 to 38a56b8 Compare June 3, 2026 07:12
@ArthurSonzogni ArthurSonzogni merged commit a15d56c into main Jun 3, 2026
20 of 21 checks passed
@ArthurSonzogni ArthurSonzogni deleted the fix-internal-symbols branch June 3, 2026 16:46
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

Successfully merging this pull request may close these issues.

1 participant