Hackeando o Coletor de Lixo do Go: Armazenando Ponteiros de Assembly

Este artigo mergulha nas complexidades de manipular ponteiros Go a partir de código assembly, focando na interação crucial com o coletor de lixo do Go. Manipular ponteiros diretamente requer informar explicitamente o GC através de funções como `runtime.gcWriteBarrier2` e `runtime.writeBarrier` para evitar conflitos e possíveis travamentos. O artigo também aborda o desafio de alocar memória alinhada de 128 bits para uso ideal de instruções AVX, apresentando uma solução inteligente. No entanto, alerta contra a dependência de funções internas de runtime, pois sua disponibilidade pode mudar em versões futuras do Go.
Leia mais