È stata pubblicata la versione di SBCL 2.4.1 (Steel Bank Common Lisp), un'implementazione gratuita del linguaggio di programmazione Common Lisp. Il codice del progetto è scritto in Common Lisp e C ed è distribuito sotto la licenza BSD.
Nella nuova versione:
- Aggiunto supporto parziale per intestazioni di istanze compatte al Garbage Collector parallelo utilizzando l'algoritmo mark-region.
- Per le funzioni con tipi restituiti dichiarati, le modalità di ottimizzazione SAFETY e DEBUG 3 di grandi dimensioni assicurano che il controllo del tipo venga eseguito sui valori restituiti.
- Sulla piattaforma FreeBSD, è implementato il collegamento con libpthread e la randomizzazione dello spazio degli indirizzi (ASLR) è disabilitata.
- Ripristinato l'assemblaggio su architetture riscv e ppc a 64 bit.
- Il supporto Fastrem-32 è stato implementato per tutte le piattaforme (per calcoli FLOOR ottimizzati).
- Risolto un bug che causava il nuovo flush delle linee spostate dopo la compattazione della memoria da parte del garbage collector parallelo mark-region.
- È stato risolto il problema relativo al looping del compilatore durante l'elaborazione di alcune costruzioni con i tipi SATISFIES.
- Le tabelle hash utilizzate in varie parti del sistema (pacchetti, tabelle Unicode) vengono convertite per utilizzare funzioni hash prive di collisioni (perfette).
- La macro TYPECASE per le gerarchie della struttura di classi viene implementata utilizzando un hash privo di collisioni.
- Per ottimizzare le prestazioni, sono stati rimossi i controlli dei limiti per gli indici con offset costante, dove il compilatore sa che l'indice è inferiore alla differenza tra dimensione e offset.
- Il compilatore tiene conto dei dati di ottimizzazione DIGIT-CHAR aggiuntivi.
- Il compilatore ha implementato la possibilità di escludere valori intermedi in alcune chiamate APPLY, CONCATENATE e MAKE-ARRAY per argomenti costruiti da sequenze con nuove modifiche contro.
- È stato accelerato il funzionamento del loop “(LOOP FOR X IN (REVERSE LIST) ...)” che ora utilizza meno contro.
- Il ciclo "(LOOP... APPEND...)" è più compatto e fa meno lavoro quando si aggiunge NIL.
- I controlli del tipo per vari array sono stati accelerati e ridotti.
Fonte: opennet.ru