Skip to content

Commit 211cd9b

Browse files
Add header for table.
Reduce size of section notes.
1 parent a588052 commit 211cd9b

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

docs/standard/native-interop/abi-support.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ ms.date: 10/25/2024
77

88
[Application Binary Interface](https://wikipedia.org/wiki/Application_binary_interface) (ABI) is the interface which run times and operating systems express low-level binary details. This can include calling conventions (that is, how parameters are passed and results returned), exception handling, as well as symbol mangling. The below list contains the names of languages, run times and even general technologies since these names tend to represent what users will be working with when looking for guidance on interoperability.
99

10+
## Support table
11+
1012
| | Support | APIs |
1113
|---|---------|----------------|
1214
| **C** | ✔️ | <xref:System.Runtime.InteropServices.LibraryImportAttribute> provides source generated support in .NET 7+. Use <xref:System.Runtime.InteropServices.DllImportAttribute> when targeting earlier .NET versions. |
@@ -17,18 +19,18 @@ ms.date: 10/25/2024
1719
| **golang** || [Guidance](#golang) |
1820
| **ARM64EC** || [Note](#arm64ec) |
1921

20-
## <a name="cpp"></a> C++
22+
### <a name="cpp"></a> C++
2123

2224
The [C++ language](https://isocpp.org/) has no defined ABI across all .NET supported platforms and C++ compiler implementations (that is, MSVC, clang, and GCC). This lack of a stable ABI makes support difficult to provide.
2325

2426
The recommended way to interoperate with C++ is to export functions marked with `extern "C"` and call them as C functions.
2527

26-
## <a name="golang"></a> golang
28+
### <a name="golang"></a> golang
2729

2830
The Go programming language is not supported for in-process interoperability. The Go runtime [imposes requirements](https://pkg.go.dev/os/signal#hdr-Non_Go_programs_that_call_Go_code) on being hosted in a process with another run time. Specifically, the use of the `SA_ONSTACK` flag on threads that run signal handlers. These requirements are not currently met by .NET and meeting them would impose non-trivial costs.
2931

3032
The recommended way to interoperate with golang is using a golang hosted process and communicate through an inter-process communication mechanism.
3133

32-
## <a name="arm64ec"></a> ARM64EC
34+
### <a name="arm64ec"></a> ARM64EC
3335

3436
The [ARM64EC](/cpp/build/arm64ec-windows-abi-conventions) ABI is not supported.

0 commit comments

Comments
 (0)