D ์–ธ์–ด ์ปดํŒŒ์ผ๋Ÿฌ ๋ฆด๋ฆฌ์Šค 2.100

D ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๊ฐœ๋ฐœ์ž๋Š” GNU/Linux, Windows, macOS ๋ฐ FreeBSD ์‹œ์Šคํ…œ์„ ์ง€์›ํ•˜๋Š” ์ฃผ์š” ์ฐธ์กฐ ์ปดํŒŒ์ผ๋Ÿฌ DMD 2.100.0์˜ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ ์ฝ”๋“œ๋Š” ๋ฌด๋ฃŒ BSL(Boost Software License)์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

D๋Š” ์ •์ ์œผ๋กœ ์œ ํ˜•์ด ์ง€์ •๋˜๊ณ  C/C++์™€ ์œ ์‚ฌํ•œ ๊ตฌ๋ฌธ์„ ๊ฐ€์ง€๋ฉฐ ์ปดํŒŒ์ผ๋œ ์–ธ์–ด์˜ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋™์‹œ์— ๋™์  ์–ธ์–ด์˜ ๊ฐœ๋ฐœ ํšจ์œจ์„ฑ ๋ฐ ๋ณด์•ˆ ์ด์ ์„ ์ผ๋ถ€ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์—ฐ๊ด€ ๋ฐฐ์—ด, ์œ ํ˜• ์ถ”๋ก , ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ์„ ํƒ์  ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ, ํ…œํ”Œ๋ฆฟ ์‹œ์Šคํ…œ, ๋ฉ”ํƒ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ตฌ์„ฑ ์š”์†Œ, C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ ๊ธฐ๋Šฅ, ์ผ๋ถ€ C++ ๋ฐ Objective-C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์ง€์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ๋ฆด๋ฆฌ์Šค์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • D1 ๋ธŒ๋žœ์น˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ด์ „ ์Šคํƒ€์ผ์˜ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. opNeg, opAdd_r, opAddAssign ๋“ฑ์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. opUnary, opBinary, opBinaryRight ๋ฐ opOpAssign์ด ๋‚˜์™”์Šต๋‹ˆ๋‹ค. ์ด์ „ ์Šคํƒ€์ผ์˜ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ์€ 2019๋…„์— ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋ฆด๋ฆฌ์Šค 2.100๋ถ€ํ„ฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • delete ํ‚ค์›Œ๋“œ๋Š” 2018๋…„๋ถ€ํ„ฐ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ญ์ œ ๋Œ€์‹  destroy ๋˜๋Š” core.memory.__delete ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ๊ฐ€ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ(์˜ˆ: @nogc ๋ธ”๋ก์—์„œ) ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ์˜ ๋Œ€์ฒด ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌ์กฐ์ฒด ๋ฐ ๊ณต์šฉ์ฒด ์œ ํ˜•์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด @mustuse ํŠน์„ฑ์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. @mustuse ํŠน์„ฑ์ด ํ‘œ์‹œ๋œ ํ‘œํ˜„์‹์ด ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ์ •์  ๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ ".tupleof" ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•œ ์ผ๋ จ์˜ ๊ฐ’(lvalue)์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. void foo(int, int, int) { /* โ€ฆ */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // ์•„๋‚ ๋กœ๊ทธ foo(1, 2, 3); float[3] fa; fa.tupleof = ia.tupleof; // ๋‹จ์ˆœ ํ• ๋‹น fa = ia๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.assert(fa == [1F, 2F, 3F]);

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€