Paglabas ng Crystal programming language 1.5

Ang paglabas ng Crystal 1.5 programming language ay nai-publish, ang mga developer nito ay nagsisikap na pagsamahin ang kaginhawahan ng pag-unlad sa wikang Ruby na may mataas na katangian ng pagganap ng aplikasyon ng wikang C. Ang syntax ni Crystal ay malapit sa, ngunit hindi ganap na katugma sa, Ruby, bagaman ang ilang mga programa ng Ruby ay tumatakbo nang walang pagbabago. Ang compiler code ay nakasulat sa Crystal at ipinamahagi sa ilalim ng lisensya ng Apache 2.0.

Gumagamit ang wika ng static type checking, na ipinatupad nang hindi kinakailangang tahasang tukuyin ang mga uri ng mga variable at argumento ng pamamaraan sa code. Ang mga Crystal program ay pinagsama-sama sa mga executable na file, na may mga macro na sinusuri at nabuo ang code sa oras ng pag-compile. Sa mga programang Crystal, posibleng ikonekta ang mga binding na nakasulat sa C. Ang parallelization ng code execution ay isinasagawa gamit ang "spawn" na keyword, na nagbibigay-daan sa iyo upang magpatakbo ng isang background na gawain nang asynchronously, nang hindi hinaharangan ang pangunahing thread, sa anyo ng mga magaan na thread na tinatawag na mga hibla.

Ang karaniwang library ay nagbibigay ng malaking hanay ng mga karaniwang function, kabilang ang mga tool para sa pagproseso ng CSV, YAML, at JSON, mga bahagi para sa paglikha ng mga HTTP server, at suporta sa WebSocket. Sa panahon ng proseso ng pagbuo, madaling gamitin ang command na "crystal play", na bumubuo ng web interface (localhost:8080 bilang default) para sa interactive na pagpapatupad ng code sa wikang Crystal.

Pangunahing pagbabago:

  • Ang compiler ay nagdagdag ng tseke para sa pagsusulatan ng mga pangalan ng argumento sa pagpapatupad ng abstract na pamamaraan at sa kahulugan nito. Kung mayroong mismatch sa pangalan, may babala na ngayon: abstract class FooAbstract abstract def foo(number : Int32) : Nil end class Foo < FooAbstract def foo(name : Int32) : Nil p name end end 6 | def foo(name : Int32): Nil ^β€” Babala: ang positional parameter na 'name' ay tumutugma sa parameter na 'number' ng overridden na paraan FooAbstract#foo(number: Int32), na may ibang pangalan at maaaring makaapekto sa pinangalanang pagpasa ng argumento
  • Kapag nagtatalaga ng argumento sa isang hindi na-type na paraan sa halaga ng isang variable, ang argumento ay napipilitan na ngayon sa uri ng variable na iyon. class Foo @x : Int64 def initialize(x) @x = x # parameter x ay ita-type @x end end
  • Binibigyang-daan kang magdagdag ng mga anotasyon sa mga parameter ng mga pamamaraan o macro. def foo(@[MaybeUnused] x); tapusin # OK
  • Nagdagdag ng suporta para sa paggamit ng mga constant bilang mga indeks at pangalan sa tuple. KEY = "s" foo = {s: "String", n: 0} naglalagay ng foo[KEY].size
  • Ang mga bagong paraan ng File#delete? ay naidagdag sa File API para sa pagtanggal ng mga file at direktoryo. at Dir#delete?, na nagbabalik ng false kung nawawala ang file o direktoryo.
  • Ang proteksyon ng paraan ng File.tempfile ay pinalakas, na ngayon ay hindi pinapayagan ang mga null na character sa mga linya na bumubuo sa pangalan ng file.
  • Nagdagdag ng environment variable NO_COLOR, na hindi pinapagana ang pag-highlight ng kulay sa output ng compiler at interpreter.
  • Ang trabaho sa interpreter mode ay makabuluhang napabuti.

Pinagmulan: opennet.ru

Magdagdag ng komento