Frigivelse af programmeringssproget Crystal 1.5

Udgivelsen af ​​programmeringssproget Crystal 1.5 er blevet offentliggjort, hvis udviklere forsøger at kombinere bekvemmeligheden ved udvikling i Ruby-sproget med den høje applikationsydelse, der er karakteristisk for C-sproget. Crystals syntaks er tæt på, men ikke fuldt ud kompatibel med, Ruby, selvom nogle Ruby-programmer kører uden ændringer. Compilerkoden er skrevet i Crystal og distribueret under Apache 2.0-licensen.

Sproget bruger statisk typekontrol, implementeret uden behov for eksplicit at specificere typerne af variabler og metodeargumenter i koden. Krystalprogrammer kompileres til eksekverbare filer, hvor makroer evalueres og kode genereres på kompileringstidspunktet. I Crystal-programmer er det muligt at forbinde bindinger skrevet i C. Parallelisering af kodeudførelse udføres ved hjælp af nøgleordet "spawn", som giver dig mulighed for at køre en baggrundsopgave asynkront, uden at blokere hovedtråden, i form af letvægtstråde kaldet fibre.

Standardbiblioteket giver et stort sæt almindelige funktioner, herunder værktøjer til behandling af CSV, YAML og JSON, komponenter til oprettelse af HTTP-servere og WebSocket-understøttelse. Under udviklingsprocessen er det praktisk at bruge kommandoen "crystal play", som genererer en webgrænseflade (localhost:8080 som standard) til interaktiv udførelse af kode i Crystal-sproget.

Vigtigste ændringer:

  • Compileren har tilføjet en kontrol for overensstemmelse mellem argumentnavne i implementeringen af ​​en abstrakt metode og i dens definition. Hvis der er et navnemismatch, udsendes der nu en advarsel: abstrakt klasse FooAbstract abstract def foo(nummer : Int32) : Ingen endeklasse Foo < FooAbstract def foo(navn : Int32) : Ingen p navn slutning ende 6 | def foo(navn : Int32) : Nul ^— Advarsel: positionsparameter 'navn' svarer til parameter 'nummer' for den tilsidesatte metode FooAbstract#foo(nummer : Int32), som har et andet navn og kan påvirke navngivne argumentoverførsel
  • Når du tildeler et argument til en ikke-typebestemt metode til værdien af ​​en variabel, er argumentet nu begrænset til typen af ​​denne variabel. klasse Foo @x : Int64 def initialize(x) @x = x # parameter x vil blive skrevet @x end end
  • Giver dig mulighed for at tilføje annoteringer til parametre for metoder eller makroer. def foo(@[MåskeUbrugt] x); slut # OK
  • Tilføjet støtte til brug af konstanter som indeks og navne i tupler. KEY = "s" foo = {s: "String", n: 0} sætter foo[KEY].size
  • Nye File#delete?-metoder er blevet tilføjet til File API til sletning af filer og mapper. og Dir#delete?, som returnerer falsk, hvis filen eller mappen mangler.
  • Beskyttelsen af ​​metoden File.tempfile er blevet styrket, som nu ikke tillader null-tegn i de linjer, der danner filnavnet.
  • Tilføjet miljøvariabel NO_COLOR, som deaktiverer farvefremhævning i compiler og fortolker output.
  • Arbejdet i tolketilstand er blevet væsentligt forbedret.

Kilde: opennet.ru

Tilføj en kommentar