{"id":49745886,"url":"https://github.com/just-buildit/just-makeit","last_synced_at":"2026-06-15T02:01:29.650Z","repository":{"id":355824521,"uuid":"1229301280","full_name":"just-buildit/just-makeit","owner":"just-buildit","description":"Python C extensions the easy way.","archived":false,"fork":false,"pushed_at":"2026-06-14T11:43:35.000Z","size":3377,"stargazers_count":0,"open_issues_count":6,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-14T12:08:29.812Z","etag":null,"topics":["c-extension","cmake","code-generator","numpy","pep517","python","python-packaging","scaffolding","wheel"],"latest_commit_sha":null,"homepage":"https://just-buildit.github.io/just-makeit/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/just-buildit.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-04T22:53:26.000Z","updated_at":"2026-06-14T11:43:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/just-buildit/just-makeit","commit_stats":null,"previous_names":["just-buildit/just-makeit"],"tags_count":111,"template":false,"template_full_name":null,"purl":"pkg:github/just-buildit/just-makeit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/just-buildit%2Fjust-makeit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/just-buildit%2Fjust-makeit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/just-buildit%2Fjust-makeit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/just-buildit%2Fjust-makeit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/just-buildit","download_url":"https://codeload.github.com/just-buildit/just-makeit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/just-buildit%2Fjust-makeit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34344440,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-extension","cmake","code-generator","numpy","pep517","python","python-packaging","scaffolding","wheel"],"created_at":"2026-05-10T04:06:29.670Z","updated_at":"2026-06-15T02:01:29.626Z","avatar_url":"https://github.com/just-buildit.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 id=\"__skip\" align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/just-buildit/just-makeit/main/docs/assets/logo-wordmark.png\" alt=\"just-makeit\" width=\"540\"\u003e\n\u003c/h1\u003e\n\n[![CI](https://github.com/just-buildit/just-makeit/actions/workflows/ci.yml/badge.svg)](https://github.com/just-buildit/just-makeit/actions/workflows/ci.yml)\n[![Docs](https://github.com/just-buildit/just-makeit/actions/workflows/docs.yml/badge.svg)](https://github.com/just-buildit/just-makeit/actions/workflows/docs.yml)\n[![codecov](https://codecov.io/gh/just-buildit/just-makeit/graph/badge.svg?token=29J7ACUITR)](https://codecov.io/gh/just-buildit/just-makeit)\n\nGetting an algorithm right is paramount. Yet it's rarely the bottleneck.\nTurning it into shippable code — a tested C library, a Python binding, a build\nsystem, packaging, and a public C API that Rust or C++ can also link — is the\ntedious, exacting work that repeats on every project.\n\n`just-makeit new` scaffolds the whole thing in one command: core C library, thin\nPython binding, CMake build system, and full test coverage — all passing before\nyou write a single line of your algorithm.\n\n______________________________________________________________________\n\n## Try it now!\n\n[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/just-buildit/just-makeit)\n\nClick the badge to launch a pre-built sandbox in your browser — no install, no\ncompiler, no Docker required. You'll land in a GitHub Codespaces environment\nwith `just-makeit` installed, all twenty bundled examples already scaffolded and\ncompiled, and a terminal ready to go. Run an example end-to-end, browse the\ngenerated C and Python source, or start a fresh project with\n`just-makeit new`.\n\n______________________________________________________________________\n\n## Quickstart\n\n**curl (auto-installs dependencies, creates and activates venv):**\n\n```sh\n. \u003c(curl -fsSL https://just-buildit.github.io/just-makeit/install.sh) [-- path]\n```\n\n**pip:**\n\n```sh\npip install just-makeit \u0026\u0026 just-makeit install-deps [-- path]\n```\n\n**uv:**\n\n```sh\nuv tool install just-makeit \u0026\u0026 just-makeit install-deps [-- path]\n```\n\n**Docker (no install needed):**\n\n```sh\ndocker run --rm -it ghcr.io/just-buildit/jm-examples-linux:latest\n```\n\n______________________________________________________________________\n\n## Quick examples\n\n**Simple standalone extension:**\n\n```sh\njust-makeit new my_project --object engine --state gain:double:1.0\ncd my_project \u0026\u0026 make \u0026\u0026 make test\n```\n\n**Module subpackage — multiple types in one `.so`:**\n\n```sh\njust-makeit new my_filters --module filter\ncd my_filters\njust-makeit object fir    --module filter \\\n    --state \"coeffs:float[16]\" --state \"delay:float _Complex[16]\" --state \"gain:float:1.0\"\njust-makeit object biquad --module filter \\\n    --arg-type float --return-type float \\\n    --state \"b0:double:1.0\" --state \"b1:double:0.0\" --state \"a1:double:0.0\"\nmake \u0026\u0026 make test\n```\n\n```python\nfrom my_filters.filter import Fir, Biquad   # one .so, one import\n```\n\n______________________________________________________________________\n\n## What you get\n\n```\nmy_project/\n├── native/\n│   ├── inc/engine/engine_core.h   # public C API + inline step()\n│   ├── src/engine/\n│   │   ├── engine_core.c          # block processor + lifecycle\n│   │   └── engine_ext.c           # thin Python binding\n│   └── tests/test_engine_core.c   # CTest\n├── src/my_project/\n│   ├── engine.pyi                 # type stub\n│   └── tests/test_engine.py       # pytest / unittest\n├── cmake/my-project.pc.in         # pkg-config template\n├── CMakeLists.txt\n├── Makefile\n├── just-makeit.toml\n└── jb.toml            # tool + system-dep manifest (jbx install-deps)\n```\n\n______________________________________________________________________\n\n## C API\n\n```c\nengine_state_t *engine_create(double gain);\nvoid            engine_destroy(engine_state_t *state);\nvoid            engine_reset(engine_state_t *state);\n\nstatic inline float complex\nengine_step(const engine_state_t *state, float complex x);\n\nvoid engine_steps(engine_state_t *state,\n                  const float complex *in, float complex *out, size_t n);\n\ndouble engine_get_gain(const engine_state_t *state);\nvoid   engine_set_gain(engine_state_t *state, double gain);\n```\n\n## Python API\n\n```python\nfrom my_project import Engine\nimport numpy as np\n\nobj = Engine(gain=2.0)\n\ny = obj.step(1.0 + 0.5j)\n\nx = np.ones(1024, dtype=np.complex64)\ny = obj.steps(x)          # allocates output ndarray\nobj.steps(x, out=y)       # zero-copy\n\nobj.set_gain(0.5)\nobj.reset()\n\nwith Engine() as e:\n    y = e.steps(x)\n```\n\n______________________________________________________________________\n\n## Requirements\n\n- Python 3.9+\n- CMake ≥ 3.16\n- A C99 compiler (GCC, Clang, MSVC/MinGW)\n- NumPy (runtime, for generated projects)\n\n______________________________________________________________________\n\n**[Full documentation →](https://just-buildit.github.io/just-makeit/)**\n\n## Authors\n\nMatthew T. Hunter, Ph.D. and [Claude Code](https://claude.ai/code)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjust-buildit%2Fjust-makeit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjust-buildit%2Fjust-makeit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjust-buildit%2Fjust-makeit/lists"}