Release av SBCL 2.3.9, en implementering av Common Lisp-språket

Utgivningen av SBCL 2.3.9 (Steel Bank Common Lisp), en gratis implementering av programmeringsspråket Common Lisp, har publicerats. Projektkoden är skriven i Common Lisp och C, och distribueras under BSD-licensen.

I den nya utgåvan:

  • Stackallokering via DYNAMIC-EXTENT gäller nu inte bara för den initiala bindningen, utan även för alla värden som variabeln kan ta (till exempel via SETQ). Detta gör det möjligt att till exempel förenkla konstruktionen av komplexa eller rekursiva strukturer i en stack genom iteration.
  • Vissa gränssnitt i SB-POSIX-modulen är gjorda för att överensstämma med specifikationen, och ett NULL-resultat från C-biblioteket anses vara ett fel om och endast om errno ändras av anropet. I detta fall kommer SYSCALL-ERROR-signalen att genereras.
  • Förbättrad funktion av makrona DO-PASSWDS och DO-GROUPS i SB-POSIX-modulen. Dessa makron är utformade för att fungera säkert med lösenordet och gruppdatabasen.
  • Stödet för Darwin x86 och PowerPC-plattformarna har återställts (tack vare Kirill A. Korinsky, Sergey Fedorov och barracuda156).
  • Fixade felaktig kompilering som inträffade på grund av felaktig typslutning när fixnumvärden multiplicerades med bråkvärden.
  • Fixade ett kompilatorfel som uppstod i vissa fall vid kontroll av signerade och osignerade 64-bitarsvärden.
  • Fixade ett kompilatorfel när ":INITIAL-CONTENTS"-argumentet till MAKE-ARRAY är en icke-sekvenskonstant.
  • Fixade ett fel vid kompilering av faltningsfunktioner till en given sekvenskonstant när ett falskt värde returnerades från funktionerna ":TEST" eller ":KEY".
  • Fixade en bugg vid kompilering av arrayfunktioner eller sekvenser med argument som antyder mycket stora sekvensstorlekar.
  • Fixat ett kompilatorfel som uppstår när värdet som returneras från ADJUST-ARRAY inte används.
  • Optimerad kompilatorinferens av funktionstyper som kan spridas bakåt genom en mellanrepresentation.
  • Förbättrad typinferens för LDB, LOGBITP och RATIO.
  • Optimering har gjorts för att eliminera onödiga gränskontroller för många fall av transitiva jämförelser.

Källa: opennet.ru

Lägg en kommentar