ืžื”ื“ื•ืจืช ืžื”ื“ืจ ืฉืคืช D 2.100

ืžืคืชื—ื™ ืฉืคืช ื”ืชื›ื ื•ืช D ื”ืฆื™ื’ื• ืืช ืฉื—ืจื•ืจื• ืฉืœ ืžื”ื“ืจ ื”ื”ืชื™ื™ื—ืกื•ืช ื”ืจืืฉื™ DMD 2.100.0, ื”ืชื•ืžืš ื‘ืžืขืจื›ื•ืช GNU/Linux, Windows, macOS ื•- FreeBSD. ืงื•ื“ ื”ืžื”ื“ืจ ืžื•ืคืฅ ืชื—ืช ื”-BSL ื”ื—ื™ื ืžื™ (ืจื™ืฉื™ื•ืŸ ืชื•ื›ื ืช Boost).

D ืžื•ืงืœื“ ืกื˜ื˜ื™, ื‘ืขืœ ืชื—ื‘ื™ืจ ื“ื•ืžื” ืœ-C/C++, ื•ืžืกืคืง ืืช ื”ื‘ื™ืฆื•ืขื™ื ืฉืœ ืฉืคื•ืช ื”ื™ื“ื•ืจ, ืชื•ืš ื”ืฉืืœืช ื—ืœืง ืžื™ืขื™ืœื•ืช ื”ืคื™ืชื•ื— ื•ืžื™ืชืจื•ื ื•ืช ื”ืื‘ื˜ื—ื” ืฉืœ ืฉืคื•ืช ื“ื™ื ืžื™ื•ืช. ืœื“ื•ื’ืžื”, ื”ื•ื ืžืกืคืง ืชืžื™ื›ื” ืขื‘ื•ืจ ืžืขืจื›ื™ื ืืกื•ืฆื™ืื˜ื™ื‘ื™ื™ื, ื”ืกืงืช ืกื•ื’ื™ื, ื ื™ื”ื•ืœ ื–ื™ื›ืจื•ืŸ ืื•ื˜ื•ืžื˜ื™, ืชื›ื ื•ืช ืžืงื‘ื™ืœ, ืืกืคืŸ ืืฉืคื” ืื•ืคืฆื™ื•ื ืœื™, ืžืขืจื›ืช ืชื‘ื ื™ื•ืช, ืจื›ื™ื‘ื™ ืžื˜ื”-ืชื›ื ื•ืช, ื”ื™ื›ื•ืœืช ืœื”ืฉืชืžืฉ ื‘ืกืคืจื™ื•ืช C, ื•ื›ืžื” ืกืคืจื™ื•ืช C++ ื•-Objective-C.

ื‘ื™ืŸ ื”ืฉื™ื ื•ื™ื™ื ื‘ืžื”ื“ื•ืจื” ื”ื—ื“ืฉื”:

  • ื”ืกื’ื ื•ืŸ ื”ื™ืฉืŸ ืฉืœ ืขื•ืžืก ื™ืชืจ ืฉืœ ืžืคืขื™ืœื™ื ื‘ืฉื™ืžื•ืฉ ื‘ืกื ื™ืฃ D1 ื”ื•ืคืกืง. ืžื—ืœื™ืฃ ืืช opNeg, opAdd_r, opAddAssign ื•ื›ื•'. ื”ื’ื™ืขื• opUnary, opBinary, opBinaryRight ื•-opOpAssign. ื”ืกื’ื ื•ืŸ ื”ื™ืฉืŸ ืฉืœ ืขื•ืžืก ื™ืชืจ ืขืœ ื™ื“ื™ ื”ืžืคืขื™ืœ ื”ื•ืฆื ืžืฉื™ืžื•ืฉ ื‘ืฉื ืช 2019 ื•ื™ื’ืจื•ื ืœืฉื’ื™ืื” ื”ื—ืœ ืžื”ื’ืจืกื” 2.100.
  • ืžื™ืœืช ื”ืžืคืชื— ืœืžื—ื•ืง ื”ื•ืฆืื” ืžืฉื™ืžื•ืฉ ืžืื– 2018. ื‘ืžืงื•ื ืœืžื—ื•ืง, ืขืœื™ืš ืœื”ืฉืชืžืฉ ื‘ืคื•ื ืงืฆื™ื” destroy ืื• core.memory.__delete.
  • ื”ื•ื˜ืžืขื” ืชื›ื•ื ื” ื—ื“ืฉื” ืฉืœ @mustuse ืฉื ื™ืชืŸ ืœื”ื—ื™ืœ ืขืœ ืกื•ื’ื™ struct ื•ืื™ื—ื•ื“ ื›ืฉื™ื˜ื” ื—ืœื•ืคื™ืช ืœื˜ื™ืคื•ืœ ื‘ืฉื’ื™ืื•ืช ื›ืืฉืจ ื”ืงื•ื“ ืื™ื ื• ื™ื›ื•ืœ ืœื”ืชืžื•ื“ื“ ืขื ื—ืจื™ื’ื™ื (ืœื“ื•ื’ืžื”, ื‘ืœื•ืงื™ื ืฉืœ @nogc). ืื ืœื ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ื‘ื™ื˜ื•ื™ ื”ืžืกื•ืžืŸ ื‘ืชื›ื•ื ื” @mustuse ื‘ืงื•ื“, ื”ืžื”ื“ืจ ื™ืคื™ืง ืฉื’ื™ืื”.
  • ืขื‘ื•ืจ ืžืขืจื›ื™ื ืกื˜ื˜ื™ื™ื, ื”ืฉื™ืžื•ืฉ ื‘ืžืืคื™ื™ืŸ ".tupleof" ืžื•ืชืจ ืœืงื‘ืœ ืืช ืจืฆืฃ ื”ืขืจื›ื™ื (lvalue) ืฉืœ ื›ืœ ืจื›ื™ื‘ ื‘ืžืขืจืš. void foo(int, int, int) { /* โ€ฆ */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // ืื ืœื•ื’ื™ foo(1, 2, 3); ืœืฆื•ืฃ[3] fa; fa.tupleof = ia.tupleof; // ื”ืงืฆืื” ืคืฉื•ื˜ื” fa = ia ื’ื•ืจืžืช ืœืฉื’ื™ืื” ื‘ื˜ืขื ื”(fa == [1F, 2F, 3F]);

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”