Paglabas ng Crystal programming language 1.2

Ang paglabas ng Crystal 1.2 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:

  • Idinagdag ang kakayahang magtalaga ng isang subclass ng isang generic na klase sa isang elemento ng isang parent na klase. klase Foo(T); end class Bar(T) < Foo(T); dulo x = Foo x = Bar
  • Ang mga macro ay maaari na ngayong gumamit ng underscore upang huwag pansinin ang isang halaga sa isang for loop. {% para sa _, v, i sa {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • Idinagdag ang pamamaraang β€œfile_exists?” sa mga macro. upang suriin ang pagkakaroon ng isang file.
  • Sinusuportahan na ngayon ng karaniwang library ang 128-bit integers.
  • Idinagdag ang Indexable::Mutable(T) na module na may pagpapatupad ng mga advanced na operasyon para sa mga koleksyon gaya ng BitArray at Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Idinagdag ang XML::Node#namespace_definition na paraan upang kunin ang isang partikular na namespace mula sa XML.
  • Ang mga pamamaraan ng IO#write_utf8 at URI.encode ay hindi na ginagamit at dapat palitan ng IO#write_string at URI.encode_path.
  • Ang suporta para sa 32-bit x86 na arkitektura ay inilipat sa pangalawang antas (hindi na nabuo ang mga handa na pakete). Inihahanda ang paglipat sa unang antas ng suporta para sa arkitektura ng ARM64.
  • Patuloy ang trabaho upang matiyak ang buong suporta para sa platform ng Windows. Nagdagdag ng suporta para sa mga Windows socket.
  • Ang isang unibersal na pakete ay idinagdag para sa macOS, gumagana kapwa sa mga device na may mga x86 processor at sa mga kagamitan na may Apple M1 chip.

Pinagmulan: opennet.ru

Magdagdag ng komento