Respostas:
A primeira é a biblioteca antiga, a segunda é a nova.
Os velhos se define coisas como defstruct
, symbol-macrolet
, incf
, enquanto o segundo define vez cl-defstruct
, cl-symbol-macrolet
e cl-incf
.
O antigo foi descontinuado porque não obedece à regra geral de que os pacotes devem usar um "prefixo de pacote" para todas as suas definições para tentar evitar conflitos com outros pacotes. Como o antigo atrapalha o namespace, o novo é cuidadoso ao usar apenas identificadores que começam com cl-
.
As versões antigas do Emacs são fornecidas apenas com ele, cl
mas você pode instalar o cl-lib
pacote de compatibilidade direta do GNU ELPA, que usa internamente a cl
versão antiga e apenas reexporta as mesmas definições sob o novo nome.
As novas versões do Emacs vêm com um real cl-lib
que não é usado cl
internamente e, em vez disso, possuem um cl
pacote de compatibilidade com versões anteriores que usa internamente cl-lib
e apenas reexporta as mesmas definições com o nome antigo.