Skip to content

Feature map

The menu of what just-makeit can do, and the one bundled example that shows each feature most clearly. This is a map, not a tutorial — scan for the thing you need, then open its example.

Every example is runnable end to end with:

just-makeit example <name>

It scaffolds fresh in a temp dir, builds, and runs its tests. Every example has a walkthrough page.

For a single guided build that touches many features at once, start with the feature tour. For composing objects out of objects, see the object-of-objects guide.


Object shapes — what step() looks like

Feature Example
Scalar processor (x -> y) FIR filter
Generator (void -> y) NCO tone
Consumer / sink (x -> void) Accumulator
Blockwise (T[] -> U[]) Blockwise template
Array-buffer primary arg (--arg-type T[]) Array processing
Method-only object (--no-step, custom methods) Ring buffer
Process a whole block (steps) Array processing

State and lifecycle

Feature Example
State variables with defaults Running stats
Mutable state (--mutable) NCO tone
Opaque heap state (create / destroy) Delay line
create / reset / destroy + heap field Delay line
Declarative TOML fragment (jm apply) Declarative scaffold
no_state / user-facing init-params Feature tour

Methods and outputs

Feature Example
Named execute methods with params Accumulator
Variable-length output Array processing
Per-call output array (out-type / out-divisor) Array processing
Second output array (multi-output) Array processing
GIL release (nogil), pass-capacity Kitchen sink
*args / **kwargs methods (--varargs) Varargs methods
One record / structured array / list of records (--single, --record-dtype, --result-field) Record shapes
Zero-copy borrowed views (--borrow, --status-fn, --releases, --strict, --header-only) Ring buffer
Failure channels (jm error, jm warning, --status-return, --error-negative) Errors and warnings

Functions and properties

Feature Example
Module-level C function Module functions
Inline function (in the header) Module functions
Filesystem path argument (name:path) Extend command
Enum argument (name:enum:<ename>) Extend command
C enum whose values are not 0..n-1 ([[enum]] enumerators) C enum constants
Raise on non-zero return (--check-return) Extend command
Raise the C refusal's own reason (--why) Extend command
Raise a composer's refusal reason (from_json_why, create_why) Object-of-objects
Writable property Feature tour
Field-backed property IQ file

Modules and linking

Feature Example
Multiple types in one module .so Filter module
External C library (find_package + link) NCO tone
Vendored C dep, depends_on, reexports Kitchen sink

Performance

Feature Example
JM_HOT / JM_FORCEINLINE annotations FIR filter
SIMD batch dispatch (JM_DEFINE_STEPS) FIR filter
Portable SIMD macros (jm_simd.h: JM_ADD_F32, JM_HSUM_F32) Sliding power

Composing objects out of objects

Feature Example / guide
kind = "handle" — typed RAII resource class Composites
kind = "capsule" / kind = "composer" Object-of-objects guide
Composer bridge / computed-property C seams Composer seams

Two classes over one core

Feature Example
Second Python class over one C core (jm view) Views
A view's own constructor (--create-fn) Views
Trim a view's surface (--exclude-property/-method) Views
Add / override a member on a view (--view) Views

Streaming

Feature Example
streamable → stream() / __iter__ Stream source
Blockwise streaming Stream blockwise
Async iteration Stream source (async)
Re-framing a stream (method-only framer) Stateful vs Pure

Documentation

Feature Example / guide
Doxygen @brief / @param → .pyi docstrings Accumulator
@code block → doctest run against the built .so Accumulator
Documenting free and static inline functions Module functions
Which Doxygen tags jm reads, and what they map to Enriching stubs
Doxygen C site + Zensical Python site (make docs) Full workflow

Applications and tooling

Feature Example
C exe / console script / PEP 723 from a component Three faces
Full lifecycle (build, test, bench, docs) Full workflow
--pytest / --pytest-benchmark test styles Full workflow
Upgrading an old project (jm upgrade) Upgrading an old project