DBDelve
Dive deep into your data. A fast, native, multi-engine database client written in Rust. Free and open source, no telemetry.
翻訳待ち
One binary that compiles, tests, deploys and verifies Solidity and runs Foundry projects as they are. Editing a test and rerunning the suite takes 1 s where Foundry takes 56 s.
翻訳待ち
開発ツールRust · SolidityGitHub @backmeupplzオンライン所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
Compile, test, deploy and verify Solidity in seconds: one binary, no setup, Foundry projects as they are
翻訳待ち
Loading the full README.
Read the full README ↗plain is a faster alternative to Foundry and Hardhat for Solidity development: one ~9 MB binary that compiles, tests, deploys, verifies and upgrades EVM smart contracts. There's no config, no npm install and no forge install, your Foundry project works as it is, and the loop you run all day takes seconds instead of minutes.
curl -fsSL https://getplain.org/install | sh # macOS and Linux
plain init # src/Counter.sol + test/Counter.t.sol
plain test --watch # compile + run every test, again on every save
plain account new deployer # a deployer key, encrypted with your password
plain deploy Counter --network base-sepolia --account deployer --broadcast # deploy, then verify on explorers
plain # or do all of it from a menu
plain is also on Homebrew (brew install backmeupplz/tap/plain), npm, mise, apt, dnf, the AUR, Nix and crates.io, as the install guide shows, and cargo install --git https://github.com/backmeupplz/plain builds it from source. The docs walk through new and existing projects, testing and deploying.
| On real projects (details) | Foundry | Hardhat 3 | plain |
|---|---|---|---|
| Edit a test, rerun the suite (300 tests, via-IR) | 56 s | 61 s | 0.99 s |
| Edit a contract, rerun the suite | 103 s | 109 s | 2.1 s |
| Build from scratch | 116 s | 115 s | 15 s |
| Deploy 40 transactions over an RPC 80 ms away | 8.0 s | — | 2.0 s |
src/ (or contracts/), test/ and script/, picks and downloads the right solc from your pragmas (it reuses Foundry's solc cache if present), and compiles in parallel jobs. Results are cached by content hash, per project and in ~/.plain/cache, which every checkout shares (git worktrees, fresh clones).*.t.sol, setUp, test*, fuzzing, invariants, cheatcodes) on revm, in parallel. It also runs test/**/*.test.ts files against a fresh in-process chain per file. A suite whose compiled code and inputs haven't changed reuses its last results.vm.startBroadcast) or a single contract, optionally behind an OpenZeppelin proxy. It always simulates first, against a fork of the target network, then signs and sends when you add --broadcast, and verifies every contract it created on Sourcify, Etherscan and the chain's Blockscout. Keys stay in encrypted keystores (plain account, Foundry's work too).plain upgrade checks that the new implementation keeps the proxy's storage layout, then deploys it and points the proxy at it.plain fmt lays out src/, test/ and script/ exactly as forge fmt 1.7.1 does, byte for byte and with foundry.toml's [fmt] settings, in about a third of its time; plain fmt --check is the CI gate.plain with no arguments opens a menu for all of the above that prints every command it runs.base, base-sepolia, linea, 8453, ...), or a URL.forge-std is built into the binary, so import {Test} from "forge-std/Test.sol"; works without installing anything. lib/ dependencies, remappings.txt and node_modules (@openzeppelin/...) resolve automatically.foundry.toml [profile.default] is read, including solc version, optimizer, via_ir, remappings, compiler profiles and restrictions, fuzz/invariant runs, isolate, gas_limit, libraries and rpc_endpoints.plain does the same jobs as Foundry and Hardhat, and it is built to make the edit-and-test loop and CI fast. It runs Foundry projects as they are, with forge-std tests, cheatcodes, foundry.toml, lib/ and remappings, so trying it doesn't mean migrating. solc is the same, and what plain deploy sends is byte for byte what solc produces; the time saved comes from compiling less and not rerunning what hasn't changed (see where the speed comes from).
cast or chisel, or a cheatcode plain doesn't have yet (they fail with unsupported cheatcode), and it has a far larger community and a longer track record. The two can share a project: plain writes only to .plain/, so forge keeps working next to it.contracts/, imports from node_modules) and runs Solidity tests and test/**/*.test.ts files against its own chain, but tests written for Hardhat's own runner and its plugins stay with Hardhat. If your project leans on Hardhat's plugins or its own test runner, Hardhat is the better fit.This is the beginning of the README. Read the rest at the original. Read the full README ↗