ΠΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈΠΎΡ ΡΠ°Π·ΠΈΠΊ Π Π³ΠΎ ΠΏΡΠ΅ΡΡΡΠ°Π²ΠΈΡΠ° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π½Π° Π³Π»Π°Π²Π½ΠΈΠΎΡ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ΅Π½ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ DMD 2.100.0, ΠΊΠΎΡ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° GNU/Linux, Windows, macOS ΠΈ FreeBSD ΡΠΈΡΡΠ΅ΠΌΠΈ. ΠΠΎΠ΄ΠΎΡ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ° ΠΏΠΎΠ΄ Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°ΡΠ° BSL (Boost Software License).
D Π΅ ΡΡΠ°ΡΠΈΡΠΊΠΈ Π½Π°ΠΏΠΈΡΠ°Π½, ΠΈΠΌΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠ° ΡΠ»ΠΈΡΠ½Π° Π½Π° C/C++ ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π½ΠΈ ΡΠ°Π·ΠΈΡΠΈ, ΠΏΡΠΈΡΠΎΠ° ΠΏΠΎΠ·Π°ΡΠΌΡΠ²Π°ΡΡΠΈ Π΄Π΅Π» ΠΎΠ΄ ΡΠ°Π·Π²ΠΎΡΠ½Π°ΡΠ° Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΎΡΡ ΠΈ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΠ½ΠΈ ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΠ²ΠΊΠΈ Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈΡΠ΅ ΡΠ°Π·ΠΈΡΠΈ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π°ΡΠΎΡΠΈΡΠ°ΡΠΈΠ²Π½ΠΈ Π½ΠΈΠ·ΠΈ, Π·Π°ΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΈΠΏΠΎΠ²ΠΈ, Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°, ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°ΡΠ΅, ΠΈΠ·Π±ΠΎΡΠ΅Π½ ΡΠΎΠ±ΠΈΡΠ°Ρ Π½Π° ΡΡΠ±ΡΠ΅, ΡΠΈΡΡΠ΅ΠΌ Π½Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° ΠΌΠ΅ΡΠ°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°ΡΠ΅, ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ C Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π½Π΅ΠΊΠΎΠΈ C++ ΠΈ Objective-C Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΠ΅ΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΠΎ Π½ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅:
- Π‘ΡΠ°ΡΠΈΠΎΡ ΡΡΠΈΠ» Π½Π° ΠΏΡΠ΅ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΡ ΡΡΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π²ΠΎ Π³ΡΠ°Π½ΠΊΠ°ΡΠ° D1 Π΅ ΠΏΡΠ΅ΠΊΠΈΠ½Π°Ρ. ΠΠ°ΠΌΠ΅Π½Π΅ΡΠΈ opNeg, opAdd_r, opAddAssign, ΠΈΡΠ½. Π΄ΠΎΡΠ΄ΠΎΠ° opUnary, opBinary, opBinaryRight ΠΈ opOpAssign. Π‘ΡΠ°ΡΠΈΠΎΡ ΡΡΠΈΠ» Π½Π° ΠΏΡΠ΅ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΡ Π±Π΅ΡΠ΅ Π·Π°ΡΡΠ°ΡΠ΅Π½ Π²ΠΎ 2019 Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° Π³ΡΠ΅ΡΠΊΠ° ΠΎΠ΄ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ 2.100.
- ΠΠ»ΡΡΠ½ΠΈΠΎΡ Π·Π±ΠΎΡ Π·Π° Π±ΡΠΈΡΠ΅ΡΠ΅ Π΅ Π·Π°ΡΡΠ°ΡΠ΅Π½ ΠΎΠ΄ 2018 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΠ°ΠΌΠ΅ΡΡΠΎ Π±ΡΠΈΡΠ΅ΡΠ΅, ΡΡΠ΅Π±Π° Π΄Π° ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° ΡΠ½ΠΈΡΡΡΠ²Π°ΡΠ΅ ΠΈΠ»ΠΈ core.memory.__delete.
- ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ Π΅ Π½ΠΎΠ² Π°ΡΡΠΈΠ±ΡΡ @mustuse ΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈ Π½Π° ΡΠΈΠΏΠΎΠ²ΠΈ Π½Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΈ ΡΠ½ΠΈΡΠ° ΠΊΠ°ΠΊΠΎ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π΅Π½ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ Π³ΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠ³Π° ΠΊΠΎΠ΄ΠΎΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈ ΡΠΎ ΠΈΡΠΊΠ»ΡΡΠΎΡΠΈ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎ Π±Π»ΠΎΠΊΠΎΠ²ΠΈΡΠ΅ @nogc). ΠΠΊΠΎ ΠΈΠ·ΡΠ°Π·ΠΎΡ ΠΎΠ·Π½Π°ΡΠ΅Π½ ΡΠΎ Π°ΡΡΠΈΠ±ΡΡΠΎΡ @mustuse Π½Π΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ, ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π³ΡΠ΅ΡΠΊΠ°.
- ΠΠ° ΡΡΠ°ΡΠΈΡΠ½ΠΈ Π½ΠΈΠ·ΠΈ, Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ Π΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΠ²ΠΎΡΡΡΠ²ΠΎΡΠΎ β.tupleofβ Π·Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠ±ΠΈΠ΅ Π½ΠΈΠ·Π°ΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ (lvalue) Π½Π° ΡΠ΅ΠΊΠΎΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΎΠ΄ Π½ΠΈΠ·Π°ΡΠ°. void foo(int, int, int) { /* β¦ */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // Π°Π½Π°Π»ΠΎΠ³Π΅Π½ foo(1, 2, 3); ΠΏΠ»ΠΎΠ²ΠΈ[3] ΡΠ°; fa.tupleof = ΠΈΠ°.tuppleof; // Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎΡΠΎ Π΄ΠΎΠ΄Π΅Π»ΡΠ²Π°ΡΠ΅ fa = ia ΡΠ΅Π·ΡΠ»ΡΠΈΡΠ° ΡΠΎ ΠΏΠΎΡΠ²ΡΠ΄Π° Π·Π° Π³ΡΠ΅ΡΠΊΠ° (fa == [1F, 2F, 3F]);
ΠΠ·Π²ΠΎΡ: opennet.ru