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

# 运行时

> Square Cloud 如何构建并运行你的代码：语言检测、依赖解析、隔离容器，以及每个运行时镜像内置的工具链。

Square Cloud 上的**运行时**是应用运行所处的完整、隔离的环境：语言解释器或虚拟机、它所链接的系统库、它可以调用的工具，以及将它与主机上其他所有应用隔离开的安全边界。

你无需自行构建或维护该环境。你只需提交源代码和一个小小的[配置文件](/zh/getting-started/config-file)；Square Cloud 会检测语言、解析依赖、置备一个隔离容器并运行它。同一条流水线为 Discord/WhatsApp/Telegram 机器人、网站和 API、后台工作进程以及长期运行的服务提供支撑，全部运行在同样快速、经过加固的基础设施之上。

## 支持的语言

<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>
  除了上述语言之外，大多数其他技术栈和库都可以开箱即用地运行。运行时镜像被设计得十分宽松：如果你的语言能在 Linux 上安装，它几乎肯定能在 Square Cloud 上运行。
</Info>

## 版本

每个运行时都提供两个更新通道，可通过配置文件中的 `VERSION` 字段进行选择：

* **`recommended`** — 我们为绝大多数应用加固并在生产环境中运行的版本。除非有特定理由，否则请选择它。
* **`latest`** — 最新发布的版本，适合需要某个刚刚推出的语言特性的团队。

你也可以固定到某个精确版本，以在多次部署之间获得完全可复现性。

| 语言                 | `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>固定 `recommended` 可让你自动获得经过测试的补丁更新，而不会遭遇意外的破坏性变更。关于 `RUNTIME` 和 `VERSION` 字段，请参阅[配置文件](/zh/getting-started/config-file)参考。</Tip>

## deploy 的工作原理

从上传到进程上线，每一次 deploy 都会经过同一条确定性流水线：

<Steps>
  <Step title="语言检测" icon="magnifying-glass">
    Square Cloud 会检查你上传的文件，并根据项目中已存在的信号识别技术栈 —— Node.js 的 `package.json`、Python 的 `requirements.txt` 或 `pyproject.toml`、Go 的 `go.mod`、Ruby 的 `Gemfile` 等等。你可以通过 `RUNTIME` 字段显式覆盖检测结果。
  </Step>

  <Step title="依赖解析" icon="cube">
    你的依赖清单会在**服务端**、在构建环境内部被安装。你无需将 `node_modules`、虚拟环境或已编译产物打包进 `.zip` —— 平台会为你解析并安装它们，从而让上传保持精简、构建保持可复现。
  </Step>

  <Step title="置备" icon="server">
    平台会按照配置文件中声明的 CPU 和内存创建一个隔离容器。资源限制在内核层面强制执行，因此一个应用绝不会在同一主机上抢占另一个应用的资源。
  </Step>

  <Step title="启动" icon="play">
    `MAIN` 字段指向你的入口文件，平台会使用正确的解释器启动它。需要构建步骤、静态服务器或自定义命令？设置 `START`，它会被原样执行。
  </Step>
</Steps>

## 每个运行时镜像内部

每个镜像都层叠在一个通用的、经过安全审计的基础镜像之上，因此无论你部署哪种语言，环境都保持一致：

<CardGroup cols={2}>
  <Card title="Node.js 26 + 构建工具" icon="node-js">
    每个镜像都在主语言之外捆绑了 Node.js 26。无论你的技术栈是什么，基于 JS 的构建工具、资源流水线和实用工具始终可用。
  </Card>

  <Card title="ffmpeg 和 Chromium" icon="film">
    媒体处理工具（ffmpeg）和无头浏览器（Chromium）已预装 —— 无需额外配置即可用于媒体机器人、网页抓取，以及 PDF 或截图生成。
  </Card>

  <Card title="默认非特权" icon="shield-halved">
    应用以非 root 用户身份在隔离容器内运行。被入侵的依赖会被限制在容器内 —— 它对主机没有任何特权访问。
  </Card>

  <Card title="静态站点，无需运行时" icon="file-code">
    不需要解释器？设置 `RUNTIME=static` 即可直接提供纯 HTML/CSS/JS 站点，并享有与其他应用相同的 CDN 和 TLS。
  </Card>
</CardGroup>

## 隔离与安全

每个应用都是一个完全隔离的容器，具有内核强制执行的 CPU 和内存限制 —— 绝非共享进程。以非特权方式运行意味着应用无法触及主机或其邻居，而资源上限则保证某个项目的流量高峰不会影响另一个项目的性能。正是这一模型让 Square Cloud 能够在共享集群上托管数万个工作负载而彼此互不干扰。

## 后续步骤

<CardGroup cols={2}>
  <Card title="配置文件" icon="gear" href="/zh/getting-started/config-file">
    掌握 `MAIN`、`START`、`RUNTIME`、`VERSION` 和 `MEMORY` —— 这些字段控制着你的运行时。
  </Card>

  <Card title="语言指南" icon="graduation-cap" href="/zh/articles/getting-started-with-nodejs">
    Node.js、Python、Go、Rust、Java 等的分步设置。
  </Card>
</CardGroup>
