Skip to content

Commit c79f802

Browse files
committed
add blog post
1 parent fe0c6ca commit c79f802

File tree

1 file changed

+149
-0
lines changed

1 file changed

+149
-0
lines changed
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
---
2+
slug: dropping-solc-and-yul
3+
title: Dropping Solidity and Yul: Moving to a Community Open IR
4+
authors: [axe]
5+
tags: [announcement, compiler, architecture]
6+
---
7+
8+
We're removing all Solidity compiler (`solc`) dependencies and dropping the Yul backend from Ora.
9+
Instead, we're building a **community-driven, open intermediate representation (IR)** that is not tied to any single language or toolchain.
10+
11+
<!-- truncate -->
12+
13+
## Why We're Dropping Solc and Yul
14+
15+
Ora originally used Solc to produce Yul and then emitted EVM bytecode from there.
16+
This was fine for bootstrapping, but it has now become a structural blocker.
17+
18+
Here’s why:
19+
20+
### 1. Solc locks us into its release cycle
21+
We can’t iterate faster than Solidity’s compiler does. Every update, feature, or bug fix drags in Solc's entire dependency chain.
22+
23+
### 2. Build complexity is out of control
24+
Solc brings heavy C++ dependencies that slow down builds, CI pipelines, and contributor onboarding.
25+
Ora aims to be **fast, lightweight, and portable** — Solc is the opposite.
26+
27+
### 3. Yul isn’t a good fit for Ora
28+
Yul is tightly coupled to Solidity’s semantics and memory model.
29+
Ora’s:
30+
31+
- type system
32+
- control flow
33+
- memory regions
34+
- safety guarantees
35+
- verification model
36+
37+
do **not** map cleanly to Yul.
38+
Every abstraction leak becomes a codegen hack.
39+
40+
### 4. No room for innovation
41+
With Solc/Yul, language evolution is bottlenecked by someone else’s constraints.
42+
We want to:
43+
44+
- design better IR passes,
45+
- explore new verification workflows,
46+
- target multiple VMs (EVM, eWASM, FuelVM, etc.),
47+
- and push compilation research forward.
48+
49+
Yul doesn’t allow that.
50+
51+
The old backend has been moved to `_targets_backup/` for reference, but it's no longer part of the build.
52+
53+
---
54+
55+
## What We're Building Instead
56+
57+
A **community open IR** designed for modern smart-contract languages.
58+
59+
This IR:
60+
61+
- **Is multi-language** — not specific to Ora or Solidity
62+
- **Is multi-backend** — EVM first, but not EVM-only
63+
- **Avoids legacy baggage** — no solc, no yul, no forced semantics
64+
- **Enables real innovation** — better optimizations, better safety, better analysis
65+
- **Has a clean implementation** — minimal dependencies, easy to extend
66+
- **Is open to the ecosystem** — other language developers can adopt it
67+
68+
### Think of it as:
69+
A common low-level platform for smart contract compilers — the LLVM of Web3, but simpler and EVM-aware.
70+
71+
---
72+
73+
## What This Means for Ora Users
74+
75+
### ✔ Cleaner builds
76+
The project becomes dramatically easier to build and contribute to.
77+
No more C++ dependency chains.
78+
79+
### ✔ Better optimizations
80+
A purpose-built IR means we can implement optimizations that were impossible in Yul.
81+
82+
### ✔ Faster iteration
83+
We control our pipeline top to bottom — no external release cycles.
84+
85+
### ✔ Long-term stability
86+
We’re no longer tied to the internal design decisions of another language.
87+
88+
---
89+
90+
## What This Means for the Community
91+
92+
### ✔ Open compiler infrastructure
93+
Anyone can build on this IR — new languages, research projects, and experimental runtimes.
94+
95+
### ✔ A possible standard
96+
This can become the de-facto IR for next-generation EVM languages.
97+
98+
### ✔ A platform for innovation
99+
We eliminate the “Solidity monopoly” on compiler infrastructure.
100+
If the community wants to build something better than Yul, this is it.
101+
102+
---
103+
104+
## Technical Changes Already Done
105+
106+
- Removed all Solc dependencies from `build.zig`
107+
- Deleted the Yul backend (preserved in `_targets_backup/`)
108+
- Cleaned up all MLIR bindings referencing Yul
109+
- Removed CLI flags that referenced Yul or Solc (`--target`, `--save-*`)
110+
111+
---
112+
113+
## What’s Next
114+
115+
We’re actively working on:
116+
117+
- Designing the IR (with community feedback)
118+
- Implementing MLIR lowering into the new IR
119+
- Building the EVM codegen backend from scratch
120+
- Providing documentation so other languages can target the IR
121+
122+
The compiler still supports everything up to code generation:
123+
- lexing
124+
- parsing
125+
- type checking
126+
- semantic analysis
127+
- MLIR generation
128+
129+
Codegen will return once the new IR is stable.
130+
131+
---
132+
133+
## Get Involved
134+
135+
If you care about:
136+
137+
- IR design
138+
- compiler pipelines
139+
- MLIR
140+
- verification
141+
- multi-language targets
142+
- building a new generation of low-level smart contract tooling
143+
144+
The repo is open.
145+
This is not an Ora-only initiative — it’s a community IR project.
146+
147+
Let’s build open, reusable compiler infrastructure for Web3 instead of inheriting the limitations of the past.
148+
149+
---

0 commit comments

Comments
 (0)