Release van de Crystal-programmeertaal 1.5

De release van de programmeertaal Crystal 1.5 is gepubliceerd, waarvan de ontwikkelaars proberen het gemak van ontwikkeling in de Ruby-taal te combineren met de hoge applicatieprestaties die kenmerkend zijn voor de C-taal. De syntaxis van Crystal komt dicht in de buurt van, maar is niet volledig compatibel met, Ruby, hoewel sommige Ruby-programma's zonder aanpassingen kunnen worden uitgevoerd. De compilercode is geschreven in Crystal en gedistribueerd onder de Apache 2.0-licentie.

De taal maakt gebruik van statische typecontrole, geïmplementeerd zonder de noodzaak om expliciet de typen variabelen en methodeargumenten in de code te specificeren. Crystal-programma's worden gecompileerd in uitvoerbare bestanden, waarbij macro's worden geëvalueerd en code wordt gegenereerd tijdens het compileren. In Crystal-programma's is het mogelijk om bindingen te verbinden die in C zijn geschreven. Parallellisatie van de code-uitvoering wordt uitgevoerd met behulp van het trefwoord "spawn", waarmee u een achtergrondtaak asynchroon kunt uitvoeren, zonder de hoofdthread te blokkeren, in de vorm van lichtgewicht threads die vezels worden genoemd.

De standaardbibliotheek biedt een groot aantal algemene functies, waaronder tools voor het verwerken van CSV, YAML en JSON, componenten voor het maken van HTTP-servers en WebSocket-ondersteuning. Tijdens het ontwikkelingsproces is het handig om de opdracht “crystal play” te gebruiken, die een webinterface genereert (standaard localhost:8080) voor interactieve uitvoering van code in de Crystal-taal.

Grote veranderingen:

  • De compiler heeft een controle toegevoegd voor de overeenstemming van argumentnamen bij de implementatie van een abstracte methode en bij de definitie ervan. Als er een naammismatch is, wordt er nu een waarschuwing gegeven: abstract class FooAbstract abstract def foo(nummer : Int32) : Nil eindklasse Foo < FooAbstract def foo(naam : Int32) : Nil p naam end end 6 | def foo(naam: Int32) : Nil ^— Waarschuwing: positionele parameter 'name' komt overeen met parameter 'number' van de overschreven methode FooAbstract#foo(number : Int32), die een andere naam heeft en van invloed kan zijn op het doorgeven van benoemde argumenten
  • Wanneer een argument aan een niet-getypeerde methode wordt toegewezen aan de waarde van een variabele, wordt het argument nu beperkt tot het type van die variabele. class Foo @x: Int64 def initialize(x) @x = x # parameter x wordt getypt @x end end
  • Hiermee kunt u annotaties toevoegen aan parameters van methoden of macro's. def foo(@[MisschienOngebruikt] x); einde # Oké
  • Ondersteuning toegevoegd voor het gebruik van constanten als indices en namen in tupels. KEY = "s" foo = {s: "String", n: 0} zet foo[KEY].size
  • Er zijn nieuwe File#delete?-methoden toegevoegd aan de File API voor het verwijderen van bestanden en mappen. en Dir#delete?, die false retourneren als het bestand of de directory ontbreekt.
  • De bescherming van de File.tempfile-methode is versterkt, waardoor nu geen nultekens zijn toegestaan ​​in de regels die de bestandsnaam vormen.
  • Omgevingsvariabele NO_COLOR toegevoegd, die kleuraccentuering in de uitvoer van de compiler en tolk uitschakelt.
  • Het werken in de tolkmodus is aanzienlijk verbeterd.

Bron: opennet.ru

Voeg een reactie