De nieuwe versie van Crystal is verschenen, een compileertaal met Ruby-syntaxis. De belangrijkste kenmerken zijn een runtime met een 'ingebouwde' event loop waarin alle invoer- en uitvoerbewerkingen asynchroon zijn, ondersteuning voor multithreading (momenteel geactiveerd met een vlag tijdens het compileren) en een uiterst eenvoudige en handige samenwerking met C-bibliotheken.
Vanaf versie 0.34.0 begint de taal met stevige stappen naar de eerste echte release (d.w.z. versie 1.0).
In de nieuwe versie van Crystal zijn de volgende wijzigingen en verbeteringen op volgorde van belangrijkheid te vermelden:
Een nieuwe loggingbibliotheek is toegevoegd aan de API Log, die, in tegenstelling tot de oude, berichten kan richten naar verschillende backends en deze berichten op verschillende manieren kan filteren afhankelijk van de 'bron'.
Overblijfselen uit de wereld van C-ontwikkeling, Errno en WinError, die zijn gebruikt voor primitieve invoer- en uitvoeroperaties, behoren tot het verleden dankzij de hiƫrarchie van uitzonderingen IO::Error (vermoedelijk is het nog steeds toegestaan om Errno te gebruiken).
Automatische invulling van else nil is verwijderd uit de operator case/when/else. Dit is gedaan om te voorkomen dat een ontwikkelaar per ongeluk een tak overslaat when bij het matchen op deterministische gevallen zoals enumeraties en het doorlopen van types uit een union. Met andere woorden, deze code zal niet meer werken zonder een extra when (when Char) of het specificeren van een else-tak:
a = 1 || 'x' || "foo"
case a
when Int32
# ā¦
when String
# ā¦
end
De compileroptie disable_overflow is niet langer beschikbaar. Voor overloopbewerkingen gebruik de methoden &+, &-, &*.
Array#fill is nu razendsnel, dankzij de vervanging van de trage lus door een eenvoudige memset;
De shardmanager (pakketten), die paradoxaal genoeg shards, nu gebruik maakt van een snellere en efficiƫntere afhankelijkheidsoplossingsalgoritme, Molinillo, dat is geleend van CocoaPods (Swift) en Builder (Ruby).
Ondersteuning toegevoegd voor LLVM 10, wat ons theoretisch een soort prestatieverbetering en stabiliteit zal geven, enzovoort.
⦠en vele andere, minder significante verbeteringen naar mijn mening.
Het is vermeldenswaard dat Crystal een op LLVM gebaseerde taal is die het mogelijk maakt om applicaties soms sneller, eenvoudiger en beknopter te schrijven dan met zijn geïnterpreteerde 'verwanten', en toch een behoorlijk snelle binaire uitvoer genereert. Het onderscheidt zich van Golang door een volledig objectgeoriënteerd karakter, ondersteuning voor generics en een zeer eenvoudige en begrijpelijke syntaxis. Qua functionaliteit lijkt het veel op Nim, maar is het duidelijk gericht op praktisch gebruik 'hier en nu', wat het mogelijk maakt om in zijn API-arsenaal tal van goed gedocumenteerde, handige en kwalitatieve tools te hebben, die worden ondersteund door de ontwikkelaars van de taal en daarom zeer stabiel zijn.
Bron: linux.org.ru
