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.
π― Features
- Type-Safe Compilation: Leveraging Gleamβs type system for safer Solidity compilation
- Multiple Inheritance Support: Full support for interfaces, abstract contracts, and implementation chains
- Comprehensive Error Handling: Detailed compilation error detection and reporting
- Modern Solidity: Support for Solidity 0.8+ with latest language features
- Promise-Based API: Async operations using JavaScript promises
- Version Management: Automatic downloading and caching of Solidity compiler versions
π 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
- API Documentation - Comprehensive API reference
- Usage Examples - Common patterns and use cases
- Type Definitions - Complete type system reference
ποΈ 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:
- Basic Tests (4) - Core functionality and type construction
- Integration Tests (18) - Real-world scenarios and complex contracts
- End-to-End Tests (8) - Complete compilation workflows
π οΈ 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:
- solc-js - Official JavaScript bindings
- Solidity Documentation - Compiler reference
Built by pxlvre.eth with β€οΈ using Gleam and the Solidity compiler.