Vrystelling van die Crystal-programmeertaal 1.5

Die vrystelling van die Crystal 1.5-programmeertaal is gepubliseer, waarvan die ontwikkelaars probeer om die gemak van ontwikkeling in die Ruby-taal te kombineer met die hoë toepassingsprestasie-kenmerk van die C-taal. Crystal se sintaksis is naby, maar nie ten volle versoenbaar met, Ruby nie, alhoewel sommige Ruby-programme sonder verandering loop. Die samestellerkode is in Crystal geskryf en onder die Apache 2.0-lisensie versprei.

Die taal gebruik statiese tipe kontrolering, geïmplementeer sonder dat dit nodig is om die tipe veranderlikes en metode-argumente in die kode uitdruklik te spesifiseer. Kristalprogramme word saamgestel in uitvoerbare lêers, met makro's wat geëvalueer en kode gegenereer word tydens samestelling. In Crystal-programme is dit moontlik om bindings wat in C geskryf is, te verbind. Parallellisering van kode-uitvoering word uitgevoer met behulp van die "spawn"-sleutelwoord, wat jou toelaat om 'n agtergrondtaak asynchroon uit te voer, sonder om die hoofdraad te blokkeer, in die vorm van liggewig drade wat vesels genoem word.

Die standaardbiblioteek bied 'n groot stel algemene funksies, insluitend gereedskap vir die verwerking van CSV, YAML en JSON, komponente vir die skep van HTTP-bedieners, en WebSocket-ondersteuning. Tydens die ontwikkelingsproses is dit gerieflik om die "crystal play"-opdrag te gebruik, wat 'n webkoppelvlak genereer (localhost:8080 by verstek) vir interaktiewe uitvoering van kode in die Crystal-taal.

Belangrikste veranderinge:

  • Die samesteller het 'n kontrole bygevoeg vir die ooreenstemming van argumentname in die implementering van 'n abstrakte metode en in sy definisie. As daar 'n naammispassing is, word 'n waarskuwing nou uitgereik: abstrakte klas FooAbstract abstrakte def foo(nommer : Int32) : Geen eindklas Foo < FooAbstract def foo(naam : Int32) : Geen p naam einde einde 6 | def foo(naam : Int32) : Nul ^— Waarskuwing: posisionele parameter 'naam' stem ooreen met parameter 'nommer' van die oorheerste metode FooAbstract#foo(nommer : Int32), wat 'n ander naam het en die deurvoer van benoemde argumente kan beïnvloed
  • Wanneer 'n argument aan 'n ongetikte metode toegeken word aan die waarde van 'n veranderlike, word die argument nou beperk tot die tipe van daardie veranderlike. klas Foo @x : Int64 def initialize(x) @x = x # parameter x sal getik word @x end end
  • Laat jou toe om aantekeninge by parameters van metodes of makro's te voeg. def foo(@[Miskien Ongebruik] x); einde # OK
  • Bygevoeg ondersteuning vir die gebruik van konstantes as indekse en name in tuples. KEY = "s" foo = {s: "String", n: 0} plaas foo[KEY].size
  • Nuwe File#delete?-metodes is by die Lêer-API gevoeg om lêers en gidse uit te vee. en Dir#delete?, wat vals gee as die lêer of gids ontbreek.
  • Die beskerming van die File.tempfile-metode is versterk, wat nou nie nulkarakters toelaat in die reëls wat die lêernaam vorm nie.
  • Bygevoeg omgewingsveranderlike NO_COLOR, wat kleurverligting in samesteller en tolkuitvoer deaktiveer.
  • Werk in tolkmodus is aansienlik verbeter.

Bron: opennet.ru

Voeg 'n opmerking