Inilabas ang Crystal 0.34.0

Isang bagong bersyon ng Crystal ang inilabas, isang pinagsama-samang programming language na may Ruby syntax, ang mga pangunahing tampok nito ay runtime na may "built-in" na event loop, kung saan ang lahat ng I/O operations ay asynchronous, suporta para sa multithreading (hangga't dahil ito ay pinagana ng isang bandila sa panahon ng compilation) at napakasimple at maginhawang operasyon sa mga aklatan sa C.

Simula sa bersyon 0.34.0, opisyal na nagsisimulang lumipat ang wika patungo sa unang tunay na paglabas nito (i.e. bersyon 1.0).

Kasama sa bagong bersyon ng Crystal ang mga sumusunod na pagbabago at pagpapahusay ayon sa kahalagahan:

  • Isang bagong logging library ang naidagdag sa API Log, na, hindi katulad ng luma, ay maaaring magpadala ng mga mensahe sa iba't ibang mga backend at mag-filter ng mga mensaheng ito nang iba depende sa "pinagmulan".

  • Mga simulain mula sa mundo ng pag-unlad ng C, Errno ΠΈ WinError, na ginagamit para sa I/O primitives, ay nagiging isang bagay ng nakaraan salamat sa exception hierarchy IO:: Error (gayunpaman, wala pang nagbabawal sa paggamit ng Errno).

  • Inalis ang awtomatikong pagpapalit ng else nil mula sa operator kaso/kailan/iba. Ginagawa ito upang maiwasan ang developer mula sa aksidenteng paglaktaw sa isa sa mga sangay. kailan kapag tumutugma sa mga tiyak na kaso tulad ng mga enum at pagpasa sa mga uri mula sa Union. Ibig sabihin, sa madaling salita, hindi na gagana ang code na ito nang hindi nagsasaad ng isa pa kailan (kapag Char) o mga gawain iba-mga sangay:

a = 1 || 'x' || "foo"
kaso a
kapag ang Int32
#…
kapag String
#…
dulo

  • Opsyon ng compiler disable_overflow hindi na magagamit. Para sa mga overflow operation, gamitin ang &+, &-, &* na mga pamamaraan.

  • Array#fill ngayon ay lumilipad nang mas mabilis kaysa sa isang bala, salamat sa pagpapalit ng hangal na loop ng isang simpleng memset;

  • Tagapamahala ng mga shards (mga pakete), na tinatawag na, paradoxically, shards, ay gumagamit na ngayon ng mas mabilis at mas mahusay na Molinillo dependency satisfaction algorithm na makikita sa CocoaPods (Swift) at Builder (Ruby).

  • Nagdagdag ng suporta LLVM 10, na sa teorya ay magbibigay sa atin ng ilang pagtaas sa pagiging produktibo, katatagan, atbp.

... at marami pang iba, sa aking pansariling opinyon, hindi gaanong makabuluhang mga pagpapabuti.

Nais kong tandaan na ang Crystal ay isang wika na binuo sa LLVM, na nagpapahintulot sa iyo na magsulat ng mga aplikasyon kung minsan ay mas mabilis, mas simple at mas maigsi kaysa sa binibigyang kahulugan na "mga kapatid", at sa parehong oras ay makakuha ng isang medyo mabilis na binary bilang isang resulta. Kung ikukumpara sa Golang, namumukod-tangi ito dahil sa ganap nitong OOP, suporta para sa mga generic, at isang napakasimple at naiintindihan na syntax. Ang layunin nito ay halos kapareho sa Nim, ngunit sa parehong oras ay malinaw na nakatuon ito sa praktikal na paggamit "dito at ngayon", salamat sa kung saan mayroon ito sa arsenal ng API nito ng maraming mahusay na dokumentado, maginhawa at mataas na kalidad na mga tool, na suportado ng mga developer ng wika at samakatuwid ay napaka-stable.

Pinagmulan: linux.org.ru

Magdagdag ng komento