런타임 라이브러리

런타임 라이브러리(runtime library)는 런타임 환경의 몇몇 행동들을 유발하기 위해서 컴파일러에 의해 사용되는 저수준 루틴들의 집합이다. 이것은 런타임 라이브러리로의 호출을 컴파일된 실행 바이너리에 삽입함으로써 가능해 진다. 런타임 환경은 실행 모델, 빌트인 함수들 그리고 프로그래밍 언어의 다른 기본 행동들을 구현한다. 이 프로그램의 실행 기간 동안 (런타임) 이러한 런타임 라이브러리에서의 호출의 실행은 실행가능한 바이너리와 런타임 환경 사이의 통신을 유발한다. 런타임 라이브러리는 메모리 관리 또는 예외 처리를 위해 종종 빌트인 함수들을 포함한다. 그러므로 런타임 라이브러리는 항상 특정한 플랫폼과 컴파일러에 의존적이다.

런타임 라이브러리는 런타임 환경의 행동의 한 부분을 구현하지만, 사용 가능한 호출의 코드를 읽는다면 일반적으로 단지 간단한 패키지 정보인 얇은 래퍼일 뿐이고 런타임 환경이나 운영 체제에 이것을 보낸다. 그러나 가끔 런타임 라이브러리라는 용어는 런타임 환경의 코드 자체를 포함하며, 심지어 라이브러리 호출을 통해 직접적으로 도달할 수 없는 코드를 포함하기도 한다.

예를 들어 오직 런타임 시에 수행될 수 있는 몇몇 언어 특징들은 런타임 환경에서 구현되고 런타임 라이브러리 API를 통해서 유발된다. 이것들로는 몇몇 로직 에러, 배열 경계 검사, 동적 타입 체킹, 예외 처리 그리고 디버깅 기능 등이 있다. 비록 개발 기간 동안 정교한 컴파일-타임 검사와 테스팅이 수행된다고 하더라도 이러한 이유로 인해서 몇몇 프로그래밍 버그들은 프로그램이 실제 환경에서 실제 데이터로 테스트될 때까지 발견되지 않는다.

다른 예시로서, 런타임 라이브러리는 컴파일 기간 동안 CPU에 의해 직접적으로 지원되지 않는 산술 연산의 구현이나, 다양한 컴파일러 동작과 지시자들의 구현 같이 자신의 인라이닝을 위해서 너무 복잡한 빌트인된 저수준 동작들의 코드를 포함할 수 있다.

런타임 라이브러리라는 개념을 일반적인 애플리케이션 프로그래머에 의해 개발되거나 써드 파티에 의해 제공되는 프로그램 라이브러리, 그리고 런타임에 링크되는 동적 라이브러리와 혼동하면 안된다. 예를 들면 C는 단지 최소한의 런타임 라이브러리를 요구하지만(주로 Crt0로 불리는), 각 구현에 의해 제공되어야 하는 커다란 표준 라이브러리(C 표준 라이브러리)를 정의한다.

각주

외부 링크 
 What is the C runtime library? (StackExchange)

라이브러리
런타임 시스템