> ## 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

> Come Square Cloud compila ed esegue il tuo codice: rilevamento del linguaggio, risoluzione delle dipendenze, container isolati e gli strumenti inclusi in ogni immagine runtime.

Un **runtime** su Square Cloud è l'ambiente completo e isolato all'interno del quale viene eseguita la tua applicazione: l'interprete del linguaggio o la macchina virtuale, le librerie di sistema a cui si collega, gli strumenti che può richiamare e il confine di sicurezza che la mantiene separata da ogni altra applicazione sull'host.

Non compili né gestisci mai quell'ambiente. Tu carichi il tuo codice sorgente e un piccolo [file di configurazione](/it/getting-started/config-file); Square Cloud rileva il linguaggio, risolve le tue dipendenze, provisiona un container isolato e lo esegue. La stessa pipeline alimenta bot Discord/WhatsApp/Telegram, siti web e API, worker in background e servizi a lunga esecuzione, sulla stessa infrastruttura veloce e rafforzata.

## Linguaggi supportati

<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>
  Oltre ai linguaggi elencati sopra, la maggior parte degli altri stack e librerie funziona già pronta all'uso. Le immagini runtime sono progettate per essere permissive: se il tuo linguaggio si installa su Linux, molto probabilmente funziona su Square Cloud.
</Info>

## Versioni

Ogni runtime offre due canali di aggiornamento, selezionabili tramite il campo `VERSION` nel tuo file di configurazione:

* **`recommended`** — la versione che rafforziamo ed eseguiamo in produzione per la maggior parte delle applicazioni. Scegli questa a meno che tu non abbia una ragione specifica per non farlo.
* **`latest`** — la release più recente, per i team che hanno bisogno di una funzionalità del linguaggio appena rilasciata.

Puoi anche fissare una versione esatta per la piena riproducibilità tra i deploy.

| Linguaggio         | `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>Fissare `recommended` ti garantisce aggiornamenti patch automatici e testati senza modifiche che introducono breaking change a sorpresa. Consulta il riferimento del [file di configurazione](/it/getting-started/config-file) per i campi `RUNTIME` e `VERSION`.</Tip>

## Come funziona un deploy

Dal caricamento a un processo attivo, ogni deploy attraversa la stessa pipeline deterministica:

<Steps>
  <Step title="Rilevamento del linguaggio" icon="magnifying-glass">
    Square Cloud ispeziona i file nel tuo caricamento e identifica lo stack dai segnali già presenti nel tuo progetto — un `package.json` per Node.js, un `requirements.txt` o `pyproject.toml` per Python, un `go.mod` per Go, un `Gemfile` per Ruby, e così via. Puoi forzare il rilevamento esplicitamente con il campo `RUNTIME`.
  </Step>

  <Step title="Risoluzione delle dipendenze" icon="cube">
    Il tuo manifest delle dipendenze viene installato **lato server**, all'interno dell'ambiente di build. Non carichi mai `node_modules`, un virtualenv o artefatti compilati all'interno dello `.zip` — la piattaforma li risolve e li installa per te, mantenendo i caricamenti piccoli e le build riproducibili.
  </Step>

  <Step title="Provisioning" icon="server">
    Viene creato un container isolato con la CPU e la memoria dichiarate nel tuo file di configurazione. Le risorse sono applicate a livello di kernel, quindi un'applicazione non può mai togliere risorse a un'altra sullo stesso host.
  </Step>

  <Step title="Avvio" icon="play">
    Il campo `MAIN` punta al tuo file di ingresso e la piattaforma lo avvia con l'interprete corretto. Hai bisogno di un passaggio di build, di un server statico o di un comando personalizzato? Imposta `START` e verrà eseguito così com'è.
  </Step>
</Steps>

## All'interno di ogni immagine runtime

Ogni immagine è costruita su una base comune e sottoposta ad audit di sicurezza, così l'ambiente è coerente indipendentemente dal linguaggio che effettui in deploy:

<CardGroup cols={2}>
  <Card title="Node.js 26 + strumenti di build" icon="node-js">
    Ogni immagine include Node.js 26 insieme al linguaggio principale. Strumenti di build basati su JS, pipeline di asset e utility sono sempre disponibili, qualunque sia il tuo stack.
  </Card>

  <Card title="ffmpeg & Chromium" icon="film">
    L'elaborazione multimediale (ffmpeg) e un browser headless (Chromium) sono preinstallati — pronti per bot multimediali, web scraping e generazione di PDF o screenshot senza configurazione aggiuntiva.
  </Card>

  <Card title="Senza privilegi per impostazione predefinita" icon="shield-halved">
    Le applicazioni vengono eseguite come utente non-root all'interno di un container isolato. Una dipendenza compromessa rimane confinata — non ha accesso privilegiato all'host.
  </Card>

  <Card title="Siti statici, nessun runtime" icon="file-code">
    Nessun interprete necessario? Imposta `RUNTIME=static` per servire direttamente un sito HTML/CSS/JS puro, con la stessa CDN e lo stesso TLS di qualsiasi altra applicazione.
  </Card>
</CardGroup>

## Isolamento e sicurezza

Ogni applicazione è un container completamente isolato con limiti di CPU e memoria applicati a livello di kernel — mai un processo condiviso. L'esecuzione senza privilegi significa che un'applicazione non può raggiungere l'host o i suoi vicini, e i limiti sulle risorse garantiscono che un picco in un progetto non abbia alcun effetto sulle prestazioni di un altro. Questo è lo stesso modello che consente a Square Cloud di ospitare decine di migliaia di carichi di lavoro su cluster condivisi senza che interferiscano tra loro.

## Prossimi passi

<CardGroup cols={2}>
  <Card title="File di configurazione" icon="gear" href="/it/getting-started/config-file">
    Padroneggia `MAIN`, `START`, `RUNTIME`, `VERSION` e `MEMORY` — i campi che controllano il tuo runtime.
  </Card>

  <Card title="Guide ai linguaggi" icon="graduation-cap" href="/it/articles/getting-started-with-nodejs">
    Configurazione passo passo per Node.js, Python, Go, Rust, Java e altro.
  </Card>
</CardGroup>
