Story: Hotfix: ores.shell tests fail to link on Windows

Table of Contents

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

Goal

The Continuous Windows workflow fails linking ores.shell.tests.exe (windows-clang-release-ninja): the test binary references parse_args, parsed_args::flag_set and the rest of the new command_args / command_feedback / script_runner surface, but those declarations were added (PR #1121) without ORES_SHELL_EXPORT, so the ores.shell DLL does not export them. Linux builds pass because symbols are visible by default there. The fix exports the new public surface, restoring a green Windows build.

Status

Field Value
State DONE
Parent sprint Sprint 20
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-06-07

Acceptance

  • ores.shell.tests.exe links on both windows-clang-release-ninja and windows-msvc-release-ninja.
  • Linux build and the shell test suite remain green.

Tasks

Task State Start End Description
Scaffold story: Hotfix: ores.shell tests fail to link on Windows DONE 2026-06-07 2026-06-07 Story documents and sprint wiring; rode PR #1166.
Export the new ores.shell public surface DONE 2026-06-07 2026-06-07 Add ORES_SHELL_EXPORT to command_args/command_feedback/script_runner surface; fixes windows-clang-release-ninja. PR #1166.
Inline flag_set and flag to fix MSVC linker error DONE 2026-06-07 2026-06-07 Make flag_set/flag inline in header; removes dllimport issue that MSVC enforces strictly. PR #1179.

Decisions

  • Export strategy for trivial methods: struct-level __declspec(dllexport) does not reliably carry to member functions under MSVC; prefer inlining trivial one-liners (flag_set, flag) rather than applying the macro at struct scope. Out-of-line methods that must cross the DLL boundary get individual ORES_SHELL_EXPORT decorators.

Out of scope

Emacs 29.1 (Org mode 9.6.6)