> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Runtimes

> Comment Square Cloud compile et exécute votre code : détection du langage, résolution des dépendances, conteneurs isolés et outillage intégré à chaque image de runtime.

Un **runtime** sur Square Cloud est l'environnement complet et isolé dans lequel votre application s'exécute : l'interpréteur du langage ou la machine virtuelle, les bibliothèques système auxquelles elle est liée, l'outillage qu'elle peut invoquer, et la frontière de sécurité qui la maintient séparée de toutes les autres applications de l'hôte.

Vous ne construisez ni ne maintenez jamais cet environnement. Vous livrez votre code source et un petit [fichier de configuration](/fr/getting-started/config-file) ; Square Cloud détecte le langage, résout vos dépendances, provisionne un conteneur isolé et l'exécute. Le même pipeline alimente les bots Discord/WhatsApp/Telegram, les sites web et les API, les workers en arrière-plan et les services de longue durée, sur la même infrastructure rapide et durcie.

## Langages pris en charge

<CardGroup cols={3}>
  <Card title="JavaScript" icon="node-js" href="../articles/getting-started-with-nodejs" />

  <Card title="Python" icon="python" href="../articles/getting-started-with-python" />

  <Card title="Java" icon="java" href="../articles/getting-started-with-java" />

  <Card title="Rust" icon="rust" href="../articles/getting-started-with-rust" />

  <Card title="Elixir" icon="droplet" href="../articles/getting-started-with-elixir" />

  <Card title="PHP" icon="php" href="../articles/getting-started-with-php" />

  <Card title="Go" icon="golang" href="../articles/getting-started-with-go" />

  <Card title="C#" icon="c" href="../articles/getting-started-with-csharp" />

  <Card title="Ruby" icon="gem" href="../articles/getting-started-with-ruby" />
</CardGroup>

<Info>
  Au-delà des langages ci-dessus, la plupart des autres stacks et bibliothèques fonctionnent d'emblée. Les images de runtime sont conçues pour être permissives : si votre langage s'installe sous Linux, il fonctionne très probablement sur Square Cloud.
</Info>

## Versions

Chaque runtime propose deux canaux de mise à jour, sélectionnables via le champ `VERSION` de votre fichier de configuration :

* **`recommended`** — la version que nous durcissons et exécutons en production pour la majorité des applications. Choisissez-la sauf si vous avez une raison spécifique de ne pas le faire.
* **`latest`** — la version la plus récente, pour les équipes qui ont besoin d'une fonctionnalité du langage tout juste publiée.

Vous pouvez également épingler une version exacte pour une reproductibilité totale entre les déploiements.

| Langage            | `recommended` | `latest` |
| ------------------ | ------------- | -------- |
| Node.js \[JS & TS] | 24.15.0       | 26.1.0   |
| Python             | 3.13.13       | 3.14.5   |
| Java               | JDK 25        | JDK 25   |
| Elixir             | 1.19.5        | 1.19.5   |
| Rust               | 1.95.0        | 1.95.0   |
| Ruby               | 4.0.4         | 4.0.4    |
| PHP                | 8.5.6         | 8.5.6    |
| Go                 | 1.26.3        | 1.26.3   |
| .NET/C#            | 10.0.8        | 10.0.8   |

<Tip>Épingler `recommended` vous garantit des mises à jour de correctifs automatiques et testées, sans changements cassants inattendus. Consultez la référence du [fichier de configuration](/fr/getting-started/config-file) pour les champs `RUNTIME` et `VERSION`.</Tip>

## Comment fonctionne un déploiement

De l'envoi à un processus en cours d'exécution, chaque déploiement suit le même pipeline déterministe :

<Steps>
  <Step title="Détection du langage" icon="magnifying-glass">
    Square Cloud inspecte les fichiers de votre envoi et identifie la stack à partir des signaux déjà présents dans votre projet — un `package.json` pour Node.js, un `requirements.txt` ou un `pyproject.toml` pour Python, un `go.mod` pour Go, un `Gemfile` pour Ruby, et ainsi de suite. Vous pouvez surcharger la détection explicitement avec le champ `RUNTIME`.
  </Step>

  <Step title="Résolution des dépendances" icon="cube">
    Votre manifeste de dépendances est installé **côté serveur**, à l'intérieur de l'environnement de build. Vous n'envoyez jamais `node_modules`, un virtualenv ou des artefacts compilés dans le `.zip` — la plateforme les résout et les installe pour vous, gardant les envois légers et les builds reproductibles.
  </Step>

  <Step title="Provisionnement" icon="server">
    Un conteneur isolé est créé avec le CPU et la mémoire déclarés dans votre fichier de configuration. Les ressources sont appliquées au niveau du noyau, de sorte qu'une application ne peut jamais affamer une autre sur le même hôte.
  </Step>

  <Step title="Démarrage" icon="play">
    Le champ `MAIN` pointe vers votre fichier d'entrée et la plateforme le lance avec l'interpréteur approprié. Besoin d'une étape de build, d'un serveur statique ou d'une commande personnalisée ? Définissez `START` et elle s'exécute telle quelle.
  </Step>
</Steps>

## À l'intérieur de chaque image de runtime

Chaque image est superposée sur une base commune et auditée pour la sécurité, de sorte que l'environnement reste cohérent quel que soit le langage que vous déployez :

<CardGroup cols={2}>
  <Card title="Node.js 26 + outillage de build" icon="node-js">
    Chaque image intègre Node.js 26 aux côtés du langage principal. Les outils de build, les pipelines d'assets et les utilitaires basés sur JS sont toujours disponibles, quelle que soit votre stack.
  </Card>

  <Card title="ffmpeg & Chromium" icon="film">
    Le traitement multimédia (ffmpeg) et un navigateur headless (Chromium) sont préinstallés — prêts pour les bots multimédias, le web scraping et la génération de PDF ou de captures d'écran sans configuration supplémentaire.
  </Card>

  <Card title="Non privilégié par défaut" icon="shield-halved">
    Les applications s'exécutent en tant qu'utilisateur non-root à l'intérieur d'un conteneur isolé. Une dépendance compromise reste confinée — elle n'a aucun accès privilégié à l'hôte.
  </Card>

  <Card title="Sites statiques, sans runtime" icon="file-code">
    Pas besoin d'interpréteur ? Définissez `RUNTIME=static` pour servir directement un site HTML/CSS/JS simple, avec le même CDN et le même TLS que n'importe quelle autre application.
  </Card>
</CardGroup>

## Isolation et sécurité

Chaque application est un conteneur entièrement isolé avec des limites de CPU et de mémoire appliquées par le noyau — jamais un processus partagé. S'exécuter en mode non privilégié signifie qu'une application ne peut pas atteindre l'hôte ni ses voisines, et les plafonds de ressources garantissent qu'un pic dans un projet n'a aucun effet sur les performances d'un autre. C'est le même modèle qui permet à Square Cloud d'héberger des dizaines de milliers de charges de travail sur des clusters partagés sans qu'elles interfèrent les unes avec les autres.

## Étapes suivantes

<CardGroup cols={2}>
  <Card title="Fichier de configuration" icon="gear" href="/fr/getting-started/config-file">
    Maîtrisez `MAIN`, `START`, `RUNTIME`, `VERSION` et `MEMORY` — les champs qui contrôlent votre runtime.
  </Card>

  <Card title="Guides par langage" icon="graduation-cap" href="/fr/articles/getting-started-with-nodejs">
    Configuration pas à pas pour Node.js, Python, Go, Rust, Java et plus encore.
  </Card>
</CardGroup>
