È stato pubblicato il rilascio di SBCL 2.4.1 (Steel Bank Common Lisp), un'implementazione libera del linguaggio di programmazione Common Lisp. Il codice del progetto è scritto in Common Lisp e C ed è distribuito sotto licenza BSD.
Nel nuovo rilascio:
- Nel garbage collector parallelo, che utilizza l'algoritmo mark-region, è stata aggiunta una supporto parziale per le intestazioni delle istanze compatte.
- Per le funzioni con tipi di ritorno dichiarati, nei modelli di ottimizzazione con alte impostazioni di SAFETY e in modalità DEBUG 3, è stata garantita la verifica del tipo per i valori restituiti.
- Sulla piattaforma FreeBSD è stata implementata la creazione con libpthread e disabilitata la randomizzazione dello spazio degli indirizzi (ASLR).
- Ripristinata la compilazione su architetture a 64 bit riscv e ppc.
- Per tutte le piattaforme è stato implementato il supporto per fastrem-32 (per calcoli ottimizzati FLOOR).
- Risolta un'errore che causava una pulizia ripetuta delle righe spostate dopo la compattazione della memoria del garbage collector parallelo mark-region.
- Risolto un problema di loop infinito del compilatore durante l'elaborazione di alcune strutture con tipi SATISFIES.
- Le tabelle hash utilizzate in diverse parti del sistema (pacchetti, tabelle Unicode) sono state trasformate per utilizzare funzioni hash senza collisioni (perfect).
- Il macro TYPECASE per le gerarchie delle strutture classi è stato implementato utilizzando hash senza collisioni.
- A scopo di ottimizzazione delle prestazioni, sono state rimosse le verifiche dei limiti per gli indici con offset costanti, quando il compilatore sa che l'indice è minore della differenza tra la dimensione e l'offset.
- Nel compilatore sono stati considerati dati aggiuntivi per l'ottimizzazione DIGIT-CHAR.
- Nel compilatore è stata implementata la possibilità di escludere valori intermedi in alcune chiamate APPLY, CONCATENATE e MAKE-ARRAY per argomenti costruiti da sequenze con fresche modifiche cons.
- Accelerato il ciclo «(LOOP FOR X IN (REVERSE LIST) …)», che ora utilizza meno cons.
- Il ciclo «(LOOP … APPEND …)» è diventato più compatto e svolge meno lavoro nell'aggiunta di NIL.
- Accelerate e ridotte le verifiche dei tipi di vari diversi array.
Fonte: opennet.ru
