Skip to main content

just-makeit

CI Docs codecov

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!

Open in GitHub Codespaces

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
└── jb.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, Clang, MSVC/MinGW)
  • NumPy (runtime, for generated projects)

Full documentation →

Authors

Matthew T. Hunter, Ph.D. and Claude Code

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

just_makeit-0.38.0-py3-none-any.whl (875.6 kB view details)

Uploaded Python 3

File details

Details for the file just_makeit-0.38.0-py3-none-any.whl.

File metadata

  • Download URL: just_makeit-0.38.0-py3-none-any.whl
  • Upload date:
  • Size: 875.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for just_makeit-0.38.0-py3-none-any.whl
Algorithm Hash digest
SHA256 46b4504a22a9c3bd0a5787ac518d3259569bfa96b7773adc16893dc7fc3e1f91
MD5 dfc0cd6335735c25861ecbcfdc2169c9
BLAKE2b-256 81dcac164e8e9ea78d92cb0764bd3cb7fabc1d9b0a70857006a4d5a7f21cc8d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for just_makeit-0.38.0-py3-none-any.whl:

Publisher: release.yml on just-buildit/just-makeit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.75.5

1 file

0.75.4

1 file

0.75.3

1 file

0.75.2

1 file

0.75.1

1 file

0.75.0

1 file

0.74.0

1 file

0.73.1

1 file

0.73.0

1 file

0.72.2

1 file

0.72.1

1 file

0.72.0

1 file

0.71.1

1 file

0.71.0

1 file

0.70.1

1 file

0.70.0

1 file

0.69.2

1 file

0.69.1

1 file

0.69.0

1 file

0.68.0

1 file

0.67.3

1 file

0.67.2

1 file

0.67.1

1 file

0.67.0

1 file

0.66.1

1 file

0.66.0

1 file

0.65.0

1 file

0.64.1

1 file

0.64.0

1 file

0.63.3

1 file

0.63.2

1 file

0.63.1

1 file

0.63.0

1 file

0.62.1

1 file

0.62.0

1 file

0.61.1

1 file

0.61.0

1 file

0.60.2

1 file

0.60.1

1 file

0.60.0

1 file

0.59.1

1 file

0.59.0

1 file

0.58.0

1 file

0.57.0

1 file

0.56.0

1 file

0.55.3

1 file

0.55.2

1 file

0.55.1

1 file

0.55.0

1 file

0.54.4

1 file

0.54.3

1 file

0.54.2

1 file

0.54.1

1 file

0.54.0

1 file

0.53.1

1 file

0.53.0

1 file

0.52.0

1 file

0.51.0

1 file

0.50.0

1 file

0.49.0

1 file

0.48.0

1 file

0.47.0

1 file

0.46.2

1 file

0.46.1

1 file

0.46.0

1 file

0.45.0

1 file

0.44.0

1 file

0.43.2

1 file

0.43.1

1 file

0.43.0

1 file

0.42.0

1 file

0.41.0

1 file

0.40.0

1 file

0.39.0

1 file

0.38.3

1 file

0.38.2

1 file

0.38.1

1 file

This release

0.38.0 This release

1 file

0.37.1

1 file

0.37.0

1 file

0.36.0

1 file

0.35.0

1 file

0.34.0

1 file

0.33.16

1 file

0.33.15

1 file

0.33.14

1 file

0.33.13

1 file

0.33.12

1 file

0.33.11

1 file

0.33.10

1 file

0.33.9

1 file

0.33.8

1 file

0.33.7

1 file

0.33.6

1 file

0.33.5

1 file

0.33.4

1 file

0.33.3

1 file

0.33.2

1 file

0.33.1

1 file

0.33.0

1 file

0.32.0

1 file

0.31.0

1 file

0.30.2

1 file

0.30.1

1 file

0.30.0

1 file

0.29.1

1 file

0.29.0

1 file

0.28.11

1 file

0.28.10

1 file

0.28.9

