เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก D เป„เบ”เป‰เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบ•เบปเป‰เบ™เบ•เป DMD 2.100.0, เป€เบŠเบดเปˆเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบฅเบฐเบšเบปเบš GNU/Linux, Windows, macOS เปเบฅเบฐ FreeBSD. เบฅเบฐเบซเบฑเบ” compiler เปเบกเปˆเบ™เปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰ BSL เบŸเบฃเบต (Boost Software License).

D เปเบกเปˆเบ™เบžเบดเบกเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ, เบกเบต syntax เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš C/C++, เปเบฅเบฐเบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบžเบฒเบชเบฒเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบก, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบขเบทเบกเบšเบฒเบ‡เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบžเบฒเบชเบฒเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบฑเบ™เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš arrays เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡, เบ›เบฐเป€เบžเบ” inference, เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบกเบ‚เบฐเบซเบ™เบฒเบ™, เบ•เบปเบงเป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เบฅเบฐเบšเบปเบšเปเบกเปˆเปเบšเบš, เบญเบปเบ‡เบ›เบฐเบเบญเบš metaprogramming, เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” C, เปเบฅเบฐเบšเบฒเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” C ++ เปเบฅเบฐ Objective-C.

เปƒเบ™เบšเบฑเบ™เบ”เบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเปƒเบซเบกเปˆ:

  • เบฎเบนเบšเปเบšเบšเป€เบเบปเปˆเบฒเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ overloading เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบชเบฒเบ‚เบฒ D1 เป„เบ”เป‰เบ–เบทเบเบขเบธเบ”เป€เบŠเบปเบฒ. เปเบ—เบ™เบ—เบตเปˆ opNeg, opAdd_r, opAddAssign, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบกเบฒ opUnary, opBinary, opBinaryRight เปเบฅเบฐ opOpAssign. เบฎเบนเบšเปเบšเบšเป€เบเบปเปˆเบฒเบ‚เบญเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เป€เบเบตเบ™เบ‚เบญเบ‡เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป„เบ”เป‰เบ–เบทเบเบเบปเบเป€เบฅเบตเบเปƒเบ™เบ›เบต 2019 เปเบฅเบฐเบˆเบฐเบ–เบดเป‰เบกเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบ 2.100.
  • เบ„เบณโ€‹เบ—เบตเปˆโ€‹เบ–เบทเบโ€‹เบฅเบปเบšโ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบขเบธเบ”โ€‹เป€เบŠเบปเบฒโ€‹เบ™เบฑเบšโ€‹เปเบ•เปˆโ€‹เบ›เบต 2018. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบฅเบถเบš, เบ—เปˆเบฒเบ™เบ„เบงเบ™เปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™ destroy เบซเบผเบท core.memory.__delete.
  • เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ @mustuse เปƒเบซเบกเปˆเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบ›เบฐเป€เบžเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เปเบฅเบฐเบชเบฐเบซเบฐเบžเบฑเบ™เป€เบ›เบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เป€เบกเบทเปˆเบญเบฅเบฐเบซเบฑเบ”เบšเปเปˆเบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™ @nogc blocks). เบ–เป‰เบฒเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบตเปˆเบกเบตเป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบ @mustuse เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบซเบฑเบ”, compiler เบˆเบฐเบชเป‰เบฒเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.
  • เบชเปเบฒเบฅเบฑเบš static array, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” ".tupleof" เปเบกเปˆเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป„เบ”เป‰เบฎเบฑเบšเบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบ„เปˆเบฒ (lvalue) เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡ array. void foo(int, int, int) { /* โ€ฆ */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // analogue foo(1, 2, 3); float[3] fa; fa.tupleof = ia.tupleof; // เบเบฒเบ™เบกเบญเบšเปเบฒเบเปเบšเบšเบ‡เปˆเบฒเบเป† fa = ia เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ” (fa == [1F, 2F, 3F]);

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™