This release introduces improved CPU idle management support functions for amd64, extending the pattern enabled by the previous release on single-core to multi-core CPUs:
runtime.Idle = func(pollUntil int64) {
if pollUntil == 0 {
return
}
cpu.SetAlarm(pollUntil)
cpu.WaitInterrupt()
cpu.SetAlarm(0)
}Major changes for tamago package API:
- amd64, arm, riscv64:
(*CPU).DefaultIdleGovernornew function to export default CPU idle time management - amd64:
(*CPU).ClearInterruptsnew function to signal end-of-interrupt safely under SMP (e4346ed) - amd64:
(*CPU).EnableInterruptsfunction deprecated in favor of(*CPU).ClearInterrupts(e4346ed)
Major changes for tamago package internals:
- amd64: interrupts are now enabled on supplemental cores (APs)
- amd64: IRQ handling implementation improved to prevent SMP race conditions
- amd64: tight loops on register wait are now avoided also under SMP (c4bd784)
- amd64: fix page tables setup for correct operation under WSL and Google Cloud KVMs (#53)
Full Changelog: v1.25.1...v1.25.2
This release requires GOOS=tamago support in the Go distribution, it requires at least tamago-go1.25.2.