D language compiler release 2.100

Ipinakita ng mga developer ng D programming language ang paglabas ng pangunahing reference compiler na DMD 2.100.0, na sumusuporta sa GNU/Linux, Windows, macOS at FreeBSD system. Ang compiler code ay ipinamamahagi sa ilalim ng libreng BSL (Boost Software License).

Ang D ay statically type, may syntax na katulad ng C/C++, at nagbibigay ng pagganap ng mga pinagsama-samang wika, habang hinihiram ang ilan sa kahusayan sa pag-unlad at mga benepisyo sa seguridad ng mga dynamic na wika. Halimbawa, nagbibigay ito ng suporta para sa mga associative arrays, type inference, automatic memory management, parallel programming, isang opsyonal na garbage collector, isang template system, metaprogramming component, ang kakayahang gumamit ng C library, at ilang C++ at Objective-C na library.

Kabilang sa mga pagbabago sa bagong release:

  • Ang lumang istilo ng overloading ng operator na ginamit sa sangay ng D1 ay hindi na ipinagpatuloy. Pinapalitan ang opNeg, opAdd_r, opAddAssign, atbp. dumating ang opUnary, opBinary, opBinaryRight at opOpAssign. Ang lumang istilo ng overloading ng operator ay hindi na ginagamit noong 2019 at magkakaroon ng error simula sa paglabas ng 2.100.
  • Hindi na ginagamit ang keyword na tanggalin mula noong 2018. Sa halip na tanggalin, dapat mong gamitin ang destroy o core.memory.__delete function.
  • Ang isang bagong katangiang @mustus ay ipinatupad na maaaring ilapat sa mga uri ng istruktura at unyon bilang isang alternatibong paraan ng paghawak ng error kapag ang code ay hindi makayanan ang mga pagbubukod (halimbawa, sa mga bloke ng @nogc). Kung hindi ginagamit sa code ang isang expression na minarkahan ng attribute na @mususe, bubuo ng error ang compiler.
  • Para sa mga static na array, pinapayagan ang paggamit ng property na ".tupleof" upang makuha ang sequence ng mga value (lvalue) ng bawat elemento ng array. void foo(int, int, int) { /* … */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // analogue foo(1, 2, 3); lumutang[3] fa; fa.tupleof = ia.tupleof; // simpleng assignment fa = ia ay nagreresulta sa isang error assert(fa == [1F, 2F, 3F]);

Pinagmulan: opennet.ru

Magdagdag ng komento