Byl vydán SBCL 2.4.1 (Steel Bank Common Lisp), svobodná implementace programovacího jazyka Common Lisp. Kód projektu je napsán v jazycích Common Lisp a C a je distribuován pod licencí BSD.
V novém vydání:
- Do paralelního garbage collectoru, který používá algoritmus mark-region, byla přidána částečná podpora záhlaví kompaktních instancí.
- Pro funkce s deklarovanými návratovými typy v optimalizačních režimech s vysokými hodnotami SAFETY a v režimu DEBUG 3 byla zajištěna kontrola typu pro návratové hodnoty.
- Na platformě FreeBSD byla implementována vazba s libpthread a randomizace adresního prostoru (ASLR) byla vypnuta.
- Obnovená podpora pro 64bitové architektury riscv a ppc.
- Pro všechny platformy byla implementována podpora fastrem-32 (pro optimalizované výpočty FLOOR).
- Byla odstraněna chyba, která vedla k opětovnému vyčištění přesunutých řádků po sloučení paměti paralelním garbage collectorem mark-region.
- Byl vyřešen problém s nekonečným cyklem překladače při zpracování některých konstrukcí s typy SATISFIES.
- Hashovací tabulky používané v různých částech systému (balíčky, tabulky Unicode) byly převedeny na používání hashovacích funkcí bez kolizí (perfektní).
- Makro TYPECASE pro hierarchie struktur tříd bylo implementováno s použitím bezkolizního hashe.
- Za účelem optimalizace výkonu byly odstraněny kontroly mezí pro indexy s konstantními posuny, když překladač ví, že index je menší než rozdíl mezi velikostí a posunem.
- V překladači byly zohledněny další údaje o optimalizaci DIGIT-CHAR.
- V překladači byla implementována možnost vyloučit mezilehlé hodnoty v některých voláních APPLY, CONCATENATE a MAKE-ARRAY pro argumenty postavené ze sekvencí s čerstvými cons-modifikacemi.
- Byl zrychlen běh smyčky „(LOOP FOR X IN (REVERSE LIST) …)“, která nyní používá méně consů.
- Smyčka „(LOOP … APPEND …)“ se stala kompaktnější a vykonává méně práce při přidávání NIL.
- Zrychleny a zkráceny kontroly typů různých polí.
Zdroj: opennet.ru
