Utgivelse av programmeringsspråket Crystal 1.5

Utgivelsen av programmeringsspråket Crystal 1.5 er publisert, og utviklerne prøver å kombinere bekvemmeligheten av utvikling i Ruby-språket med den høye applikasjonsytelsen som er karakteristisk for C-språket. Crystals syntaks er nær, men ikke fullt ut kompatibel med, Ruby, selv om noen Ruby-programmer kjører uten endringer. Kompilatorkoden er skrevet i Crystal og distribuert under Apache 2.0-lisensen.

Språket bruker statisk typekontroll, implementert uten at det er nødvendig å spesifisere typene variabler og metodeargumenter i koden. Krystallprogrammer kompileres til kjørbare filer, med makroer evaluert og kode generert på kompileringstidspunktet. I Crystal-programmer er det mulig å koble til bindinger skrevet i C. Parallellisering av kodeutførelse utføres ved å bruke nøkkelordet "spawn", som lar deg kjøre en bakgrunnsoppgave asynkront, uten å blokkere hovedtråden, i form av lette tråder kalt fibre.

Standardbiblioteket gir et stort sett med vanlige funksjoner, inkludert verktøy for behandling av CSV, YAML og JSON, komponenter for å lage HTTP-servere og WebSocket-støtte. Under utviklingsprosessen er det praktisk å bruke "crystal play"-kommandoen, som genererer et webgrensesnitt (localhost:8080 som standard) for interaktiv utførelse av kode på Crystal-språket.

Hovedendringer:

  • Kompilatoren har lagt til en sjekk for samsvar mellom argumentnavn i implementeringen av en abstrakt metode og i dens definisjon. Hvis det er et navnemisforhold, sendes det nå en advarsel: abstrakt klasse FooAbstract abstrakt def foo(nummer : Int32) : Null sluttklasse Foo < FooAbstract def foo(navn : Int32) : Null p navn slutt slutt 6 | def foo(navn : Int32) : Null ^— Advarsel: posisjonsparameter 'navn' tilsvarer parameter 'nummer' for den overstyrte metoden FooAbstract#foo(nummer: Int32), som har et annet navn og kan påvirke navngitt argumentoverføring
  • Når du tilordner et argument til en ikke-type metode til verdien av en variabel, er argumentet nå begrenset til typen til den variabelen. klasse Foo @x : Int64 def initialize(x) @x = x # parameter x vil bli skrevet @x end end
  • Lar deg legge til merknader til parametere for metoder eller makroer. def foo(@[KanskjeUbrukt] x); slutt # OK
  • Lagt til støtte for bruk av konstanter som indekser og navn i tupler. KEY = "s" foo = {s: "String", n: 0} setter foo[KEY].size
  • Nye File#delete?-metoder er lagt til File API for sletting av filer og kataloger. og Dir#delete?, som returnerer false hvis filen eller katalogen mangler.
  • Beskyttelsen av metoden File.tempfile er styrket, som nå ikke tillater null-tegn i linjene som danner filnavnet.
  • Lagt til miljøvariabel NO_COLOR, som deaktiverer fargeutheving i kompilator- og tolkutdata.
  • Arbeid i tolkemodus har blitt betydelig forbedret.

Kilde: opennet.ru

Legg til en kommentar