Offcanvas

개발자 / 애플리케이션 / 오픈소스

'어려운' C를 '만만한' 러스트로··· 러스트-파이썬 변환 프로젝트 확산

2017.07.27 Serdar Yegulalp  |  InfoWorld
'러스트(Rust)' 지지자들은 러스트를 C와 C++ 대체재로 본다. 러스트는 모질라가 속도와 메모리 안정성을 강화하기 위해 개발한 프로그래밍 언어다. 문제는 C와 C++ 코드로 된 소프트웨어를 이 언어로 바꾸는 것이 생각보다 까다롭다는 것이다. 시간이 오래 걸리는 작업이기도 하다.



그래서 짧은 시간에 C를 대체하는 방법으로 등장한 것이 다른 언어에서 쓰이는 전통적인 C라이브러리를 러스트로 바꾸는 것이다. 예를 들면 통계와 머신러닝 관련된 파이썬 소프트웨어 상당수가 C로 개발됐는데, 이는 러스트로 대체할 수 있고 실제로 점점 증가하는 추세다.

사실 러스트 코드를 파이썬으로 바꾸는 것은 그리 어려운 작업이 아니다. 러스트 라이브러리를 이용하면 많은 작업 없이도 C ABI(Application Binary Interface)를 파이썬으로 바꿀 수 있다. 특히 이른바 '러스트 패키지(Rust packages)'라고 불리는 러스트 성과물을 이용하면 더 간단하다. 두 언어를 더 긴밀하게 통합하려는 노력은 지금도 계속되고 있다.

러스트 라이브러리를 더 쉽게 개발하거나 러스트 바이너리를 포함한 파이썬 패키지를 배포하는 주요 프로젝트를 살펴보자.

러스트-C파이썬
러스트-C파이썬(Rust-CPython)은 C파이썬 런타임용 러스트에서 사용할 수 있는 바인딩 세트다. 이를 이용하면 러스트 프로그램을 C파이썬에 연결하고 ABI를 이용하고 파이썬 프로그램을 실행할 수 있다. 러스트 자체에서 파이썬 객체를 표현하는 것도 가능하다. 러스트-C파이썬은 C파이썬을 사용하고 서로 제어하길 원하는 개발자에게 유용하다. 단, 파이썬 객체를 관리 방식에 따라 러스트의 안정에 문제가 있으므로 더 세심하게 신경써야 한다.

PyO3
PyO3은 러스트 개발자가 양방향 파이썬 바인딩을 통해 러스트 소프트웨어를 코딩하는 기본적인 방법을 제공한다. 이 러스트 프로그램은 파이썬 객체, 파이썬 인터프리터와 상호작용해 마치 C 모듈과 같은 방식으로 러스트 메소드를 파이썬 프로그램으로 바꿔준다.

PyO3은 예외 처리 같은 것에 일부 제약이 있다. 그러나 기본적인 기능은 충실히 지원하고 사용법이 간단해 비교적 쉽게 기존 러스트 코드를 파이썬이 인식할 수 있도록 바꿔준다. PyO3은 파이썬 런타임을 많이 사용하고 이와 직접적으로 상호작용하는 모듈 개발자에게 적합하다.


스닉
스닉(Snaek)을 이용하면 필요할 때 파이썬으로 동적으로 호출할 수 있는 러스트 라이브러리를 개발할 수 있다. 아직은 프로젝트 초기 단계지만, 파이썬 런타임에 정적으로 묶이지 않는 것을 지향한다는 점에서 주목받고 있다. 스닉을 사용하는 러스트 라이브러리는 내부에 특정 파이썬 언어를 사용할 필요가 없고 간단하게 C 호환 메소드로 바꿀 수 있다.

스닉의 한가지 잠재적 약점은 C코드와 상호작용하는 표준 파이썬 라이브러리인 C타입을 사용하지 않는다는 것이다. 대신 PyPy 개발팀이 만든 대안 라이브러리인 cffi를 이용한다. cffi는 배우기 어렵지 않지만 이미 c타입을 사용한 코드라면 일부 재작업이 불가피하다. 스닉은 러스트로 작성한 메소드를 파이썬 스크립트로 변환하려는 개발자에게 유용하다. 또는 파이썬을 새로 배우고 싶지 않은 개발자에게도 안성맞춤이다.

쿠키커터 템플릿
쿠키커터 템플릿(Cookiecutter template)은 파이썬 라이브러리와 함께 바이너리 메소드를 번들링할 때 발생하는 일반적인 메커니즘 문제를 다루는 프로젝트다. 여러 프로젝트를 진행중인데, 현재 사용할 수 있는 템플릿 중 하나가 쿠키커퍼 파이페키지 러스트 크로스 플랫폼 퍼블리시(Cookiecutter PyPackage Rust Cross-Platform Publish)이다. 이를 이용하면 파이썬 라이브러리와 함께 러스트 바이너리를 번들링하는 과정을 간소화할 수 있다.

이 프로젝트의 가장 중요한 목표는 사용자가 러스트 코드 자체를 컴파일 할 필요 없는 바이너리 배포판을 만드는 것이다. 예를 들어 윈도우 사용자는 미리 컴파일된 파이썬 패키지의 윈도우 바이너리가 부족해 어려움을 겪어 왔는데, 프로젝트 성과에 따라 이런 불편함을 상당 부분 없앨 수 있다.

쿠키커터 템플릿은 러스트를 포함한 다량의 파이썬 프로젝트를 추진하는 개발자에게 적합하다. 또는 이런 프로젝트를 다른 사람에게 배포하려고 하는 경우에도 유용하다. ciokr@idg.co.kr 
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.