Embora o GCC 13 tenha visto seu primeiro lançamento estável apenas há algumas semanas, para aqueles que demoram a mudar para os principais lançamentos de novos compiladores e ainda contam com a série GCC 11 de dois anos, acaba de ocorrer o lançamento pontual com uma atualização da série 11, o GCC 11.4. Assim, o novo GCC 11.4 acaba de ser lançado com mais de 110 bugs corrigidos.
GCC 11.4 lançado com mais de 110 bugs corrigidos
O GCC 11.4 foi enviado para fornecer correções para mais de 110 bugs. Como em todos os lançamentos pontuais do GCC, esta é estritamente uma atualização de correção de bug e regressão para a GNU Compiler Collection.O GCC 11.3 foi lançado há mais de um ano, portanto, há muito em estoque com o GCC 11.4 quando se trata de correções de bug/regressão portadas de volta.
O GCC 11.4 pode ser baixado via gcc.gnu.org. No entanto, para aqueles que desejam os melhores e mais recentes recursos do compilador, suporte expandido à CPU e otimizações, experimente o GCC 13.1.
Novidades do GCC 13.1
A versão mais recente do GCC, GCC 13.1, adiciona suporte para uma série de novos recursos e melhorias para a linguagem C definida no próximo padrão C2x, incluindo nullptr
, enumerações aprimoradas, auto
inferência de tipos e muito mais.
O C2x está adotando uma série de alterações na linguagem que apareceu pela primeira vez em C++, para facilitar a coexistência das duas linguagens na mesma base de código. Essas alterações incluem nullptr
, enumerações aprimoradas, inferência auto
de tipo, constexpr
especificador e outros.
A nova constante nullptr
tentará remover um dos problemas com a macro antiga NULL
, cuja definição depende da implementação. Isso leva a uma série de deficiências potenciais ao usá-lo com macros de tipo genérico, com expressão condicional como (true ? 0 : NULL)
(uma vez que NULL
pode ser definido como (void*)0
), com funções vararg onde NULL
é usado como sentinela e em outros casos.
Para melhorar isso, nullptr
terá um tipo próprio nullptr_t
; não terá um valor escalar, portanto não pode ser usado em expressões aritméticas; será conversível para qualquer tipo de ponteiro; e sempre converterá em um booleano com valorfalse
.
As enumerações melhoradas são outra alteração à linguagem que tenta corrigir um caso de subespecificação da norma anterior, neste caso referente ao tipo subjacente associado a enum
s. Na verdade, embora C normalmente use int
para enumerações, nem sempre é esse o caso, o que pode causar problemas de portabilidade. Além disso, quando int
são efetivamente usados, isso exclui a possibilidade de usar enumerações no nível do campo de bits. O novo padrão permite assim que os desenvolvedores indiquem o tipo de enumeração.