Gleam Solc

A Gleam library for compiling Solidity contracts, providing type-safe bindings for the Solidity compiler solc with full support for modern Solidity features.

TestsGleamJavaScript

๐ŸŽฏ Features

๐Ÿš€ Quick Start

Add to your gleam.toml:

[dependencies]
solc = { git = "https://github.com/pxlvre/gleam_solc" }

Basic usage:

import gleam/option.{Some}
import solc

pub fn main() {
  // Load Solidity compiler
  use solc_wrapper <- promise.try_await(solc.load_solc("./solc-v0.8.19.js", Some("0.8.19")))
  
  // Compile a simple contract
  let source = "
pragma solidity ^0.8.0;
contract HelloWorld {
    string public message = \"Hello, World!\";
}
"
  
  case solc.compile_simple(solc_wrapper, "HelloWorld", source) {
    Ok(output) -> io.println("Compilation successful!")
    Error(err) -> io.println("Compilation failed")
  }
}

๐Ÿ“– Documentation

๐Ÿ—๏ธ Architecture

src/
โ”œโ”€โ”€ solc.gleam              # Main API module (171 lines)
โ”œโ”€โ”€ solc/
โ”‚   โ”œโ”€โ”€ types.gleam         # Core type definitions (175 lines)
โ”‚   โ”œโ”€โ”€ download.gleam      # Version download functionality (99 lines)
โ”‚   โ”œโ”€โ”€ wrapper.gleam       # WASM module wrapper (125 lines)
โ”‚   โ””โ”€โ”€ ffi.gleam          # FFI bindings (28 lines)
โ”œโ”€โ”€ ffi/
โ”‚   โ””โ”€โ”€ solc_ffi.mjs       # JavaScript FFI functions (130 lines)
โ””โ”€โ”€ test/
    โ”œโ”€โ”€ unit_test.gleam           # Basic functionality tests
    โ”œโ”€โ”€ integration_test.gleam     # Integration scenarios
    โ””โ”€โ”€ end_to_end_test.gleam     # Complete workflow tests

Total: 728 lines of production code with 30 comprehensive tests

๐Ÿงช Testing

The library includes comprehensive test coverage:

# Run all tests
gleam test --target javascript

# Current status: 30 tests passing

Test categories:

๐Ÿ› ๏ธ Development

# Setup
cd gleam_solc
gleam deps download

# Run tests
gleam test --target javascript

# Build for JavaScript
gleam build --target javascript

๐Ÿ”— Inspiration

This project was inspired by:


Built by pxlvre.eth with โค๏ธ using Gleam and the Solidity compiler.