Skip to main content

Dropping Solidity and Yul Moving to a Community Open IR

· 4 min read
axe
Creator of Ora

We're removing all Solidity compiler (solc) dependencies and dropping the Yul backend from Ora.
Instead, we're building a community-driven, open intermediate representation (IR) that is not tied to any single language or toolchain.

Why We're Dropping Solc and Yul​

Ora originally used Solc to produce Yul and then emitted EVM bytecode from there.
This was fine for bootstrapping, but it has now become a structural blocker.

Here’s why:

1. Solc locks us into its release cycle​

We can’t iterate faster than Solidity’s compiler does. Every update, feature, or bug fix drags in Solc's entire dependency chain.

2. Build complexity is out of control​

Solc brings heavy C++ dependencies that slow down builds, CI pipelines, and contributor onboarding.
Ora aims to be fast, lightweight, and portable — Solc is the opposite.

3. Yul isn’t a good fit for Ora​

Yul is tightly coupled to Solidity’s semantics and memory model.
Ora’s:

  • type system
  • control flow
  • memory regions
  • safety guarantees
  • verification model

do not map cleanly to Yul.
Every abstraction leak becomes a codegen hack.

4. No room for innovation​

With Solc/Yul, language evolution is bottlenecked by someone else’s constraints.
We want to:

  • design better IR passes,
  • explore new verification workflows,
  • target multiple VMs (EVM, eWASM, FuelVM, etc.),
  • and push compilation research forward.

Yul doesn’t allow that.

The old backend has been moved to _targets_backup/ for reference, but it's no longer part of the build.


What We're Building Instead​

A community open IR designed for modern smart-contract languages.

This IR:

  • Is multi-language — not specific to Ora or Solidity
  • Is multi-backend — EVM first, but not EVM-only
  • Avoids legacy baggage — no solc, no yul, no forced semantics
  • Enables real innovation — better optimizations, better safety, better analysis
  • Has a clean implementation — minimal dependencies, easy to extend
  • Is open to the ecosystem — other language developers can adopt it

Think of it as:​

A common low-level platform for smart contract compilers — the LLVM of Web3, but simpler and EVM-aware.


What This Means for Ora Users​

✔ Cleaner builds​

The project becomes dramatically easier to build and contribute to.
No more C++ dependency chains.

✔ Better optimizations​

A purpose-built IR means we can implement optimizations that were impossible in Yul.

✔ Faster iteration​

We control our pipeline top to bottom — no external release cycles.

✔ Long-term stability​

We’re no longer tied to the internal design decisions of another language.


What This Means for the Community​

✔ Open compiler infrastructure​

Anyone can build on this IR — new languages, research projects, and experimental runtimes.

✔ A possible standard​

This can become the de-facto IR for next-generation EVM languages.

✔ A platform for innovation​

We eliminate the “Solidity monopoly” on compiler infrastructure.
If the community wants to build something better than Yul, this is it.


Technical Changes Already Done​

  • Removed all Solc dependencies from build.zig
  • Deleted the Yul backend (preserved in _targets_backup/)
  • Cleaned up all MLIR bindings referencing Yul
  • Removed CLI flags that referenced Yul or Solc (--target, --save-*)

What’s Next​

We’re actively working on:

  • Designing the IR (with community feedback)
  • Implementing MLIR lowering into the new IR
  • Building the EVM codegen backend from scratch
  • Providing documentation so other languages can target the IR

The compiler still supports everything up to code generation:

  • lexing
  • parsing
  • type checking
  • semantic analysis
  • MLIR generation

Codegen will return once the new IR is stable.


Get Involved​

If you care about:

  • IR design
  • compiler pipelines
  • MLIR
  • verification
  • multi-language targets
  • building a new generation of low-level smart contract tooling

The repo is open.
This is not an Ora-only initiative — it’s a community IR project.

Let’s build open, reusable compiler infrastructure for Web3 instead of inheriting the limitations of the past.