크로스 플랫폼 실행 파일이있는 표준 C 라이브러리 인 Cosmopolitan

첫 번째 버전이 방금 출시되었습니다. 프로젝트의 코스모 폴리탄 개발을 위해 눈에 띄는 표준 C 라이브러리 다른 운영 체제에 프로그램을 배포하는 데 사용할 수있는 범용 실행 파일 형식입니다.

컨테이너 범용 실행 파일의 형성 특정 세그먼트와 제목의 조합을 기반으로 함 단일 파일에있는 다른 운영 체제 (PE, ELF, MALE, OPENBSD) 용.

발사를 보장하기 위해 Windows 및 Unix 시스템의 단일 실행 파일, 본질이 Windows PE 파일의 인코딩 인 트릭이 사용됩니다. 톰슨 쉘이 "#!"스크립트 마커를 사용하지 않는다는 사실을 이용하여 쉘 스크립트 형태로.

Cosmopolitan은 C를 한 번만 빌드 할 수 있고 Java와 비슷하게 어디서나 실행할 수있는 언어로 만듭니다. 단, 인터프리터 나 가상 머신을 사전 설치할 필요가 없다는 점이 다릅니다. Cosmo는 Go 및 Rust와 같은 고급 언어와 동일한 이식성 이점을 제공하지만 새로운 언어를 개발하지 않으며 각 운영 체제에 대해 별도의 바이너리를 생성하기 위해 CI 시스템을 구성 할 필요가 없습니다.

Cosmopolitan이 집중하는 것은 C를 플랫폼에서 분리하여 수정하는 것이므로 훨씬 더 많은 청중에게 쉽게 배포되는 작은 Unix 프로그램을 작성하는 데 사용하는 것이 좋습니다.

그 결과, 여러 다른 형식이 결합 된 실행 파일이 생성됩니다. Unix, Windows 및 macOS에서 사용됩니다. 및 제안 된 형식의 개요.

파일은 Windows PE 형식의 헤더로 해석되는 "MZqFpD"태그로 시작합니다.

예를 들어, Unix 시스템에서, 쉘 코드 exec 명령으로 실행, 명명되지 않은 파이프를 통해 실행 코드를 전달합니다.

그러나 제안하는 방법에 한계가 있다고 언급 유닉스 계열 운영 체제에서 실행할 수있는 능력입니다. Thompson Shell 호환 모드를 지원하는 쉘만 사용합니다. 그렇지 않으면 시스템 호출로 직접 시작되지 않습니다.

전화 qemu-x86_64는 추가적인 이식성을 제공하기위한 것입니다. ARM 프로세서가 장착 된 Raspberry Pi 보드 및 Apple 장치와 같은 x86이 아닌 플랫폼에서 컴파일 된 x64_86 코드를 실행할 수 있습니다.

프로젝트 독립 실행 형 응용 프로그램을 만드는데도 사용할 수 있습니다. 운영 체제없이 작동합니다 (베어 메탈). 이러한 응용 프로그램에서 로더는 실행 파일에 연결되고 프로그램은 부팅 가능한 운영 체제로 작동합니다.

프로젝트에서 개발 한 C libc 표준 라이브러리에서 콘솔 응용 프로그램을 만들기 위해 약 1400 개의 함수가 제안되었습니다.

성능면에서 코스모 폴리탄 glibc만큼 빠르게 작동하며 특히 Musl 및 Newlib보다 앞서 있습니다., Cosmopolitan은 glibc보다 코드 크기가 훨씬 작고 Musl 및 Newlib와 거의 일치합니다.

memcpy 및 strlen과 같이 자주 호출되는 함수를 최적화하기 위해 매크로 바인딩을 사용하여 함수를 호출하는 기술을 추가로 사용합니다. 여기서 컴파일러는 코드 실행과 관련된 CPU 레지스터에 대한 정보를 제공하여 리소스를 절약합니다. 가변 레지스터 만 저장하여 CPU 상태를 저장합니다.

프로그램을 만들려면 여러 파일을 포함합니다 (모든 리소스를 단일 파일에 연결). ZIP 파일 형식의 범용 실행 파일 형성이 지원됩니다. 특수 제작 됨 ( "unzip -v"명령으로 내용을 볼 수 있지만 파일은 직접 실행할 수 있습니다.)

제안 된 libc 및 런타임과의 정적 링크로 얻은 파일은 모든 Linux 배포, macOS, Windows, FreeBSD 및 OpenBSD에서 실행하는 데 적합합니다. 프로젝트 코드는 ISC 라이선스 (MIT / BSD의 단순화 된 버전)에 따라 배포됩니다.

최종적으로 그것에 대해 더 많이 알고 싶다면 이 라이브러리에 대한 자세한 내용과 문서를 확인할 수 있습니다. 다음 링크에서.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자: AB Internet Networks 2008 SL
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.