D-lingva kompililo eldono 2.100

La programistoj de la D programlingvo prezentis la liberigon de la ĉefa referenca kompililo DMD 2.100.0, kiu subtenas GNU/Linukso, Vindozo, macOS kaj FreeBSD sistemoj. La kompilkodo estas distribuita sub la senpaga BSL (Boost Software License).

D estas statike tajpita, havas sintakson similan al C/C++, kaj disponigas la agadon de kompilitaj lingvoj, prunteprenante kelkajn el la evoluefikeco kaj sekurecaj avantaĝoj de dinamikaj lingvoj. Ekzemple, ĝi disponigas subtenon por asociecaj tabeloj, tipinferenco, aŭtomata memoradministrado, paralela programado, laŭvola rubkolektanto, ŝablonsistemo, metaprogramadkomponentoj, la kapablo uzi C-bibliotekojn, kaj kelkajn C++ kaj Objective-C-bibliotekojn.

Inter la ŝanĝoj en la nova eldono:

  • La malnova stilo de funkciigistotroŝarĝado uzita en la D1-filio estis nuligita. Anstataŭigis opNeg, opAdd_r, opAddAssign, ktp. venis opUnary, opBinary, opBinaryRight kaj opOpAssign. La malnova stilo de operacianta troŝarĝado estis malrekomendita en 2019 kaj ĵetos eraron ekde la eldono 2.100.
  • La forigita ŝlosilvorto estas malrekomendita ekde 2018. Anstataŭ forigi, vi devus uzi la funkcion destroy aŭ core.memory.__delete.
  • Nova @mustuse-atributo estis efektivigita kiu povas esti aplikita al struct kaj uniospecoj kiel alternativa metodo de erartraktado kiam la kodo ne povas trakti esceptojn (ekzemple, en @nogc-blokoj). Se esprimo markita per la @mustuse-atributo ne estas uzata en kodo, la kompililo generos eraron.
  • Por statikaj tabeloj, la uzo de la posedaĵo ".tupleof" rajtas akiri la sekvencon de valoroj (lvalue) de ĉiu elemento de la tabelo. void foo(int, int, int) { /* … */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // analoga foo(1, 2, 3); float[3] fa; fa.tupleof = ia.tupleof; // simpla asigno fa = ia rezultigas eraran aserton (fa == [1F, 2F, 3F]);

fonto: opennet.ru

Aldoni komenton