Por que a glibc tem 2 versões das mesmas funções? [fechadas]

3

Eu não entendo completamente o mecanismo de controle de versão da glibc.

Em que casos os desenvolvedores decidem que uma função precisa de uma nova versão, e essa função não é mais "compatível com versões anteriores" na glibc e uma nova versão GLIBC_2.X precisa ser introduzida?

No caso de uma mudança de protótipo de função, ou uma mudança de API, eu entendo, mas que mais causas existem?

i.e. fnmatch:

Estou vendo uma saída readelf no meu glibc 2.19 e vejo duas versões do fnmatch:

151: 000bff40   892 FUNC    GLOBAL DEFAULT   12 fnmatch@GLIBC_2.0
152: 000bff40   892 FUNC    GLOBAL DEFAULT   12 fnmatch@@GLIBC_2.2.3

Mas quando vejo o código da glibc, vejo que são exatamente a mesma função:

versioned_symbol (libc, __fnmatch, fnmatch, GLIBC_2_2_3);
#  if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_3)
strong_alias (__fnmatch, __fnmatch_old)
compat_symbol (libc, __fnmatch_old, fnmatch, GLIBC_2_0);
#  endif

Então, por que o fnmatch tem até duas versões? Quais outras causas existem para os desenvolvedores iniciarem uma "nova versão" de uma função?

    
por speller 22.02.2015 / 21:04

0 respostas

Tags