2017년 4월 4일
우리는 Kotlin/Native의 첫 번째 Technology Preview를 발표하여 직접 기계 코드로 Kotlin을 컴파일하는 기술을 소개합니다. Kotlin/Native 컴파일러는 가상 머신 없이 실행 가능한 독립 실행형 실행 파일을 생성합니다.
이것은 아직 완전한 기능의 릴리스는 아니지만 이미 이 기술을 사용해보고 소스 코드를 살펴볼 수 있습니다. 이 컴파일러는 Apache 2 오픈 소스 라이선스에 따라 사용할 수 있습니다.
미션
Kotlin/Native는 Kotlin을 현대적인 애플리케이션 전반에 사용 가능하게 만드는 또 다른 단계입니다. 최종적으로 서버 백엔드부터 웹 또는 모바일 클라이언트에 이르기까지 모든 구성 요소를 작성하는 데 Kotlin을 사용할 수 있을 것입니다. 이 시나리오에서 스킬 세트를 공유하는 것이 큰 동기 중 하나이며, 다른 하나는 실제 코드를 공유하는 것입니다.
플랫폼 간 코드 재사용을 위한 저희의 비전은 다음과 같습니다: 코틀린을 사용하여 플랫폼에 독립적인 방식으로 전체 모듈을 작성하고 모든 지원 플랫폼(현재는 Kotlin/JVM, Kotlin/JS 및 이후에 Kotlin/Native)에 대해 컴파일할 수 있을 것입니다. 우리는 이것을 공통 모듈이라고 부릅니다. 공통 모듈의 일부는 플랫폼별 구현이 필요할 수 있으며, 각 플랫폼마다 개별적으로 개발할 수 있습니다. 공통 모듈은 모든 클라이언트에 대한 공통 API를 제공하지만, 다른(플랫폼별) 모듈은 이 API를 확장하여 해당 플랫폼에서 독점 기능을 제공할 수 있습니다.
우리는 Kotlin/JVM 프로그램을 임의로 Kotlin/Native 또는 Kotlin/JS에서 실행할 계획이 없습니다. 이것은 또 다른 JVM을 구현하는 것과 동등하며, 런타임에 대한 많은 작업과 제한 사항이 따릅니다. 우리는 다른 방식을 선택하고 있습니다: 플랫폼 코드와 원활한 상호 운용성을 통해 공통 라이브러리를 만들 수 있는 동안 모든 플랫폼에 대해 공통 언어를 제공하는 것입니다.
기술
Kotlin/Native은 기계 코드를 생성하기 위해 LLVM 컴파일러 인프라를 사용합니다. 이 미리 보기에서는 다음과 같은 대상 플랫폼을 지원합니다:
- Mac OS X 10.10 이상 (x86-64)
- x86-64 Ubuntu Linux (14.04, 16.04 이상), 다른 Linux 버전도 작동할 수 있음
- Apple iOS (arm64), MacOS X 호스트에서 크로스 컴파일됨
- Linux 호스트에서 크로스 컴파일된 Raspberry Pi
LLVM 지원이 가능한 한 플랫폼은 상대적으로 쉽게 추가할 수 있습니다. 앞으로 미리 지원하는 플랫폼도 추가될 것입니다.
보통대로 상호 운용성은 최우선 과제 중 하나이며, Kotlin/Native은 C 함수를 효율적으로 호출하고 데이터를 전달하거나 가져올 수 있습니다. 빌드 시 C 헤더 파일에서 Kotlin 바인딩을 생성하고 대상 플랫폼의 네이티브 API에 대한 빠른 타입 안전한 액세스를 얻을 수 있습니다. 자세한 지침은 여기에서 확인하세요.
메모리 관리
Kotlin/Native은 다양한 대상 플랫폼에 대해 다양한 메모리 관리 솔루션을 사용할 수 있는 설계입니다. 예를 들어 미래에 서버/데스크톱 플랫폼에는 추적 GC가 의미 있을 수 있지만, iOS에서는 ARC가 훨씬 더 의미가 있습니다. 일부 플랫폼은 수동 메모리 관리만 필요할 수 있으며, 그에 따라 더 작은 Kotlin/Native 런타임을 얻을 수 있습니다.
이 Technology Preview는 사이클 수집기를 탑재한 자동 참조 카운팅을 특징으로 합니다. 그러나 최종 메모리 관리 솔루션은 현재 알려지지 않은 상태입니다.
현재 제한 사항
위에서 언급한 대로 Kotlin/Native는 아직 완전하지 않으므로 이 Technology Preview에는 나중에 제거될 여러 가지 제한 사항이 있습니다:
- 아직 성능 최적화가 진행되지 않았으므로 현재는 Kotlin/Native의 벤치마킹이 의미가 없습니다.
- 표준 라이브러리 및 리플렉션 지원이 완전하지 않으며, 추가적인 API가 이후에 추가될 것입니다.
- 릴리스 노트에서 자세한 내용을 확인하세요.
미래 계획
저희는 현재 모든 대상 플랫폼(컴파일러, 핵심 런타임 및 라이브러리)에 대한 Kotlin/Native의 핵심 기술을 개발하고 있습니다. 가능한 미래 작업으로는 다음과 같은 사용 사례를 고려하고 있습니다:
- iOS 애플리케이션 (Android와 코드 공유)
- 임베디드 시스템/IoT (예: 아두이노 및 이후)
- 데이터 분석 및 과학 계산
- 서버 사이드 및 마이크로서비스 (저지연 실행 파일, 코루틴의 기능 활용)
- 게임 개발
어떻게 시도해볼 수 있을까요
우리는 컴파일러, 샘플 및 문서를 포함한 두 가지 아카이브를 준비했습니다: Mac 및 iOS용, Linux 및 Raspberry Pi용.
Github 프로젝트와 릴리스 노트를 확인하여 지침을 따라해보세요.
피드백은 공개 Slack의 #kotlin-native 채널에서 환영합니다 (여기에서 초대 받으세요).
원문
https://blog.jetbrains.com/kotlin/2017/04/kotlinnative-tech-preview-kotlin-without-a-vm/
'Kotlin > Release Notes' 카테고리의 다른 글
[Kotlin Release Notes] Kotlin/Native v0.2 is out (0) | 2023.09.04 |
---|---|
[Kotlin Release Notes] Kotlin 1.1.2 is out (0) | 2023.09.04 |
[Kotlin Release Notes] Kotlin 1.0.7 is out (0) | 2023.09.04 |
[Kotlin Release Notes] Kotlin 1.1.1 is out (0) | 2023.09.04 |
[Kotlin Release Notes] Kotlin 1.1 Released With JavaScript Support, Coroutines, and More (0) | 2023.09.04 |
댓글