Введение

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