Библиотека времени выполнения: назначение и особенности
Runtime library
Библиотека времени выполнения: что это такое? Определение, функции и роль в компиляции программ. Зависимость от платформы и ОС. Объяснение простыми словами.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
В компьютерном программировании библиотека времени выполнения – это набор низкоуровневых подпрограмм, используемых компилятором для реализации определенных возможностей среды выполнения путем вставки вызовов в библиотеку времени выполнения в скомпилированный исполняемый двоичный файл. Среда выполнения реализует модель исполнения, встроенные функции и другие фундаментальные механизмы языка программирования. Поэтому библиотека времени выполнения всегда специфична для платформы и компилятора. Библиотека времени выполнения может реализовывать часть функциональности среды выполнения, но при изучении кода доступных вызовов обычно обнаруживается, что это лишь тонкие обертки, которые просто упаковывают данные и передают их в среду выполнения или операционную систему. Однако иногда термин "библиотека времени выполнения" используется для обозначения кода самой среды выполнения, даже если к большей части этого кода нельзя получить прямой доступ через вызовы библиотеки. Например, некоторые языковые возможности, которые могут быть реализованы только (или более эффективно или точно) во время выполнения, реализуются в среде выполнения и вызываются через API библиотеки времени выполнения, такие как обнаружение некоторых логических ошибок, проверка границ массивов, динамическая проверка типов, обработка исключений и, возможно, функциональность отладки. По этой причине некоторые ошибки программирования обнаруживаются только при тестировании программы в "боевой" среде с реальными данными, несмотря на тщательную проверку и тестирование, выполняемые во время разработки. В качестве другого примера, библиотека времени выполнения может содержать код встроенных низкоуровневых операций, слишком сложных для встраивания во время компиляции, например, реализации арифметических операций, не поддерживаемых непосредственно целевым процессором, или различные специфические для компилятора операции и директивы. Концепцию библиотеки времени выполнения не следует путать с обычной программой библиотекой, созданной разработчиком приложения или поставляемой сторонним производителем, или с динамической библиотекой, то есть программой библиотекой, подключаемой во время выполнения. Например, язык программирования C требует лишь минимальную библиотеку времени выполнения (обычно называемую crt0), но определяет обширную стандартную библиотеку (называемую стандартной библиотекой C), которую должна предоставлять каждая реализация.
In computer programming, a runtime library is a set of low level routines used by a compiler to invoke some of the behaviors of a runtime environment, by inserting calls to the runtime library into compiled executable binary. The runtime environment implements the execution model, built in functions, and other fundamental behaviors of a programming language. Therefore, a runtime library is always specific to the platform and compiler. The runtime library may implement a portion of the runtime environment's behavior, but if one reads the code of the calls available, they are typically only thin wrappers that simply package information, and send it to the runtime environment or operating system. However, sometimes the term runtime library is meant to include the code of the runtime environment itself, even though much of that code cannot be directly reached via a library call. For example, some language features that can be performed only (or are more efficient or accurate) at runtime are implemented in the runtime environment and may be invoked via the runtime library API, e. g. some logic errors, array bounds checking, dynamic type checking, exception handling, and possibly debugging functionality. For this reason, some programming bugs are not discovered until the program is tested in a "live" environment with real data, despite sophisticated compile time checking and testing performed during development. As another example, a runtime library may contain code of built in low level operations too complicated for their inlining during compilation, such as implementations of arithmetic operations not directly supported by the targeted CPU, or various miscellaneous compiler specific operations and directives. The concept of a runtime library should not be confused with an ordinary program library like that created by an application programmer or delivered by a third party, nor with a dynamic library, meaning a program library linked at run time. For example, the C programming language requires only a minimal runtime library (commonly called crt0), but defines a large standard library (called C standard library) that has to be provided by each implementation.