2021.01.27

'윈도우 API'로 가는 첫발, '윈32 메타데이터' 프로젝트 진행중

Paul Krill | InfoWorld
마이크로소프트가 윈32 메타데이터(Win32 Metadata) 프로젝트를 진행 중이다. API용 메타데이터를 만들어 더 많은 언어에서 윈도우 API에 쉽게 접근하도록 한다는 구상인데, 첫 수혜자는  러스트, C#, C++ 등의 언어가 될 전망이다.
 
ⓒ Getty Images Bank

윈32 메타데이터 프로젝트는 깃허브에 올라와 있다. 윈API에 대한 완전한 주석을 제공하는 것이 목표다. 이를 이용하면 자동화된 방식으로 어떤 언어로든 표현할 수 있는데, 코딩의 정확성을 개선하고 유지보수 부담을 최소화할 수 있다. 이 프로젝트의 결과물은 ECMA 335 윈도우 메타데이터 파일이며, Nuget.org를 통해 공개된다. 단, 모든 윈도우 API를 정확하게 기술하는 데는 상당한 시간이 걸리므로, 이 프로젝트를 지원하는 개발 툴을 만들어야 한다는 요구도 나오고 있다.

이런 프로젝트 중 하나가 C#/윈32다. 메타데이터를 분석하고 API 호출에 필요한 P/인보크 래퍼를 생성한다. C#/윈32는 윈32 API의 다이내믹 프로젝션으로 할 수 있는 초기 성과 중 하나로, 인텔리센스(IntelliSense) 기능과 변수에 대한 강 타입(strong types)을 지원한다. 윈도우용 러스트도 마찬가지다.  러스트 언어 프로젝션을 이용하면 러스트 개발자가 메타데이터를 통해 즉석에서 생성한 코드를 이용하는 모든 윈도우 API를 호출할 수 있다. 모던 C++ 프로젝션도 개발 중이고, 이 밖에도 윈32 메타데이터 개발 계획에는 C#과 C++ 등도 포함돼 있다. 러스트 프로젝트는 올해 프리뷰 과정을 거쳐 2022년에 정식 공개될 예정이다.

마이크로소프트는 개발자가 필요로 하는 다른 언어까지 지원하기 위해 커뮤니티와 협업할 예정이다. 이 프로젝트는 최대한의 API 적용 범위를 포함해 개발 원칙과 목표 등이 제시된 상태다. 마이크로소프트에 따르면, 윈32 API는 이미 C와 C++에 접근할 수 있지만 C#, 러스트 같은 다른 언어는 래퍼를 쓰거나 별도의 바인딩 작업이 필요하다. 그동안 개발자는 이러한 래퍼나 바인딩을 직접 만들어 처리해야 했는데, 이 과정 자체가 번거로운데다 오류가 발생할 가능성도 컸다.

이러한바이딩과 래퍼의 관용어 표현이나 강 타입을 지원하는 닷넷용 핀보크, 러스트용 윈API-rs 등의 프로젝트가 있었지만, 광범위하고 지속해서 API를 지원하는 작업은 비용이 많이 들고 기술적으로 어려운 것이기도 했다. 마이크로소프트는 윈32 메타데이터 프로젝트를 통해 다양한 언어에 걸쳐 폭넓고 안정적인 API 지원을 제공할 수 있을 것으로 기대하고 있다. editor@itworld.co.kr


2021.01.27

'윈도우 API'로 가는 첫발, '윈32 메타데이터' 프로젝트 진행중

Paul Krill | InfoWorld
마이크로소프트가 윈32 메타데이터(Win32 Metadata) 프로젝트를 진행 중이다. API용 메타데이터를 만들어 더 많은 언어에서 윈도우 API에 쉽게 접근하도록 한다는 구상인데, 첫 수혜자는  러스트, C#, C++ 등의 언어가 될 전망이다.
 
ⓒ Getty Images Bank

윈32 메타데이터 프로젝트는 깃허브에 올라와 있다. 윈API에 대한 완전한 주석을 제공하는 것이 목표다. 이를 이용하면 자동화된 방식으로 어떤 언어로든 표현할 수 있는데, 코딩의 정확성을 개선하고 유지보수 부담을 최소화할 수 있다. 이 프로젝트의 결과물은 ECMA 335 윈도우 메타데이터 파일이며, Nuget.org를 통해 공개된다. 단, 모든 윈도우 API를 정확하게 기술하는 데는 상당한 시간이 걸리므로, 이 프로젝트를 지원하는 개발 툴을 만들어야 한다는 요구도 나오고 있다.

이런 프로젝트 중 하나가 C#/윈32다. 메타데이터를 분석하고 API 호출에 필요한 P/인보크 래퍼를 생성한다. C#/윈32는 윈32 API의 다이내믹 프로젝션으로 할 수 있는 초기 성과 중 하나로, 인텔리센스(IntelliSense) 기능과 변수에 대한 강 타입(strong types)을 지원한다. 윈도우용 러스트도 마찬가지다.  러스트 언어 프로젝션을 이용하면 러스트 개발자가 메타데이터를 통해 즉석에서 생성한 코드를 이용하는 모든 윈도우 API를 호출할 수 있다. 모던 C++ 프로젝션도 개발 중이고, 이 밖에도 윈32 메타데이터 개발 계획에는 C#과 C++ 등도 포함돼 있다. 러스트 프로젝트는 올해 프리뷰 과정을 거쳐 2022년에 정식 공개될 예정이다.

마이크로소프트는 개발자가 필요로 하는 다른 언어까지 지원하기 위해 커뮤니티와 협업할 예정이다. 이 프로젝트는 최대한의 API 적용 범위를 포함해 개발 원칙과 목표 등이 제시된 상태다. 마이크로소프트에 따르면, 윈32 API는 이미 C와 C++에 접근할 수 있지만 C#, 러스트 같은 다른 언어는 래퍼를 쓰거나 별도의 바인딩 작업이 필요하다. 그동안 개발자는 이러한 래퍼나 바인딩을 직접 만들어 처리해야 했는데, 이 과정 자체가 번거로운데다 오류가 발생할 가능성도 컸다.

이러한바이딩과 래퍼의 관용어 표현이나 강 타입을 지원하는 닷넷용 핀보크, 러스트용 윈API-rs 등의 프로젝트가 있었지만, 광범위하고 지속해서 API를 지원하는 작업은 비용이 많이 들고 기술적으로 어려운 것이기도 했다. 마이크로소프트는 윈32 메타데이터 프로젝트를 통해 다양한 언어에 걸쳐 폭넓고 안정적인 API 지원을 제공할 수 있을 것으로 기대하고 있다. editor@itworld.co.kr


X