Běhová knihovna

Běhová knihovna (anglicky runtime library) je v informatice speciální knihovna používaná kompilátorem k implementování specifických funkcí, zabudovaných přímo v programovacím jazyce, za běhu programu (odtud runtime). Nejčastěji obsahuje funkce používané pro obsluhu standardního vstupu a výstupu z programu nebo správu paměti přidělované operačním systémem.

Charakteristika

V okamžiku kdy je kompilátorem zdrojový kód programu překládán do příslušného cílového jazyka by mohlo dojít k extrémnímu nárůstu počtu řádků zdrojového kódu v případě, že by každý příkaz či každé volání předdefinované funkce v původním programu způsobilo vložení celého příslušného podprogramu v cílovém jazyce. Proto kompilátor, než aby vkládal duplicitní řádky kódu, využívá funkce uložené v běhové knihovně, které nejsou programátorovi běžně nedostupné a jsou závislé právě na daném kompilátoru. V závislosti na tvůrci kompilátoru pak může nastat situace, kdy běhová knihovna obsahuje také standardní knihovnu příslušného kompilátoru nebo naopak je běhová knihovna vložena do standardní knihovny.

Také některé funkce, které lze provádět pouze za běhu programu (nebo je jejich užití za běhu účinnější a přesnější) jsou implementovány v běhové knihovně, například: některé logické chyby, kontrola překročení hranice alokovaného pole, dynamická typová kontrola, manipulace s výjimkami a případně i ladící mechanismy. To je důvodem, proč jsou některé chyby, vytvořené při kódování, odhaleny, až pří testování v reálném prostředí při práci s reálnými daty i přesto, že došlo k sofistikované kontrole již v době kompilace i testování před vydáním programu. V tomto případě je uživateli zobrazeno nežádoucí běhové chybové hlášení.

Běhová knihovna nejčastěji realizuje většinu svých operací pomocí přístupu k operačnímu systému. Celá řada programovacích jazyků má zabudované funkce, které nemusí být nutně realizovány kompilátorem, ale mohou být vloženy do běhové knihovny. Takže hranice mezi běhovou a standardní knihovnou je silně závislá na tvůrci kompilátoru, ale vždy je nutné pamatovat na to, že běhová knihovna je závislá jak na kompilátoru tak také na počítačové platformě (hardware, operační systém...).

Koncepce běhové knihovny by se neměla zaměňovat s koncepcí běžně naprogramovaných knihoven (např. knihovny vytvořené programátorem aplikace, knihovny třetích stran či dynamické knihovny), tedy knihoven přilinkovaných za běhu programu. Například programovací jazyk C využívá pouze miniaturní běhovou knihovnu (obvykle se nazývá crt0), ale definuje velkou standardní knihovnu (standardní knihovna jazyka C), která musí být přidána ke každé implementaci.

Reference

V tomto článku byl použit překlad textu z článku Runtime library na anglické Wikipedii.