Story: Symbol visibility migration

Table of Contents

This page documents a story in Sprint 17. It captures the goal, current status, acceptance criteria, and the tasks that compose it.

Goal

Apply -fvisibility=hidden globally so that only explicitly exported symbols cross the shared-library boundary. Fix every missing EXPORT macro, break cross-plugin compile-time dependencies, and build CLI and shell as static libraries so they link cleanly on Windows.

Status

Field Value
State DONE
Parent sprint Sprint 17
Now Completed 2026-05-21.
Waiting on None.
Next None.
Last touched 2026-05-21

Acceptance

  • All tasks complete; PR-by-PR breakdown in git log.

Tasks

Task State Start End Description
Task: [cmake] Symbol visibility migration: -fvisibility=hidden across all shared libraries DONE 2026-05-22 2026-05-22 - Applies `-fvisibility=hidden` to all 18 shared library targets and removes the `CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS` glob
Task: Fix missing export symbol definitions in trading.api and trading.core DONE 2026-05-22 2026-05-22 - PR #738 added `ORES_X_LIBRARY` compile definitions and visibility flags to 43 libraries but missed `ores.trading.api`
Task: [qt] Break cross-plugin symbol dependencies (plugin isolation phase 1) DONE 2026-05-22 2026-05-22 - Add `IBusinessUnitBrowser` abstract interface to `ores.qt.api`; `BusinessUnitController` implements it. `OrgExplorerMd
Task: [shell] Build ores.shell.lib as STATIC to fix Windows plugin DLL link DONE 2026-05-22 2026-05-22 Hotfix for the Windows `Continuous Windows` workflow on `main`, which has been failing all four configurations (msvc/cla
Task: [cli] Build ores.cli.lib as a static library DONE 2026-05-22 2026-05-22 - Fixes Windows link error: `undefined symbol: ores::cli::app::host::execute`
Task: [shell] Fix missing ORES_SHELL_EXPORT on host class (Windows linker error) DONE 2026-05-22 2026-05-22 - `ores:::app::host` was missing the `ORES_SHELL_EXPORT` macro, so `host::execute` was not exported from the `ores
Task: Add export macro to parser class for DLL visibility DONE 2026-05-22 2026-05-22 Add the `ORES_REFDATA_SERVICE_EXPORT` macro to the `parser` class declaration to ensure proper symbol visibility when bu

Decisions

Static CLI and shell
building ores.cli.lib and ores.shell.lib as STATIC avoids Windows DLL export count limits and simplifies the link graph.
Plugin isolation phase 1
cross-plugin compile-time dependencies were broken explicitly in a dedicated PR; runtime dependencies via plugin APIs are retained.

Out of scope

  • Full plugin runtime isolation (deferred to v1).

See also

Emacs 29.1 (Org mode 9.6.6)