Utgivelse av programmeringsspråket Crystal 1.2

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

  • Lagt til muligheten til å tilordne en underklasse av en generisk klasse til et element i en overordnet klasse. klasse Foo(T); sluttklasse Bar(T) < Foo(T); end x = Foo x = Bar
  • Makroer kan nå bruke et understrek for å ignorere en verdi i en for-løkke. {% for _, v, i i {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • La "file_eksisterer?"-metoden til makroer. for å sjekke eksistensen av en fil.
  • Standardbiblioteket støtter nå 128-bits heltall.
  • Lagt til Indexable::Mutable(T)-modul med implementering av avanserte operasjoner for samlinger som BitArray og Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = sant # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Lagt til XML::Node#namespace_definition-metode for å trekke ut et spesifikt navneområde fra XML.
  • Metodene IO#write_utf8 og URI.encode er avviklet og bør erstattes av IO#write_string og URI.encode_path.
  • Støtte for 32-bit x86-arkitektur har blitt flyttet til andre nivå (ferdige pakker genereres ikke lenger). En overføring til første nivå av støtte for ARM64-arkitekturen er under forberedelse.
  • Arbeidet fortsetter for å sikre full støtte for Windows-plattformen. Lagt til støtte for Windows-sockets.
  • En universalpakke er lagt til for macOS, som fungerer både på enheter med x86-prosessorer og på utstyr med Apple M1-brikken.

Kilde: opennet.ru

Legg til en kommentar