darwin/arm64 support for internal/cpu was implemented in c155931 using a mix of dynamic detection with sysctlbyname and hardcoded minimal feature support assumed on darwin/arm64.
For x/sys/cpu it can be assumed it only needs to work with Go 1.16 and newer. Interestingly darwing/arm64 was previosly used for the now ios/arm64 port. We should keep compatibility such that old code still compiles pre Go 1.16 even if there may be no runtime detection supported.
Implementing support for x/sys/cpu will be a bit more complex. While x/sys/cpu does not need to be as low dependency as internal/cpu it should still avoid uncommon or large dependencies. Note that x/sys/cpu is vendored into the standard library for some crypto support that is also vendored in.
x/sys/cpu should avoid a dependency on x/sys/unix: #32102
darwin/arm64support forinternal/cpuwas implemented in c155931 using a mix of dynamic detection with sysctlbyname and hardcoded minimal feature support assumed ondarwin/arm64.For
x/sys/cpuit can be assumed it only needs to work with Go 1.16 and newer. Interestingly darwing/arm64 was previosly used for the now ios/arm64 port. We should keep compatibility such that old code still compiles pre Go 1.16 even if there may be no runtime detection supported.Implementing support for
x/sys/cpuwill be a bit more complex. Whilex/sys/cpudoes not need to be as low dependency asinternal/cpuit should still avoid uncommon or large dependencies. Note thatx/sys/cpuis vendored into the standard library for some crypto support that is also vendored in.x/sys/cpushould avoid a dependency onx/sys/unix: #32102