Go releases

Go 1.16 was recently released. As I’m deploying Go apps to edge devices and doing updates over cellular, I’m always interested in binary size, and pleasantly surprised with this release that ARM binaries for one project actually got smaller:

  • Go 1.15:
    • uncompressed: 12124160 bytes
    • xz compressed: 3471816 bytes
  • Go 1.16:
    • uncompressed: 11337728 bytes
    • xz compressed: 3199352 bytes

Go 1.17 was recently released. I like to compare the output binary sizes of Simple IoT just to make sure things are not getting significantly bigger:

binary size Go 1.16 size Go 1.17
x86_64 23134208 22016000
arm 19333120 19464192
arm xz compressed 4839476 4690792

Less than 5MiB for a compressed SIOT binary is still good – this size is still practical to deploy app updates over Cat-M modems.

Go 1.18 is now released. Generics, 20% improvement for ARM64, etc – good stuff. This further enforces @khem’s conclusion that ARM64 is the place to focus going forward …