Risposte:
La prima è la vecchia biblioteca, la seconda è la nuova.
I vecchi si definisce cose come defstruct
, symbol-macrolet
, incf
, mentre il secondo definisce invece cl-defstruct
, cl-symbol-macrolet
e cl-incf
.
Quello vecchio è deprecato perché non obbedisce alla regola generale che i pacchetti dovrebbero usare un "prefisso pacchetto" per tutte le loro definizioni per cercare di evitare conflitti con altri pacchetti. IOW il vecchio confonde lo spazio dei nomi mentre il nuovo è attento a usare solo identificatori che iniziano con cl-
.
Vengono fornite solo vecchie versioni di Emacs cl
ma è possibile installare il cl-lib
pacchetto di compatibilità diretta da GNU ELPA che utilizza internamente il vecchio cl
e riesporta semplicemente le stesse definizioni con il loro nuovo nome.
Le nuove versioni di Emacs hanno un reale cl-lib
che non utilizza cl
internamente e invece hanno un cl
pacchetto di retrocompatibilità che utilizza internamente cl-lib
e riesporta semplicemente le stesse definizioni con il loro vecchio nome.