Frigivelse af programmeringssproget Crystal 1.2

Udgivelsen af ​​programmeringssproget Crystal 1.2 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:

  • Tilføjet muligheden for at tildele en underklasse af en generisk klasse til et element i en overordnet klasse. klasse Foo(T); slutklasse Bar(T) < Foo(T); ende x = Foo x = Bar
  • Makroer kan nu bruge en understregning til at ignorere en værdi i en for-løkke. {% for _, v, i i {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • Tilføjet "fil_eksisterer?"-metoden til makroer. for at kontrollere eksistensen af ​​en fil.
  • Standardbiblioteket understøtter nu 128-bit heltal.
  • Tilføjet Indexable::Mutable(T)-modul med implementering af avancerede operationer til samlinger som BitArray og Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = sand # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Tilføjet XML::Node#namespace_definition-metode til at udtrække et specifikt navneområde fra XML.
  • IO#write_utf8 og URI.encode metoderne er blevet forældet og bør erstattes af IO#write_string og URI.encode_path.
  • Understøttelse af 32-bit x86-arkitektur er blevet flyttet til det andet niveau (færdige pakker genereres ikke længere). En overførsel til det første niveau af understøttelse af ARM64-arkitekturen er ved at blive forberedt.
  • Arbejdet fortsætter med at sikre fuld support til Windows-platformen. Tilføjet understøttelse af Windows-stik.
  • Der er tilføjet en universel pakke til macOS, der fungerer både på enheder med x86-processorer og på udstyr med Apple M1-chippen.

Kilde: opennet.ru

Tilføj en kommentar