1 file

0.28.8

1 file

0.28.7

1 file

0.28.6

1 file

0.28.5

1 file

0.28.4

1 file

0.28.3

1 file

0.28.2

1 file

0.28.1

1 file

0.28.0

1 file

0.27.0

1 file

0.26.1

1 file

0.26.0

1 file

0.25.1

1 file

0.25.0

1 file

0.24.0

1 file

0.23.0

1 file

0.22.0

1 file

0.21.0

1 file

0.20.0

1 file

0.19.37

1 file

0.19.36

1 file

0.19.35

1 file

0.19.34

1 file

0.19.33

1 file

0.19.32

1 file

0.19.31

1 file

0.19.30

1 file

0.19.27

1 file

0.19.26

1 file

0.19.25

1 file

0.19.24

1 file

0.19.23

1 file

0.19.22

1 file

0.19.21

1 file

0.19.20

1 file

0.19.19

1 file

0.19.18

1 file

0.19.17

1 file

0.19.16

1 file

0.19.15

1 file

0.19.14

1 file

0.19.13

1 file

0.19.12

1 file

0.19.11

1 file

0.19.10

1 file

0.19.9

1 file

0.19.8

1 file

0.19.7

1 file

0.19.6

1 file

0.19.5

1 file

0.19.4

1 file

0.19.3

1 file

0.19.2

1 file

0.19.1

1 file

0.19.0

1 file

0.18.1

1 file

0.18.0

1 file

0.17.1

1 file

0.17.0

1 file

0.16.4

1 file

0.16.3

1 file

0.16.2

1 file

0.16.1

1 file

0.16.0

1 file

0.15.9

1 file

0.15.8

1 file

0.15.7

1 file

0.15.6

1 file

0.15.5

1 file

0.15.4

1 file

0.15.3

1 file

0.15.2

1 file

0.15.1

1 file

0.15.0

1 file

0.14.12

1 file

0.14.10

1 file

0.14.9

1 file

0.14.8

1 file

0.14.7

1 file

0.14.6

1 file

0.14.5

1 file

0.14.4

1 file

0.14.3

1 file

0.14.2

1 file

0.14.1

1 file

0.14.0

1 file

0.13.24

1 file

0.13.23

1 file

0.13.22

1 file

0.13.21

1 file

0.13.19

1 file

0.13.18

1 file

0.13.15

1 file

0.13.14

1 file

0.13.13

1 file

0.13.12

1 file

0.13.10

1 file

0.13.9

1 file

0.13.8

1 file

0.13.7

1 file

0.13.6

1 file

0.13.5

1 file

0.13.4

1 file

0.13.3

1 file

0.13.2

1 file

0.13.1

1 file

0.13.0

1 file

0.12.0

1 file

0.11.5

1 file

0.11.4

1 file

0.11.3

1 file

0.11.2

1 file

0.11.1

1 file

0.11.0

1 file

0.10.9

1 file

0.10.8

1 file

0.10.7

1 file

0.10.6

1 file

0.10.5

1 file

0.10.4

1 file

0.10.3

1 file

0.10.2

1 file

0.10.1

1 file

0.10.0

1 file

0.9.13

1 file

0.9.12

1 file

0.9.11

1 file

0.9.10

1 file

0.9.9

1 file

0.9.6

1 file

0.9.5

1 file

0.9.4

1 file

0.9.3

1 file

0.9.2

1 file

0.9.1

1 file

0.9.0

1 file

0.8.4

1 file

0.8.3

1 file

0.8.2

1 file

0.8.0

1 file

0.7.0

1 file

0.6.9

1 file

0.6.8

1 file

0.6.7

1 file

0.6.6

1 file

0.6.5

1 file

0.6.4

1 file

0.6.3

1 file

0.6.2

1 file

0.6.1

1 file

0.6.0

1 file

0.4.0

1 file

0.2.0

1 file

0.1.2

1 file

0.1.1

1 file

0.1.0

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page