Use Go 1.23's new structs.HostLayout
TotallyGamerJet opened this issue · 2 comments
Operating System
- Windows
- macOS
- Linux
- FreeBSD
- Android
- iOS
What feature would you like to be added?
Use structs.HostLayout
in all Platform specific structs
Why is this needed?
In Go 1.23, a new package and type called structs.HostLayout
was added in golang/go#66408. Adding this field to a struct instructs the compiler to guarantee the struct matches the C ABI.
We currently, rely on the fact that Go's current struct layout matches the C ABI. The following is an incomplete list of structs that must match C ABI.
- objc_super
- G
- ThreadStart
- pthread_mutex_t
- pthread_cond_t
As well as all the one's in struct_test.go
, objc_runtime_darwin_test.go
and in the examples/window
platform files
This is not urgent as there is no current plan to change Go's struct layout
Does this only require adding _ structs.HostLayout
to the start of types that must match the C ABI, or is there additional work needed to accommodate this?
That is really all that's necessary. Probably need to update some build tags