Julia: API ์ผ๊ด€์„ฑ ๊ฒ€ํ† 

์— ๋งŒ๋“  2017๋…„ 02์›” 02์ผ  ยท  131์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: JuliaLang/julia

Julia 1.0์—์„œ API ์ผ๊ด€์„ฑ์„ ํ™•์ธํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฅผ ๋‚จ๊ธฐ๋Š” ๊ณณ์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  • [x] ํ˜‘์•ฝ ์šฐ์„  ์ˆœ์œ„. do-block์— ๋Œ€ํ•œ ํ•จ์ˆ˜ ์ธ์ˆ˜, ์ธ์‡„ํ•˜๋Š” ํ•จ์ˆ˜์— ๋Œ€ํ•œ IO ์ธ์ˆ˜, ์ธํ”Œ๋ ˆ ์ด์Šค ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ถœ๋ ฅ ๋“ฑ์˜ ๊ด€์ ์—์„œ ์šฐ๋ฆฌ์˜ ์ฒซ ๋ฒˆ์งธ ๊ทœ์น™์„ ๋‚˜์—ดํ•˜๊ณ  ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค (https://github.com/JuliaLang/julia/issues/ 19150).

  • [] ์œ„์น˜ ๋Œ€ ํ‚ค์›Œ๋“œ ์ธ์ˆ˜. ์˜ค๋ž˜์ „์—๋Š” ํ‚ค์›Œ๋“œ ์ธ์ˆ˜๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ๊ณ ๋ ค๋ฅผ ์œ„ํ•ด ์—ฌ์ „ํžˆ ๋•Œ๋•Œ๋กœ ํ”ผํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๊ณผ๊ฑฐ ์ˆ˜ํ•˜๋ฌผ์ด ์•„๋‹ˆ๋ผ ์ตœ๊ณ ์˜ API๋ฅผ ๋งŒ๋“œ๋Š” ์š”์†Œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ์ด ์„ ํƒ์„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (ํ‚ค์›Œ๋“œ ์„ฑ๋Šฅ ๋ฌธ์ œ๋„ ํ•ด๊ฒฐํ•˜์—ฌ ๋” ์ด์ƒ ๊ณ ๋ คํ•˜์ง€ ์•Š๋„๋กํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค).

  • [] ๋ฉ”ํƒ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋„๊ตฌ. code_xxx ์™€ ๊ฐ™์€ ๊ธฐ๋ณธ ํ•จ์ˆ˜์™€ ์Œ์„ ์ด๋ฃจ๋Š” @code_xxx ์™€ ๊ฐ™์€ ๋งŽ์€ ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ์ผ๊ด€๋˜๊ฒŒ ์ž‘๋™ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์œ ์‚ฌํ•œ ์„œ๋ช…์„ ๊ฐ€์ง„ ํ•จ์ˆ˜๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ ์œ ์‚ฌํ•œ ๋งคํฌ๋กœ ๋ฒ„์ „์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ด์ƒ์ ์œผ๋กœ๋Š” LLVM ์ฝ”๋“œ ๋ฐ ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ์™€ ๊ฐ™์€ ๊ฒฝ์šฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ถ€ ๋ฐ˜ํ™˜ ๊ฐ’ ๋ฐ ๋‹ค๋ฅธ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

  • [] IO <=> ํŒŒ์ผ ์ด๋ฆ„์ด ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํŒŒ์ผ ์ด๋ฆ„์„ IO ๊ฐœ์ฒด ๋Œ€์‹  ๋ฌธ์ž์—ด๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ‘œ์ค€ ๋™์ž‘์€ ์ ์ ˆํ•œ ๋ชจ๋“œ์—์„œ ํŒŒ์ผ์„ ์—ด๊ณ  ๊ฒฐ๊ณผ IO ๊ฐœ์ฒด๋ฅผ ๋™์ผํ•œ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ํ•จ์ˆ˜์— ์ „๋‹ฌํ•œ ๋‹ค์Œ IO ๊ฐœ์ฒด๊ฐ€ ๋‚˜์ค‘์— ๋‹ซํž™๋‹ˆ๋‹ค. ๋ชจ๋“  ์ ์ ˆํ•œ IO ์ˆ˜์šฉ ๊ธฐ๋Šฅ์ด์ด ํŒจํ„ด์„ ๋”ฐ๋ฅด๋Š” ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • [] Reducers API. ๊ฐ์†๊ธฐ๊ฐ€ ์ผ๊ด€๋œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๋ชจ๋‘ ์ถ•์†Œ ์ „์— ๋งต ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•ฉ๋™ ์ฐจ์› ์ธ์ˆ˜ ๋“ฑ

  • [] ์ฐจ์› ์ธ์ˆ˜. "์ด [์ด] ์ฐจ์›์— ๊ฑธ์ณ ๊ณ„์‚ฐ"์ž…๋ ฅ ์ธ์ˆ˜, ํ—ˆ์šฉ๋˜๋Š” ์œ ํ˜• ๋“ฑ์— ๋Œ€ํ•œ ์ผ๊ด€๋œ ์ฒ˜๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ํ‚ค์›Œ๋“œ ์ธ์ˆ˜๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•œ ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

  • [] ๋Œ์—ฐ๋ณ€์ด / ๋น„๋ณ€์ด ์Œ. ๋น„๋ณ€์ด ํ•จ์ˆ˜๊ฐ€ ์˜๋ฏธ์žˆ๋Š” ๋ณ€์ด ํ•จ์ˆ˜์™€ ์Œ์„ ์ด๋ฃจ๋Š” ์ง€ ํ™•์ธํ•˜๊ณ  ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

  • [] ํŠœํ”Œ ๋Œ€ vararg. ํ•จ์ˆ˜๊ฐ€ ๋งˆ์ง€๋ง‰ ์ธ์ˆ˜๋กœ ํŠœํ”Œ์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•„๋‹ˆ๋ฉด vararg๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€๊ฐ„์— ์ผ๋ฐ˜์ ์ธ ์ผ๊ด€์„ฑ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • [] ๊ณต์šฉ์ฒด ๋Œ€ nullables ๋Œ€ ์˜ค๋ฅ˜. ํ•จ์ˆ˜๊ฐ€ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ์•ผํ•˜๋Š”์‹œ๊ธฐ์™€ Nullables ๋˜๋Š” Union์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•˜๋Š”์‹œ๊ธฐ (์˜ˆ : ๊ตฌ๋ฌธ ๋ถ„์„ / tryparse, ์ผ์น˜ ๋“ฑ)์— ๋Œ€ํ•œ ์ผ๊ด€๋œ ๊ทœ์น™.

  • [] ๋ฐœ์ „๊ธฐ๋ฅผ ๊ฐ€๋Šฅํ•œ ํ•œ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์ง€์›ํ•˜์‹ญ์‹œ์˜ค. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ์™€ ํ˜„๋ช…ํ•˜๊ฒŒ ์ž‘๋™ ํ•  ์ˆ˜์žˆ๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์ด๊ฒƒ์— ๋Œ€ํ•ด ๊ฝค ์ž˜ํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€๋ฅผ ๋†“์นœ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • [] ์ถœ๋ ฅ ์œ ํ˜• ์„ ํƒ. "์ถœ๋ ฅ ์œ ํ˜•"API๊ฐ€ ์š”์†Œ ์œ ํ˜• ๋˜๋Š” ์ „์ฒด ์ปจํ…Œ์ด๋„ˆ ์œ ํ˜• (ref # 11557 ๋ฐ # 16740) ์ธก๋ฉด์—์„œ ์ด๋ฃจ์–ด์ ธ์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜์‹ญ์‹œ์˜ค.

  • [x] ์ด๋ฆ„์„ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค. ๋ณ„์นญ์ด์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ํ•จ์ˆ˜ / ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š”์ด ์ด๋ฆ„ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์‚ฌ๋žŒ๋“ค์€ ์—ฌ์ „ํžˆ ์ˆœ์ˆ˜ ASCII ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋น„ ASCII์™€ ASCII ๋ฒ„์ „์ด ์ œ๊ณต๋˜๋Š” ๊ฒฝ์šฐ์— ์ข‹์€ ์ƒ๊ฐํ•˜์ง€๋งŒ ๊ฐ™์€ ๊ฒฝ์šฐ๋„์žˆ๋‹ค <: ์˜ ๋ณ„์นญ ์ธ issubtype ์—ฌ๊ธฐ์„œ ๋‘ ์ด๋ฆ„ ๋ชจ๋‘ ASCII์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์‚ฌ์šฉ๋˜์ง€ is ์ฐฌ์„ฑ === ์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์—ฌ๊ธฐํ•ด์•ผํ•œ๋‹ค.

  • [] DataStructures์™€์˜ ์ผ๊ด€์„ฑ. Base Julia์˜ ๋ฒ”์œ„๋ฅผ ๋‹ค์†Œ ๋ฒ—์–ด ๋‚ฌ์ง€๋งŒ DataStructures์˜ ๋ชจ๋“  ์ปฌ๋ ‰์…˜์ด Base์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๊ณผ ์ผ๊ด€๋œ API๋ฅผ ๊ฐ–๋„๋กํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์˜ ์—ฐ๊ฒฐ์€ ์ด๋Ÿฌํ•œ ์œ ํ˜• ์ค‘ ์ผ๋ถ€๊ฐ€ ์›ํ™œํ•˜๊ณ  ์ผ๊ด€๋˜๊ฒŒ ํ™•์žฅ๋˜๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Base์—์„œ API๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • [] NaN ๋Œ€ DomainErrors. https://github.com/JuliaLang/julia/issues/5234๋ฅผ ์ฐธ์กฐ

  • [] ์ปฌ๋ ‰์…˜ <=> ์ƒ์„ฑ๊ธฐ. ๋•Œ๋กœ๋Š” ์ปฌ๋ ‰์…˜์„ ์›ํ•˜๊ณ  ๋•Œ๋กœ๋Š” ์ƒ์„ฑ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  API๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘์— ์ ํ•ฉํ•œ ์˜ต์…˜์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์˜›๋‚  ์˜›์ ์— ์ƒ์„ฑ๊ธฐ ๋ฒ„์ „์—๋Š” ๋Œ€๋ฌธ์ž ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๊ณ  ์—ด๋งํ•˜๊ณ  ์ƒˆ ์ปฌ๋ ‰์…˜์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฒ„์ „์—๋Š” ์†Œ๋ฌธ์ž ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ทœ์น™์ด์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„๋ฌด๋„ ๊ทธ๊ฒƒ์— ๊ด€์‹ฌ์„ ๊ธฐ์šธ์ด์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์ƒˆ๋กœ์šด ๋Œ€ํšŒ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

  • [] ์—ฐ๊ด€์— ๋Œ€ํ•œ ๊ณ ์ฐจ ํ•จ์ˆ˜. ํ˜„์žฌ ์ผ๋ถ€ ๊ณ ์ฐจ ํ•จ์ˆ˜๋Š” ์„œ๋ช… (k,v) โ€“ ์˜ˆ๋ฅผ ๋“ค์–ด map , filter ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ด€ ์ปฌ๋ ‰์…˜์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์Œ์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์„œ๋ช… kv ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณธ๋ฌธ์—์„œ ์Œ์„ k ๋ฐ v ๋กœ ๋ช…์‹œ ์ ์œผ๋กœ ๋ถ„ํ•ดํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ : all , any . ์ด๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

  • [x] ๋ณ€ํ™˜ ๋Œ€ ๊ตฌ์„ฑ. ์ ์ ˆํ•œ ๊ฒฝ์šฐ ๋ณ€ํ™˜์„ ํ—ˆ์šฉํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ : convert(String, 'x') ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ๋ฌธ์ œ / ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹จ์ผ ํ‘œ์ค€ ๋ณ€ํ™˜์ด์žˆ๋Š” ๊ฒฝ์šฐ ๋ณ€ํ™˜์ด ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์€ ์ˆซ์ž๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ…์ŠคํŠธ ๋ฐฉ์‹์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์ ์ ˆํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋Œ€์‹  ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ๋ฌธ ๋ถ„์„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋‹จ์ผ ํ‘œ์ค€ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฏ€๋กœ์ด๋ฅผ ๋ณ€ํ™˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š”์ด ๋…ผ๋ฆฌ๋ฅผ ์‹ ์ค‘ํ•˜๊ณ  ๋ณดํŽธ์ ์œผ๋กœ ์ ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

  • [] ์ปฌ๋ ‰์…˜ API์˜ ์™„์„ฑ๋„๋ฅผ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ ์ œ๊ณตํ•˜๋Š” ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๊ทธ๋“ค์ด ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ์ž‘์—…์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, flatten ํ•จ์ˆ˜ ๋‚˜ concat ํ•จ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์•„๋งˆํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

  • [] ๋ฐ‘์ค„ ๊ฐ์‚ฌ.

deprecation

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ฐ‘์ค„ ๊ฐ์‚ฌ

๋‹ค์Œ์€ ๋ฐ‘์ค„์„ ํฌํ•จํ•˜๊ณ  ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋ฌธ์ž์—ด ๋งคํฌ๋กœ๊ฐ€ ์•„๋‹Œ Base์—์„œ ๋‚ด ๋ณด๋‚ธ ๋ชจ๋“  ๊ธฐํ˜ธ์— ๋Œ€ํ•œ ๋ถ„์„์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฃผ๋ชฉํ•ด์•ผ ํ•  ์ค‘์š”ํ•œ ์ ์€์ด ์ด๋ฆ„์ด ๋‚ด๋ณด๋‚ด๊ธฐ ๋œ ์ด๋ฆ„์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ ๊ฒฉ์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์ˆ˜์ถœ๋˜์ง€ ์•Š์€ ์ด๋ฆ„์€ ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ ๊ตฌ๋ถ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์„ฑ๊ฐ€์‹  ๊ฒƒ๋ณด๋‹ค ๋” ์œ ์šฉํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ฐ˜์‚ฌ

ํ•ด๋‹น ๊ธฐ๋Šฅ์ด์žˆ๋Š” ๋‹ค์Œ ๋งคํฌ๋กœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • [] @code_llvm , code_llvm
  • [] @code_lowered , code_lowered
  • [] @code_native , code_native
  • [] @code_typed , code_typed
  • [] @code_warntype , code_warntype

๋งคํฌ๋กœ์— ์ ์šฉ๋˜๋Š” ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ํ•จ์ˆ˜์—๋„ ์œ ์‚ฌํ•˜๊ฒŒ ์ ์šฉ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

  • [x] module_name -> nameof (# 25622)
  • [x] module_parent -> parentmodule (# 25629, ์ด์ „ ์ด๋ฆ„ โ€‹โ€‹๋ณ€๊ฒฝ ์‹œ๋„๋Š” # 25436 ์ฐธ์กฐ)
  • [x] method_exists -> hasmethod (# 25615)
  • [x] object_id -> objectid (# 25615)
  • [] pointer_from_objref

pointer_from_objref ๋Š” ์ข€ ๋” ์„ค๋ช…์ ์ธ ์ด๋ฆ„์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. address ?

C interop์˜ ๋ณ„์นญ

๋ฐ‘์ค„์ด ํฌํ•จ ๋œ ์œ ํ˜• ๋ณ„์นญ์€ C_NULL , Cintmax_t , Cptrdiff_t , Csize_t , Cssize_t , Cuintmax_t ๋ฐ Cwchar_t _t ๋๋‚˜๋Š” ์ด๋ฆ„์€ ํ•ด๋‹น C ์œ ํ˜•๊ณผ ์ผ์น˜ํ•˜๋„๋ก ์ด๋ฆ„์ด ์ง€์ •๋˜๋ฏ€๋กœ ๊ทธ๋Œ€๋กœ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

C_NULL ๋Š” C์—์„œ ๋ฏธ๋Ÿฌ๋ง๋˜์ง€ ์•Š๋Š” ๋ฐ‘์ค„์„ ํฌํ•จํ•˜๋Š” ์œ ์ผํ•œ C ๋ณ„์นญ์ž…๋‹ˆ๋‹ค (C์—์„œ๋Š” NULL ์ด๋ฏ€๋กœ). ์ด๊ฒƒ์„ CNULL ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • [] C_NULL

๋น„ํŠธ ์นด์šดํŒ…

  • [] count_ones
  • [] count_zeros
  • [] trailing_ones
  • [] trailing_zeros
  • [] leading_ones
  • [] leading_zeros

์ด๋ฆ„ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ์„ค๋ช…์€ # 23531์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ์ด๊ฒƒ๋“ค์— ๋Œ€ํ•œ ๋ฐ‘์ค„๊ณผ ๊ทธ PR์—์„œ ์ œ์•ˆ ๋œ ๋Œ€์ฒด๋ฌผ ์ค‘ ์ผ๋ถ€๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์„ ๋งค์šฐ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ์žฌ๊ณ ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ž‘์—…

  • [] unsafe_copyto!
  • [] unsafe_load
  • [] unsafe_pointer_to_objref
  • [] unsafe_read
  • [] unsafe_store!
  • [] unsafe_string
  • [] unsafe_trunc
  • [] unsafe_wrap
  • [] unsafe_write

์ด ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฐ‘์ค„์˜ ์ถ”์•…ํ•จ์€ ๊ทธ๋“ค์˜ ์œ„ํ—˜์„ฑ์„ ๋”์šฑ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์‹ฑ

  • [] broadcast_getindex
  • [] broadcast_setindex!
  • [] to_indices

๋ถ„๋ช…ํžˆ broadcast_getindex ๋ฐ broadcast_setindex! ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ดํ•˜๋Š” ์ผ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ๋‹ค. ๋” ์„ค๋ช…์ ์ธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

ํฅ๋ฏธ๋กญ๊ฒŒ๋„ to_indices , Base.to_index ์˜ ๋‹จ์ผ ์ธ๋ฑ์Šค ๋ฒ„์ „์€ ๋‚ด๋ณด๋‚ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ”์ 

  • [] catch_backtrace
  • [x] catch_stacktrace -> stacktrace(catch_backtrace()) (# 25615)

์•„๋งˆ๋„ ์ด๋“ค์€ ๊ฐ๊ฐ backtrace ๋ฐ stacktrace ์— ํ•ด๋‹นํ•˜๋Š” catch ๋ธ”๋ก ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž‘์—…, ํ”„๋กœ์„ธ์Šค ๋ฐ ์‹ ํ˜ธ

  • [] current_task
  • [] task_local_storage
  • [] disable_sigint
  • [] reenable_sigint
  • [] process_exited
  • [] process_running

์ŠคํŠธ๋ฆผ

  • [] redirect_stderr
  • [] redirect_stdin
  • [] redirect_stdout
  • [x] nb_available -> bytesavailable (# 25634)

๋” ์ผ๋ฐ˜์ ์ธ IO -> IO ๋ฆฌ๋””๋ ‰์…˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ๊ฒฐํ•ฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์˜ˆ : redirect(STDOUT, io) ). ๊ทธ๋Ÿฌ๋ฉด ๋ฐ‘์ค„๊ณผ ๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ ๋ชจ๋‘ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ๋ชจ์…˜

  • [] promote_rule
  • [] promote_shape
  • [] promote_type

promote_rule ์— ๋Œ€ํ•œ ๊ด€๋ จ ํ† ๋ก ์€ # 23999๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ธ์‡„

  • [x] print_with_color -> printstyled (# 25522 ์ฐธ์กฐ)
  • [] print_shortest (# 25745 ์ฐธ์กฐ)
  • [] escape_string (# 25620 ์ฐธ์กฐ)
  • [] unescape_string

escape_string ๋ฐ unescape_string ๋Š” ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ธ์‡„ํ•˜๊ฑฐ๋‚˜ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ์•ฝ๊ฐ„ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋™ / ์ด๋ฆ„ ๋ณ€๊ฒฝ ์ œ์•ˆ์€ # 25620์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฝ”๋“œ ๋กœ๋”ฉ

  • [] include_dependency
  • [] include_string

include_dependency Base ์™ธ๋ถ€์—์„œ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? ์ผ๋ฐ˜์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ include ๋Œ€์‹  ์ด๊ฒƒ์„ ์›ํ•˜๋Š” ์ƒํ™ฉ์„ ์ƒ๊ฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

include_string ์ด๊ฒƒ์€ ๊ณต์‹์ ์œผ๋กœ ์Šน์ธ ๋œ eval(parse()) ๋ฒ„์ „์ด ์•„๋‹™๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ๋ถ„๋ฅ˜ํ•˜์ง€ ์•Š์€ ๊ฒƒ

  • [x] gc_enable -> GC.enable (# 25616)
  • [] get_zero_subnormals
  • [] set_zero_subnormals
  • [] time_ns

get_zero_subnormals ๋ฐ set_zero_subnormals ๋Š” ๋” ์„ค๋ช…์ ์ธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๋ณด๋‚ด์•ผํ•ฉ๋‹ˆ๊นŒ?

๋ชจ๋“  131 ๋Œ“๊ธ€

์ด๊ฒƒ์ด ์–ธ๊ธ‰ํ•˜๊ธฐ์— ์ ์ ˆํ•œ ์žฅ์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์‚ฌ๊ณผํ•˜์ง€๋งŒ ์•ž์œผ๋กœ ํ•จ์ˆ˜ ์ด๋ฆ„์˜ ๋ฐ‘์ค„๊ณผ ๋” ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„๋‹ˆ, ์—ฌ๊ธฐ๊ฐ€ ์ข‹์€ ๊ณณ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜ˆ, ์šฐ๋ฆฌ๋Š” ๋ฐ‘์ค„์ด ํ•„์š”ํ•œ ๋ชจ๋“  ์ด๋ฆ„์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. :)

  • "์ด [์ด] ์ฐจ์›์— ๊ฑธ์ณ ๊ณ„์‚ฐ"์ž…๋ ฅ ์ธ์ˆ˜, ํ—ˆ์šฉ๋˜๋Š” ์œ ํ˜• ๋“ฑ์˜ ์ผ๊ด€๋œ ์ฒ˜๋ฆฌ, ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ํ‚ค์›Œ๋“œ ์ธ์ˆ˜๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•œ ์ง€ ๊ณ ๋ ค
  • do-blocks์— ๋Œ€ํ•œ ํ•จ์ˆ˜ ์ธ์ˆ˜, ์ธ์‡„ํ•˜๋Š” ํ•จ์ˆ˜์— ๋Œ€ํ•œ IO ์ธ์ˆ˜, in-place ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ถœ๋ ฅ ๋“ฑ์˜ ๊ด€์ ์—์„œ ์šฐ๋ฆฌ์˜ ์ฒซ ๋ฒˆ์งธ ๊ทœ์น™์„ ๋‚˜์—ดํ•˜๊ณ  ์šฐ์„  ์ˆœ์œ„ ์ง€์ • (ํŽธ์ง‘ : ์ด๋ฏธ ์—ด๋ ค์žˆ๋Š” ๊ฒƒ์ด์žˆ์„ ์ˆ˜ ์žˆ์Œ)

@tkelman ์˜ ๋‘ ๋ฒˆ์งธ ์š”์ ์€ https://github.com/JuliaLang/julia/issues/19150์„ ์ฐธ์กฐ

find API ๋ฐ ๊ด€๋ จ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ตœ๊ทผ Julep๋„ ์žˆ์Šต๋‹ˆ๋‹ค : https://github.com/JuliaLang/Juleps/blob/master/Find.md

์ฑ„๋„์— push! ๋ฐ shift! ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ฑ„๋„์—์„œ put! ๋ฐ take! ๋ฅผ ์ง€์› ์ค‘๋‹จํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ (์„ ๋ฌผ์—๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ)? API์—์„œ ์ค‘๋ณต ๋‹จ์–ด 2 ๊ฐœ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

shift! ์ด (๊ฐ€) ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ์ง€ ์˜์‹ฌ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ํ›„๋ณด๋Š” fetch! ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ fetch ์˜ ์ธ ๋น„ ๋Œ์—ฐ๋ณ€์ด ๋ฒ„์ „ take!

ref # 13538 # 12469

ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ

ํŽธ์ง‘ : ์ฑ„๋„์—์„œ send ๋ฐ recv ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ์ด์น˜์— ๋งž์Šต๋‹ˆ๋‹ค. (ํ˜„์žฌ๋กœ์„œ๋Š” UDPSocket์—๋งŒ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋†€๋ž์Šต๋‹ˆ๋‹ค)

put! / take! ๋ฅผ push! / fetch! ๋กœ ๋ฐ”๊พธ๋ฉด +1

๋‚˜๋Š” ์ด๋ฆ„์„ ๋ณ€๊ฒฝ ์ถ”๊ฐ€ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค @inferred ์— @test_inferred .

์ „๋ฌธํ™”๊ฐ€ ๋” ์ผ๋ฐ˜์ ์ธ ๊ธฐ๋Šฅ๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ๋‹ค์‹œ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ฆ‰ # 20233๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋‚ด ๋ณด๋‚ธ ๋ชจ๋“  ํ•จ์ˆ˜๋ฅผ ๊ฒ€ํ† ํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋””์ŠคํŒจ์น˜๋กœ ๋Œ€์ฒดํ•˜์—ฌ ์ œ๊ฑฐ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค (์˜ˆ : print_with_color).

ํ์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ์ž‘์—… ํ•  ๋•Œ ์ผ๋ฐ˜์ ์ธ ์Œ์€ push! ๋ฐ shift! ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์ผ๋ฐ˜์ ์ธ ์ด๋ฆ„ ์Œ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž‘์—…์ด ํ•ด๋‹น ์ด๋ฆ„์œผ๋กœ ์ ์ ˆํ•˜๊ฒŒ ์ „๋‹ฌ๋˜์ง€ ์•Š๋Š” ํ†ต์‹  ์˜ค๋ฒ„ ํ—ค๋“œ๋ฅผ ์ˆ˜๋ฐ˜ ํ• ๊นŒ ๊ฑฑ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— push! ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. send ๋ฐ recv ์ •๋ง ๋” ์ข‹์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•จ์ˆ˜๊ฐ€ ํŠœํ”Œ์„ ๋งˆ์ง€๋ง‰ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•„๋‹ˆ๋ฉด vararg๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€๊ฐ„์— ์ผ๋ฐ˜์ ์ธ ์ผ๊ด€์„ฑ์ด ์žˆ๋Š”์ง€ ๋‹ค์‹œ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์ด ๋ฌธ์ œ์— ๋น„ํ•ด ๋„ˆ๋ฌด ํด ์ˆ˜๋„ ์žˆ์ง€๋งŒ ํ•จ์ˆ˜๊ฐ€ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ์•ผํ•˜๋Š”์‹œ๊ธฐ์™€ Nullable s ๋˜๋Š” Union s (์˜ˆ : parse ๋ฐ˜ํ™˜ํ•ด์•ผํ•˜๋Š”์‹œ๊ธฐ์— ๋Œ€ํ•œ ์ผ๊ด€๋œ ๊ทœ์น™์„ ๊ฐ–๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค tryparse , match ๋“ฑ)

๋„ˆ๋ฌด ํฐ ๋ฌธ์ œ๋Š” ์—†์Šต๋‹ˆ๋‹ค. @simonbyrne โ€“ ์ด๊ฒƒ์ด ์„ธํƒ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.

Btw : ์ด๊ฒƒ์€ ํŠน์ • ๋ณ€๊ฒฝ (์˜ˆ : ํŠน์ • ๊ธฐ๋Šฅ์˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ)์„์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ฒ€ํ†  ํ•  ์ˆ˜์žˆ๋Š” ์ข…๋ฅ˜์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œ์•ˆ ๋œ ํŠน์ • ๋ณ€๊ฒฝ์˜ ๊ฒฝ์šฐ ํ•ด๋‹น ๋ณ€๊ฒฝ์„ ์ œ์•ˆํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์—ฝ๋‹ˆ ๋‹ค.

code_xxx ์™€ ๊ฐ™์€ ๊ธฐ๋ณธ ํ•จ์ˆ˜์™€ ์Œ์„ ์ด๋ฃจ๋Š”

์ด๊ฒƒ์ด ๋‹น์‹ ์ด ๋งํ•˜๋Š” ๊ฒƒ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ CreateMacrosFrom.jl์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  • "์ถœ๋ ฅ ์œ ํ˜•"API๊ฐ€ ์š”์†Œ ์œ ํ˜• ๋˜๋Š” ์ „์ฒด ์ปจํ…Œ์ด๋„ˆ ์œ ํ˜•์„ ๊ธฐ์ค€์œผ๋กœํ•ด์•ผํ•˜๋Š”์ง€ ์—ฌ๋ถ€ (์ฐธ์กฐ # 11557 ๋ฐ # 16740)
  • ๋‚ด ๋ณด๋‚ธ ๋ชจ๋“  ๊ธฐ๋Šฅ ๋ฌธ์„œํ™” (doctest ํฌํ•จ)

๋‚ด ๋ณด๋‚ธ ๋ชจ๋“  ๊ธฐ๋Šฅ ๋ฌธ์„œํ™” (doctest ํฌํ•จ)

์ด๊ฒƒ์ด ์ด๊ฒƒ์˜ ์ผ๋ถ€๋ผ๋ฉด, ์•„๋งˆ๋„ ๋˜ํ•œ : ๋ฌธ์ œ / ํ™๋ณด ๋ฒˆํ˜ธ๋กœ ํ…Œ์ŠคํŠธ์— ๋ผ๋ฒจ์„ ๋ถ™์ด๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ ํ…Œ์ŠคํŠธ๊ฐ€์žˆ๋Š” ์ด์œ ๋ฅผ ํ›จ์”ฌ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” git blame์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์ง€๋งŒ, ํ…Œ์ŠคํŠธ ์„ธํŠธ๋ฅผ ์ถ”๊ฐ€ ํ•  ๋•Œ (์˜ˆ์ œ๋ฅผ ๋“ค๊ธฐ ์œ„ํ•ด) ๋•Œ๋•Œ๋กœ ํ…Œ์ŠคํŠธ์ค‘์ธ ๊ฒƒ์ด ์•ฝ๊ฐ„ ๋ฏธ์Šคํ„ฐ๋ฆฌ์ด๋ฉฐ ๋ฌธ์ œ / ํ™๋ณด ๋ฒˆํ˜ธ๊ฐ€ ํ•ญ์ƒ ์กด์žฌํ•œ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@dpsanders : ๋ฐ ๋‚ด ๋ณด๋‚ธ ๋งคํฌ๋กœ! ์˜ˆ : @fastmath ์—๋Š” ๋… ์ŠคํŠธ๋ง์ด ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋งค์šฐ ์‚ฌ์†Œํ•˜์ง€๋งŒ string ๋ฐ Symbol ํ•จ์ˆ˜๋Š” ๊ฑฐ์˜ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋Œ€์†Œ ๋ฌธ์ž๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. symbol ๊ฐ€ ๋” ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@amellnik ์ฐจ์ด์ ์€ Symbol ์€ ์œ ํ˜• ์ƒ์„ฑ์ž์ด๊ณ  string ๋Š” ์ผ๋ฐ˜ ํ•จ์ˆ˜๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. IIRC๋Š” ์šฐ๋ฆฌ๊ฐ€ symbol ์žˆ์—ˆ์ง€๋งŒ ํƒ€์ž… ์ƒ์„ฑ์ž๋ฅผ ์œ„ํ•ด ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ํ™•์‹ ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, string ๋Œ€์‹  String ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด ๋Œ€์‹  String ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒฝ์šฐ.

์•„๋‹ˆ์š”, ์„œ๋กœ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์ด๋ฏ€๋กœ ๋ณ‘ํ•ฉํ•˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.

julia> String(UInt8[])
""

julia> string(UInt8[])
"UInt8[]"

์•„๋‹ˆ์š”, ์„œ๋กœ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์ด๋ฏ€๋กœ ๋ณ‘ํ•ฉํ•˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ string(args...) ๋Œ€์‹  sprint(print, args...) ๋Œ€์‹  ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด- string ๋ฐ String ๊ฒƒ์ด ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์†์‹ค ๋œ ์„ฑ๋Šฅ์„ ๋ณต๊ตฌํ•˜๊ธฐ ์œ„ํ•ด sprint(::typeof(print), args...) ์— ํŠนํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค„์„ ๋”ฐ๋ผ repr(x) ๋Œ€ํ•ด sprint(showall, args...) repr(x) ๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

string ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ๊ฝค ํ‘œ์ค€์ ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๊ดœ์ฐฎ์•„ ๋ณด์ž…๋‹ˆ๋‹ค ....

๋ฌด์–ธ๊ฐ€๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด ๋ฌธ์ž์—ด์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์€ ๊ฝค ํ‘œ์ค€์ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์˜ˆ,ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ String ์™€ string ์‚ฌ์ด์˜ ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง‘๋‹ˆ๋‹ค.

sprint(print, ...) ์€ ์ค‘๋ณต ๋œ ๋Š๋‚Œ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ œ๊ฑฐํ•˜๋Š” ๊ฒฝ์šฐ string , ์šฐ๋ฆฌ๋Š” ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค sprint ์— string ์šฐ๋ฆฌ๊ฐ€ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก string(print, foo) ๋ฐ string(showall, foo) ๋‚ด ์˜๊ฒฌ์„ ์ž˜ ์ฝ๋Š” .

์ผ๊ด€์„ฑ์ด ๊ณผ๋Œ€ ํ‰๊ฐ€๋˜๋Š” ๊ฒฝ์šฐ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” "๊ทธ๋ƒฅ x์˜ ๋ฌธ์ž์—ด ํ‘œํ˜„์„ ์ค˜"์— ๋Œ€ํ•ด string(x) ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉํ•  ์ธ์‡„ ๊ธฐ๋Šฅ์„ ์ง€์ •ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ๊ทธ๋ณด๋‹ค ๋” ๋ณต์žก ํ•  ๊ฒฝ์šฐ sprint ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด๋ฆ„์„ ๋‚˜์™€ ํ•จ๊ป˜ ๊ดœ์ฐฎ์„ ๊ฒƒ String(UInt8[]) ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ, ์‚ฌ์šฉ์ด String ๋Œ€์‹  string . string ๋Š” ์•ž์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ž์—ด ์œ ํ˜•์„ ๋ณ€๊ฒฝํ•  ์ˆ˜์žˆ๋Š” ์œ ์—ฐ์„ฑ์„ ์กฐ๊ธˆ ๋” ์ œ๊ณตํ•˜์ง€๋งŒ ๊ทธ๋Ÿด ๊ฒƒ ๊ฐ™์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

reinterpret(String, ::Vector{UInt8} ์ด (๊ฐ€) ์ „ํ˜€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด reinterpret ์— ๋Œ€ํ•œ ๋ง์žฅ๋‚œ์ž…๋‹ˆ๊นŒ?

๋ง์ด๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š”์ด ํ•จ์ˆ˜๊ฐ€ ๋•Œ๋•Œ๋กœ ๋ณต์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฆ„์ด ๋‹ค์†Œ ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‚ฌ์‹ค์ด์ง€๋งŒ ๋ฌธ์ž์—ด์€ ๋ถˆ๋ณ€์ด์–ด์•ผํ•˜๋ฏ€๋กœ ์•„๋งˆ ๊ทธ๋Ÿด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

String(::IOBuffer) ๋ฉ”์„œ๋“œ๋„ ์žˆ์ง€๋งŒ readstring ๋กœ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด ์ œ์•ˆํ•œ API ๋ณ€๊ฒฝ์— ๋Œ€ํ•ด์„œ๋„ ์ƒ๊ฐํ–ˆ์ง€๋งŒ string(a, b...) ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ธ์ˆ˜๋ฅผ ๋ฌธ์ž์—ด ํ™”ํ•˜๊ณ  ์—ฐ๊ฒฐํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜์— ๋Œ€ํ•ด ์„ฑ๊ฐ€์‹  ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. string ์—์„œ ์—ฐ๊ฒฐ์„ ์ œ๊ฑฐํ•˜๋ฉด ์ž‘๋™ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ๋™์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ผ๊ด€์„ฑ๊ณผ ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

"์ฐจ์› ์ธ์ˆ˜"๋ฒ”์ฃผ์˜ ๋ฌธ์ œ # 18326 ๋ฐ # 3893์— ์ฃผ๋ชฉํ•˜์‹ญ์‹œ์˜ค.

๋‹ค๋ฅธ ํ•ญ๋ชฉ์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค๋ฉด : ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ์ปจํ…Œ์ด๋„ˆ์˜ ๋™์ž‘์ด ๋ฌธ์„œํ™”๋˜๊ณ  ์ผ๊ด€์„ฑ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

@ JaredCrean2 : ๊ทธ๊ฒŒ ๋ฌด์Šจ ๋œป์ธ์ง€ ์ž์„ธํžˆ

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋งŽ์€ "๋ฐฉ์–ด ๋ณต์ œ๋ฌผ"์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ํฌํ•จํ•˜์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž€๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ์œ ํ˜•์˜ ๋ฐฐ์—ด์ด ์žˆ๊ณ  ์—ฌ๊ธฐ์—์„œ sort ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฐ˜ํ™˜ ๋œ ๋ฐฐ์—ด์ด ์ž…๋ ฅ ๋ฐฐ์—ด๊ณผ ๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌ ํ‚ค๊ฑฐ๋‚˜ ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•˜๊ณ  ๋ฐ˜ํ™˜ ๋œ ๋ฐฐ์—ด์ด ๊ทธ๋“ค?

๊ฐ™์€ ๋ฌผ๊ฑด. ๋ชจ๋“  ์ปฌ๋ ‰์…˜ ์ •๋ ฌ, getindex, ํ•„ํ„ฐ๋ง, ๊ฒ€์ƒ‰ ๋“ฑ์˜ ๋ฉ”์„œ๋“œ๊ฐ€์ด ๊ทœ์น™์„ ๋”ฐ๋ฅด๊ณ  ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ๊ทธ ์ ์— ๋Œ€ํ•ด ๋ช…ํ™•์„ฑ์ด๋‚˜ ์ผ๊ด€์„ฑ์ด ๋ถ€์กฑํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ๊ฐ™์€ ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค.

์‚ฌ์‹ค, ๊ทธ๋ ‡์ง€ ์•Š์€ ์œ ์ผํ•œ ํ‘œ์ค€ ํ•จ์ˆ˜๋Š” deepcopy ์ด๋ฉฐ, ์—ฌ๊ธฐ์„œ ์š”์ ์€ ๋ชจ๋“  ์ƒˆ ๊ฐœ์ฒด๋ฅผ ์–ป๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ด๋”˜๊ฐ€์— ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์˜ค โ€“ ์šฐ๋ฆฌ๋Š” ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๊ฒƒ์„ ๋ฌธ์„œํ™”ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์€ ๊ณณ์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ณต์‚ฌํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๋“ค์ด ํ•  ์ˆ˜์žˆ๋Š” ์ธ์ƒ์„ ์–ด๋””์„œ ์–ป์—ˆ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š”. ๋‚˜๋Š” ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™”์— ๋Œ€ํ•œ ๋ฐœ์–ธ์„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

์กฐ๋งŒ๊ฐ„ julia ํ”„๋กœ๊ทธ๋žจ์ด ์ž‘์„ฑ๋˜๊ณ  ๊ณต๊ฐœ์ ์œผ๋กœ ์‹คํ–‰๋  ๊ฒƒ์ด๋ฉฐ ๋ฐ์ดํ„ฐ๋Š” ๋•Œ๋•Œ๋กœ ๋ช‡ ๋…„ ๋™์•ˆ ๊ณ„์ธตํ™”๋˜๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ์˜ˆ. ์ฒด์ธ : ๊ฐ์ฒด๋Š” ์œ ํ˜• (json ๋˜๋Š” ... ์ผ ์ˆ˜ ์žˆ์Œ)์— ์˜ํ•ด ๊ตฌ๋™๋˜๋Š” ๋ฐ”์ดํŠธ๋กœ ์‹œ๊ฐ„ ๋ณต์›๋ ฅ์ด ์žˆ๋„๋ก ๋นŒ๋“œ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์‹œ๋งจํ‹ฑ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฐ ์›น API์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ์˜ ์ง๋ ฌํ™”๊ฐ€ https://github.com/JuliaLang/julia/blob/v0.5.1/base/serialize.jl์— ๊ฐ€๊น๊ฒŒ ์œ ์ง€ ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ•จ์ˆ˜๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ณต์‚ฌํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๋“ค์ด ํ•  ์ˆ˜์žˆ๋Š” ์ธ์ƒ์„ ์–ด๋””์„œ ์–ป์—ˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ๊ทธ๋“ค์ด ๊ทธ๋ ‡์ง€ ์•Š์€์ง€ ๋ชจ๋ฅธ๋‹ค. ๋‚ด๊ฐ€ ๋งํ•  ์ˆ˜์žˆ๋Š” ํ•œ, ํ–‰๋™์€ ์ •์˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. @JeffBezanson ์˜ ์˜๊ฒฌ์—์„œ ๊ทธ๊ฐ€ ๋ฐ˜๋Œ€ํ•˜๋Š” ๋ฐฉ์–ด์ ์ธ ์‚ฌ๋ณธ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์˜นํ˜ธํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌธ์„œ๋Š” ์–ด๋”˜๊ฐ€์—์„œ ๋ฐฉ์–ด ๋ณต์‚ฌ๋ณธ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃจ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ตœ์†Œ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์•”์‹œํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์— ๋”ฐ๋ผ "์ตœ์†Œ ๋™์ž‘"์ด ๋ฌด์—‡์ธ์ง€ ๋ชจํ˜ธํ•ด์ง‘๋‹ˆ๋‹ค. API ์ „์ฒด์—์„œ ์ผ๊ด€์„ฑ์„ ์–ป์œผ๋ ค๋ฉด ๋” ๊ตฌ์ฒด์ ์ธ ์ง€์นจ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@ o314 : ์ด๊ฒƒ์€ API ์ผ๊ด€์„ฑ ๊ฒ€ํ†  ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ง๋ ฌํ™”๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ด€๋ จ๋˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

@ JaredCrean2 : ์ตœ์ƒ์œ„ ๊ฐ์ฒด๊ฐ€ ๋ณต์‚ฌ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋Š” ํ™•์‹คํžˆ ๋ฌธ์„œํ™” ๋  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ•˜๋Š” ๊ฒƒ์€ deepcopy (๋ถ„๋ช…ํžˆ)๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋” ๊นŠ์€ ๊ฐ์ฒด๋Š” ๊ฒฐ์ฝ” ๋ณต์‚ฌ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋งํ•˜๋Š” ๊ฒƒ์€ deepcopy (๋ถ„๋ช…ํžˆ)๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋” ๊นŠ์€ ๊ฐ์ฒด๋Š” ๊ฒฐ์ฝ” ๋ณต์‚ฌ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ผ๋ถ€ ๋ฐฐ์—ด ๋ž˜ํผ์— ๋Œ€ํ•ด copy ์ปจํ…์ŠคํŠธ์—์„œ ์ด์— ๋Œ€ํ•œ ์ตœ๊ทผ ๋…ผ์˜๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค (์˜ˆ : SubArray ๋ฐ SparseMatrixCSC ๋ฐ Symmetric , LowerTriangular . ์œ„์—์„œ ์–ธ๊ธ‰ ํ•œ ์ •์ฑ…์— ๋”ฐ๋ผ copy ๋Š” ๊ทธ๋Ÿฌํ•œ ๋ž˜ํผ ์œ ํ˜•์— ๋Œ€ํ•œ noop์ด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์–ธ๊ธ‰ ํ•œ ์ •์ฑ…์ด ์ ์ ˆํ•œ ์ถ”์ƒํ™” ์ˆ˜์ค€์ž…๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด Array s๊ฐ€ Julia์—์„œ ๊ตฌํ˜„ ๋œ ๊ฒฝ์šฐ (๋ฒ„ํผ ๋ž˜ํ•‘) Array ์˜ copy ๋™์ž‘์ด noop๋กœ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋” ๊นŠ์€ ๊ฐ์ฒด๋Š” ์ ˆ๋Œ€ ๋ณต์‚ฌ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด ๊ด€๋ก€๋ผ๋ฉด ๋‚จ์€ ๊ฒƒ์€ ๋ฌธ์„œํ™”ํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ๋ฌธ์„œํ™”๋Š” API์—์„œ ์ •๋ง ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์ด ๋™์ž‘์€ (์•„๋งˆ๋„ ์ฝ”๋“œ์˜ ์ผ๋ถ€๋ฅผ ์ž‘์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—) ๋ถ„๋ช…ํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์™ธ๋ถ€ ๊ด€์ ์—์„œ๋Š” ๊ทธ๋ ‡๊ฒŒ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ : Andreas ๊ฒŒ์‹œ๋ฌผ์„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ํฅ๋ฏธ๋กœ์šด ๊ณ ๋ ค ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

@StefanKarpinski ๋‚˜๋Š” ๋‹น์‹ ์˜ ์š”์ ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ ์–ธ๊ธ‰ ๋œ ๋ชจ๋“  ์ฃผ์š” ์ฃผ์ œ๋Š” ๋งค์šฐ ํ›Œ๋ฅญํ•˜๊ณ  ์˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ค„๋ฆฌ์•„์˜ ํ”„๋กœ์„ธ์Šค์™€ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๊ท ํ˜•์— ๋Œ€ํ•ด ๋•Œ๋•Œ๋กœ ์•ฝ๊ฐ„์˜ ๋‘๋ ค์›€์ด ์žˆ์Šต๋‹ˆ๋‹ค.

fortran ๋˜๋Š” c๋ฅผ ์‰ฝ๊ฒŒ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ฝ”๋“œ๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด ์ตœ์‹  ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ์‰ฝ๊ฒŒ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค ํŒจํ„ด์œผ๋กœ์„œ์˜ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ aws lambda. ์ธํ„ฐ๋„ท, ์˜คํ”ˆ API๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋•Œ๋กœ๋Š” ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋Šฅ ๋ถ€ํ•˜๋ฅผ ๋‚ฎ์ถ”๊ณ  (์ผ๋ฐ˜, ํ•จ์ˆ˜ ์„œ๋ช…์— ๋Œ€ํ•œ vaarg ์—†์Œ, ๊ณต๊ฐœ API์— ๋Œ€ํ•œ ์ƒ์œ„ ์ˆœ์„œ ์—†์Œ) ๋” ์ฒด๊ณ„์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ธ๋”ฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (json ์Šคํ‚ค๋งˆ / openapi).

๋‚˜๋Š” ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ฐ€๋ผ ์•‰๋Š” ์•„์ฃผ ์ข‹์€ ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ณด์•˜๊ณ  ๊ทธ๊ฒƒ์€ ์œ ๊ฐ์ž…๋‹ˆ๋‹ค.

์›น์— ์‰ฝ๊ฒŒ ๋ฐฐํฌ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐ์ดํ„ฐ์™€ ๊ธฐ๋Šฅ์˜ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๊ณ  ๋ชจ๋“ˆ ์‹์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์–ธ์–ด 1.0์˜ ์ค‘์š”ํ•œ ์ง€์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ ์ด ๊ธฐ๋Šฅ์„ ์œ„ํ•ด ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํ•„์š”์— ๋”ฐ๋ผ ์• ์™„ ๋™๋ฌผ์ด ์ ๊ณ  ๊ฐ€์ถ• ์ง€ํ–ฅ์ ์ด์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ด ์ฃผ์ œ์˜ ์š”์ ์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@StefanKarpinski ๊ท€ํ•˜์˜ ๊ฒŒ์‹œ๋ฌผ์„ ์˜คํ•ดํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋งํ–ˆ์„ ๋•Œ

์ตœ์ƒ์œ„ ๊ฐ์ฒด๊ฐ€ ๋ณต์‚ฌ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์‹คํžˆ ๋ฌธ์„œํ™”ํ•ด์•ผํ•˜๋Š”์ง€ ์—ฌ๋ถ€

"์ตœ์ƒ์œ„ ๊ฐœ์ฒด"๋Š” ๋ฌด์—‡์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? x::Vector{MyMutableType} ์ด์žˆ๋Š” ๊ฒฝ์šฐ ์ตœ์ƒ์œ„ ๊ฐœ์ฒด๋Š” x x ์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด

์ตœ์ƒ์œ„ ๊ฐ์ฒด๋Š” x ์˜ ์š”์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ x ์ž์ฒด๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

@andreasnoack ์ตœ์ƒ์œ„ ๊ฐ์ฒด์˜ ๊ฐœ๋…์€ ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์ด ์•„๋‹ˆ๋ผ ๊ตฌํ˜„ ๋œ ์ถ”์ƒ ๊ตฌ์กฐ๋ฅผ ์ฐธ์กฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

float ๋ฐ ์œ ํ˜• ๋Œ€ ๊ฐ’์— ๋ชจ๋‘ ์ž‘์šฉํ•˜๋Š” ๊ธฐํƒ€ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

0.6 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ๋ฅผ ์‚ดํŽด๋ณด๋ฉด iszero(A::Array{T}) ๊ฐ€ ๋„์ž… ๋œ ๋ฐ˜๋ฉด ๋ฐฐ์—ด์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ๋งŽ์€ ํ•จ์ˆ˜ (์˜ˆ : sumabs , isinteger , isnumber )๋Š” all(f,A) ๋Œ€์‹  ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐฐ์—ด์ด 0์ด๊ณ  ๋ฒกํ„ฐ ๊ณต๊ฐ„์— 0 ์š”์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. iszero ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฌด์–ธ๊ฐ€๊ฐ€ ๊ฐ€์‚ฐ ์  ์—ญ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

๋ ˆ. ํ•จ์ˆ˜ ์ด๋ฆ„์—์„œ ๋ฐ‘์ค„์˜ ์ผ๊ด€์„ฑ, ์—ฌ๊ธฐ์— count_ones ๋ฐ count_zeros ๋Œ€ํ•œ ํƒ์ƒ‰ ๊ฒฝ๋กœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Julia API๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•˜๋ ค๋ฉด (a) API ๊ทœ์น™ / ์ปจ๋ฒค์…˜์ด ๋ฌด์—‡์ธ์ง€ ์ง€์ •ํ•˜๊ณ , (b) Julia ์ฝ”๋“œ์˜ ์ •์  ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ฐ์ง€ ํ•  ์ˆ˜์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ทœ์น™ / ํ˜‘์•ฝ์—์„œ ๋ฒ—์–ด๋‚œ ๊ฒฝ์šฐ (c) ์ œ์•ˆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋Š” Julia Base์™€ ๋ชจ๋“  Julia ํŒจํ‚ค์ง€ ๋ชจ๋‘์— ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด Julia ํŒจํ‚ค์ง€๊ฐ€ ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (Tongue in cheek :์ด ํŒจํ‚ค์ง€๊ฐ€ ๊ฐ€์žฅ ๋จผ์ €ํ•ด์•ผ ํ•  ์ผ์€ APICheck.jl, ApiCheck.jl, API_Check.jl, APIChecker.jl, JuliaAPIChecker.jl ๋“ฑ) ์ž์ฒด ์ด๋ฆ„์„ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €๋Š” Julia๋ฅผ ์ฒ˜์Œ ์ ‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ๊ทธ๋Ÿฐ ์ผ์„ ์ฃผ๋„ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๊ธฐ์—ฌํ•˜๋Š” ๊ฒƒ์„ ๊บผ๋ฆฌ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ œ์•ˆ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” Lint.jl์— ๊ทธ๊ฒƒ์„ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

num2hex ๋ฐ hex2num (# 22031 ๋ฐ # 22088)

์ €๋„ Lint.jl์ด Julia API ์ผ๊ด€์„ฑ ๊ฒ€์‚ฌ์— ์ ํ•ฉํ•œ ํŒจํ‚ค์ง€๋ผ๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ๊ทธ ๊ธธ์„ ๊ฐ€๋ฉด ์Šคํ…ŒํŒ์˜ ์›๋ž˜ ๋ชฉ๋ก์ด ํ›จ์”ฌ ๋” ์ •ํ™• ํ•ด์ ธ์•ผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ทธ๊ฐ€ "DataStructures์˜ ๋ชจ๋“  ์ปฌ๋ ‰์…˜์— ์ผ๊ด€๋œ API๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค"๋ผ๊ณ  ์ผ์„ ๋•Œ ๋– ์˜ค๋ฅด๋Š” ์งˆ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ปฌ๋ ‰์…˜์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? (๊ธฐ๋ณธ ์ปฌ๋ ‰์…˜ ๋ชฉ๋ก)
  • ์ปฌ๋ ‰์…˜์ด ๋ฐ˜๋“œ์‹œ ์ง€์›ํ•ด์•ผํ•˜๋Š” ๊ธฐ๋Šฅ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? (์ปฌ๋ ‰์…˜ ๋ณ„ ํ•จ์ˆ˜ ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ)
  • ๊ฐ ๊ธฐ๋Šฅ์˜ ์„œ๋ช…์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • ์ปฌ๋ ‰์…˜์„ ์œ„ํ•ด Base์—์„œ ์ œ๊ณตํ•˜๋Š” API๊ฐ€ ์‹ค์ œ๋กœ ์ด๋ฏธ ์ผ๊ด€์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๋Ÿฌํ•œ ์ธ๋ฒคํ† ๋ฆฌ์™€ ๋ถ„์„์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ Julia ์ €์žฅ์†Œ (ํ”„๋กœ์ ํŠธ # 8), JuliaPraxis ์ €์žฅ์†Œ (TotalVerb์—์„œ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ œ์•ˆ) ๋˜๋Š” Lint ์ €์žฅ์†Œ์— ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ˆ„๊ฐ€ ๊ทธ๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์†Œ์œ  ํ•  ๊ฒƒ์ธ์ง€, ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์ด ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฐธ์—ฌํ•ด์•ผํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์ค„๋ฆฌ์•„ ๊ทœ์น™์ด ์‹ค์ œ๋กœ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ์ตœ์ข… ๊ฒฐ์ •์„ ๋‚ด๋ ค์•ผํ•˜๋Š” ์‚ฌ๋žŒ์„ ๋ถ„๋ฅ˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (๋ฆฐํŒ… ๋ชฉ์ ์„ ์œ„ํ•ด).

๊ทธ๋Ÿฌ๋‚˜์ด ๋ผ์ธ์„ ๋”ฐ๋ผ ๋” ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— @StefanKarpinski ์—๊ฒŒ ๋ฌผ์–ด๋ณด๊ณ 

๋‚˜๋Š” ์ด๊ฒƒ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ๋ช…์‹œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ƒ๊ฐ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋ชฉ๋ก์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ์€ ์—ฌ๊ธฐ์„œ ์ž‘์—…์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์— ๊ท ์—ด์„ ๊ฐ–๊ณ  ์‹ถ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Base.datatype_module๊ณผ Base.function_module์ด ์ •๋ง๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

๋ฐ์ดํ„ฐ ์œ ํ˜•๊ณผ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” ํ†ตํ•ฉ ํ•จ์ˆ˜ "๋ชจ๋“ˆ"(์–ด์ฉŒ๋ฉด getmodule)์ด ๋‚˜์—๊ฒŒ ๋” ์ผ๊ด€๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@code_typed ๋ฐ ์นœ๊ตฌ์˜ ๋ฐ‘์ค„์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์ด๋Š” ๋ฆฌํŒฉํ† ๋ง์„ ํ•  ์ˆ˜์žˆ๋Š” ์ข‹์€ ๊ธฐํšŒ์ž…๋‹ˆ๋‹ค (๋ฐ‘์ค„ ๊ธˆ์ง€์— ๋Œ€ํ•œ ๋ช…์‹œ๋œ ์ด์œ ). ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๊ฐ€ ์›ํ•˜๋Š” ์ฝ”๋“œ ์œ ํ˜• ์ธ @code ๋งคํฌ๋กœ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

( @bramtayl , ๋งคํฌ๋กœ ์ฃผ๋ณ€์— ๋ฐฑํ‹ฑ์„ ๋‘๋Š” ๊ฒƒ์„ @code )

FWIW, ํƒญ ์™„์„ฑ์€ ํ•จ์ˆ˜ ์ด๋ฆ„์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. @code_<TAB> ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์ข‹์€ ์ผ์ž…๋‹ˆ๋‹ค ....

๋ฆฌํŒฉํ† ๋ง์ด ๊ณ ๋ ค๋˜์—ˆ์ง€๋งŒ ๊ฑฐ๋ถ€ ๋œ ๊ฒฝ์šฐ ๋ฐ‘์ค„์ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋Š” ๋…ผ์Ÿ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ‘์ค„ ๊ธˆ์ง€์˜ ์œ ์ผํ•œ ์š”์ ์€ ๋ฆฌํŒฉํ† ๋ง์„ ์žฅ๋ คํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค์ด ๊ฒฝ์šฐ์—๋Š” ์–ธ์–ด๋ฅผ ๋” ๋ช…ํ™•ํ•˜๊ฒŒํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ‘์ค„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ๋ฅผ ๊ฐ•์กฐํ•˜์‹ญ์‹œ์˜ค.

๋ฐ˜๋Œ€ ์ œ์•ˆ : ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ์ด๋Ÿฌํ•œ ์ด๋ฆ„์„ ๊ฐ์‚ฌํ•˜์ง€๋งŒ ์ฝ”๋“œ๋ฅผ ๋” ์‰ฝ๊ฒŒ ์ฝ์„ ์ˆ˜์žˆ๋Š” ๊ณณ์— ๋ฐ‘์ค„์„ ๋” ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค (codetyped vs code_typed, isos2 vs is_os2).

๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ ˆ๋Œ€์ฃผ์˜์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. @KristofferC๊ฐ€ ์ง€์ ํ–ˆ๋“ฏ์ด code_typed ์€ ๊ดœ์ฐฎ๊ณ  , ์œ ์šฉํ•˜๊ฒŒ ํƒญ ์™„์„ฑ์ด๋ผ๊ณ 

๋‚˜์—๊ฒŒ๋Š” ๋ฐฐ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ๋ฒ ์ด์Šค์˜ ์ ˆ๋ฐ˜์„ ์ œ๊ฑฐํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋งŽ์€ ๋ฐ‘์ค„์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ•ญํ•ด ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, is ์‹œ์ž‘ํ•˜๋Š” 74 ๊ฐœ์˜ ์ˆ ์–ด ํ•จ์ˆ˜์™€ is_ ์‹œ์ž‘ํ•˜๋Š” 6 ๊ฐœ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. 6 ๋˜๋Š” 74๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋” ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๊นŒ?

์—ฌ๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ์ƒ์ถฉ๋˜๋Š” ๋ชฉํ‘œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

1) ์ด๋ฆ„์„ ๋” ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ
2) ์ฝ”๋“œ ์ดํƒˆ ๊ฐ์†Œ
3) ๋ฆฌํŒฉํ† ๋ง ์žฅ๋ ค

๋‹จ์–ด๋ฅผ ํ•จ๊ป˜ ์ถฉ๋Œ์‹œ์ผœ ๋ฐ‘์ค„์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์€ 3 ๊ฐœ์˜ ์ „์„  ๋ชจ๋‘์—์„œ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

์ŠคํŠธ๋ฆผ์„ ์ˆ˜๋ฝํ•˜๋Š” show ๋ฉ”์„œ๋“œ๊ฐ€ ! ๋˜์ง€ ์•Š์€ ๊ฒƒ์€ ์ผ๋ฐ˜์ ์ธ ๊ทœ์น™๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Ref. https://github.com/JuliaLang/julia/pull/22604/commits/db9d70a279763ded5088016d9c3d4439a49e3fca#r125115063. ๋ฒ ์ŠคํŠธ! (ํŽธ์ง‘ : ์ด๊ฒƒ์ด ์ŠคํŠธ๋ฆผ์„ ๋ฐ›์•„๋“ค์ด๋Š” write ๋ฉ”์„œ๋“œ์™€ ์ผ์น˜ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.)

ํŠธ๋ ˆ์ด ํŠธ API์— ๋ถˆ์ผ์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ํŠน์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์„ฑ์„ ํ˜ธ์ถœํ•˜์—ฌ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.
TypeArithmetic(Float64)
์ด ํ•จ์ˆ˜๋Š” ์†Œ๋ฌธ์ž๋กœ ํ‘œ๊ธฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
iteratorsize(Vector{Float64})

size -> shape (xref # 22665)์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Array{T,1}() ๋„ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

julia> Array{Int,1}()                                                                                                                  
0-element Array{Int64,1}                                                                                                               

julia> Array{Int,2}()                                                                                                                  
WARNING: Matrix{T}() is deprecated, use Matrix{T}(0, 0) instead.                                                                       

์ปฌ๋ ‰์…˜์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ธ ๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ผ๋ถ€ ๊ฐ’๋งŒ ํฌํ•จํ•˜๋Š” ๋‹จ์ˆœํ•œ ์„ธํŠธ ํ˜• (๋˜๋Š” ๊ฐ€๋ฐฉ ํ˜•) ์ปฌ๋ ‰์…˜์ž…๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•œ ์ปฌ๋ ‰์…˜.
  • ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€๋กœ ์ธ๋ฑ์Šค๊ฐ€์žˆ๋Š” ์‚ฌ์ „๊ณผ ์œ ์‚ฌํ•œ ์ปฌ๋ ‰์…˜, ์ฆ‰ k=>v ์Œ.

๋‚˜๋Š” ๋”•์…”๋„ˆ๋ฆฌ์™€ ๊ฐ™์€ ํ–‰๋™์— ํšŒ์˜์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์„ํƒ„ ๊ด‘์‚ฐ์˜ ์นด๋‚˜๋ฆฌ์•„๋Š” map ์ด๋ฉฐ ํ‚ค-๊ฐ’ ์Œ์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ‚ค ์ง‘ํ•ฉ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ž์—ฐ์Šค๋Ÿฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด๊ณผ ์‚ฌ์ „์ด ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • keys ๋Š” eachindex
  • mapindexed ๋ฐ filterindexed ๋Š” ์‚ฌ์ „๊ณผ ๋ฐฐ์—ด ๋ชจ๋‘์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜์— ํ•ด๋‹น ํ•ญ๋ชฉ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ „๋‹ฌํ•œ๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๋ฉด ๋งต ๋ฐ ํ•„ํ„ฐ์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐฐ์—ด๊ณผ ์‚ฌ์ „ (๋ฐ ๋ช…๋ช… ๋œ ํŠœํ”Œ ๋ฐ ๊ธฐํƒ€ ํ•ญ๋ชฉ)์€ ๊ธฐ๋ณธ์ ์œผ๋กœ zip(keys(c), values(c)) ๋Œ€ํ•œ ๋ฐ”๋กœ ๊ฐ€๊ธฐ ์ธ pairs ๋ฐ˜๋ณต์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ind2sub ๋ฐ sub2ind ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. ์ด๋Š” ๋ถ„๋ช…ํžˆ matlabism์ด๋ฉฐ ๋น„ matlab ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์ค„๋ฆฌ์•„๋‚˜๊ฐ€ ์•„๋‹Œ ์ด์ƒํ•œ ์ด๋ฆ„์„๊ฐ€์ง‘๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ์ด๋ฆ„์€ ๊ฐ๊ฐ indice ๋ฐ linearindice ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ  ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐํžˆ PR์„ ๋งŒ๋“ค์ง€ ์•Š์•˜์ง€๋งŒ ์ง€์›์ด ์žˆ์œผ๋ฉด ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

rad2deg ๋ฐ deg2rad ํ•ฉ๋‹ˆ๋‹ค.

Ref. # 22791 ( select -> partialsort ). ๋ฒ ์ŠคํŠธ!

๋‚ด๊ฐ€ ์—ฌ๊ธฐ์„œ ๋ณด์ง€ ๋ชปํ•œ ํ•œ ๊ฐ€์ง€๋Š” : ์„ ํƒ์  ์œ„์น˜ ์ธ์ˆ˜๊ฐ€ ์ฒ˜์Œ ๋˜๋Š” ๋งˆ์ง€๋ง‰์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๊นŒ? sum(f, itr) ๋ฐ rand([rng,] ..) ์™€ ๊ฐ™์ด ์„ ํƒ์  ์œ„์น˜ ์ธ์ˆ˜๊ฐ€ ๋จผ์ € median(v[, region]) ๋˜๋Š” split(s::AbstractString[, chars]) . ๋•Œ๋•Œ๋กœ ๊ทธ๋“ค์€ ์ฒ˜์Œ ๋˜๋Š” ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‘˜๋‹ค๋Š” ์•„๋‹™๋‹ˆ๋‹ค! (์˜ˆ๋ฅผ ๋“ค์–ด, mean ๋Š” ํ•จ์ˆ˜๋ฅผ ๋จผ์ € ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋งˆ์ง€๋ง‰ ์ฐจ์›์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‘˜ ๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.)

ํ˜„์žฌ ์–ธ์–ด ์‹œ๋งจํ‹ฑ์€ ์„ ํƒ์  ์ธ์ˆ˜๋ฅผ ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค. f(a, b=1) ๋Š” ์“ธ ์ˆ˜ ์žˆ์ง€๋งŒ f(b=1, a) ๋Š” ์“ธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ์„ ํƒ์  ์ธ์ˆ˜๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฐ€๋ฉด ํŽธ๋ฆฌํ•œ do ๋ธ”๋ก์€ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

๋‹ค๋ฅธ ๊ฒƒ์ด ์—†๋‹ค๋ฉด, rand.jl : shuffle!(a::AbstractVector) = shuffle!(GLOBAL_RNG, a) ์—์„œ ์–ธ์–ด๊ฐ€ ์ด์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์‚ฌ์†Œํ•œ ์‚ฌ๋งˆ๊ท€์ž…๋‹ˆ๋‹ค. ์„ ํƒ์  ์œ„์น˜ ์ธ์ˆ˜ ๊ตฌ๋ฌธ์€์ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ •ํ™•ํžˆ ์ฒ˜๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๋ณ„๋„์˜ ๋ฌธ์ œ๋กœ ๋“ค์–ด๊ฐ€์•ผ ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์›ํ•˜๋Š” ๊ณณ์œผ๋กœ ์„ ํƒ์  ์ธ์ˆ˜๋ฅผ ์ด๋™ํ•  ์ˆ˜์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด f(a = 1, b, c = 2) ๋Š” f(x) = f(1, x, 2) ๋ฐ f(x, y) = f(x, y, 2)

์ž„์˜์˜ ์œ„์น˜์—์„œ ๊ธฐ๋ณธ ์ธ์ˆ˜๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ ค๋Š” (์ธ๊ธฐ์—†๋Š”) ์‹œ๋„์— ๋Œ€ํ•œ xref # 22460.

warn ์„ warning (matlab์—์„œ๋„ ์‚ฌ์šฉํ•จ)๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ํฐ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ์ œ๊ฐ€ ์–ธ๊ธ‰ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐ ํ–ˆ์Šต๋‹ˆ๊นŒ?

throw ์™€ ๊ฐ™์ด ๋™์‚ฌ์ด๊ธฐ ๋•Œ๋ฌธ์— warn ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋งค์šฐ ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œํ–ˆ์Šต๋‹ˆ๋‹ค.

julia> f(;a=1,b=1) = a+b                                                                                                                              
f (generic function with 1 method)                                                                                                                    

julia> f(a=4,5)            # I intended to write f(a=4,b=5)                                                                                                                           
ERROR: MethodError: no method matching f(::Int64; a=4)                                                                                                
Closest candidates are:
  f(; a, b) at REPL[13]:1

ํ‚ค์›Œ๋“œ ํ•จ์ˆ˜๋ฅผ ์ •์˜ ํ•  ๋•Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ํ•  ๋•Œ๋งŒ ํ‚ค์›Œ๋“œ๋ฅผ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

ํ‚ค์›Œ๋“œ ํ•จ์ˆ˜๋ฅผ ์ •์˜ ํ•  ๋•Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ํ•  ๋•Œ๋งŒ ํ‚ค์›Œ๋“œ๋ฅผ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์œ„์น˜์— ํ‚ค์›Œ๋“œ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•˜๊ณ  ์ธ์ฒด ๊ณตํ•™์ ์ธ API๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜ธ๊ธฐ์‹ฌ์—์„œ ์œ„์น˜ ๋ฐ ํ‚ค์›Œ๋“œ ์ธ์ˆ˜์— ๋Œ€ํ•ด ์ •์˜ ๋œ ํ‰๊ฐ€ ์ˆœ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ช‡ ๊ฐ€์ง€ ์˜ค๋ž˜๋œ ๋ฌธ์ œ๋ฅผ ๋ณด์•˜๊ณ  https://docs.julialang.org/en/latest/manual/functions/#Evaluation -Scope-of-Default-Values-1์—์„œ ๋ฒ”์œ„์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ์ง€๋งŒ ์˜ˆ๋ฅผ ๋“ค์–ด ์ธ์ˆ˜๋Š” ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ‰๊ฐ€๋˜๊ฑฐ๋‚˜ ๋ชจ๋“  ์œ„์น˜ ์ธ์ˆ˜๊ฐ€ ๋ชจ๋“  ํ‚ค์›Œ๋“œ ์ธ์ˆ˜๋ณด๋‹ค ๋จผ์ € ํ‰๊ฐ€๋˜๊ฑฐ๋‚˜ ์ •์˜ ๋œ ํ‰๊ฐ€ ์ˆœ์„œ (๋˜๋Š” ๋‹ค๋ฅธ ํ•ญ๋ชฉ)๊ฐ€์—†๋Š” ๊ฒฝ์šฐ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

@yurivish , ํ‚ค์›Œ๋“œ๋Š” ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค (https://github.com/JuliaLang/julia/issues/23926). ์„ ํƒ ์‚ฌํ•ญ์˜ ๊ฒฝ์šฐ ์ด์•ผ๊ธฐ๊ฐ€ ์กฐ๊ธˆ ๋” ๋ณต์žก ํ•ฉ๋‹ˆ๋‹ค . ์žˆ์Šต๋‹ˆ๋‹ค . (https://discourse.julialang.org/์—์„œ ์งˆ๋ฌธํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค.)

์ž์ฒด ๋ฌธ์ œ๋กœ ๋ณผ ๊ฐ€์น˜๊ฐ€์—†๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ bits(1) ์ด String ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ํ•ญ์ƒ ์ด์ƒํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. BitVector ๋˜๋Š” Vector{Bool} ์ด์–ด์•ผํ•ฉ๋‹ˆ๋‹ค

Function ๋˜๋Š” Callable ๋””์ŠคํŒจ์น˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๋ฆฌ๋ทฐ๋ฅผ ์ œ์•ˆํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ API๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ฐฉ์‹์ธ์ง€ ํ™•์ธํ•˜๊ณ , ์–ด๋–ค ๊ฐ์ฒด ๋“  ๋• ํ˜ธ์ถœ์„ ํ—ˆ์šฉ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ…Œ์ด๋ธ”์„ ์žฌ๊ตฌ์„ฑ ํ•  ๊ธฐํšŒ๋ฅผ ๋†“์น˜๊ณ  ์žˆ์ง€ ์•Š์€์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

all ๋ฐ any , ์ด๋ฏธ all(Generator(f, xs)) ์—ํƒ€ ๊ฐ์†Œ ๋œ all(f(x) for x in xs) ์œผ๋กœ ์‚ฌ์šฉ ์ค‘๋‹จ๋˜๋Š” ๊ฒƒ์ด ๊ฐ„๋‹จ ํ•ด ๋ณด์ด๋ฏ€๋กœ ์˜ค๋ฒ„ ํ—ค๋“œ๊ฐ€ ์—†์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋‹น์‹ ์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ, ๊ฒฝ์šฐ์— ๋Œ€๋น„ํ•ด ์–ธ๊ธ‰ ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ œ๋„ˆ๋ ˆ์ดํ„ฐ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์  ์Šคํƒ€์ผ API๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ํ•˜๋“œ ์ฝ”์–ด ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” any(f, x) ์™€ all(f, x) ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด -10000000 (๋˜๋Š” ์‹ค์ œ๋กœ ๊ทธ๋Ÿฌํ•œ ๋ฐฉ๋ฒ•).

์ž„ ํ”„๋กœ ์ƒ์„ฑ๊ธฐ. ๊ฒŒ์œผ๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ์ฒ˜๋Ÿผ ๋ณด์ด๋ฉฐ ๋‚ด ๋ณด๋‚ด์•ผํ•ฉ๋‹ˆ๋‹ค. all(Generator(f, xs)) all(f(x) for x in xs) ๋ณด๋‹ค ์ •์˜ ๋œ ํ•จ์ˆ˜์— ๋” ํŽธ๋ฆฌ ํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ท ํ˜•์„ ํšŒ๋ณตํ•˜๊ธฐ ์œ„ํ•ด +10000000

๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์—ฌ๊ธฐ์— ๊ตฌ๋ฌธ์ด ์ ์€ ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. "xs๋ฅผ ์ทจํ•˜๊ณ , f๋ฅผ ๋ชจ๋“  ๊ฒƒ์— ์ ์šฉํ•˜๊ณ , ๋ชจ๋“  ๊ฒƒ์ด ์ฐธ์ด๋ฉด ์ฐธ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค"๋ผ๋Š” ์ƒ๊ฐ์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์‰ฝ๊ณ  ์ฝ๊ธฐ ์‰ฝ๊ณ  ์„ฑ๋Šฅ์ด ์ข‹๋‹ค๋ฉด ์™œ ๊ทธ๊ฒƒ์„ ํ•˜๋‚˜์˜ ๋™์‚ฌ์— ๋„ฃ์–ด์•ผํ• ๊นŒ์š”?

f(x) for x in xs ์˜ ๋ถˆํ•„์š”ํ•œ ๋ช…์‚ฌ x ๊ฐ€ ์šฐ๋ ค๋˜๋Š” ๊ฒฝ์šฐ Generator ๋‚ด๋ณด๋‚ด๊ธฐ์— ๋Œ€ํ•œ @bramtayl ์˜ ์ œ์•ˆ (์•„๋งˆ๋„ Map ์™€ ๊ฐ™์€ ๋” ๋‚˜์€ ์ด๋ฆ„ ์‚ฌ์šฉ?) ๋ง์ด๋œ๋‹ค.

all(isnull, x) ๊ฐ™์€ ๊ฒƒ์€ all(isnull(v) for v in x) ๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. all(isnull, x) ๋Œ€์‹  NullableArrays์—์„œ allnull ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ์ด ์‚ฌ๋ผ์ง€๋ฉด ์•„๋งˆ ๋‹ค์‹œ ๋„์ž…ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ์— ๋Œ€ํ•œ strwidth ์— stringwidth (๋‚œ์ด ์บ๋ฆญํ„ฐ ๋ผ์ธ์— ๋ฌธ์ž์—ด์„ ์ถ•์•ฝ ํ•œ ์œ ์ผํ•œ ์ˆ˜์ถœ ๋ฌธ์ž์—ด ์กฐ์ž‘ ํ•จ์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค)

์‹ค์ œ๋กœ textwidth (https://github.com/JuliaLang/julia/pull/23667)๋กœ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

IMO,์ด ๋ฌธ์ œ๋Š” ๋„ˆ๋ฌด ๊ด‘๋ฒ”์œ„ํ•˜์—ฌ 1.0 ๋งˆ์ผ์Šคํ†ค์„ ๊ฐ–์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ณง ๊ธฐ๋Šฅ์ด ์ค‘๋‹จ๋˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์—ฌ๋Ÿฌ ๋ช…์˜ ์†Œ์œ ์ž๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฒ€ํ†  ํ•  ๊ธฐ๋Šฅ ์„ธํŠธ๋ฅผ ํ• ๋‹น ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, FemtoCleaner๊ฐ€ 1.0 ์ดํ›„์— ๋งŽ์€ ๊ฒƒ์„ ์ž๋™ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ๊ณณ์ž…๋‹ˆ๋‹ค.

textwidth์— ๋Œ€ํ•œ ์˜๊ฒฌ :

INFO: Testing Cairo
Test Summary:   | Pass  Total
Image Surface   |    7      7
Test Summary:   | Pass  Total
Conversions     |    4      4
Test Summary:   | Pass  Total
TexLexer        |    1      1
WARNING: both Compat and Cairo export "textwidth"; uses of it in module Main must be qualified
Samples        : Error During Test
  Got an exception of type LoadError outside of a <strong i="6">@test</strong>
  LoadError: UndefVarError: textwidth not defined
  Stacktrace:
   [1] include_from_node1(::String) at .\loading.jl:576
   [2] include(::String) at .\sysimg.jl:14
   [3] macro expansion at C:\Users\appveyor\.julia\v0.6\Cairo\test\runtests.jl:86 [inlined]
   [4] macro expansion at .\test.jl:860 [inlined]
   [5] anonymous at .\<missing>:?
   [6] include_from_node1(::String) at .\loading.jl:576
   [7] include(::String) at .\sysimg.jl:14
   [8] process_options(::Base.JLOptions) at .\client.jl:305
   [9] _start() at .\client.jl:371
  while loading C:\Users\appveyor\.julia\v0.6\Cairo\samples\sample_pango_text.jl, in expression starting on line 28

์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด ๋งค์šฐ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. Cairo ๋Š” ๊ธฐ๋ณธ ๋ฉ”์†Œ๋“œ๋ฅผ ํ™•์žฅํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

help?>  Base.textwidth
  No documentation found.

  Binding Base.textwidth does not exist.

julia> versioninfo()
Julia Version 0.6.0
julia> Compat.textwidth
textwidth (generic function with 2 methods)

๋‚˜๋Š” ๋ฉ”์‹œ์ง€ (๋‚ด๊ฐ€ travis๋ฅผ ํ†ตํ•ด ์–ป์€)๊ฐ€ ๊ดœ์ฐฎ๋‹ค๋Š” ๊ฒƒ์„ ์˜์‹ฌํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์™œ Compat๋Š” 0.6์ด ์•„๋‹Œ ๊ฒฝ์šฐ textwidth๋ฅผ ๋‚ด๋ณด๋‚ด๋‚˜์š”?

๊ทธ๊ฒƒ์ด Compat์˜ ์š”์ ์ด๊ธฐ ๋•Œ๋ฌธ์—? ์ด ํ† ๋ก ์€ ๋ฒ”์œ„๋ฅผ ํฌ๊ฒŒ ๋ฒ—์–ด ๋‚ฌ์œผ๋ฏ€๋กœ ๋‹ด๋ก ์ด๋‚˜ ์—ฌ์œ ๋กœ ๊ณ„์† ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

copy ๋ฅผ shallowcopy ํ•˜๊ณ  deepcopy ๋ฅผ copy ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ ์‚ฌ๋ณธ์ด "์–•์€"์‚ฌ๋ณธ์ด๊ณ  ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ํ•จ์ˆ˜๋Š” ๋ฐฐ์—ด์˜ ๋ฐฐ์—ด์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. copy ๊ฐ€ "๊นŠ์€"๋ณต์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  shallowcopy ์™€ ๊ฐ™์€ ๊ฒƒ์„ ์–•์€ ๋ณต์‚ฌ์— ์‚ฌ์šฉํ•˜๋ฉด ํ›จ์”ฌ ๋” ์ง๊ด€์  ์ผ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ? ์ง€๊ธˆ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. deepcopy ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋‹ค๋ฅธ ๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์ผํ•œ ๋ฌธ์ œ์— ๋ถ€๋”ช ํž ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ "๋‚ด๊ฐ€ ์‹ซ์–ดํ•˜๋Š” ํŠน์ • ํ•ญ๋ชฉ"์ด ์•„๋‹Œ API ์ผ๊ด€์„ฑ์„ ์œ„ํ•ด ์œ ์ง€ํ•˜๋„๋ก ๋…ธ๋ ฅํ•ฉ์‹œ๋‹ค.

Associative ์ด๋ฆ„์ด Julia์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ์œ ํ˜• ์ด๋ฆ„๊ณผ ์ƒ๋‹นํžˆ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฒซ์งธ, ์œ ํ˜•์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ˜•์šฉ์‚ฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ช…์‚ฌ๋Š” Association ์ด๋ฉฐ ์ ์–ด๋„ ๋‚ด๊ฐ€ ์ฐพ์€ ์ผ๋ถ€ Mathematica ๋ฌธ์„œ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

AbstractDict ๋Š” AbstractArray , AbstractRange , AbstractSet ๋ฐ AbstractString ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์œ ํ˜•๊ณผ ํ›จ์”ฌ ๋” ์ผ๊ด€์„ฑ์ด์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค AbstractRange ํ”„๋กœํ†  ํƒ€์ž… ์ฝ˜ํฌ๋ฆฌํŠธ ์œ ํ˜• Dict , Array , Range , Set ๋ฐ String .

์˜ˆ์™ธ ์œ ํ˜•์€ ์‚ฌ๋ฐฉ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€๋Š” FooError ์ด๊ณ  ๋‹ค๋ฅธ ์œ ํ˜•์€ BarException . ์ผ๋ถ€๋Š” ๋‚ด๋ณด๋‚ด ์ง€์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๊ด€์„ฑ์„ ์œ„ํ•ด ํ†ต๊ณผ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด FooError ๋˜๋Š” BarException ์„ ํ˜ธํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ˆ˜์ถœ ์—ฌ๋ถ€?

์ €์—๊ฒŒ BarException ์€ ์–ด๋”˜๊ฐ€์— ๋ชจ๊ธˆ / ์žก๊ธฐ ํŒจํ„ด์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋งŽ์€ ๊ฒƒ์„ ์„ ํ˜ธํ•˜๊ณ  ๊ธฐ๋Šฅ ์„ธ๊ณ„์˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ์ œ์–ด ํ๋ฆ„์ด ๋” ์ง์ ‘์ ์ด๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ Some / None ํŒจํ„ด (*)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ FooError +1

(*) Some / Void ex Optional in Julia # 23642.

๊ธฐ๋Šฅ์ด ์ •์ง€ ๋œ ์ƒํƒœ์—์„œ ์ด๋Ÿฌํ•œ ํ•ญ๋ชฉ์ด ์—ฌ์ „ํžˆ ํ…Œ์ด๋ธ”์— ์žˆ์Šต๋‹ˆ๊นŒ? ํŠนํžˆ ์„ ํƒ์  ๋Œ€ ํ‚ค์›Œ๋“œ ์ธ์ˆ˜๋ฅผ ๋‹ค๋ฃจ๊ณ  ์‹ถ์ง€๋งŒ ์—ฌ๋Ÿฌ ์„ ํƒ์  ์ธ์ˆ˜๊ฐ€์žˆ๋Š” ํ•จ์ˆ˜ ๋ชฉ๋ก (๋Œ€์‹  ํ‚ค์›Œ๋“œ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์žฅ ๋ช…ํ™•ํ•œ ๊ฒฝ์šฐ)์€ ๊ฝค ๊น๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๋ด์ฃผ์„ธ์š”! ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ํ•ด๊ฒฐํ•  ๊ธฐํšŒ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

BTW, ํŠน์„ฑ ์ด๋ฆ„ ์ง€์ •์— ๋ถˆ์ผ์น˜๊ฐ€ ์žˆ์Œ์„ ํ™•์ธ ํ–ˆ์Šต๋‹ˆ๋‹ค : iteratorsize , iteratoreltype ,ํ•˜์ง€๋งŒ IndexStyle , TypeRangeStep , TypeArithmetic ๋ฐ TypeOrder . CamelCase ๋ณ€ํ˜•์ด ๋” ๋งŽ๊ณ  ์ตœ์‹  ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋ฏ€๋กœ ๋ชจ๋“  ๊ณณ์—์„œ ํ•ด๋‹น ๊ทœ์น™์„ ์ฑ„ํƒํ•ด์•ผํ• ๊นŒ์š”?

๊ทธ๊ฒƒ๋“ค์€ ํ™•์‹คํžˆ ์ผ๊ด€์„ฑ์ด ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ํ™๋ณดํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ด๊ฒƒ์ด https://github.com/JuliaLang/julia/pull/25356์˜ ์ผ๋ถ€๋กœ ์ˆ˜์ •๋˜์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค

ํŽธ์ง‘ : https://github.com/JuliaLang/julia/issues/25440 ์ฐธ์กฐ

์ด๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„ ์ˆ˜ํ–‰๋˜๊ฑฐ๋‚˜ 1.x ๋ฆด๋ฆฌ์Šค์—์„œ ์ˆ˜ํ–‰ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒดํฌ ๋ฐ•์Šค๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ถ„๋ฅ˜ ํ˜ธ์ถœ์—์„œ ์ฒดํฌ ๋ฐ•์Šค๋ฅผ ์‚ดํŽด ๋ดค๊ณ  # 25395์™€ ๋ฐ‘์ค„ ๊ฐ์‚ฌ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฒƒ์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ‘์ค„ ๊ฐ์‚ฌ

๋‹ค์Œ์€ ๋ฐ‘์ค„์„ ํฌํ•จํ•˜๊ณ  ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋ฌธ์ž์—ด ๋งคํฌ๋กœ๊ฐ€ ์•„๋‹Œ Base์—์„œ ๋‚ด ๋ณด๋‚ธ ๋ชจ๋“  ๊ธฐํ˜ธ์— ๋Œ€ํ•œ ๋ถ„์„์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฃผ๋ชฉํ•ด์•ผ ํ•  ์ค‘์š”ํ•œ ์ ์€์ด ์ด๋ฆ„์ด ๋‚ด๋ณด๋‚ด๊ธฐ ๋œ ์ด๋ฆ„์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ ๊ฒฉ์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์ˆ˜์ถœ๋˜์ง€ ์•Š์€ ์ด๋ฆ„์€ ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ ๊ตฌ๋ถ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์„ฑ๊ฐ€์‹  ๊ฒƒ๋ณด๋‹ค ๋” ์œ ์šฉํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ฐ˜์‚ฌ

ํ•ด๋‹น ๊ธฐ๋Šฅ์ด์žˆ๋Š” ๋‹ค์Œ ๋งคํฌ๋กœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • [] @code_llvm , code_llvm
  • [] @code_lowered , code_lowered
  • [] @code_native , code_native
  • [] @code_typed , code_typed
  • [] @code_warntype , code_warntype

๋งคํฌ๋กœ์— ์ ์šฉ๋˜๋Š” ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ํ•จ์ˆ˜์—๋„ ์œ ์‚ฌํ•˜๊ฒŒ ์ ์šฉ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

  • [x] module_name -> nameof (# 25622)
  • [x] module_parent -> parentmodule (# 25629, ์ด์ „ ์ด๋ฆ„ โ€‹โ€‹๋ณ€๊ฒฝ ์‹œ๋„๋Š” # 25436 ์ฐธ์กฐ)
  • [x] method_exists -> hasmethod (# 25615)
  • [x] object_id -> objectid (# 25615)
  • [] pointer_from_objref

pointer_from_objref ๋Š” ์ข€ ๋” ์„ค๋ช…์ ์ธ ์ด๋ฆ„์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. address ?

C interop์˜ ๋ณ„์นญ

๋ฐ‘์ค„์ด ํฌํ•จ ๋œ ์œ ํ˜• ๋ณ„์นญ์€ C_NULL , Cintmax_t , Cptrdiff_t , Csize_t , Cssize_t , Cuintmax_t ๋ฐ Cwchar_t _t ๋๋‚˜๋Š” ์ด๋ฆ„์€ ํ•ด๋‹น C ์œ ํ˜•๊ณผ ์ผ์น˜ํ•˜๋„๋ก ์ด๋ฆ„์ด ์ง€์ •๋˜๋ฏ€๋กœ ๊ทธ๋Œ€๋กœ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

C_NULL ๋Š” C์—์„œ ๋ฏธ๋Ÿฌ๋ง๋˜์ง€ ์•Š๋Š” ๋ฐ‘์ค„์„ ํฌํ•จํ•˜๋Š” ์œ ์ผํ•œ C ๋ณ„์นญ์ž…๋‹ˆ๋‹ค (C์—์„œ๋Š” NULL ์ด๋ฏ€๋กœ). ์ด๊ฒƒ์„ CNULL ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • [] C_NULL

๋น„ํŠธ ์นด์šดํŒ…

  • [] count_ones
  • [] count_zeros
  • [] trailing_ones
  • [] trailing_zeros
  • [] leading_ones
  • [] leading_zeros

์ด๋ฆ„ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ์„ค๋ช…์€ # 23531์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ์ด๊ฒƒ๋“ค์— ๋Œ€ํ•œ ๋ฐ‘์ค„๊ณผ ๊ทธ PR์—์„œ ์ œ์•ˆ ๋œ ๋Œ€์ฒด๋ฌผ ์ค‘ ์ผ๋ถ€๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์„ ๋งค์šฐ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ์žฌ๊ณ ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ž‘์—…

  • [] unsafe_copyto!
  • [] unsafe_load
  • [] unsafe_pointer_to_objref
  • [] unsafe_read
  • [] unsafe_store!
  • [] unsafe_string
  • [] unsafe_trunc
  • [] unsafe_wrap
  • [] unsafe_write

์ด ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฐ‘์ค„์˜ ์ถ”์•…ํ•จ์€ ๊ทธ๋“ค์˜ ์œ„ํ—˜์„ฑ์„ ๋”์šฑ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์‹ฑ

  • [] broadcast_getindex
  • [] broadcast_setindex!
  • [] to_indices

๋ถ„๋ช…ํžˆ broadcast_getindex ๋ฐ broadcast_setindex! ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ดํ•˜๋Š” ์ผ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ๋‹ค. ๋” ์„ค๋ช…์ ์ธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

ํฅ๋ฏธ๋กญ๊ฒŒ๋„ to_indices , Base.to_index ์˜ ๋‹จ์ผ ์ธ๋ฑ์Šค ๋ฒ„์ „์€ ๋‚ด๋ณด๋‚ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ”์ 

  • [] catch_backtrace
  • [x] catch_stacktrace -> stacktrace(catch_backtrace()) (# 25615)

์•„๋งˆ๋„ ์ด๋“ค์€ ๊ฐ๊ฐ backtrace ๋ฐ stacktrace ์— ํ•ด๋‹นํ•˜๋Š” catch ๋ธ”๋ก ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž‘์—…, ํ”„๋กœ์„ธ์Šค ๋ฐ ์‹ ํ˜ธ

  • [] current_task
  • [] task_local_storage
  • [] disable_sigint
  • [] reenable_sigint
  • [] process_exited
  • [] process_running

์ŠคํŠธ๋ฆผ

  • [] redirect_stderr
  • [] redirect_stdin
  • [] redirect_stdout
  • [x] nb_available -> bytesavailable (# 25634)

๋” ์ผ๋ฐ˜์ ์ธ IO -> IO ๋ฆฌ๋””๋ ‰์…˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ๊ฒฐํ•ฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์˜ˆ : redirect(STDOUT, io) ). ๊ทธ๋Ÿฌ๋ฉด ๋ฐ‘์ค„๊ณผ ๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ ๋ชจ๋‘ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ๋ชจ์…˜

  • [] promote_rule
  • [] promote_shape
  • [] promote_type

promote_rule ์— ๋Œ€ํ•œ ๊ด€๋ จ ํ† ๋ก ์€ # 23999๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ธ์‡„

  • [x] print_with_color -> printstyled (# 25522 ์ฐธ์กฐ)
  • [] print_shortest (# 25745 ์ฐธ์กฐ)
  • [] escape_string (# 25620 ์ฐธ์กฐ)
  • [] unescape_string

escape_string ๋ฐ unescape_string ๋Š” ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ธ์‡„ํ•˜๊ฑฐ๋‚˜ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ์•ฝ๊ฐ„ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋™ / ์ด๋ฆ„ ๋ณ€๊ฒฝ ์ œ์•ˆ์€ # 25620์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฝ”๋“œ ๋กœ๋”ฉ

  • [] include_dependency
  • [] include_string

include_dependency Base ์™ธ๋ถ€์—์„œ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? ์ผ๋ฐ˜์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ include ๋Œ€์‹  ์ด๊ฒƒ์„ ์›ํ•˜๋Š” ์ƒํ™ฉ์„ ์ƒ๊ฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

include_string ์ด๊ฒƒ์€ ๊ณต์‹์ ์œผ๋กœ ์Šน์ธ ๋œ eval(parse()) ๋ฒ„์ „์ด ์•„๋‹™๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ๋ถ„๋ฅ˜ํ•˜์ง€ ์•Š์€ ๊ฒƒ

  • [x] gc_enable -> GC.enable (# 25616)
  • [] get_zero_subnormals
  • [] set_zero_subnormals
  • [] time_ns

get_zero_subnormals ๋ฐ set_zero_subnormals ๋Š” ๋” ์„ค๋ช…์ ์ธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๋ณด๋‚ด์•ผํ•ฉ๋‹ˆ๊นŒ?

method_exists => methodexists ๋ฐ object_id => objectid ๋Œ€ํ•œ +1. catch_stacktrace ์กฐ์ฐจ ์กด์žฌํ•˜๋Š” ๊ฒƒ๋„ ์–ด๋ฆฌ์„์€ ์ผ์ž…๋‹ˆ๋‹ค. stacktrace(catch_backtrace()) ์ •์˜๋กœ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

C_NULL ๋‚ฎ์€ C* ์ด๋ฆ„์— ๋ฐ‘์ค„์ด ์—†๋‹ค๋Š” ์ฃผ์žฅ๋„ ์‚ฝ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ C ์ด๋ฆ„์€ ์œ ํ˜•์ด๊ณ  C_NULL ๋Š” ์ƒ์ˆ˜์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ข‹์€์ง€ ์ƒ๊ฐํ•˜๊ณ  ๋ช…๋ช… ์ง€์นจ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

๋ช…๋ช… ์ง€์นจ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ?

์ƒ์ˆ˜๋Š” ์ข…์ข… ๋ชจ๋‘ ๋ฐ‘์ค„์ด์žˆ๋Š” ๋Œ€๋ฌธ์ž์ž…๋‹ˆ๋‹ค. C_NULL ๋’ค์—์˜ต๋‹ˆ๋‹ค. @ iamed2๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ์œ ํ˜•์ด ์•„๋‹ˆ๋ผ ๊ฐ’์ด๋ฏ€๋กœ Cfoo ๋ช…๋ช… ๊ทœ์น™์ด ๋ฐ˜๋“œ์‹œ ์ ์šฉ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‹ค์ˆ˜๋กœ https://github.com/JuliaLang/julia/blob/master/doc/src/manual/variables.md#stylistic -conventions๊ฐ€ ์ƒ์ˆ˜๋ฅผ ์ฐธ์กฐํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋งˆ ๊ทธ๋Ÿด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฒกํ„ฐ๊ฐ€ Julia ๋ฐฐ์—ด์ด ์•„๋‹Œ ์ผ๋ฐ˜์ ์ธ ํž๋ฒ ๋ฅดํŠธ ๊ณต๊ฐ„์— ๋Œ€ํ•ด ์ผ๊ด€๋˜๊ณ  ์ˆ˜ํ•™์ ์œผ๋กœ ๊ฑด์ „ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. vecdot , vecnorm ๋“ฑ๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜ ์ด๋ฆ„์€ https : // github์— ์„ค๋ช… ๋œ๋Œ€๋กœ inner ๋ฐ norm ์˜ ์ผ๋ฐ˜ ๊ฐœ๋…์œผ๋กœ ๋Œ€์ฒด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . com / JuliaLang / julia / issues / 25565.

๋‚ด๊ฐ€ ๋ช‡ ๋ฒˆ ๋งํ–ˆ๋“ฏ์ด, ์ด๊ฒƒ์€ ์‚ฌ๋žŒ์ด ๋ฐ”๊พธ๊ณ  ์‹ถ์€ ๊ฒƒ์— ๋Œ€ํ•œ ํฌ๊ด„์  ์ธ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์ด ์šฐ์‚ฐ ์•„๋ž˜ 1.0์— ๋‚จ์•„์žˆ๋Š” ์œ ์ผํ•œ ํ•ญ๋ชฉ์€ # 25501๊ณผ # 25717์ž…๋‹ˆ๋‹ค.

(get|set)_zero_subnormals ๋ญ”๊ฐ€๋ฅผํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๊ฐ€์žฅ ์ข‹์€ ๋‹จ๊ธฐ ํ•ด๊ฒฐ์ฑ…์€ ๊ทธ๋ƒฅ ๋‚ด ๋ณด๋‚ด์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๊ฒ€ํ† ํ•ด์•ผ ํ•  ๊ฒƒ์€ map ๋ฐ collect ์™€ ๊ฐ™์€ ์ปฌ๋ ‰์…˜ ์ž‘์—…์˜ ์ปจํ…์ŠคํŠธ์—์„œ ์ˆซ์ž๊ฐ€ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ „์ž๋Š” ์Šค์นผ๋ผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ํ›„์ž๋Š” 0D ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ์ง€์  ์ด์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