Getting an algorithm right is paramount. Yet it's rarely the bottleneck. Turning it into shippable code — a tested C library, a Python binding, a build system, packaging, and a public C API that Rust or C++ can also link — is the tedious, exacting work that repeats on every project.
just-makeit new scaffolds the whole thing in one command: core C library, thin
Python binding, CMake build system, and full test coverage — all passing before
you write a single line of your algorithm.
Try it now!
Click the badge to launch a pre-built sandbox in your browser — no install, no
compiler, no Docker required. You'll land in a GitHub Codespaces environment
with just-makeit installed, dozens of bundled examples already scaffolded and
compiled, and a terminal ready to go. Run an example end-to-end, browse the
generated C and Python source, or start a fresh project with
just-makeit new.
Quickstart
install-deps installs the build toolchain — cmake, a C compiler, and numpy —
into a Python venv (default /tmp/jm-venv, or pass your own path). Run
just-makeit install-deps --help for the full reference.
curl (auto-installs dependencies, creates and activates venv):
. <(curl -fsSL https://just-buildit.github.io/just-makeit/install.sh) [-- path]
pip:
pip install just-makeit && just-makeit install-deps [path]
uv:
uv tool install just-makeit && just-makeit install-deps [path]
Docker (no install needed):
docker run --rm -it ghcr.io/just-buildit/jm-examples-linux:latest
Quick examples
Simple standalone extension:
just-makeit new my_project --object engine --state gain:double:1.0
cd my_project && make && make test
Module subpackage — multiple types in one .so:
just-makeit new my_filters --module filter
cd my_filters
just-makeit object fir --module filter \
--state "coeffs:float[16]" --state "delay:float _Complex[16]" --state "gain:float:1.0"
just-makeit object biquad --module filter \
--arg-type float --return-type float \
--state "b0:double:1.0" --state "b1:double:0.0" --state "a1:double:0.0"
make && make test
from my_filters.filter import Fir, Biquad # one .so, one import
What you get
my_project/
├── native/
│ ├── inc/engine/engine_core.h # public C API + inline step()
│ ├── src/engine/
│ │ ├── engine_core.c # block processor + lifecycle
│ │ └── engine_ext.c # thin Python binding
│ └── tests/test_engine_core.c # CTest
├── src/my_project/
│ ├── engine.pyi # type stub
│ └── tests/test_engine.py # pytest / unittest
├── cmake/my-project.pc.in # pkg-config template
├── CMakeLists.txt
├── Makefile
├── just-makeit.toml
└── bootstrap.toml # tool + system-dep manifest (jbx install-deps)
C API
engine_state_t *engine_create(double gain);
void engine_destroy(engine_state_t *state);
void engine_reset(engine_state_t *state);
static inline float _Complex
engine_step(const engine_state_t *state, float _Complex x);
void engine_steps(engine_state_t *state,
const float _Complex *in, float _Complex *out, size_t n);
double engine_get_gain(const engine_state_t *state);
void engine_set_gain(engine_state_t *state, double gain);
Python API
from my_project import Engine
import numpy as np
obj = Engine(gain=2.0)
y = obj.step(1.0 + 0.5j)
x = np.ones(1024, dtype=np.complex64)
y = obj.steps(x) # allocates output ndarray
obj.steps(x, out=y) # zero-copy
obj.set_gain(0.5)
obj.reset()
with Engine() as e:
y = e.steps(x)
Requirements
- Python 3.9+
- CMake ≥ 3.16
- A C99 compiler (GCC or Clang; on Windows, clang-cl — not MSVC's
cl.exe) - NumPy (runtime, for generated projects)
Authors
Matthew T. Hunter, Ph.D. and Claude Code
Release files for just-makeit 0.77.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| just_makeit-0.77.2-py3-none-any.whl | Python 3 | none | any | Details |
Release files / just_makeit-0.77.2-py3-none-any.whl
| Download URL | just_makeit-0.77.2-py3-none-any.whl |
|---|---|
| Size | 1.4 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
41f74463d2bd118fdf9ab5f2559202461f7d622e8a8702db8fba63cfccae526c
|
|
BLAKE2b-256 checksum How to use checksums |
f200226a2429bef82d69e73e011f1b3c09cfe371db96fe301e67f4d5b56168ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.
Transparency log