В компьютерном программировании библиотека времени выполнения представляет собой набор низкоуровневых процедур, используемых компилятором для вызова некоторых поведений среды выполнения путем вставки вызовов к библиотеке времени выполнения в скомпилированный исполняемый двоичный файл. Среда выполнения реализует модель выполнения , встроенные функции и другие фундаментальные поведения языка программирования . [1] Во время выполнения ( время выполнения ) этой компьютерной программы выполнение этих вызовов к библиотеке времени выполнения вызывает связь между исполняемым двоичным файлом и средой выполнения. Библиотека времени выполнения часто включает встроенные функции для управления памятью или обработки исключений . [2] Поэтому библиотека времени выполнения всегда специфична для платформы и компилятора.
Библиотека времени выполнения может реализовывать часть поведения среды выполнения, но если прочитать код доступных вызовов, то они, как правило, представляют собой лишь тонкие оболочки, которые просто упаковывают информацию и отправляют ее в среду выполнения или операционную систему. Однако иногда термин библиотека времени выполнения подразумевает включение кода самой среды выполнения, даже если большая часть этого кода не может быть напрямую получена через вызов библиотеки.
Например, некоторые функции языка, которые могут быть выполнены только (или более эффективны или точны) во время выполнения, реализованы в среде выполнения и могут быть вызваны через API библиотеки времени выполнения, например, некоторые логические ошибки, проверка границ массива , динамическая проверка типов, обработка исключений и, возможно, функциональность отладки. По этой причине некоторые ошибки программирования не обнаруживаются, пока программа не будет протестирована в «живой» среде с реальными данными, несмотря на сложную проверку во время компиляции и тестирование, выполняемое во время разработки.
В качестве другого примера библиотека времени выполнения может содержать код встроенных низкоуровневых операций, слишком сложных для их встраивания во время компиляции, например, реализации арифметических операций, напрямую не поддерживаемых целевым процессором, или различные различные операции и директивы, специфичные для компилятора. [2] [3]
Концепцию библиотеки времени выполнения не следует путать с обычной библиотекой программ , например, созданной прикладным программистом или предоставленной третьей стороной, или с динамической библиотекой , то есть библиотекой программ, связанной во время выполнения. Например, язык программирования C требует только минимальную библиотеку времени выполнения (обычно называемую crt0
), но определяет большую стандартную библиотеку (называемую стандартной библиотекой C ), которая должна предоставляться каждой реализацией. [1]