Zhvilluesit e gjuhës së programimit D publikuan lëshimin e kompilatorit të standardit DMD 2.100.0, i cili mbështet sistemet GNU/Linux, Windows, macOS dhe FreeBSD. Kodi i kompilatorit shpërndahet nën licencën e lirë BSL (Boost Software License).
Gjuha D pĂ«rdor tipizimin statik, ka njĂ« sintaksĂ« tĂ« ngjashme me C/C++, dhe ofron performancĂ«n e gjuhĂ«ve tĂ« kompozuara, duke pĂ«rfituar nga disa mundĂ«si tĂ« dobishme tĂ« gjuhĂ«ve dinamike nĂ« fushĂ«n e efikasitetit tĂ« zhvillimit dhe sigurisĂ«. PĂ«r shembull, ofrohet mbĂ«shtetje pĂ«r tabela asociative, pĂ«rcaktim tĂ« Indirekt tĂ« tipeve, menaxhim automatik tĂ« memories, mjete pĂ«r programim paralel, njĂ« mbledhĂ«s plehrash opsional, njĂ« sistemæšĄæżĆĄash, komponentĂ« pĂ«r metaprogramim, mundĂ«sinĂ« pĂ«r tĂ« pĂ«rdorur biblioteka nĂ« gjuhĂ«n C, si dhe disa biblioteka nĂ« C++ dhe Objective-C.
Ndryshimet në publikimin e ri përfshijnë:
- Mbështetja për stilin e vjetër të mbingarkesës së operatorëve, e përdorur në degën D1, është ndaluar. Në vend të opNeg, opAdd_r, opAddAssign etj. tani përdoren opUnary, opBinary, opBinaryRight dhe opOpAssign. Stili i vjetër i mbingarkesës së operatorëve u shpall i vjetruar në vitin 2019, dhe duke filluar nga lëshimi 2.100, do të çojë në shfaqjen e një gabimi.
- Mbështetja për fjalën kyç delete është ndaluar, duke u shpallur e vjetruar që nga viti 2018. Në vend të delete, duhet të përdoret funksioni destroy ose core.memory.__delete.
- ĂshtĂ« implementuar njĂ« atribut i ri @mustuse, i cili mund tĂ« aplikohet nĂ« typer struct dhe union si njĂ« metodĂ« alternative pĂ«r trajtimin e gabimeve, kur nĂ« kod nuk Ă«shtĂ« e mundur pĂ«rdorimi i pĂ«rjashtimeve (pĂ«r shembull, nĂ« blloqet @nogc). NĂ«se shprehja e shĂ«nuar me atributin @mustuse nuk pĂ«rdoret nĂ« kod, kompilatorja do tĂ« JapĂ« njĂ« gabim.
- PĂ«r arrays statike Ă«shtĂ« lejuar pĂ«rdorimi i pronĂ«s â.tupleofâ pĂ«r tĂ« marrĂ« njĂ« sekuencĂ« vlerash (lvalue) pĂ«r çdo element tĂ« array-t. void foo(int, int, int) { /* ⊠*/ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // e barabartĂ« me foo(1, 2, 3); float[3] fa; fa.tupleof = ia.tupleof; // njĂ« caktim i thjeshtĂ« fa = ia shkakton njĂ« gabim assert(fa == [1F, 2F, 3F]);
Burimi: opennet.ru
