Debian tarqatmalari uchun takrorlanadigan paketlar talabi kuchaymoqda
Debian hamjamiyati takrorlanadigan paketlar (reproducible builds)ni majburiy qilishni ko'rib chiqmoqda – bu xavfsizlik, ishonchlilik va sifatni oshiradi.

Go dasturlash tili funksiyalarni qayta aniqlash imkonini bermaydi, lekin bu cheklovni chetlab o'tish mumkin.
Bir necha yil oldin men Perl dasturlash tilida bir subroutine yozdim, u o'zini chaqirgan subroutine-ni kechiktirishga imkon berdi. Bu foydali edi, lekin keyin u o'zining nusxasini chaqiruvchiga qo'shib qo'ydi, shunda chaqiruvchilar ham kechiktirildi.
Go dasturlash tilida bu mumkin emas, lekin biz past darajadagi vositalarni ishlatib, funksiyalarni qayta aniqlashimiz mumkin.
Birinchi navbatda, biz asl funksiyaning adresini olishimiz kerak. Buni reflect paketi yordamida amalga oshirish mumkin.
addr := reflect.ValueOf(time.Now).Pointer()
Keyin, biz funksiyaning kodini o'zgartirishimiz kerak. Buni unsafe paketi yordamida amalga oshirish mumkin.
buf := unsafe.Slice((*byte)(unsafe.Pointer(addr)), 8)
Nihoyat, biz funksiyaga yangi kod qo'shishimiz kerak. Buni mprotect funksiyasi yordamida amalga oshirish mumkin.
mprotect(addr, len(buf), syscall.PROT_READ|syscall.PROT_WRITE|syscall.PROT_EXEC)
Bu usul juda xavflidir va kutilmagan natijalarga olib kelishi mumkin. Masalan, inline funksiyalar yoki generik funksiyalar bilan ishlashda muammolar paydo bo'lishi mumkin.
Shuningdek, metodlarni qayta aniqlashda ham muammolar paydo bo'lishi mumkin.
Go funksiyalarini qayta aniqlash mumkin, lekin bu juda murakkab va xavfli. Bu usuldan foydalanish tavsiya etilmaydi.