Release av programmeringsspråket Crystal 1.2

Utgivningen av programmeringsspråket Crystal 1.2 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:

  • Lade till möjligheten att tilldela en underklass av en generisk klass till ett element i en överordnad klass. klass Foo(T); slutklass Bar(T) < Foo(T); slut x = Foo x = Bar
  • Makron kan nu använda ett understreck för att ignorera ett värde i en for-loop. {% för _, v, i i {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • Lade till metoden "fil_exists?" till makron. för att kontrollera existensen av en fil.
  • Standardbiblioteket stöder nu 128-bitars heltal.
  • Tillagd Indexable::Mutable(T)-modul med implementering av avancerade operationer för samlingar som BitArray och Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = sant # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Lade till XML::Node#namespace_definition-metod för att extrahera ett specifikt namnområde från XML.
  • Metoderna IO#write_utf8 och URI.encode har föråldrats och bör ersättas med IO#write_string och URI.encode_path.
  • Stöd för 32-bitars x86-arkitektur har flyttats till den andra nivån (färdiga paket genereras inte längre). En överföring till den första nivån av stöd för ARM64-arkitekturen förbereds.
  • Arbetet fortsätter för att säkerställa fullt stöd för Windows-plattformen. Tillagt stöd för Windows-sockets.
  • Ett universellt paket har lagts till för macOS som fungerar både på enheter med x86-processorer och på utrustning med Apple M1-chippet.

Källa: opennet.ru

Lägg en kommentar