Release av programmeringsspråket Crystal 1.5

Utgivningen av programmeringsspråket Crystal 1.5 har publicerats, vars utvecklare försöker kombinera bekvämligheten med utveckling på Ruby-språket med C-språkets höga applikationsprestanda. Crystals syntax är nära, men inte helt kompatibel med, Ruby, även om vissa Ruby-program körs utan modifiering. Kompilatorkoden är skriven i Crystal och distribueras under Apache 2.0-licensen.

Språket använder statisk typkontroll, implementerad utan behov av att explicit specificera typerna av variabler och metodargument i koden. Crystal-program kompileras till körbara filer, med makron utvärderade och kod genereras vid kompilering. I Crystal-program är det möjligt att koppla bindningar skrivna i C. Parallellisering av kodexekvering utförs med nyckelordet "spawn", som låter dig köra en bakgrundsuppgift i asynkront läge utan att blockera huvudtråden, i form av lätta trådar som kallas fibrer.

Standardbiblioteket tillhandahåller en stor uppsättning vanliga funktioner, inklusive verktyg för att bearbeta CSV, YAML och JSON, komponenter för att skapa HTTP-servrar och WebSocket-stöd. Under utvecklingsprocessen är det bekvämt att använda kommandot "crystal play", som genererar ett webbgränssnitt (localhost:8080 som standard) för interaktiv exekvering av kod i Crystal-språket.

Huvudändringar:

  • Kompilatorn har lagt till en kontroll för överensstämmelse mellan argumentnamn i implementeringen av en abstrakt metod och i dess definition. Om det finns ett namn som inte matchar, utfärdas nu en varning: abstrakt klass FooAbstract abstract def foo(nummer : Int32) : Noll slutklass Foo < FooAbstract def foo(namn : Int32) : Noll p namn slut slut 6 | def foo(name : Int32) : Noll ^— Varning: positionsparameter 'name' motsvarar parametern 'number' för den åsidosatta metoden FooAbstract#foo(number: Int32), som har ett annat namn och kan påverka namngivna argumentöverföring
  • När man tilldelar ett argument till en otypad metod till värdet av en variabel, är argumentet nu begränsat till typen av den variabeln. class Foo @x : Int64 def initialize(x) @x = x # parameter x kommer att skrivas @x end end
  • Låter dig lägga till kommentarer till parametrar för metoder eller makron. def foo(@[KanskeUused] x); slut # OK
  • Lade till stöd för att använda konstanter som index och namn i tupler. KEY = "s" foo = {s: "String", n: 0} sätter foo[KEY].size
  • Nya File#delete?-metoder har lagts till i File API för att ta bort filer och kataloger. och Dir#delete?, som returnerar false om filen eller katalogen saknas.
  • Skyddet för metoden File.tempfile har stärkts, vilket nu inte tillåter nolltecken på raderna som bildar filnamnet.
  • Lade till miljövariabel NO_COLOR, som inaktiverar färgmarkering i kompilator- och tolkutdata.
  • Arbetet i tolkläge har förbättrats avsevärt.

Källa: opennet.ru

Lägg en kommentar