Rilascio di SBCL 2.4.1, un'implementazione del linguaggio Common Lisp

È 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

Aggiungi un commento