# Plutus Language Family

Out of the box, Orbis will support writing on-rollup smart contract scripts in Haskell using PlutusTx, Plutarch, and in Pluto. All these script languages will have a shared compilation pipeline that compiles to TinyRAM via UPLC.

PlutusTx and Plutarch are domain-specific languages embedded in Haskell (Haskell-EDSLs). Pluto is a language built from scratch and not embedded in another language. Pluto and Plutarch were created to address several performance issues involving the Haskell-to-Plutus code generation in PlutusTx. PlutusTx has several performance problems regarding the size of the generated code and the time and space required to execute the resulting code. In comparison, Pluto and Plutarch have shown improvements by orders of magnitude in all these metrics in porting programs from PlutusTx to Pluto or Plutarch.

Orbis Labs will provide SDKs that allow the off-rollup portions of a dapp that interact with the on-rollup contract to be written in various languages. Orbis will include SDKs for writing the off-rollup portions of a dapp in Haskell, TypeScript/JavaScript, and Python. Over time, off-chain dapp code development SDKs for more languages will be added.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.orbisprotocol.com/orbis/smart-contracts/plutus-language-family.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
