์ฑ๋ฅ์ .NET์ ํต์ฌ ๊ธฐ๋ฅ์ด์์ต๋๋ค. ๊ฒ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํํ๊ธฐ ์ํ ๊ธฐ์กด ์ต์ ์ ์ค๋๋ .NET์ด ๋์์ผ๋ก ํ๋ ๋๋ถ๋ถ์ ์๋๋ฆฌ์ค์์ ์ ์๋ํฉ๋๋ค.
์ฌ๋ฌ๋ถ ์ค ์ผ๋ถ๋ ๋ถ๋ช ํ ๋ค๋ฅธ ํน์ฑ์ ๊ฐ์ง ๊ธฐ๋ณธ AOT ์ปดํ์ผ ์ต์ ์ ์ถ๊ฐํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ฌ๋ผ๊ณ ์์ฒญํ์ต๋๋ค. ๊ธฐ๋ณธ AOT์ ๋๋ ทํ๊ฒ ๋ค๋ฅธ ํน์ฑ์๋ .NET ๋ฐํ์ ํผ ํฉํฐ ์ ์์ธํ ์ค๋ช ๋์ด ์๋ ๋ฎ์ ํธํ์ฑ๊ณผ ๊ฐ์ ์ ์ถฉ์์ด ์์ต๋๋ค. ๊ธฐ๋ณธ AOT ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ ์ ์ดํดํ ์ ์๋๋ก ์ค๋ฌธ์กฐ์ฌ๋ฅผ ๋ง๋ค์์ต๋๋ค.
๋ฏธ๋๋ฅผ ์ํ ์ฌ๋ฐ๋ฅธ ๊ณํ์ ์ธ์ธ ์ ์๋๋ก ์๊ฒฌ์ ๋ณด๋ด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ์ฐ๋ฝ์ฒ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ง ์์ผ๋ฉด ์๋ต์ ์ต๋ช ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
์ค๋ฌธ์กฐ์ฌ: https://www.surveymonkey.com/r/7THQK5K
์๊ฐ ๋ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
์ด ๋ฌธ์ ์ ์ถ๊ฐํ ์ต์ ์ ์ง์ญ ๋ ์ด๋ธ์ ์ฐพ์ง ๋ชปํ์ต๋๋ค. ์ฐ๊ธฐ ๊ถํ์ด ์๋ ๊ฒฝ์ฐ ์ ํํ ํ๋์ ์์ญ ๋ ์ด๋ธ ์ ์ถ๊ฐํ์ฌ ๋ฐฐ์ธ ์ ์๋๋ก ๋์์ฃผ์ธ์.
์คํ์ฒ๋ผ ๋ณด์
๋๋ค. - * 9. Which of these tasks are apart of your production debugging workflow? (Please select all that apply)
"~์ ์ผ๋ถ"๋ผ๊ณ ํด์ผ ํ ๊น์?
์ด ๋ฌธ์ ๋ฅผ ๋ณด๊ฒ ๋์ด ์ ๋ง ๊ธฐ์ฉ๋๋ค! ๐๐
์ง๋ฌธ: .NET ๋ค์ดํฐ๋ธ ๋๊ตฌ ์ฒด์ธ์ผ๋ก ์์ ํ UWP ๊ฐ๋ฐ์์ ๊ฒฝ์ฐ ์ด์ ์ CoreRT๋ฅผ ์ฌ์ฉํ์ง ์์๋ค๊ณ ๋งํ๊ฑฐ๋ .NET ๋ค์ดํฐ๋ธ๊ฐ CoreRT์ ๋ง์ ์ ์ฌ์ (์ผ๋ถ ๊ณต์ ์ฝ๋๋ ํฌํจ)์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ค๋ฌธ์กฐ์ฌ์ ์๋ตํด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ ธํธ์์ ์ด๊ฒ์ ์ธ๊ธํ ๋ค์ .NET Native์ ๋ํ ๊ฒฝํ๊ณผ ๊ด๋ จํ์ฌ ๋ค๋ฅธ CoreRT ์ง๋ฌธ์ ๋ตํฉ๋๋ค. ๐ค
@ Sergio0694 UWP ์ง๋ฌธ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋์ํฉ๋๋ค. ์ฐธ๊ณ ๋ก ์ธ๊ธํ๊ณ ์คํ ์์ค ๋ฒ์ ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ฌ์ฉ corert์ ํ์ ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ด ์ค๋ฌธ ์กฐ์ฌ๋ฅผ ๊ฒ์ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
.NET ๋ค์ดํฐ๋ธ๋ง ์ฌ์ฉํด ์จ UWP ๊ฐ๋ฐ์๋ก์ ํน์ ์ง๋ฌธ์ ์ด๋ป๊ฒ ๋๋ตํด์ผ ํ ์ง ํผ๋์ค๋ฝ๊ธฐ๋ ํ์ต๋๋ค. UWP์ .NET ๋ค์ดํฐ๋ธ ๋๊ตฌ ๋ชจ์์ ๋ํด ์ฌ๋ฌ ๊ฐ์ง ์๊ฒฌ์ด ์์ง๋ง ์ค์ ๋ก ์ ์ด ๋ ๊ณณ์ด ์์ต๋๋ค. ๊ทธ๊ฒ์ด ์ด ์ค๋ฌธ์กฐ์ฌ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฒ์ด๋ฉด ๊ด์ฐฎ์ง๋ง ๋ช ํํ ํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
๋๋ ๋ํ ".NET Native๊ฐ UWP ๋ฆด๋ฆฌ์ค ๋น๋์ ๊ธฐ๋ณธ๊ฐ์ด๊ณ Store์์ ํ์ํ๊ธฐ ๋๋ฌธ์"๊ฐ ์๋ง๋ ์ฌ๋๋ค์ด AOT๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ด์ ์ผ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง ์ง๋ฌธ 5์ ๋ํด ๋ฏธ๋ฆฌ ์ฑ์์ง ๋ต๋ณ ์ค ํ๋๋ ์๋๋๋ค.
GUI ์ต์ ์ Avalonia๋ฅผ ํฌํจ์์ผ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค :) ์ฐ๋ฆฌ๋ ์ด์ ์ CoreRT+Avalonia๋ฅผ ์คํํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ ๋ฉ์ง ๋ค์ดํฐ๋ธ GUI ์ฑ์ด์์ต๋๋ค.
.net์์ ์ข
์ข
์ํ์ง๋ ๋ถ๋ถ์ ๊ฒ์ ๊ฐ๋ฐ์
๋๋ค. ๋ง์ ํ๋ซํผ์์ JIT ์คํ์ ํ์ฉํ์ง ์๊ณ ์ฝ์์ด๋ IOS ์ฅ์น๋ฅผ ์๊ฐํ ์ ์์ต๋๋ค.
.net ์ํ๊ณ์ ์ผ๋ฑ ์๋ฏผ์ผ๋ก์ .net ๋ค์ดํฐ๋ธ AOT๋ฅผ ์ป๋ ๊ฒ์ ๊ฒ์ ๊ฐ๋ฐ์ ๋ฏธ๋๋ฅผ ์ํด ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ผ๋ถ ๊ฒ์ ์์ง์ ์์ฒด AOT๋ฅผ ์คํํ์ง๋ง(์๋ฅผ ๋ค์ด Unity๋ il2cpp๋ก ์ํ), ์ด๋ ์ ๋์ ์ธ ๋ํ์ ์
๋๋ค.
๋ฐ๋ผ์ ๊ณต์ ์๋ฃจ์
์ ํ์ํ ๋งํ ๊ฒ ์ด์์
๋๋ค. ์
๊ณ๋ฅผ ๋ฐ๊พธ๋ ์ด๋ฒคํธ๊ฐ ๋ ์ ์์ต๋๋ค.
๊ฒ์ ์ฐ์
์ด ์์ต๊ณผ ๋งค์ถ ๋ชจ๋์์ ์ํ ์ฐ์
์ ์ถ์ํ๊ณ ์์์ ์์ง ๋ง์ญ์์ค.
์ฝ์์ ์ฃผ์ ์์ต์ด ๋ฐ์ํ๋ ๊ณณ์
๋๋ค.
๊ฒ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํํ๊ธฐ ์ํ ๊ธฐ์กด ์ต์ ์ ์ค๋๋ .NET์ด ๋์์ผ๋ก ํ๋ ๋๋ถ๋ถ์ ์๋๋ฆฌ์ค์์ ์ ์๋ํฉ๋๋ค.
...
AOT๋ ์ฃผ๋ก GUI ์ฑ์์ ์ค์ํฉ๋๋ค. ์ง์ค์ด ํ์ํ ๋ถ๋ถ์ ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ํ์๋กํ๋ webapp, ์๋น์ค ๋ฑ์ด ๋ณด์ด์ง ์์ต๋๋ค.
๋๋ ๋์ํ์ง ์๋๋ค. ์ต๊ณ ์ ์ต์ข ์ฌ์ฉ์ UX๋ฅผ ์ํด์๋ ๊ฒ์ ์์ง , ์๋ฒ๋ฆฌ์ค ๋ง์ดํฌ๋ก์๋น์ค , ๋ฐ์คํฌํ GUI ์ ํ๋ฆฌ์ผ์ด์ , iOS ๋ฐ Android ์ ํ๋ฆฌ์ผ์ด์ , WASM ๊ธฐ๋ฐ ํด๋ผ์ด์ธํธ ์ธก SPA/๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๊ธฐ๋ณธ CLI ๋๊ตฌ (~๋ช MB)์ ์ ์ ๋งํฌ๊ฐ ํฌํจ๋ AOT๊ฐ ํ์ํฉ๋๋ค.
์ง๋ ๋ช ๋ ๋์ C#์์ ์์ ๋ชจ๋ ์๋๋ฆฌ์ค๋ฅผ ์๋ํ๋ฉด์ ๋ด ์ฝ๋๋ฅผ ์ฝ๊ฒ AOT ์ปดํ์ผํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๊ณ Rust์ ๊ฐ์ LLVM ๊ธฐ๋ฐ ์ธ์ด์ ๋นํด .NET์ด ๋ง์ด ๋ถ์กฑํ๋ค๊ณ ๋๋๋๋ค.
ํ์ฌ ๊ฒ์ ์ต์ ์ด "์ ์๋"ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ์ด์ ๋ .NET์ด ์ญ์ฌ์ ์ผ๋ก ์์ ์๋๋ฆฌ์ค์ ์ ํฉํ์ง ์์๊ณ ์ฌ๋๋ค์ด C#์ ์ฌ์ฉํ ๋ ์์ฒด AOT(์: Unity, UWP, Mono)๋ฅผ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ธฐ๋ณธ ์ด๋ฏธ์ง(์: ReadyToRun)๋ ๋ชจ๋๋ฆฌ์ ์๋ฒ ์์ฉ ํ๋ก๊ทธ๋จ ๋๋ ๋๊ท๋ชจ ๋ฐ์คํฌํฑ ํด๋ผ์ด์ธํธ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฝ๋ ์คํํธ โโ์๋๋ฆฌ์ค์์ "๋์"์ด ๋ ์ ์์ง๋ง ๋ฐ์ด๋๋ฆฌ ํฌ๊ธฐ๋ ์ฌ์ ํ ์ ์ฒด AOT ๋ฐํ์์ด ์์ฑํ๋ ๊ฒ๋ณด๋ค ๋ช ๋ฐฐ ๋ ํฝ๋๋ค.
.NET์ ์ด๋ฏธ ์๋ฒ๋ฆฌ์ค/์ปจํ
์ด๋ํ๋ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ํด "์ ์๋"ํ์ง ์์ต๋๋ค. ์ด๋ฌํ ๋ง์ดํฌ๋ก์๋น์ค๋ AOT ์ปดํ์ผ, ๊ฐ์๋ ๋ฐ์ด๋๋ฆฌ ํฌ๊ธฐ ๋ฐ ์ต์ํ์ ์ข
์์ฑ์ผ๋ก ์๋นํ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค .
ํ์ฌ ReadyToRun + Tiered Compilation + IL Linker ์๋ฃจ์
์ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์์ AWS Lambda๊ฐ ๊ถ์ฅํ๋ ๊ฒ๊ณผ ๊ฐ์ด ์์ฒด ํฌํจ๋ ๋ฐฐํฌ์ ์ฑ๊ฐ์ ํ์ผ ํฌ๊ธฐ ์ ํ์ ์ด๋ฏธ ๋๋ฌํ์ต๋๋ค.
์ง์ง ๋ฌธ์ ๋ IL2CPP/Burst(Unity), Mono์ AOT ๋ฐฑ์๋(Xamarin/Blazor/Uno), .NET Native/CoreRT(UWP), Mono์ LLVM ๋ฐฑ์๋, CrossGen/ReadyToRun(.NET Core) ๋ฑ์ด๋ฉฐ .NET์ ํ์คํ๋ AOT ์ปดํ์ผ ๋๊ตฌ ๋ชจ์์ด ์๋ค๋ ๊ฒ์ ๋จ์ํ ๋ฐ์๋ค์ผ ์ ์์ต๋๋ค.
์ด ๋ชจ๋ ํ์ด CoreRT, Mono LLVM ๋ฐฑ์๋ ๋๋ ํ์ฌ ๋ฒ๋ ค์ง dotnet/lilic ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๊ฒ์ ๋ํ ์์ง๋์ด๋ง ๋ ธ๋ ฅ์ ๊ฒฐํฉํ๋ค๋ฉด AOT๋ .NET ๊ฐ๋ฐ์์๊ฒ ํจ์ฌ ๋ ๋์ ๊ฒฝํ์ด ๋์์ ๊ฒ์ ๋๋ค.
AOT w/ static linking์ ์ด์ ๋์ค์ ์ํ CI/CD๋ฅผ ํตํด ๋ง์ ๊ฐ๋ฐ์๊ฐ ์ก์ธ์คํ ์ ์์ผ๋ฉฐ ๋ ์ด์ ์ฑ๋ฅ์ด ๋ฏธ๋ฏธํ ์ฆ๊ฐ์ ๋ํ ์ฑ๊ฐ์ฌ์ด ์๋๋๋ค.
C# endgame: ๊ธฐ๋ณธ ์ฝ๋, ๊ธฐ๋ณธ UI, ๋น ๋ฅด๊ณ ์ฌ์ด ์ํธ ์ด์ฉ์ฑ, ๊ธฐ๋ณธ ๋ด๋ณด๋ด๊ธฐ ๋ฐ ์ฑ๋ฅ ์งํฅ API(์: System.IO.Pipelines, System.Text.Json).
๋๋ webapps๊ฐ ์ด๊ฒ์ผ๋ก๋ถํฐ ์ด์ต์ ์ป์ง ๋ชปํ ๊ฒ์ด๋ผ๋ ์ง์ ์ ๋์ํ์ง ์์ต๋๋ค. AOT๋ ์๋ฒ๋ฆฌ์ค ์ํฌ๋ก๋(Azure Functions๋ผ๊ณ ๋ ํจ)์ ํฐ ๋์์ด ๋ฉ๋๋ค. CLI ๋๊ตฌ์ ๋ํ ์์ ์๊ฐ์ ์ด์ ์ ๋งํ ๊ฒ๋ ์์ต๋๋ค.
์ค๋ฌธ ์กฐ์ฌ์ ๋ต๋ณํ์ง๋ง ์์งํ ๋งํด์ .NET Core 1.0์ด ์์๋ ์ดํ๋ก ์งํ ์ํฉ์ ๋ํ ๋ช ํํ ๋ฐฉํฅ ์์ด๋ ์ด๋ฌํ ์ง์์ ์ธ ์ค๋ฌธ ์กฐ์ฌ๋ฅผ ๋ฐ์ง ๋ชปํ์ต๋๋ค.
.NET ๋ค์ดํฐ๋ธ๋ Ext-VOS ํ๋ก์ ํธ๊ฐ ์์๋์์ ๋ .NET์ด ์์ด์ผ ํ๋ ๊ฒ์ด์๊ณ , Singularity์ Midori์ ๊ฒฝํ์ด ์์ด ์ฌ๋ฌ๋ถ์ด ํ์คํ ๊ณต๊ฐํ๊ฑฐ๋ ๋ด๋ถ ์๋ฒ๋ฅผ ํ๋ณดํ ์๋ ์์ต๋๋ค.
Java์กฐ์ฐจ๋ ํ์์ ๋๋ฝ๋ AOT ๊ธฐ๋ฅ์ ๋ฐ๋ผ์ก๊ธฐ ์ํด ์ด๋ค ์ํฌ๋ก๋๊ฐ ์๋ํ๊ธฐ๋ฅผ ์ํ๋์ง ๋ฌป์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
.NET ๋ฆด๋ฆฌ์ค ์ดํ ์ฝ๋ ํ์ง ์์ฑ์ด ๊ฐ์ ๋์ง ์์๊ณ ๋ฐฐํฌ ์ํฌํ๋ก๊ฐ ๋ค๋ฅธ AOT ์ปดํ์ผ ์ธ์ด์ ๋นํด ๊ณ ํต์ค๋ฝ๊ธฐ ๋๋ฌธ์ NGEN์ ๊ฑฐ์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
๋ฐ๋ผ์ ์์ผ๋ก AOT๊ฐ .NET์์ ๋ค์ ์ญ์ ๋๋ฉด ๊ด๋ฆฌ๋๋ ์ธ์ด์ ๋ชจ๋ ๊ฒฝ์์ด ์ด์ AOT ๋๊ตฌ ์ฒด์ธ์ ์ด์ ์ ๋ง์ถ๊ณ ์์ผ๋ฉฐ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ ์ํฌํ๋ก๋ ๋ฌป์ง ์์ต๋๋ค.
์ ๋ .NET์ด ๊ณ์ํด์ ๋ฒ์ฐฝํ๊ณ ์๋๋ฆฌ์ค์ ๊ด๊ณ์์ด ์ฒซ ๋ฒ์งธ ์ต์ ์ด ๋๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Microsoft๊ฐ ์ฌ์ ํ ๋ค๋ฅธ AOT ์ปดํ์ผ ์ธ์ด์๋ ๋ฌธ์ ๊ฐ ์๋ C++๋ฅผ .NET๊ณผ ํจ๊ป ์ฌ์ฉํ๋๋ก ๊ฐ์ํ๋ ์ํฌํ๋ก๋ฅผ ์ธ์ํ๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค.
์ค๋ฌธ ์กฐ์ฌ์ ๋ต๋ณํ์ง๋ง ์์งํ ๋งํด์ .NET Core 1.0์ด ์์๋ ์ดํ๋ก ์งํ ์ํฉ์ ๋ํ ๋ช ํํ ๋ฐฉํฅ ์์ด๋ ์ด๋ฌํ ์ง์์ ์ธ ์ค๋ฌธ ์กฐ์ฌ๋ฅผ ๋ฐ์ง ๋ชปํ์ต๋๋ค.
MS๊ฐ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฒ์ ์ง์ํ๊ธฐ ๋ณด๋ค๋ ์ปค๋ฎค๋ํฐ์ ์๋ฆฌ์ ๊ท๋ฅผ ๊ธฐ์ธ์ด๋ ค๊ณ ํ๋ ๊ฒ์ ๋๋จํ ์ผ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@jkotas ์ด ์ค๋ฌธ์กฐ์ฌ์ ๋ํ ๋ ๊ฐ์ ๋ค๋ฅธ ๋งํฌ๊ฐ ํผ์ง ๊ฒ์ ํ์ธํ์ต๋๋ค. ๊ด์ฐฎ์ต๋๊น?
https://www.surveymonkey.com/r/7THQK5K
https://www.surveymonkey.com/r/SQV8JQK
@texasbruce ๋ ํฌ๋ก์ค ํ๋ซํผ GUI, WCF ๋ฐ EF ๋๊ตฌ ์ง์์ ๊ดํ ์ ์ฌํ ์ค๋ฌธ ์กฐ์ฌ์ ์๋ตํ ๋๋ฃ ๊ฐ๋ฐ์์๊ฒ ์ด๊ฒ์ด ์ผ๋ง๋ ๋์์ด ๋์๋์ง ๋ฌป์ต๋๋ค.
๊ทธ๋์ ๊ทธ๋ค์ด ์ฐ๋ฆฌ์๊ฒ ๋ฌป๋ ๊ฒ๋ ์ข์ง๋ง ์ค์ ๋ก ํ๋์ด ์ผ์ด๋ ๋ ๋ ์ข์ ๊ฒ์ ๋๋ค. ํฌ๋ก์ค ํ๋ซํผ GUI์ ๊ฒฝ์ฐ์๋ MAUI๊ฐ ์ค์ ๋ก ๋ฐ์ํ๋์ง ์๋๋ฉด Web Widgets์ Blazor๊ฐ ์๋ฃจ์ ์ผ๋ก ๋ฐ๋ ค๋ ์ง๋ ๋๊ณ ๋ด์ผ ํฉ๋๋ค.
๋์๊ฒ ํ์ฉ๋๋ ์ ์ผํ AOT ์๋ฃจ์ ์ ๋ฆด๋ฆฌ์ค ๋ชจ๋์์ JIT๊ฐ ์ ํ ์๋ ์ง์ ํ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๊ณ (๋ณ๋ ฌ ์๋ฃจ์ ๋ณ์นญ์ด ์คํ ์ค๋น๊ฐ ๋์ง ์์) ๋ชจ๋ ยน .NET ํ๋ก์ ํธ์์ ์๋ํ ๋ ๊ฐ๋ฐ์๊ฐ ์์ ํ๋ ๊ฒ์ ๋๋ค. ์ผ์ง. ์ฌ๊ธฐ์๋ ํนํ Winforms ๋ฐ WPF๊ฐ ํฌํจ๋ฉ๋๋ค. ๊ฐ์ฅ ์ข์ ๊ฒฝ์ฐ์๋ 3MB์์ 80MB๋ก ํ์ฅ๋์ง ์๊ณ ๋ฐํ์ ์ข ์์ฑ ์์ด ๋ ๋ฆฝ ์คํํ์ผ๋ก๋ ์๋ํด์ผ ํฉ๋๋ค.
ยน ๊ธฐ์ ์ ์ธ ์ด์ ๋ก AOT๊ฐ ์ง์ํ์ง ์๋ ์ฌ๋ก/apis๊ฐ ์์ ์ ์์ต๋๋ค. "๋ชจ๋์"๋ผ๋ ๊ฒ์ ๋ชจ๋ API๋ฅผ ์ง์ํ๋ ๊ฒ์ด ์๋๋ผ ๋ชจ๋ ํ๋ก์ ํธ ์ข ๋ฅ๋ฅผ ์ง์ํ๋ค๋ ์๋ฏธ์ ๋๋ค. .NET Core๋ ๋ค์์ ์ง์ํฉ๋๋ค. dll / winforms / wpf / winui / console / maui / ... ๊ฐ๋ฐ์๊ฐ ๊ธฐ์กด ์์ฉ ํ๋ก๊ทธ๋จ์ ์ธ์ํ๋ ๊ฒ์ด ์ ๊ฐ ์ผ๋์ ๋๊ณ ์๋ ๊ฒ์ ๋๋ค.
_๋ํ Delphi๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋๋ฐ ๋จ์ผ Delphi ์คํ ํ์ผ์ ์ปดํ์ผํ ๋ค์ ๋ค๋ฅธ ๊ณณ์ผ๋ก ๋ด๋ณด๋ด๋ฉด ๊ทธ๋ฅ ์คํ๋๋ ๊ฒ์ ๋ณด๊ณ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๋น ๋ฆ ๋๋ค. ํน์ ๋ฐฉ์์ผ๋ก ์ปดํ์ผํ ๋ C++ ์์ฉ ํ๋ก๊ทธ๋จ์๋ ๋์ผํ๊ฒ ์ ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ ํ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ๋๋ฒ๊ทธํ ์ ์์ผ๋ฉฐ PDB๋ฅผ ํฌํจํ๊ธฐ๋ก ๊ฒฐ์ ํ ๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ชจ๋ ์ฌ์ ํ ์ ์ฉํ ์คํ ์ถ์ /๋คํ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ณด์์์ ์ด์ ๋ก ํฌํจํ์ง ์๋๋ก ๊ฒฐ์ ํ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์ ์๋ํฉ๋๋ค. ์ ์ฐ๋ฆฌ๋ C#์ผ๋ก ๊ทธ๊ฒ์ ๊ฐ์ง ์ ์๋์ง ์ค์ค๋ก์๊ฒ ๋ฌป๋ ๊ฒ์ด ๊ณคํน์ค๋ฝ์ต๋๋ค. AOT ๊ณํ์ ๋ค์์ ๋ ๋๋ ์ด๊ฒ์ ์์ํ์ต๋๋ค._
์ ๋ ํญ์ ๋ฆฌํ๋ ์ ๋ฌธ์ ๊ฐ ๋ง์ด ์ธ๊ธ๋๋ ๊ฒ์ ๋ณด๊ณ ASP.net ์ฝ์ด๊ฐ ํฐ ์คํ ํ์ผ์ ์์ฑํ๋ ๊ฒฝ์ฐ ์ค์ ๋ก ๊ทธ๋ ๊ฒ ๋ง์ด ์ค์ํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
AOT๊ฐ ์ด๋ ค์ด ์๊ตฌ ์ฌํญ์ธ ๋๋ถ๋ถ์ ์ฅ์๋ CLI ๋๊ตฌ, ๊ฒ์ ๋ฐ UI ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ๊ฐ์ ๊ฒ์ ๋๋ค. ํฌํจํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ๊น๋ค๋ก์ธ ์ ์์ผ๋ฉฐ ์ผ๋ถ ๋ฐ์ฌ ๋ฌธ์ ๋ฅผ ํผํ ์ ์์ต๋๋ค. ์ฐ์ ์์๋ "ํด๋ฆฐ ์ฌ๋ ์ดํธ" ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ฑํํ๋ ๊ฒ์ ๋๋ค.
์ ๋ ํญ์ ๋ฆฌํ๋ ์ ๋ฌธ์ ๊ฐ ๋ง์ด ์ธ๊ธ๋๋ ๊ฒ์ ๋ณด๊ณ ASP.net ์ฝ์ด๊ฐ ํฐ ์คํ ํ์ผ์ ์์ฑํ๋ ๊ฒฝ์ฐ ์ค์ ๋ก ๊ทธ๋ ๊ฒ ๋ง์ด ์ค์ํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
Blazor WebAssembly๊ฐ ์ถ์๋๋ฉด์ ์คํ ํ์ผ ํฌ๊ธฐ์ ์คํ ์๋๊ฐ ๋งค์ฐ ์ค์ํด์ง ๊ฒ์ด๋ฉฐ AOT์ ์ด์ ์ ํฌ๊ฒ ๋๋ฆด ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ค ์ด์ ๋ก ๋ ์ค๋ฌธ ์กฐ์ฌ์์ ๊ตฌ์ฒด์ ์ผ๋ก ์ธ๊ธ๋์ง ์์์ต๋๋ค.
์, ์ด์๊ฒ ์ฃผ์ธ์! ๋ฉ๋ชจ๋ฆฌ ์์ ์ ์ ์งํ๊ณ ๊ธฐ๋ณธ ์๋๋ฅผ ์ป๊ณ ๋ด ์ฝ๋๋ฅผ ๊ธฐ๋ณธ ํธ์ถ ๊ฐ๋ฅํ๊ฒ ํ๊ธฐ ์ํด Rust ๋๋ CoreRT๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ๊ณ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ .NET์์ AOT๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋งค์ฐ ํ๋ถํ๊ณ ๊ฐ๋ ฅํ๋ฉฐ Rust๊ฐ ํ์์ ์ด์ง๋ง ์ ํํ๊ธฐ ์ฝ์ง ์๊ธฐ ๋๋ฌธ์ ํ์์ ์ผ ๊ฒ์ ๋๋ค.
@jkotas ์ด ์ค๋ฌธ์กฐ์ฌ์ ๋ํ ๋ ๊ฐ์ ๋ค๋ฅธ ๋งํฌ๊ฐ ํผ์ง ๊ฒ์ ํ์ธํ์ต๋๋ค. ๊ด์ฐฎ์ต๋๊น?
์, ๋ค๋ฅธ ๊ฒ์๋ฌผ์ ๋ํด ๋ค๋ฅธ SurveyMonkey ๋งํฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ชจ๋ ๋งํฌ๋ ๋์ผํ ์ค๋ฌธ์กฐ์ฌ๋ฅผ ๊ฐ๋ฆฌํต๋๋ค. ์ด๋ฅผ ํตํด ์ฌ๋๋ค์ด ์ค๋ฌธ์กฐ์ฌ๋ฅผ ์ฐพ์ ์์น์ ๋ฐ๋ผ ์๋ต ๋ถํฌ๊ฐ ์ด๋ป๊ฒ ๋ฌ๋ผ์ง๋์ง ํ์ธํ ์ ์์ต๋๋ค.
gamedev๋ฅผ ์ํด ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ํ์๋ก ํฉ๋๋ค. ์ ๋ C++๋ฅผ ์ฌ์ฉํ๋ ๋ค์ดํฐ๋ธ ์์ง์ ์ฐฌ์ฑํ์ฌ ๋ด ๊ฒ์ ์์ง https://github.com/amerkoleci/alimer_sharp ์์ ์ ์ผ์ ์ค๋จํ์ต๋๋ค. DirectX ๋ฐ vulkan์ ๋ํ ๋ฐ์ธ๋ฉ๋ ์ ์งํฉ๋๋ค. ์ฌ๊ธฐ์ ์ฑ๋ฅ์ด ํ์ํฉ๋๋ค.
gamedev๋ฅผ ์ํด ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ํ์๋ก ํฉ๋๋ค. ์ ๋ C++๋ฅผ ์ฌ์ฉํ๋ ๋ค์ดํฐ๋ธ ์์ง์ ์ฐฌ์ฑํ์ฌ ๋ด ๊ฒ์ ์์ง https://github.com/amerkoleci/alimer_sharp ์์ ์ ์ผ์ ์ค๋จํ์ต๋๋ค. DirectX ๋ฐ vulkan์ ๋ํ ๋ฐ์ธ๋ฉ๋ ์ ์งํฉ๋๋ค. ์ฌ๊ธฐ์ ์ฑ๋ฅ์ด ํ์ํฉ๋๋ค.
์ผ์ ์ค๋จํ์ง ์์๋ค๋ ์ ์ ์ ์ธํ๋ฉด ์ฌ๊ธฐ ๐์ ๋์ผํ ์๋๋ฆฌ์ค์ ๋๋ค. ๋๋ ๋ ๋์ ์์ ์๊ฐ์ ์ํด AOT๋ฅผ ์ข์ํ์ง๋ง(๋ด ๊ฒฝ์ฐ์๋ ๋ ์ค์ํ๊ฒ๋) ๋ ์ต์ ํ๋ ์ฝ๋๋ฅผ ๊ฐ์ง ์ ์๋ ๊ธฐํ๋ฅผ ์ข์ํฉ๋๋ค. t ์ ๋ง JIT์ ํ๋
10% ์๋ ํฅ์์ ์ํด ๋น๋ ์๊ฐ์ด 50% ์ฆ๊ฐํด๋ ๊ด์ฐฎ์ต๋๋ค. ์ด๋ ๋ถ๋ช ํ JIT์ ํ๋๊ฐ ์๋๋๋ค.
์ด๊ฒ์ ์ค์ ๋ก ๋ค๋ฅธ ์ํ๊ณ๋ก ์ ํํ๋ ๋์ .NET์์ AOT๋ฅผ ์ํ๋ ํฐ ๋ถ์ฐจ์ ์ธ ์ด์ ์ค ํ๋์ ๋๋ค. ๋๊ท๋ชจ C++ ๋๋ Rust ํ๋ก์ ํธ์ ๋น๊ตํ์ฌ ๋๊ท๋ชจ .NET ํ๋ก์ ํธ์ ๋น ๋ฅธ ์ปดํ์ผ ์๊ฐ์ ์์ ํ ๋ง์ณค์ต๋๋ค.
๊ฐ๋ฐ ์ค ๋น ๋ฅธ ๋ฐ๋ณต์ ์ํด JIT๋ฅผ ์ํ์ง๋ง ์ผ๋จ ๊ณ ๊ฐ์๊ฒ ๋ฌด์ธ๊ฐ๋ฅผ ๋ฐฐ์กํ๋ฉด AOT๊ฐ ํ์ํฉ๋๋ค.
CoreRT๋ฅผ ์ฌ์ฉํ์ฌ ํฌ๋ก์ค ํ๋ซํผ(๋ฐ ํฌ๋ก์ค ํ๋ซํผ) ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํ์ต๋๋ค.
AOT w/ static linking์ jit๋ฅผ ๋นํ์ฑํํ๊ณ ์ฌ๋ฌ aot ์ปดํ์ผ ๋ชจ๋๋ฅผ ์ํ๋ iOS ๋ฐ ์ฝ์ ํ๋ซํผ์ ๊ฒ์ ์์ง์ ๊ธด๊ธํ ํ์ํฉ๋๋ค.
AOT w/ static linking์ jit๋ฅผ ๋นํ์ฑํํ๊ณ ์ฌ๋ฌ aot ์ปดํ์ผ ๋ชจ๋๋ฅผ ์ํ๋ iOS ๋ฐ ์ฝ์ ํ๋ซํผ์ ๊ฒ์ ์์ง์ ๊ธด๊ธํ ํ์ํฉ๋๋ค.
- ์์ ํ
- jit + aot ๋๋ ์ธํฐํ๋ฆฌํฐ + aot ์คํ ๋ชจ๋๋ฅผ ์ง์ํ๋ ํ์ด๋ธ๋ฆฌ๋ aot
ํ์ด๋ธ๋ฆฌ๋ ot๋ ๊ฒ์ ์ฐ์ ์ ์ ๋ง ์ค์ํ๋ฉฐ ๊ฒ์ ์ฒด์ธ์ ๊ฐ ๋ ์ ์์ต๋๋ค.
iOS ํ๋ซํผ์ ๋ชจ๋ ธ, ot+์ธํฐํ๋ฆฌํฐ ์คํ ๋ชจ๋์ ๊ฐ์ต๋๋ค.
Full Aot, ๋จ์ผ exe, ๋ ๋ฆฝ ๋ฐํ์ ๋ฐ ๋ถํ์ํ ์ฝ๋ ํด๋ฆฌํ์ผ๋ก ์ธํด ํ์คํ kreygasm XD
๋๋ 10๋ ๋์ ์ด ์ง๋ฌธ์ ๊ธฐ๋ค๋ ค์๋ค. ์ ์ฅ, ๋๋ ํ๋ ๋๋ผ์ด๋ธ์ ๋จผ์ง๋ฅผ ๋ชจ์ผ๋ 5๊ฐ์ ๋ฉ์ง ํ๋ก์ ํธ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์๋ํ๋ฉด ๋ด๊ฐ ๊ทธ๊ฒ๋ค์ ๊ณต๊ฐํ๋ฉด ์ด๋ค ์ด๋ฆฐ์ด๋ผ๋ ๊ทธ๊ฒ์ ๋๋๋ฆด ์ ์๊ณ GUI์ ์ฝ๊ฐ์ ๋ณ๊ฒฝ์ ์ถ๊ฐํ๊ณ ์์ ์ ๊ฒ์ผ๋ก ํ๋งคํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ ๋ PC ํ๋ซํผ์์ Unity๋ฅผ ์ฌ์ฉํ์ฌ Robocraft, Cardlife ๋ฐ Gamecraft๋ฅผ ๊ฐ๋ฐํ์ผ๋ฉฐ ๊ฒ์ ์๋ฒ์์๋ ํ์ํ์ง ์์ ํ(Xbox one ์ฝ๊ธฐ) ํ์ํ์ง ์๋ ํ IL2CPP๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์์์ต๋๋ค. ๋๋ ๊ฐ์ธ์ ์ผ๋ก ์ฑ๋ฅ์ด ํ์ํ ๋ JIT ์ปดํ์ผ๊ณผ ๋ฒ์คํธ(๋ช ์์ ๋ด์ฅ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ ์ ์๋ ๊ฒ๋ณด๋ค ๋ ๋์ ์์ ์ ์ํํจ)์ ๊ฐ์ ์๋ฃจ์ ์ด ํผํฉ๋์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ AOT๋ ์์ ํ ๋ค์ดํฐ๋ธ ์ฝ๋๊ฐ ํ์ํ ํ๋ซํผ๊ณผ ํ๋์จ์ด ๋ฆฌ์์ค๊ฐ ์์คํ ํ๋ซํผ์ ํ์ํ๋ค๋ ๊ฒ์ ์ดํดํฉ๋๋ค. .net ํ๋ซํผ ๊ฐ๋ฐ์๊ฐ AOT์ ๋ํด ์ด๋ป๊ฒ ์๊ฐ๋ฆด ์ ์๋์ง ์ดํดํ์ง๋ง ๊ฒ์ ๊ฐ๋ฐ์์ ๋ ๊ด๋ฒ์ํ๊ฒ ์ฑํ๋๊ธฐ๋ฅผ ์ํ๋ค๋ฉด ์ ํ ์ฌํญ์ด ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์์งํ ๋งํด์ Unity๊ฐ IL2CPP ๋ฐ Burst์ ๊ฐ์ ๊ธฐ์ ์ ๋ ์ ํ๋ค๋ ์ฌ์ค์ด ์กฐ๊ธ ๋๋ ต์ต๋๋ค.
๊ณ ์ฑ๋ฅ, ๊ณ ํ์ฅ์ฑ ๊ธ์ต/๊ณผํ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ๊ฐ๋ฐํฉ๋๋ค. ์๋ฎฌ๋ ์ด์ ์ ์ฌ์ฉ์๊ฐ ์์ฑํ๋ ๋ชจ๋ธ์ ๋ณต์ก์ฑ์ ๋ฐ๋ผ ๋ช ๋ถ์์ ๋ฉฐ์น ๊น์ง ์คํํ ์ ์์ต๋๋ค.
์๋ฎฌ๋ ์ด์ ์ํํธ์จ์ด์ ํน์ฑ ๋๋ฌธ์ ์์ ์๊ฐ๊ณผ ์ํํธ์จ์ด/๋ฐ์ด๋๋ฆฌ ํฌ๊ธฐ๋ ๊ฑฐ์ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค. ๊ทธ๋ฐ ์ ์์ ์ ํ์ ์ค์นํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ๋ ์๋๋๋ค. ์๋ฅผ ๋ค์ด ์ปดํ์ผ์ด ์ค์น์ ์ผ๋ถ์ธ ๊ฒฝ์ฐ ์ด๋ฌํ ํ๋ก์ธ์ค๊ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋๋ผ๋ ์์ ํ ์์ฉํ ์ ์์ต๋๋ค.
์คํ ์ค ์ฝ๋์ ์ฝ 25%๊ฐ ๋์ ์ผ๋ก ์์ฑ๋๋ฏ๋ก ํ์ด๋ธ๋ฆฌ๋ ๋ฐฉ์์ด ์ ํธ๋ฉ๋๋ค. AOT์ JIT ์ปดํ์ผ์ ์ผ๋ถ ์กฐํฉ. ๋์ ๋นํธ๋ฅผ ํด์ํด์ผ ํ๋ ๊ฒฝ์ฐ ์ ์ด๋ ์ฐ๋ฆฌ์ ์ฌ์ฉ ์ฌ๋ก์์๋ AOT์ ์ด์ ์ด ๋ง์ด ์ค์ด๋ค ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
GC๋ ๋ ๋์ ํ์ฅ์ฑ์ ๋ฌ์ฑํ๋ ๋ฐ ๋ฐฉํด๊ฐ ๋๋ ๊ฐ์ฅ ํฐ ๋ฌธ์ ์ ๋๋ค(์: ์ฝ 44๊ฐ์ ์ฝ์ด๋ฅผ ํ๋ณดํ ๊ฒฝ์ฐ). ์ปดํ์ผ๋ฌ๊ฐ ๋ ์ฌ๋ ์๋ ์ด์ ๋ธ๋ฆฌ ๊ฐ ์ต์ ํ, ์ ๊ทน์ ์ธ ์ธ๋ผ์ธ ๋ฐ ์ด์ค์ผ์ดํ ๋ถ์์ ์ํํ ์ ์๊ฒ ํ๋ฉด ํ ๋์ ์คํ์ ๋ ์งง์ ์๋ช ์ ๊ฐ์ฒด๋ฅผ ํ ๋นํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ ์ฝ๋ ๊ธฐ๋ฐ์๋ JIT ์ฝ๋ ํ์ง์ด ํนํ ๋ ์ง์คํฐ ํ ๋น๊ณผ ๋ง์ ๊ตฌ์กฐ๋ฅผ ๋ค๋ฃฐ ๋ ๋ณ๋ชฉ ํ์์ด ๋ฐ์ํ๋ ๊ณณ์ด ๋ง์ด ์์ต๋๋ค. ์ด๋ก ์ธํด JIT ์ปดํ์ผ๋ฌ๋ฅผ ์กฐ์ํ์ฌ ์ฌ๋ฐ๋ฅธ ์ผ์ ํ๊ฑฐ๋(์ฐ์ฝํ๊ณ , ๋๋ ํ๋๋ฉฐ, ์ ์งํ๊ธฐ ์ด๋ ค์ด ์ค๋ค๋ฆฌ๊ธฐ) ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ์ ํํ๋ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ๋ฐ GC/PInvoke ์ ํ์ ์ค๋ฒํค๋).
๋๋ก๋ ์ฝ๋ ํ์ง์ ์์ ๊ฐ์ ์ด ์๋ง์ ์ฝ์ด์์ ๋ช ์๊ฐ ๋์ ์คํ๋๋ ๋ชจ๋ธ ๊ณผ์ ์์ ์์ฒญ๋ ์น๋ฆฌ๋ฅผ ๊ฑฐ๋ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ์๊ฒ JIT๋ ๊ฐ๋ฐ๊ณผ ํจ๊ป ์ฝ๋ ๊ธฐ๋ฐ์ด ๋ณ๊ฒฝ๋จ์ ๋ฐ๋ผ ์ฑ๋ฅ์ ์์ด ์ฝ๊ฐ ์ทจ์ฝํด์ก์ต๋๋ค(์ฌ์ง์ด ๋ ๊ฒฐ์ ์ ์). ์ฐ๋ฆฌ์ ํฌ๋ง์ AOT ์ปดํ์ผ๋ฌ๊ฐ ํจ์ฌ ๋ ๋์ ํ์ง์ ์ฝ๋๋ฅผ ์ปดํ์ผํ๊ณ ์์ฑํ๋ ๋ฐ ํจ์ฌ ๋ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ณ ๋ถํ์ํ ์ฑ๋ฅ ๋ณ๋์ ์ค์ด๊ณ C#์์ ๋ ๋ง์ ์ฝ๋ ๊ธฐ๋ฐ์ ์ ์งํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ผ๋ฐ์ ์ผ๋ก JIT์ AOT ๊ธฐ์ ๋ชจ๋์ ๋ ๋ง์ ํฌ์๋ฅผ ํ์ผ๋ฉด ํฉ๋๋ค.
cc @AndyAyersMS
AOT w/ static linking์ jit๋ฅผ ๋นํ์ฑํํ๋ iOS ๋ฐ ์ฝ์ ํ๋ซํผ์ ๊ฒ์ ์์ง์ ์๊ธํฉ๋๋ค.
์ฌ๊ธฐ์ ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค. ์ด ๋ฌธ์ ์ ๋ํ ์๋ฃจ์ ์ด ํ์ํ๊ธฐ ๋๋ฌธ์(๋น Unity ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ๊ฒ์ ์ฝ์์์ ์คํ๋๋ C# ์ฝ๋) Mono-AOT ๊ธฐ๋ฐ ๋๊ตฌ ์ฒด์ธ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ช ๊ฐ์ง ์ฌ๊ฐํ ์ ํ ์ฌํญ์ด ์์ผ๋ฉฐ ์ฑ๋ฅ์ด ์ข์ง ์์ต๋๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ 3๊ฐ์ ํฌํ๋ฌ ๊ฒ์ ์ฝ์(XBox One, PlayStation 4 ๋ฐ Nintendo Switch)์์ CoreRT๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์์ต๋๋ค. ๊ฐ๋ ์ ์ด๊ธฐ ๊ต์๋ ๊ทธ๊ฒ์ด ์ค์ ๋ก ์๋ํ์ง๋ง(์ฌ์ ํ ๋ช ๊ฐ์ง ์ ํ ์ฌํญ์ด ์์) Mono ๊ธฐ๋ฐ ์๋ฃจ์ ๊ณผ ๋น๊ตํ์ฌ ์ด๋ฏธ ์๋นํ ๋ฐํ์ ์ฑ๋ฅ ๊ฐ์ ์ด ์์์ ๋ณด์ฌ์ค๋๋ค.
๊ทธ๋ฌ๋ ๊ฒ์ ์ฝ์์ ๋๋ฌ์ผ NDA ์ํฉ์์ ์ด ์ฌ์ฉ ์์ธ์ ๋ํ ๊ณต์ ์ง์์ ์ฒ์๋ถํฐ ๊ณต์ ๋ค์ดํฐ๋ธ AOT๋ฅผ ์ป๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ์ ์ ํฉ๋๋ค.
์ฐ๋ฆฌ์๊ฒ JIT๋ ๊ฐ๋ฐ๊ณผ ํจ๊ป ์ฝ๋ ๊ธฐ๋ฐ์ด ๋ณ๊ฒฝ๋จ์ ๋ฐ๋ผ ์ฑ๋ฅ์ ์์ด ์ฝ๊ฐ ์ทจ์ฝํด์ก์ต๋๋ค(์ฌ์ง์ด ๋ ๊ฒฐ์ ์ ์).
@jpapp05 ๊ทํ์ ์ฑ, ํนํ ์์ ๋ฌธ์ ์ ๋ํด ์์ธํ ๋ฃ๊ณ ์ถ์ต๋๋ค. ์ด ๋ฌธ์ ๋ ์ ์ฃผ์ ๊ด์ฌ์ฌ ์ค ํ๋์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋์์ด ๋์๋ฉด ์ธ์ ๋ ์ง ์คํ๋ผ์ธ์ผ๋ก(ํ๋กํ์ ์ด๋ฉ์ผ์ ํตํด) ์ ์๊ฒ ์ฐ๋ฝํด ์ฃผ์ญ์์ค.
์๋ ํ์ธ์ @AndyAyersMS ์ ๋๋ค. ์ข ๋ ์์ ๋กญ๊ฒ ์ด์ผ๊ธฐํ ์ ์์ผ๋ฏ๋ก ์คํ๋ผ์ธ์์ ์ฐ๋ฝ์ ๋๋ฆฌ๊ฒ ์ต๋๋ค. ํ์ง๋ง ๋ค๋ฅธ ์ฌ๋๋ค์ ์ด์ต์ ์ํด ํ ๋ก ์ ์์ฝ์ ๋ค์ ๊ฒ์ํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
์ด๊ฒ์ด ๋ฌธ์ ์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ฌ๊ธฐ์์ ์ธ๊ธํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ฐ๋ฆฌ์๊ฒ ์ค์ํ ๊ธฐ๋ฅ์ ๋ฐํ์์ ๋ค์ดํฐ๋ธ ์ด์
๋ธ๋ฆฌ๋ฅผ ๋์ ์ผ๋ก ๋ก๋ ๋ฐ ์ธ๋ก๋ํ๋ ๊ธฐ๋ฅ์
๋๋ค.
๋ด ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ UWP Native๋ฅผ ์ ์ธํ๊ณ ์ ์ด๋ ๋ด๊ฐ ํ
์คํธํ ํ .NET์ ์ผ๋ฐ์ ์ผ๋ก ์ฝ๊ฒ ๋์ปดํ์ผ๋ ์ ์๋ค๋ ๊ฒ์
๋๋ค. "์ ์์ ์ธ" ํ์ฌ ์ฌ๊ณ ๋ฐฉ์์ด ์๋ ๋๊ตฐ๊ฐ๋ ์ฝ๊ฒ ๋์ปดํ์ผํ ์ ์๋ ํ๋ก์ ํธ์ ๋ง์ IP๋ฅผ ๋ฃ์ ๊ฒ์
๋๋ค.
Linux๋ ๊ด์ฐฎ์ง๋ง ๋ชจ๋ ๋ฐ์คํฌํฑ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์ Windows์ฉ์
๋๋ค.
์ถ์ ๋ ์ฝ๊ฒ ๋ง๋ค๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ํ์ธ๋์ ์ถ๊ฐํ์ญ์์ค.
๊ธฐ๋ณธ ์ปดํ์ผ(Windows 10 ๋ฐ์คํฌํ์์๋ง ์๋ํฉ๋๋ค!)
๊ทธ๋ ๊ฒ ํ๋ฉด ๋ ์ด์ AOT์ ๊ด์ฌ์ด ์์ต๋๋ค. ASP.NET Core์์ ์๋ํ๋ค๋ฉด ๋ฉ์ง๋ค! ๊ทธ๋ ์ง ์๋ค๋ฉด ๋๋ ์ ๋ง๋ก ์๊ดํ์ง ์์ต๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ง๋ฌธ์ ๋ง๋ค๊ณ ์ค๋ฌธ ์กฐ์ฌ๋ฅผ ๋ง๋ค์ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ ๋ฌด์์ ๊ธฐ์ ์ ์ฌ์ฉํ๋ ์ฌ๋๋ค์๊ฒ ์๊ฒฌ์ ๋ฌป๊ธฐ ๋๋ฌธ์ ์๊ณ ํ์ จ์ต๋๋ค. ๋ด ์๊ฐ์ (์ฌ์ค ๋๋ ํ์ ํฉ๋๋ค) ๋น์ ์ ์ฌ์ ํ โโGithub์์ ์ด๋ฐ ์ผ์ ๊ด์ฌํ์ง ์๋ ์๋ง์ ๋ฐ์คํฌํ ๊ฐ๋ฐ์ ์๊ฒฌ์ ๊ทธ๋ฆฌ์ํ๊ณ ์์ต๋๋ค. ๋ชจ๋ ์ฌ๋์ด .NET ์ฝ๋๋ฅผ ์ฝ๊ฒ ๋์ปดํ์ผํ ์ ์๋ค๋ ์ฌ์ค์ ๊ธฐ์ต(๋๋ ์๊ณ ) ์์ง๋ ์์ผ๋ฉฐ ์์ฌ๊ฐ ๋ค์๊ณผ ๊ฐ์ ์ฌ์ค์ ์๋ฉด ๋ฏธ์ณ๋ฒ๋ฆด ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค .
๋ชจ๋ ์ฌ๋์ด .NET ์ฝ๋๋ฅผ ์ฝ๊ฒ ๋์ปดํ์ผํ ์ ์๋ค๋ ๊ฒ์ ๊ธฐ์ตํ๊ฑฐ๋ ์๋ ๊ฒ์ ์๋๋๋ค.
์ฟ... Unity ๋๋ ํ์ฌ ํจํค์ง์ ๋ฐฐํ์์ ๋ฌด์ธ๊ฐ๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์์๋ด๋ ค๊ณ ํ ๋ Rider๊ฐ ์๋์ผ๋ก ์ด ์์ ์ ์ํํ๋ค๋ ์ฌ์ค์ ๋๋์ต๋๋ค. ๋ง์ ์ฝ๋๊ฐ ์ฒ์์ ์คํ ์์ค๋ก ์ ๊ณต๋๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ ๊ทธ๋ค์ง ์ค์ํ์ง ์์ง๋ง, ์ ๋ง์ ์ดํดํ๊ฒ ๋ ๊ฒ์ ๋๋ค.
@jcbeppler ๋น์ ์ ํ๋ ธ์ต๋๋ค. ๊ทธ๊ฒ์ ๋ฐ์ดํธ ์ฝ๋์ ๋ค์ดํฐ๋ธ์ ๋ํ ์ผ๋ฐ์ ์ธ ์คํด์ ๋๋ค. ์ฌ๋ฐ๋ฅธ ๋๊ตฌ๋ฅผ ๊ฐ๋ ๊ฒ์ ๋๋ค.
https://www.hex-rays.com/products/decompiler/compare/compare_vs_disassembly/
Hex-Rays๋ ๊ฐ๋ฅํ ์๋ฃจ์ ์ผ ๋ฟ์ด๋ฉฐ ์ ํํ ์ ์๋ ๋ค๋ฅธ ์๋ฃจ์ ์ด ์์ต๋๋ค.
@MostHated ์, ์์์ต๋๋ค. ์ฌ์ค .NET์์ ์ํํธ์จ์ด๋ฅผ ๋์ปดํ์ผํ๋ ๊ฒ์ ๋งค์ฐ ๊ฐ๋จํ์ฌ ๋ง์น ์คํ ์์ค์ ๊ฐ์ผ๋ฉฐ ๋ง์ ํ์ฌ์์ ์ํํธ์จ์ด๊ฐ ์คํ ์์ค๊ฐ ๋๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค. "๊ณต์ง ์ ์ฌ์ ์๋ค" ๐
@pjmlp ๋์ปดํ์ผ๊ณผ ๋์ค์ด์ ๋ธ๋ฆฌ์ ์ฐจ์ด์ ์ ์๊ณ ์์ต๋๋ค. ๋๋ ๋ด ์ํํธ์จ์ด๋ฅผ ๋์ค์ด์ ๋ธ๋ฆฌํ๋ ๊ฒ์ ๋ํด ์๋ฌด ๊ฒ๋ ํ ์ ์์ง๋ง ์ฌ๋์ด ๋งค์ฐ ๊ฐ๋จํ ๋์ปดํ์ผ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ ์ปดํ์ผ์ ์ํํธ์จ์ด๋ฅผ ํจ์ฌ ๋ ์์ ํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๋์ค์ด์ ๋ธ๋ ์ํํธ์จ์ด๋ ํ์คํ ์ด์ํ๊ฒ ๋ณด์ด๊ณ ๋์ค์ด์ ๋ธ๋ ์ฝ๋๋ ์ ๋๋ก ์คํ๋์ง ์์ ์๋ ์์ต๋๋ค.
@jcbeppler ๋น์ ์ ํ๋ ธ์ต๋๋ค. ๊ทธ๊ฒ์ ๋ฐ์ดํธ ์ฝ๋์ ๋ค์ดํฐ๋ธ์ ๋ํ ์ผ๋ฐ์ ์ธ ์คํด์ ๋๋ค. ์ฌ๋ฐ๋ฅธ ๋๊ตฌ๋ฅผ ๊ฐ๋ ๊ฒ์ ๋๋ค.
ํ์ฌ ๋์ปดํ์ผ๋ .NET ํ๋ก๊ทธ๋จ์ ์ ์ฒด ์์ค ์ฝ๋๋ฅผ ๋๋ฌ๋ ๋๋ค. ์ฌ๊ธฐ์๋ ๋ชจ๋ ๋ฉ์๋ ์ด๋ฆ๊ณผ ๋ณ์ ์ด๋ฆ๋ ํฌํจ๋ฉ๋๋ค. ์ด๊ฒ์ ๋๋ฒ๊น ์ ์ ์ฉํ๋ฉฐ ์์ธ๊ฐ ๋ฐ์ํ ๋ "์ฝ์ ์ ์๋" ์คํ ์ถ์ ์ ๊ฐ์ง ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์์ฒญ๋ ๋ณด์ ๊ฒฐํจ๊ณผ .NET ๋๋ ํ ์ฅ์น์ ๋ํ ๊ฑฐ๋ํ ์์ฅ์ด ์๋ ์ด์ ์ ๋๋ค.
๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ค์ด์ ๋ธ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ์ฒด C++/๋ธํ์ด ๋ฑ์ ์์ค ์ฝ๋๋ฅผ ๊ณต๊ฐํ์ง ์์ต๋๋ค(์ด ์์ค ์ฝ๋๋ฅผ ๋ค์ ๋น๋ํ๋ ค๊ณ ์๋ํ๋ ์ผ๋ถ ๋๊ตฌ๊ฐ ์์ง๋ง ๊ฒฐ๊ณผ๋ ๋์ฐํฉ๋๋ค). ์ป์ ์ ์๋ ๊ฒ์ ๊ธฐ๊ปํด์ผ ์ด์ ๋ธ๋ฌ ์ฝ๋์ ์ ์ด ์์๋์ ๋๋ค. ์ด์ด ์ข๊ณ ๊ธฐํธ ํ์ผ๊ณผ ํจ๊ป ์ ๊ณต๋๋ ๊ฒฝ์ฐ ๊ธฐ๋ฅ ์ด๋ฆ๋ ์ป์ ์ ์์ง๋ง ๋ฆด๋ฆฌ์ค ๋ชจ๋์์ ์ด ๊ธฐํธ ํ์ผ์ ์ผ๋ฐ์ ์ผ๋ก ๋ณด์์ ์ํด ํฌํจ๋์ง ์์ต๋๋ค.
๋ค์ดํฐ๋ธ ์ฝ๋๊ฐ ์ค์ ๋ณดํธ ๊ธฐ๋ฅ์ธ ๋ฐฉ๋ฒ์ ๋ํด ์ด์ผ๊ธฐํ๋ ์ธ๋ถ ์ฌํญ์ ๋น ์ ธ๋ค ์ ์์ต๋๋ค. ์ ์๊ฐ์๋ ํฌ๋ํน(์ ์ฒด ๋ฉ์๋/๋ณ์ ์ด๋ฆ ๋ฐ ์ ์ฒด C# ์์ค ์์ฑ ๋๋ถ์ ํน๋ณํ ์ง์ ์์ด ๋ผ์ด์ ์ค ํ์ธ์ ์ ๊ฑฐํ ์ ์์) ๋๋ ๋๋ฒ๊น ์ธก๋ฉด์์ ๋ณดํธ๊ฐ ์๋๋ผ ์คํธ๋ฌ์ ๋ํ ๋ณดํธ์ ๋๋ค. dnSpy์ ๊ฐ์ ๋๊ตฌ๋ ํ ๋ฒ์ ํด๋ฆญ์ผ๋ก .NET ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ์ฒด VS ํ๋ก์ ํธ๋ก ๋ด๋ณด๋ผ ์๋ ์์ต๋๋ค. ๋ค์ดํฐ๋ธ ์ฝ๋์ ๋ํด ๋์ผํ ๋ฐฉ์์ผ๋ก ์๋ํ๋ ๋๊ตฌ๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ์์ฉ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด ํฐ ์น๋ฆฌ๊ฐ ๋ ๊ฒ์ ๋๋ค. ๊ฒ๋ค๊ฐ ์ต์ข ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ๋ฉ์๋์ ๋ณ์์ ์ด๋ฆ์ ๋ฐ๊พธ๋ ๋ฐ ์ฐ๊ฐ ์์ฒ ๋ฌ๋ฌ๋ฅผ ์ง๋ถํ ํ์๊ฐ ์๋ค๋ ์ฌ์ค ์ธ์๋ ๋ง์ ๋๋ค.
์ด๋ฒ ์ค๋ฌธ์กฐ์ฌ ๊ฒฐ๊ณผ๊ฐ ๊ถ๊ธํฉ๋๋ค. ์ฌ๋๋ค์ด ์ด๋ป๊ฒ ํฌํํ๋์ง ๊ณต๊ฐํ ๊ณํ์ด ์์ต๋๊น?
@Symbai IP๋ฅผ ๋ณดํธํ๊ธฐ ์ํ ์๋จ์ผ๋ก NDK๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ์๋ํ Android ๊ฐ๋ฐ์๊ฐ ์๋ ค์ค ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ค ๊ฒ์ ๋ํ ๋ณดํธ๋ ์๋๋๋ค. ๊ฐ๋จํ ์ธ๊ธํ ์์ฉ ํ๋ก๊ทธ๋จ์ ํ ๋ฒ์ ํด๋ฆญ์ผ๋ก ๋์ผํ ์์ ์ ์ํํ ์ ์์ผ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก C ๋๋ C++ ์ฝ๋๋ฅผ ์๋ณธ ์์ค ์ฝ๋๋ก ๊ฐ์ ํ์ง๋ง ์๊ณ ๋ฆฌ์ฆ์ ๋์ฉํ๊ธฐ์ ์ถฉ๋ถํฉ๋๋ค.
์์ ์๊ฐ์ด ์ ๋ง ์ค์ํ Rust, Go, Swift, C++, Java(GraalVM), ๋ฐ์คํฌํฑ, ์ฝ์ ๋ฐ ๋ชจ๋ฐ์ผ/IoT ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด .NET์ด ์ฅ๊ธฐ์ ์ผ๋ก ์์ค๋๋ ์๋๋ฆฌ์ค์ ๊ฒฝ์ฐ AOT๋ฅผ ์ํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ๋ํ ์ ์ฝ์ด ๋์ต๋๋ค. ์ผ๋ถ ASP.NET ์๋๋ฆฌ์ค์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด์ ๋ธ๋ฆฌ ๋ก๋ ์ JIT๋ก ์ธํ ์๋ ์์ค์ 100๊ฐ์ K8S ํฌ๋ ์ธ์คํด์ค๋ฅผ ํ์ฅํ ๋ AOT ์ฝ๋๊ฐ ๊ด๋ จ๋ ์ ์๋ ๊ฒ์ฒ๋ผ ํ์ฉ๋์ง ์์ต๋๋ค.
๋ค๋ฅธ ํํธ์ผ๋ก๋ JIT ๊ธฐ๋ฅ์ ์ ์งํ๊ณ JIT๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์๋๋ฆฌ์ค์์ ๊ฐ์ ํ๋ ๊ฒ๊ณผ ๊ด๋ จ์ด ์์์ ์๊ฒ ๋์์ต๋๋ค.
๋ ์ปดํ์ผ ๋ชจ๋ธ์ ๋ชจ๋ ์ ๊ณตํ๋ ์ธ์ด๊ฐ ๋ง์ด ์์ผ๋ฏ๋ก ์ฌ์ฉ์๊ฐ ์ํฉ์ ๋ฐ๋ผ ์ ํํ๊ณ ์ ํํ ์ ์์ผ๋ฏ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก JIT๋ฅผ ์ ์งํ๊ณ AOT ์คํ ๋ฆฌ๋ฅผ .NET ๋ค์ดํฐ๋ธ ๋ฐฉํฅ์ผ๋ก ๊ฐ์ ํ๋ฉด์ NGEN์ด๋ผ๋ ์์ฌํ ์๋๋ฅผ ์์ด๋ฒ๋ฆฌ๋๋ก ํฉ๋๋ค.
@Symbai IP๋ฅผ ๋ณดํธํ๊ธฐ ์ํ ์๋จ์ผ๋ก NDK๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ์๋ํ Android ๊ฐ๋ฐ์๊ฐ ์๋ ค์ค ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ค ๊ฒ์ ๋ํ ๋ณดํธ๋ ์๋๋๋ค. ๊ฐ๋จํ ์ธ๊ธํ ์์ฉ ํ๋ก๊ทธ๋จ์ ํ ๋ฒ์ ํด๋ฆญ์ผ๋ก ๋์ผํ ์์ ์ ์ํํ ์ ์์ผ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก C ๋๋ C++ ์ฝ๋๋ฅผ ์๋ณธ ์์ค ์ฝ๋๋ก ๊ฐ์ ํ์ง๋ง ์๊ณ ๋ฆฌ์ฆ์ ๋์ฉํ๊ธฐ์ ์ถฉ๋ถํฉ๋๋ค.
๋ด๊ฐ ์ด ์๋ ์์ง๋ง ์ค๋๋ .NET์ด ํ์ฉํ์ง ์๋ ์๊ณ ๋ฆฌ์ฆ์ ํ์น๋ ๊ฒ(์: WPF), ๋๊ตฐ๊ฐ๊ฐ VS ํ๋ก์ ํธ๋ก ์คํํ๊ธฐ ์ํด ์๋ฆ๋ต๊ณ ์ฝ๊ฒ ์์ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๋นํ๋ ๊ณณ. ๋ค์ดํฐ๋ธ ์ปดํ์ผ์ด ํฌํจ๋ UWP๋ ๋๊ตฐ๊ฐ๊ฐ ๊ทธ๊ฒ์ ๋์ค์ด์ ๋ธํ๋ ค๋ ๊ฒฝ์ฐ ์ข์ ์ผ์ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ข์์, ํ์ด์ ๋น๋๋ค! ๋๋ ๋ฌด์จ ์ผ์ด ์์ด๋ ํญ์ ๋ค์ดํฐ๋ธ ์ปดํ์ผ์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค. ๋งํ ์ ์๋ Android ์ธ๊ณ, Xamarin Forms๋ก AOT๋ฅผ ํ ๋ฒ ์๋ํ์ง๋ง ์ค์ ๋ก ์์๋๋ก ์๋ํ์ง ์์์ต๋๋ค.
๋ค์ดํฐ๋ธ ์ปดํ์ผ์ด ํฌํจ๋ UWP๋ ๋๊ตฐ๊ฐ๊ฐ ๊ทธ๊ฒ์ ๋์ค์ด์ ๋ธํ๋ ค๋ ๊ฒฝ์ฐ ์ข์ ์ผ์ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ข์์, ํ์ด์ ๋น๋๋ค! ๋๋ ๋ฌด์จ ์ผ์ด ์์ด๋ ํญ์ ๋ค์ดํฐ๋ธ ์ปดํ์ผ์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค. ๋งํ ์ ์๋ Android ์ธ๊ณ, Xamarin Forms๋ก AOT๋ฅผ ํ ๋ฒ ์๋ํ์ง๋ง ์ค์ ๋ก ์์๋๋ก ์๋ํ์ง ์์์ต๋๋ค.
์คํฌ์ผ๋ฌ - ์์ค๋ฅผ ์ป์ผ๋ ค๋ ์ฌ๋๋ค์ ์๋ง๋ ๋น์ ์ ๊น์๋ด๋ฆฌ์ง ์๊ณ ๊ฐ์ /ํ์ฅ/ํตํฉํ๋ ค๊ณ ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ค์ด ๋น์ ์ ์ฐข์ด ๋ฒ๋ฆฌ๋ ค๊ณ ํ๋ค๋ฉด, ๋น์ ์ ๋ฉํธ๋ฆญ์ ์ ๋ง ์ด๋ฆฌ์์ ๊ฒ์ ๋๋ค.
๋ด๊ฐ ์ฑ ์ ์ด๋ค๋ฉด ์ถํํ๊ธฐ ์ ์ ๋๊ตฐ๊ฐ ๊ทธ๊ฒ์ ์ผ๋ณธ์ด๋ก ๋ฒ์ญํด ์ค ๊ฒ์ ์์ฒญํ์ญ์์ค. ๋๋ ์ผ๋ณธ์ด๋ฅผ ์ดํดํ์ง ๋ชปํ๊ณ ๋ด ์น๊ตฌ๋ ์ดํดํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ์ ๋ง ๋๋ํ๋ค๊ณ ์๊ฐํ ์๋ ์์ต๋๋ค. ํ์ง๋ง ํ์ค์ ๊ทธ ์ฑ ์ ์ฝ์ ์ ์๋ ๋๋ผ๊ฐ ์ ์ธ๊ณ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ฒ ํ๋ฉด ์ค์ค๋ก๋ฅผ ์์ผ ๋ฟ์ ๋๋ค.
๋์ค์ด์ ๋ธ๋ ๋ค์ดํฐ๋ธ ๋ฐ์ด๋๋ฆฌ์ ๋ํ ๊ฒฝํ์ด ์๊ณ Star Citizen์์ ์ํธํ ๋ฐ ๋ฐ์ดํฐ ํ์์ ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋งํ๊ธฐ๋ก ๊ฒฐ์ ํ ๊ฐ๋ฐ์๋ก์ ์ด ๋ง์ ํฉ๋๋ค.
์ฌ์ ๊ฒฝํ์ด ์ ํ ์๋ ์ ์๊ฒ ์ํธํ๋ ๋ฐ์ดํฐ ํ์ผ์ ํด๋ ํ ์ ์์ ๋ฟ๋ง ์๋๋ผ ๋ ์ ๋ฐ์ดํฐ ํ์์ XML/JSON์ผ๋ก ๋ณํํ ์ ์๋ ํ๋ก๊ทธ๋จ์ ๊ฐ์ถ๋ ๋ฐ 2์ฃผ๊ฐ ๊ฑธ๋ ธ์ต๋๋ค.
๊ทธ 2์ฃผ๊ฐ ์ง๋๋ฉด VS ํ๋ก์ ํธ๋ก ์คํํ ์ ์๋ ์์ ํ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์์ ์๋ ์์ง๋ง ๊ทธ๋ด ํ์๊ฐ ์๋ค๋ ๊ฒ๋ ์๊ณ ์์ต๋๋ค. ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ด ์์ ์ ์ฝ๋๋ฅผ ์ฝ์ ํ๋ ๊ฒ์ด ํจ์ฌ ๊ฐ๋จํ๊ณ ๋ชจ๋ ์ฝ๋๋ฅผ ์ฒ๋ฆฌํ ํ์๊ฐ ์์ต๋๋ค.
์ํธํ๋ ๋ฐ์ดํฐ ํ์ผ์ ํด๋ ํ ์ ์์ ๋ฟ๋ง ์๋๋ผ
์ํธํ๋ ์์ ํ ๋ค๋ฅธ ๊ฒ์ ๋๋ค. ๋ชจ๋๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๋น๋์ค ๊ฒ์์ ๋์ปดํ์ผํ๋ ๊ฒ์ ์์ ํ ๋ค๋ฆ ๋๋ค. ๋๋ถ๋ถ์ ๊ฒ์ ๊ฐ๋ฐ์๋ ํฌ์ด ๋ชจ๋๋ฅผ ๋ง๋๋ ๋ฐ ์ ๊ฒฝ ์ฐ์ง ์๊ณ ๊ฒ์์ ๋ํ ์ด์ ๊ณผ ์ฌ๋์ ๋ณด์ฌ์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ง๋ "์ํธํ"๋ ์ ํ ์ํธํ๊ฐ ์๋์์ง๋ง ํ์ผ์ ๋ ์์ ํฌ๊ธฐ๋ก ์์ถ๋์์ ๋ฟ์ ๋๋ค. ์์ฒ ๊ฐ์ ๋จ์ผ ํ์ผ์ ๋์คํฌ์ ์ ์ฅํ ํ์๊ฐ ์์ต๋๋ค. ์ฑ๋ฅ๋ ์ด์ ๊ฐ ๋ ์ ์์ต๋๋ค... ๋์คํฌ์์ ๋ง์ ์์ ํ์ผ์ ์ฝ๋ ๊ฒ์ ํ๋์ ํฐ ํ์ผ์ ์ฝ๋ ๊ฒ๋ณด๋ค ๋๋ฆฝ๋๋ค. ๊ทธ๋ฆฌ๊ณ 2์ฃผ ํ์ ํฌ์ฅ๋ ์ด๋ฏธ์ง์ ์์ถ์ ํ ์ ์์์ต๋๋ค. ์ผ๋ถ ๋ฐ์ดํฐ ํ์ผ ๋ด์์ ํ ์คํธ๋ฅผ ๋ณ๊ฒฝํ ์ ์์์ต๋๋ค. ์ด๊ฒ์ ํ๋ฅญํ์ง๋ง ๋ ๊ฐ์ ์ฌ๋๋ค์ด JIT๋ฅผ ์์ ๊ณ ์ถ์ดํ๋ ์ด์ ๋ ์๋๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ง๊ธ ๊ฐ์ง๊ณ ์๋ ๋ฌธ์ ๋ JIT ์ฝ๋๊ฐ ์์ ํ ์์ค ์ฝ๋๋ก ์์ ํ ๋์ปดํ์ผ๋ ์ ์๊ณ Java๋ ๋ค๋ฅธ JIT ์ธ์ด์ ๋์ผํ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋ค์ดํฐ๋ธ ์ฝ๋๋ ๋์ค์ด์ ๋ธ๋ ์ ์๊ณ (์ด๋ ๊ฒ ํ๋ฉด ๊ธฐ๊ณ์ด ์ฝ๋๊ฐ ์ด์ ๋ธ๋ฆฌ ์ฝ๋๋ก ๋ฐ๋๋๋ค), ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ถฉ๋ถํ ์ฌ์ ๊ฐ ์์ผ๋ฉด ํฌ๋๋ ์ ์์ต๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ด ์ฌ์ค์ด์ง๋ง ๋ค์ดํฐ๋ธ ์ฝ๋๋ฅผ ์ปดํ์ผํ์ฌ ์์ค ์ฝ๋๋ฅผ ์์ฑํ ์๋ ์์ต๋๋ค. C++ ์ฝ๋์ฉ dnSpy์ ๊ฐ์ ๋๊ตฌ๋ฅผ ๋ณธ ์ ์ด ์์ต๋๊น? ๋ธํ์ด ์ฝ๋? ๋๋ํ์ง ์์๋ค. ๋ณ์ ๋ฐ ๋ฉ์๋ ์ด๋ฆ์ ์ป์ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ปดํ์ผ๋๋ฉด ๋ ์ด์ ์กด์ฌํ์ง ์์ต๋๋ค. ๋์ค์ด์ ๋ธ๋ฆฌ๋ฅผ C++๋ก ๋ณํํ๊ณ ์ปดํ์ผํ ์ ์๋ ์์ ํ ์๋ํ๋ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ด๊ฒ์ ๋น์ ์๊ฒ ๊ทธ๋ค์ง ์ค์ํ์ง ์์ ๊ฒ์ฒ๋ผ ๋ค๋ฆด ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์์ ์ฉ ์์ฉ ํ๋ก๊ทธ๋จ์๋ ์์ฒญ๋ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ .NET ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ง์์ด ์ ํ ์๋ ๋ชจ๋ ์ฌ๋์ด ์ฝ์ ์ ์๋ ๊ณต๊ฐ ์ฑ ์ด๋ผ๋ ์ฌ์ค์ ์์ ๊ณ ์ถ์ ๋ฟ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ฐ๊ตฌ์ ์์ฒ ๋ฌ๋ฌ๋ฅผ ํฌ์ํ ๋ ์ฐ๋ฆฌ๋ ๋ชจ๋ ์ฌ๋์ด ๊ทธ๊ฒ์ ๋ณด๊ณ ๋ช ์ด ์์ ๋ณต์ฌํ๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ๋๋ค์ด ๋ ์ด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๊ณ "๋ผ์ด์ ์ค"๋ฅผ ๊ฒ์ํ์ฌ ์ฆ์ ์ก์ธ์คํ ์ ์๋๋ก ๋ชจ๋ ๋ณ์์ ๋ฉ์๋ ์ด๋ฆ์ ์ด๋ฆ์ ๋ฐ๊พธ๋ ๊ฒ๋ง ๋ชฉ์ ์ธ ๋๋ ํ ์ฅ์น์ ๋ํด ์์ฒ ๋ฌ๋ฌ๋ฅผ ์ง๋ถํ๋ ์ผ์ ์์ ๊ณ ์ถ์ต๋๋ค. obfuscator์ ๋น์ฉ(๋๋ถ๋ถ) ๋ฟ๋ง ์๋๋ผ obfuscator๊ฐ ์ถ๊ฐ ๋ฌธ์ ๋ฅผ ์์ฑํ๋ค๋ ๊ฒ์ ๋๋ค. ๋๋ ํนํ .NET Core ๋ฆด๋ฆฌ์ค์ ๋น๋๋ก ์์ฃผ ์ด ๋ฌธ์ ๋ฅผ ๊ฒช์์ต๋๋ค. obfuscator๊ฐ ์ต์ .NET Core ๋ฒ์ ์์ ์๋ํ๋๋ก ํ๋ ํจ์น๋ฅผ ์ํด ๋ช ์ฃผ๋ง ๊ธฐ๋ค๋ ค์ผ ํ์ต๋๋ค.
๊ฐ๋ฐ์๋ก์ ์ด๋ฌํ ๋ชจ๋ ๋ฌธ์ ์ ์ง๋ฉดํ๋ ๋์ ๋น์ฆ๋์ค ๊ด๋ฆฌ์์๊ฒ๋ ์ค๋ช ํด์ผ ํฉ๋๋ค. ์ด๋ ์์ ์์ ๊ทธ๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ ํํ๋ ๊ฒ์ด ๋ ์ข์ง ์์์ง ๋ฌป์ต๋๋ค.
C++์ ๋ธํ์ด์์๋ ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋๋ ์ด๊ฒ์ด ๋ชจ๋ ์ฌ๋์๊ฒ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ์คํ ์์ค ๊ฐ๋ฐ์๋ JIT๊ฐ ๋ ํฅ๋ฏธ๋กญ๊ณ ์ ์ฉํ๋ค๋ ๊ฒ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค. ์ด๋ฆฐ ์ฑ ์ด ๋ ๋ซ๋ค๊ณ ๋ฏฟ์ ๋ ๋๊ตฐ๊ฐ๊ฐ ์์ ์ ์์ค ์ฝ๋๋ฅผ ๋ซํ ์ฑ ์ด ๋๊ธฐ๋ฅผ ์ํ๋ ์ด์ ๋ฅผ ๊ทธ๋ค์๊ฒ ์ค๋ช ํ๋ ๊ฒ์ ์ด๋ ต์ต๋๋ค. ๋ฐ๋ผ์ ์ด์์ ์ผ๋ก๋ ์์ ํ ๋ค๋ฅธ ๊ด์ ์ ์๋ก ์ค๋ช ํ ํ์๊ฐ ์์ผ๋ฉฐ AOT๋ ์ํ๋ ๊ฒฝ์ฐ ๋ฆด๋ฆฌ์ค ๋ชจ๋์์ ์ผค ์ ์๋ ์ค์์น์ผ ๋ฟ์ ๋๋ค. ์ํ์ง ์์ผ๋ฉด JIT๋ก ์งํํ์ญ์์ค.
AOTโค๋ฅผ ์ํ๋ ์ด์ ๋ก "๋ณดํธ"๋ฅผ ์ ํํ ์ ์๊ฒ ํด์ค .NET ํ์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค. ๊ทธ๊ฒ์ ๊ทธ๋ค์ด ์ผ๋ถ ์ฌ๋๋ค์ ํ์๋ฅผ ์๊ณ ์์์ ๋ณด์ฌ์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๋ก ์กฐ์ฌ์์ ์ฌ๋์ด ๊ทธ๊ฒ์ ๋ํด ํฌํํ๋ ๊ฒ์ผ๋ก ๋ฐํ์ง๋ฉด ๋ง์นจ๋ด AOT ๊ตฌํ์ด C++ ์ปดํ์ผ๋ฌ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ด๋ฅผ ์ฒ๋ฆฌํ ๊ธฐํ๋ฅผ ๊ฐ๊ฒ ๋ ๊ฒ์ ๋๋ค. ์ฐธ๊ณ : AOT๊ฐ ์ค์ ๋ก ์ผ๋ง๋ ๋ณดํธํ๋์ง์ ๋ํ ์ถ๊ฐ ๋ ผ์๋ฅผ ํผํ๊ธฐ ์ํด ์ธ์ฉ๋ฌธ์ ๋ฃ์์ต๋๋ค.
๋ณด์์ ์ ๋ถ ๋๋ ์ ๋ฌด๊ฐ ์๋๋๋ค. IL์ ์ ๊ฑฐํ๋ค๊ณ ํด์ ๊ฒฐ์ ๋ ๊ณต๊ฒฉ์๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋๋๋ฆฌ๋ ๊ฒ์ ๋ง์ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ค์ฉ์ ์ธ ์๋ฏธ์์ ๊ด๋ จ์ด ์๋ ์ฅ์ ๋ฌผ์ ๋ง๋ญ๋๋ค. ์ฌ์ธต ๋ฐฉ์ด์ ๋๋ค. ์ด๊ฒ์ด IL ๋๋ ํ ์ ํ์ ์ฌ์ฉํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ผ ์ ์๋ ์ด์ ์ ๋๋ค.
๋ด ์น๊ตฌ๊ฐ IL์ C#์ผ๋ก ๋์ปดํ์ผํ๊ณ ์ฌ์ํ ์์ ์ ํตํด .NET ์ ํ์ ๊นจ๋จ๋ ธ์ต๋๋ค. ๊ทธ๋ ๊ธฐ๋ณธ ์์ฉ ํ๋ก๊ทธ๋จ์ ํด๋ ํ ์ ์์ต๋๋ค. ํจ์ฌ ์ด๋ ต์ต๋๋ค. ๊ทธ๋ ๋ํ ๋์ปดํ์ผ๋ฌ ๋๊ตฌ๊ฐ ํด๋น ๋ฐ์ด๋๋ฆฌ์์ ์ถฉ๋ํ๊ธฐ ๋๋ฌธ์ IL ๋๋ ํ์๊ฐ ์๋ ์ํฉ์์ ํฌ๊ธฐํด์ผ ํ์ต๋๋ค. ๋ค์ ๋งํ์ง๋ง, ํด๋น ์ ํ์ ์ค์ฉ์ ์ธ ์๋ฏธ์์ ๋ณดํธ๋์์ต๋๋ค. ๊ทธ๊ฒ์ ํจ๊ณผ๊ฐ ์์๋ค.
@์ฌ๋ฐ์ด
Have you ever seen a tool like dnSpy for C++ code? Delphi code?
Hex-Rays๋ C์ ๋ํด ์ข์ ์์ ์ ์ํํ๋ฉฐ ๊ฒฐ์ ํ๋ก์ธ์ค๋ฅผ ๋๋ ๋งคํฌ๋ก๊ฐ ์์ต๋๋ค.
C ์์ค๋ฅผ ๊ฐ๋ ๊ฒ์ ๊ทธ๊ฒ์ C++ ๋๋ ๋ธํ์ด๋ก ๋ณํํ๋ ์์ด๋ค์ ๋์ด์ ๋๋ค.
๋ํ ์ด์ ์ฐ๋ฆฌ๋ ๊ธฐ์ ์ด ๋ถ์กฑํ ์ฌ๋๋ค์ ๋๊ธฐ ์ํด AI๋ฅผ ๊ฐ๊ฒ ๋์์ต๋๋ค.
Hex-Rays๋ C์ ๋ํด ์ข์ ์์ ์ ์ํํ๋ฉฐ ๊ฒฐ์ ํ๋ก์ธ์ค๋ฅผ ๋๋ ๋งคํฌ๋ก๊ฐ ์์ต๋๋ค.
Hex-Rays ๋๋ ๋๋ ํ ์ํํธ์จ์ด๋ฅผ ํ๋งคํ๋ ํ์ฌ์์ ์ผํ์ญ๋๊น? ๊ทธ๊ฒ์ ๋ํ๋ฉ๋๋ค.
์ด์จ๋ , ๊ทธ๊ฒ์ C๋ก ๋ณํํ๋๋ผ๋ ์ฝ๋๋ ์ข์ C# ์ํคํ
์ฒ์์ ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์์ ๊ฒ์
๋๋ค. ์ฝ๋ ์กฐ๊ฐ์ ์ป๋๋ผ๋ ๋ณ๊ฒฝ, ๊ฐ์ ๋ฑ์ ์ํด ๋ง์ ๋
ธ๋ ฅ์ ๊ธฐ์ธ์ฌ์ผ ํฉ๋๋ค....
๋น์ ์ ์ํด ๋ค์ดํฐ๋ธ ์ปดํ์ผ์ด ๊ด๋ จ์ด ์๋ค๋ฉด, ok. ๊ทธ๋ฌ๋ ๋ง์ ์ฌ๋๋ค์๊ฒ ๊ทธ๊ฒ์ ๊ด๋ จ์ด ์์ต๋๋ค.
BTW: ๋น์ ์ JIT ์ปดํ์ผ์ ์ ์งํ๋ ๋ฐ ๋งค์ฐ ๊ด์ฌ์ด ์์ด ๋ณด์ด๋ฉฐ ์ํํธ์จ์ด ๋ถํด์ ๋ง์ ๊ฒฝํ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์, ์ด๋์ ์ฌ์ฉํด์ผ ํ๋์ง ๊ถ๊ธํ์์ฃ ?!
IL ๋ ๊ธฐ๊ณ์ด ์ฝ๋์ ๋์ปดํ์ผ ์ฉ์ด์ฑ์ ๋ํด ์ฌ๋ฌ๋ถ ์ค ๋๊ตฌ๋ผ๋ ๋๋ผ๋ ๊ฒ๊ณผ ์๊ด์์ด ๊ทธ๊ฒ์ด ์ค์ ๋น์ฆ๋์ค์์ ์ค์ ์๊ตฌ ์ฌํญ์ด๋ผ๋ ์ฌ์ค์ ๋ณํ์ง ์์ต๋๋ค. (๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์๊ฐ ์ง์ ๋์์ฌ ๋๊น์ง ๊ทธ ์๊ตฌ ์ฌํญ์ด ์ผ๋ง๋ ์ ํจํ์ง ๋๋ ๋ฌดํจํ์ง์ ๋ํด ๋ ผ์ํ ์ ์์ต๋๋ค.)
๋ด ์ด์ ๊ณ ์ฉ์ฃผ๋ ์ด๋ฌํ ์ด์ ๋ก .NET ๋๋ JVM ๋๊ตฌ๋ฅผ ์ธ๋ถ์ ์ผ๋ก ์ ๊ณตํ๋ ๊ฒ์ ๋ช ์์ ์ผ๋ก ๊ธ์งํ์ต๋๋ค. ๋ด๊ฐ ๋ ๋๊ธฐ ์ง์ ์ ํ ํ์ ๋์ ์ฌ๋๋ค์๊ฒ ๋๋ ํ๊ฐ ์ ์ฉ๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋๋ก ์ค๋ํ์ง๋ง, ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฐ๋ฆฌ๋ ๊ธฐ์ ์ ์ฑ ์ ์ถฉ์กฑ์ํค๊ธฐ ์ํด C++๋ก ์ธ๋ถ ๋๊ตฌ๋ฅผ ์์ฑํ๊ณ ์์์ต๋๋ค.
์ด ํ ๋ก ์ ๊ถค๋์์ ๋ฒ์ด๋ฌ์ต๋๋ค. AOT๊ฐ IP ๋ณดํธ์ ๊ด๋ จ์ด ์๋์ง ์ฌ๋ถ์ ๋ํด ๋ชจ๋ ๋ ผ์์ ๋ฒ์ด๊ณ ์ถ๋ค๋ฉด ๋ค๋ฅธ ๊ณณ์์ ํ์ญ์์ค.
Hex-Rays๋ C์ ๋ํด ์ข์ ์์ ์ ์ํํ๋ฉฐ ๊ฒฐ์ ํ๋ก์ธ์ค๋ฅผ ๋๋ ๋งคํฌ๋ก๊ฐ ์์ต๋๋ค.
Hex-Rays ๋๋ ๋๋ ํ ์ํํธ์จ์ด๋ฅผ ํ๋งคํ๋ ํ์ฌ์์ ์ผํ์ญ๋๊น? ๊ทธ๊ฒ์ ๋ํ๋ฉ๋๋ค.
์ด์จ๋ , ๊ทธ๊ฒ์ C๋ก ๋ณํํ๋๋ผ๋ ์ฝ๋๋ ์ข์ C# ์ํคํ ์ฒ์์ ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์์ ๊ฒ์ ๋๋ค. ์ฝ๋ ์กฐ๊ฐ์ ์ป๋๋ผ๋ ๋ณ๊ฒฝ, ๊ฐ์ ๋ฑ์ ์ํด ๋ง์ ๋ ธ๋ ฅ์ ๊ธฐ์ธ์ฌ์ผ ํฉ๋๋ค....
๋น์ ์ ์ํด ๋ค์ดํฐ๋ธ ์ปดํ์ผ์ด ๊ด๋ จ์ด ์๋ค๋ฉด, ok. ๊ทธ๋ฌ๋ ๋ง์ ์ฌ๋๋ค์๊ฒ ๊ทธ๊ฒ์ ๊ด๋ จ์ด ์์ต๋๋ค.BTW: ๋น์ ์ JIT ์ปดํ์ผ์ ์ ์งํ๋ ๋ฐ ๋งค์ฐ ๊ด์ฌ์ด ์์ด ๋ณด์ด๋ฉฐ ์ํํธ์จ์ด ๋ถํด์ ๋ง์ ๊ฒฝํ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์, ์ด๋์ ์ฌ์ฉํด์ผ ํ๋์ง ๊ถ๊ธํ์์ฃ ?!
๊ทธ์ ๋ฐํด ์ ๋ ๋ค์ดํฐ๋ธ ์ฝ๋๋ฅผ ์ 3์๊ฐ ๋ ์ฌ์ฉํ ์ ์๋ ์์ค ์ฝ๋๋ก ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋งํ๋ ๊ธฐ์ ์ ๋ณด์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ์ปดํ์ผํ๋ ๊ฒ์ ์คํฌ๋ฆฝํธ ํค๋๋ค์๊ฒ ์ฅ์ ๋ฌผ์ผ ๋ฟ์ด๋ผ๋ ๊ฒ์ ์ถฉ๋ถํ ์๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ.
ํธ์ง: ๋ํ ๋ด ์๊ฒฌ์ ์ค์งํฉ๋๋ค. ์ธ์ ๊ณต๊ฒฉ์ ๋ตํ๊ณ ์ถ์์ ๋ฟ์ ๋๋ค.
ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๋ฐ WPF๋ AOT์ฌ์ผ ํฉ๋๋ค.
Windows ํด๋ผ์ด์ธํธ ๋ฐํ์ ์์! JIT ์์
์ค๋ฌธ์กฐ์ฌ ๊ฒฐ๊ณผ๊ฐ ๊ฒ์๋์์ต๋๋ค( https://github.com/dotnet/runtime/issues/41522). ํ์ฌ ์ฐ๋ฝ์ฒ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ ๋ช ๊ฐ์ง ์ถ๊ฐ ์ง๋ฌธ์ด ์๋ ์ฌ๋๋ค์๊ฒ ํ์ ์กฐ์น๋ฅผ ์ทจํ๋ ์ค์ ๋๋ค.
AOT w/ static linking์ jit๋ฅผ ๋นํ์ฑํํ๋ iOS ๋ฐ ์ฝ์ ํ๋ซํผ์ ๊ฒ์ ์์ง์ ์๊ธํฉ๋๋ค.
์ฌ๊ธฐ์ ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค. ์ด ๋ฌธ์ ์ ๋ํ ์๋ฃจ์ ์ด ํ์ํ๊ธฐ ๋๋ฌธ์(๋น Unity ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ๊ฒ์ ์ฝ์์์ ์คํ๋๋ C# ์ฝ๋) Mono-AOT ๊ธฐ๋ฐ ๋๊ตฌ ์ฒด์ธ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ช ๊ฐ์ง ์ฌ๊ฐํ ์ ํ ์ฌํญ์ด ์์ผ๋ฉฐ ์ฑ๋ฅ์ด ์ข์ง ์์ต๋๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ 3๊ฐ์ ํฌํ๋ฌ ๊ฒ์ ์ฝ์(XBox One, PlayStation 4 ๋ฐ Nintendo Switch)์์ CoreRT๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์์ต๋๋ค. ๊ฐ๋ ์ ์ด๊ธฐ ๊ต์๋ ๊ทธ๊ฒ์ด ์ค์ ๋ก ์๋ํ์ง๋ง(์ฌ์ ํ ๋ช ๊ฐ์ง ์ ํ ์ฌํญ์ด ์์) Mono ๊ธฐ๋ฐ ์๋ฃจ์ ๊ณผ ๋น๊ตํ์ฌ ์ด๋ฏธ ์๋นํ ๋ฐํ์ ์ฑ๋ฅ ๊ฐ์ ์ด ์์์ ๋ณด์ฌ์ค๋๋ค.
๊ทธ๋ฌ๋ ๊ฒ์ ์ฝ์์ ๋๋ฌ์ผ NDA ์ํฉ์์ ์ด ์ฌ์ฉ ์์ธ์ ๋ํ ๊ณต์ ์ง์์ ์ฒ์๋ถํฐ ๊ณต์ ๋ค์ดํฐ๋ธ AOT๋ฅผ ์ป๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ์ ์ ํฉ๋๋ค.
@RalfKornmannEnvision Xamarin Xbox One/PS4 Mono ํฌํธ๋ฅผ LLVM codegen๊ณผ ํจ๊ป ์ฌ์ฉํ๊ณ ์์ต๋๊น?
@RalfKornmannEnvision Xamarin Xbox One/PS4 Mono ํฌํธ๋ฅผ LLVM codegen๊ณผ ํจ๊ป ์ฌ์ฉํ๊ณ ์์ต๋๊น?
@lateralusX ํตํฉ์ ๋ค๋ฅธ ์ฌ๋์ด ํ๊ธฐ ๋๋ฌธ์ ์์ธํ๋ ๋ชจ๋ฆ ๋๋ค. ํ์ง๋ง ๋ด๊ฐ ์๋ ํ XBox One/PS4์ฉ์ผ๋ก ์ ๊ณต๋๋ ๋ชจ๋ ธ ํฌํธ๋ฅผ ์ฌ์ฉํ๊ณ ์ค์์น์ฉ์ผ๋ก ๊ฐ๋จํ ํฌํธ๋ฅผ ๋ง๋ค์์ต๋๋ค. ์์ .
@RalfKornmannEnvision ์ฐ๋ฝํ์ฌ ์ด์ ๊ด๋ จ๋ ๊ฒฝํ์ ๋ํด ๋ ผ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. LLVM codegen์ (ํ๋ก์ ํธ์ ๋ฐ๋ผ) ์์ฑ๋ ์ฝ๋์ ๋งค์ฐ ๊ธ์ ์ ์ธ ์ฑ๋ฅ ์ํฅ์ ๋ฏธ์น๋ฏ๋ก ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ(ํ์ฑํํด์ผ ํจ) ์ผ๋ฐ์ ์ผ๋ก ํ์ฑํํ๋ ๊ฒ๋ง์ผ๋ก๋ ๋ง์ ๊ฒ์ ์ป์ ์ ์์ต๋๋ค. DotNetEvolution discord ์๋ฒ์ ์์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด ์ด์ ๊ด๋ จํ์ฌ ์คํ๋ผ์ธ ํ ๋ก ์ ํ ์ ์์ต๋๊น?
@lateralusX ์ด ์์ ์ ์ํํ ํ์๋ค์ด LLVM ์ฝ๋์ ์ ํ์ฑํํ๊ณ ๋ค๋ฅธ ์์ ์ ์๋ํ๋ค๊ณ ํ์ ํฉ๋๋ค. ๋ค๋ฅธ ํ๋ก์ ํธ๋ก ๋์ด๊ฐ๊ธฐ ์ ๊ทธ๋ค์ ๋ง์ง๋ง ์ง์ ์ ์ด๊ฒ์ด ๊ทธ๋ค์ด ํ ์ ์๋ ์ต์ ์ด๋ผ๋ ๊ฒ์ด์๋ค.
์กฐ์ฌ์ ์ผํ์ผ๋ก Xamarin Android๋ฅผ ์ฌ์ฉํ์ฌ ํต์ฌ ๊ตฌ์ฑ ์์๋ก ๋ฒค์น๋งํฌ๋ฅผ ๋น๋ํ๊ณ Tegra X1 ๊ธฐ๋ฐ ์ฅ์น์์ ์คํํ์ฌ Mono์ ์ฌ์ฉ์ ์ง์ ์ค์์น ํฌํธ ๋ฌธ์ ๋ก ์ธํด ์ฑ๋ฅ์ด ์์ค๋์๋์ง ํ์ธํฉ๋๋ค. ๋ถํํ๋ Xamarin ํ๋ก์ ํธ์ ์ฑ๋ฅ์ ์ค์์น์์ ๋ณธ ๊ฒ๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์์์ต๋๋ค.
๋๋ ์ด ๋ถํ ์๋ฒ์ ์์ง ์๊ณ ์์งํ ๋งํด์ ๊ทธ๋ค์ด ํ์ฌ MONO ํตํฉ์ ๋ํด ๋ด๊ฐ ์๋ ๊ฒ์ด ๊ทธ๋ค์ง ๋ง์ง ์๋ค๋ ์ ์ ์ ๊ฐ์ค๋ฝ๊ฒ ์๊ฐํฉ๋๋ค. ๋ด ๊ด์ ์์ ์ด๊ฒ์ ์ด์จ๋ ์ด ํ๋ก์ ํธ์ ๋ง๋ค๋ฅธ ๊ณจ๋ชฉ์ ๋๋ค. ํ์ฌ CoreRT ํ๋กํ ํ์ (๊ณต์ ์ง์์ ํจ์ฌ ์ ์)์ ์ด๋ฏธ ์ฑ๋ฅ๊ณผ ์ ์ฉ์ฑ ๋ฉด์์ ํจ์ฌ ์ฐ์ํฉ๋๋ค.
@RalfKornmannEnvision ์ข์ต๋๋ค . ๊ทํ์ ์ ๋ณด์ ํผ๋๋ฐฑ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋ชจ๋ ๋งค์ฐ ์์คํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
...
๋๋ ๋์ํ์ง ์๋๋ค. ์ต๊ณ ์ ์ต์ข ์ฌ์ฉ์ UX๋ฅผ ์ํด์๋ ๊ฒ์ ์์ง , ์๋ฒ๋ฆฌ์ค ๋ง์ดํฌ๋ก์๋น์ค , ๋ฐ์คํฌํ GUI ์ ํ๋ฆฌ์ผ์ด์ , iOS ๋ฐ Android ์ ํ๋ฆฌ์ผ์ด์ , WASM ๊ธฐ๋ฐ ํด๋ผ์ด์ธํธ ์ธก SPA/๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๊ธฐ๋ณธ CLI ๋๊ตฌ (~๋ช MB)์ ์ ์ ๋งํฌ๊ฐ ํฌํจ๋ AOT๊ฐ ํ์ํฉ๋๋ค.
์ง๋ ๋ช ๋ ๋์ C#์์ ์์ ๋ชจ๋ ์๋๋ฆฌ์ค๋ฅผ ์๋ํ๋ฉด์ ๋ด ์ฝ๋๋ฅผ ์ฝ๊ฒ AOT ์ปดํ์ผํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๊ณ Rust์ ๊ฐ์ LLVM ๊ธฐ๋ฐ ์ธ์ด์ ๋นํด .NET์ด ๋ง์ด ๋ถ์กฑํ๋ค๊ณ ๋๋๋๋ค.
ํ์ฌ ๊ฒ์ ์ต์ ์ด "์ ์๋"ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ์ด์ ๋ .NET์ด ์ญ์ฌ์ ์ผ๋ก ์์ ์๋๋ฆฌ์ค์ ์ ํฉํ์ง ์์๊ณ ์ฌ๋๋ค์ด C#์ ์ฌ์ฉํ ๋ ์์ฒด AOT(์: Unity, UWP, Mono)๋ฅผ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ธฐ๋ณธ ์ด๋ฏธ์ง(์: ReadyToRun)๋ ๋ชจ๋๋ฆฌ์ ์๋ฒ ์์ฉ ํ๋ก๊ทธ๋จ ๋๋ ๋๊ท๋ชจ ๋ฐ์คํฌํฑ ํด๋ผ์ด์ธํธ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฝ๋ ์คํํธ โโ์๋๋ฆฌ์ค์์ "๋์"์ด ๋ ์ ์์ง๋ง ๋ฐ์ด๋๋ฆฌ ํฌ๊ธฐ๋ ์ฌ์ ํ ์ ์ฒด AOT ๋ฐํ์์ด ์์ฑํ๋ ๊ฒ๋ณด๋ค ๋ช ๋ฐฐ ๋ ํฝ๋๋ค.
.NET์ ์ด๋ฏธ ์๋ฒ๋ฆฌ์ค/์ปจํ ์ด๋ํ๋ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ํด "์ ์๋"ํ์ง ์์ต๋๋ค. ์ด๋ฌํ ๋ง์ดํฌ๋ก์๋น์ค๋ AOT ์ปดํ์ผ, ๊ฐ์๋ ๋ฐ์ด๋๋ฆฌ ํฌ๊ธฐ ๋ฐ ์ต์ํ์ ์ข ์์ฑ์ผ๋ก ์๋นํ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค .
ํ์ฌ ReadyToRun + Tiered Compilation + IL Linker ์๋ฃจ์ ์ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์์ AWS Lambda๊ฐ ๊ถ์ฅํ๋ ๊ฒ๊ณผ ๊ฐ์ด ์์ฒด ํฌํจ๋ ๋ฐฐํฌ์ ์ฑ๊ฐ์ ํ์ผ ํฌ๊ธฐ ์ ํ์ ์ด๋ฏธ ๋๋ฌํ์ต๋๋ค.
์ง์ง ๋ฌธ์ ๋ IL2CPP/Burst(Unity), Mono์ AOT ๋ฐฑ์๋(Xamarin/Blazor/Uno), .NET Native/CoreRT(UWP), Mono์ LLVM ๋ฐฑ์๋, CrossGen/ReadyToRun(.NET Core) ๋ฑ์ด๋ฉฐ .NET์ ํ์คํ๋ AOT ์ปดํ์ผ ๋๊ตฌ ๋ชจ์์ด ์๋ค๋ ๊ฒ์ ๋จ์ํ ๋ฐ์๋ค์ผ ์ ์์ต๋๋ค.
์ด ๋ชจ๋ ํ์ด CoreRT, Mono LLVM ๋ฐฑ์๋ ๋๋ ํ์ฌ ๋ฒ๋ ค์ง dotnet/lilic ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๊ฒ์ ๋ํ ์์ง๋์ด๋ง ๋ ธ๋ ฅ์ ๊ฒฐํฉํ๋ค๋ฉด AOT๋ .NET ๊ฐ๋ฐ์์๊ฒ ํจ์ฌ ๋ ๋์ ๊ฒฝํ์ด ๋์์ ๊ฒ์ ๋๋ค.
AOT w/ static linking์ ์ด์ ๋์ค์ ์ํ CI/CD๋ฅผ ํตํด ๋ง์ ๊ฐ๋ฐ์๊ฐ ์ก์ธ์คํ ์ ์์ผ๋ฉฐ ๋ ์ด์ ์ฑ๋ฅ์ด ๋ฏธ๋ฏธํ ์ฆ๊ฐ์ ๋ํ ์ฑ๊ฐ์ฌ์ด ์๋๋๋ค.
C# endgame: ๊ธฐ๋ณธ ์ฝ๋, ๊ธฐ๋ณธ UI, ๋น ๋ฅด๊ณ ์ฌ์ด ์ํธ ์ด์ฉ์ฑ, ๊ธฐ๋ณธ ๋ด๋ณด๋ด๊ธฐ ๋ฐ ์ฑ๋ฅ ์งํฅ API(์: System.IO.Pipelines, System.Text.Json).