Environnement d'exécution

Un environnement d'exécution ou runtime est un logiciel responsable de l'exécution des programmes informatiques écrits dans un langage de programmation donné. Un runtime offre des services d'exécution de programmes tels que les entrées-sorties, l'arrêt des processus, l'utilisation des services du système d'exploitation, le traitement des erreurs de calcul, la génération d'événements, l'utilisation de services offerts dans un autre langage de programmation, le débogage, le profilage et le ramasse-miette.

Contrairement à un logiciel de développement permettant de programmer et développer son application, un runtime ne permet que l'exécution d'un programme. Un runtime peut être vu comme une machine virtuelle : de la même manière qu'un code natif est exécuté par le processeur, un code objet est exécuté par le runtime. Le runtime sert alors à exécuter du code objet en mettant le code natif ad hoc à disposition du processeur pour exécution.

La définition est informelle, par exemple le livre IWarp anatomy définit un runtime comme suit : .

Technique 
Un runtime met en œuvre un langage de programmation en permettant l'exécution des programmes écrits dans ce langage. Il offre des services tels que les entrées-sorties, l'arrêt des processus, l'utilisation des services du système d'exploitation, le traitement des erreurs de calcul, la génération d'événements, l'utilisation de services offerts dans un autre langage de programmation, le débogage, le profilage et le ramasse-miettes.

Un des premiers langages de programmation fonctionnant avec un runtime a été PL/1 en 1972. Lors de la compilation du programme, les instructions simples en langage PL/1 étaient traduites en les instructions correspondantes en langage machine, tandis que les instructions complexes étaient traduites en des utilisations des fonctions du runtime. Cette construction permettait de diminuer la taille du programme en langage machine.

Langages interprétés 
Le runtime est l'interpréteur : il interprète le code source, manipule les variables, réserve de la mémoire et prend en charge les erreurs d'exécution.

Langages compilés 
Les limites du runtime sont moins nettes : le code est exécuté directement par le processeur ; cependant ce code peut parfois avoir besoin de certaines fonctionnalités mises à disposition par le runtime, par exemple la création d'objets, le contrôle des types et le ramasse-miettes des langages de programmation orientés objet.

Exemples 
Traditionnellement différents langages de programmation utilisent différents runtimes, par exemple la bibliothèque standard du C, l'environnement d'exécution Java, et le Common Language Runtime. Le runtime peut être accompagné d'une bibliothèque standard à disposition du programmeur. Le runtime met en œuvre les fonctionnalités élémentaires du langage, tandis que la bibliothèque standard est typiquement écrite dans le langage lui-même.

La bibliothèque standard du C est un runtime normalisé par ANSI et largement inspiré du système d'exploitation Unix. Avant la normalisation chaque compilateur du langage C offrait sa propre bibliothèque de fonctions, et les programmes écrits pour un compilateur donné ne pouvait pas être compilé avec un autre compilateur, bien qu'il soit dans le même langage de programmation.

Le Common Language Runtime contrôle l'exécution des programmes dans différents langages de programmation et fournit des services. Les services sont exposés de manière différente selon le langage de programmation concerné, cependant la palette de fonctions est la même dans tous les langages et ils sont mis en œuvre par le même logiciel: le Common Language Runtime accompagné d'une bibliothèques de classes de plus de 2500 modules.

Dans les langages de programmation Lisp, Smalltalk, ML et Prolog, l'essentiel des fonctionnalités du langage sont offertes par le runtime accompagné d'une bibliothèque standard à disposition du programmeur.

Notes et références

Voir aussi 
 JRE (Java Runtime Environment)
 Chez Microsoft
 CLR (Common Language Runtime) dans Microsoft .NET
  csrss.exe (Client/Server Runtime Server Subsystem)
 XULRunner : Environnement d’exécution pour XUL

Terminologie de l'informatique
Moteur d'exécution

he:סיבוכיות זמן
ja:ランタイムライブラリ
ko:런타임 라이브러리