CNA-GAP-069: Windows builds leave out Sharp Runtime's Xml.Serialization, so the XmlSerializationEXT surface of the math and input types is unavailable there

CNA snapshot 009d40f5  ·  Known Issues › Functional gaps  ·  source links pinned to 009d40f5

✓

Evidence basis: source-verified at the pinned commit; tests exist (not executed for this page). Claims on this page were checked by reading the CNA source at commit 009d40f5; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.

On every Windows target CNA leaves Xml.Serialization out of its Sharp Runtime closure and drops both XmlSerializationEXTTests. The exclusion was added to avoid an unguarded <poll.h> in sharp-runtime's Diagnostics, which has since been fixed upstream; it no longer avoids that dependency, because CNA's closure already contains Xml, which depends on Diagnostics, so the surface is unavailable on Windows only because the build condition was left in place.

Identifier
CNA-GAP-069
Category
Functional gap
Subsystem
Platforms
Status
Open
Verified against
CNA 009d40f5 (009d40f5dd085c4e674d3479675fac84b12b3e0a)
Evidence basis
Source-verified: read at TARGET, not executed
Tests touching this area
Yes: see Current tests
Affected contract
Microsoft/Xna/Framework/XmlSerializationEXT.hpp (math) and Microsoft/Xna/Framework/Input/XmlSerializationEXT.hpp on Windows targets

Expected behaviour

A CNAEXT surface offered on Linux and macOS is offered on Windows unless a host constraint prevents it. The CMake comment itself asks for the condition to be removed once sharp-runtime guards the offending include.

Actual behaviour at TARGET

When CMAKE_SYSTEM_NAME is Windows (MinGW cross builds and native MSVC), SharpRuntimeConsumption.cmake does not append Xml.Serialization to CNA's Sharp Runtime closure, so SharpRuntime::Xml.Serialization does not exist, and UnitTests.cmake filters out the math and input XmlSerializationEXTTests.cpp. The stated cause is sharp-runtime's Diagnostics Process.cpp including <poll.h> outside its POSIX guard. In the local sharp-runtime checkout that include was moved inside the guard by commit 88c12f15 (2026-09-14), which sharp-runtime next @ 41b918c9 contains. The exclusion no longer avoids the problem: CNA_SHARP_RUNTIME_DEFAULT_COMPONENTS names Xml on every platform with no Windows override, and sharp-runtime's Xml component has a private dependency on Diagnostics, so a Windows build compiles that file whether or not Xml.Serialization is selected (the Xml addition and the exclusion were made on different branches and first met in the 2026-09-11 merge). CNA's CMake pins no sharp-runtime revision, and the workflows that do pin one use revisions from 15 to 28 August 2026, all older than the fix. The exclusion is unconditional.

Source locations

Evidence

Checked by reading at 009d40f5, and the sharp-runtime fix by reading commit 88c12f15 in the local sharp-runtime checkout (next @ 41b918c9, not pinned by the snapshot); not executed. Not established: whether a Windows build with the component re-enabled compiles today.

Independent re-verification: Checked by reading at 009d40f5, and the sharp-runtime fix and the Xml component's dependencies by reading the local sharp-runtime checkout (next @ 41b918c9, not pinned by the snapshot); not executed. The pinned CI revisions were compared with commit 88c12f15 by ancestry and none contains it. Not established: whether a Windows build with the component re-enabled compiles today.

Focused reproduction

No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.

Current tests

The two XmlSerializationEXTTests groups run only on non-Windows hosts.

Regression test

Remove the condition once the consumed sharp-runtime revision has the guard, then run both XmlSerializationEXTTests groups in a MinGW cross tree under Wine or in the manual MSVC workflow.

Blast radius

XML serialization of math and input value types on Windows only.

Workaround

Serialize these types by hand on Windows.

The same subject is explained at several altitudes. These are the neighbouring pages at each one.