Kutolewa kwa lugha ya programu ya Crystal 1.5

Kutolewa kwa lugha ya programu ya Crystal 1.5 imechapishwa, watengenezaji ambao wanajaribu kuchanganya urahisi wa maendeleo katika lugha ya Ruby na sifa ya juu ya utendaji wa lugha ya C. Sintaksia ya Crystal iko karibu na, lakini haiendani kikamilifu na, Ruby, ingawa programu zingine za Ruby huendesha bila kubadilishwa. Nambari ya mkusanyaji imeandikwa kwa Crystal na kusambazwa chini ya leseni ya Apache 2.0.

Lugha hutumia ukaguzi wa aina tuli, unaotekelezwa bila hitaji la kutaja kwa uwazi aina za vigeuzo na hoja za mbinu katika msimbo. Programu za kioo zinajumuishwa katika faili zinazoweza kutekelezwa, na macros tathmini na kanuni zinazozalishwa kwa wakati wa kukusanya. Katika programu za Crystal, inawezekana kuunganisha vifungo vilivyoandikwa kwa C. Ulinganifu wa utekelezaji wa kanuni unafanywa kwa kutumia neno la msingi la "spawn", ambayo inakuwezesha kuendesha kazi ya nyuma kwa usawa, bila kuzuia thread kuu, kwa namna ya nyuzi nyepesi zinazoitwa nyuzi.

Maktaba ya kawaida hutoa seti kubwa ya vitendaji vya kawaida, ikijumuisha zana za kuchakata CSV, YAML, na JSON, vipengele vya kuunda seva za HTTP, na usaidizi wa WebSocket. Wakati wa mchakato wa ukuzaji, ni rahisi kutumia amri ya "kucheza kwa fuwele", ambayo hutengeneza kiolesura cha wavuti (localhost:8080 kwa chaguo-msingi) kwa utekelezaji mwingiliano wa msimbo katika lugha ya Kioo.

Mabadiliko kuu:

  • Mkusanyaji ameongeza hundi ya mawasiliano ya majina ya hoja katika utekelezaji wa njia ya kufikirika na katika ufafanuzi wake. Ikiwa kuna jina lisilolingana, onyo sasa limetolewa: darasa la kufikirika FooAbstract abstract def foo(nambari : Int32) : Nil end class Foo < FooAbstract def foo(name : Int32) : Nil p name end end 6 | def foo(jina : Int32) : Nil ^β€” Onyo: parameta ya nafasi 'jina' inalingana na 'nambari' ya kigezo cha njia iliyobatilishwa FooAbstract#foo(number : Int32), ambayo ina jina tofauti na inaweza kuathiri kupita kwa hoja iliyopewa jina.
  • Wakati wa kugawa hoja kwa njia ambayo haijachapishwa kwa thamani ya kutofautisha, hoja sasa imebanwa kwa aina ya utaftaji huo. class Foo @x : Int64 def initialize(x) @x = x # parameta x itaandikwa @x mwisho mwisho
  • Inakuruhusu kuongeza vidokezo kwa vigezo vya mbinu au makro. def foo(@[LabdaHaijatumika] x); mwisho # sawa
  • Usaidizi ulioongezwa wa kutumia viunga kama fahirisi na majina katika nakala. KEY = "s" foo = {s: "String", n: 0} huweka foo[KEY].size
  • Mbinu mpya za Faili#delete? zimeongezwa kwenye API ya Faili kwa ajili ya kufuta faili na saraka. na Dir#delete?, ambayo inarudi kuwa sivyo ikiwa faili au saraka haipo.
  • Ulinzi wa njia ya File.tempfile umeimarishwa, ambayo sasa hairuhusu herufi zisizo na maana kwenye mistari inayounda jina la faili.
  • Tofauti ya mazingira iliyoongezwa NO_COLOR, ambayo inalemaza uangaziaji wa rangi katika mkusanyaji na pato la mkalimani.
  • Kazi katika hali ya mkalimani imeboreshwa kwa kiasi kikubwa.

Chanzo: opennet.ru

Kuongeza maoni