✦✧
✦See what is new in CalcKernel CK

THE CALCKERNEL LANGUAGE

Numerical kernels.
Compiled for native speed.

CalcKernel (CK) is a statically typed language for focused numerical workloads. It compiles CK programs to native machine code, with C and WebAssembly outputs for integration into existing systems.

Native code · Static types · C / WebAssembly
Explore language features↓
THE CK LANGUAGE

Numerical work, with clear boundaries.

CK is designed for small, compute-heavy routines embedded in larger applications. Its type system, defined numeric rules, and explicit data interfaces help developers reason about what a kernel reads, changes, and returns.

A NUMERICAL KERNEL

Make the data path explicit.

This kernel scales each value in a caller-provided f64 slice by a factor. The typed input and in-place update make the data boundary clear; the compiler only applies transformations when their correctness conditions and the target allow them.

Explore the language
scale.ckCK
export fn scale(
  values: slice<f64>,
  factor: f64
) -> void {
  let i: u32 = 0;
  while i < values.len {
    values[i] = values[i] * factor;
    i = i + 1;
  }
}
in-place kernelslice<f64> · while · export fn
PERFORMANCE

Excellent native performance, measured.

Compare CK, C++, Rust, JavaScript, Java, and NumPy on the same image-blur and matrix-multiplication inputs. See how each implementation performs with JavaScript as 1.0x.

Image blur · 1024 × 1024 pixels · 3×3 Gaussian convolution

Apply the same nine-point weighted filter to every interior pixel; border pixels are zero.

1,024 × 1,024

C++

4.1x

Rust

4.0x

CK

3.7x

Java

2.1x

JavaScript

1.0x

NumPy

0.64x
Image blur · 1024 × 1024 pixels · 3×3 Gaussian convolution — Tuned kernel speedup relative to JavaScript
LanguageSpeedup vs tuned JavaScript
C++4.1x
Rust4.0x
CK3.7x
Java2.1x
JavaScript1.0x
NumPy0.64x

JavaScript = 1.0x · same-machine test · compressed bar lengths; compare the multipliers

Learn more
WHERE CK FITS

Keep the computational core focused.

CK is designed for numerical kernels embedded in a larger system: data transforms, repeated scoring or simulation, and other compute-heavy routines. Keep the data contract at the boundary and let the host application handle orchestration, storage, and user-facing features.

CK focuses on computation kernels. The host application owns memory and handles I/O, networking, and presentation around them.

THREE PRACTICAL QUESTIONS

Where does CK fit in your stack?

Keep your application in the tools you know. Use CK where a focused numerical kernel has a clear job and a clear boundary.

01 / 03

Why not just use Rust or C++?

Use them when they already fit your project. CK is a narrower language for numerical kernels: one source can become a Native library, C source, or WebAssembly module for an existing host. That focused boundary is the advantage; measure your workload before choosing on speed.

See the measurements
02 / 03

When is CK worth using?

Look for a repeated calculation that profiling shows is costly, with numeric inputs and a boundary you can describe clearly. It is most useful when that kernel must also be shared across applications or targets.

Explore output options
03 / 03

How does it join an existing project?

Export a CK function, build a module, then call it through a host interface. Node.js can load WebAssembly; Python and Rust can call a Native library through its generated C ABI. The host still owns data and memory.

Node.jsWebAssembly
Pythonctypes · C ABI
RustFFI · C ABI
Read the integration guide
BUILD WITH CALCKERNEL

Start with the language. Measure your workload.

Read the language overview, run a first kernel, then compare results using the same inputs and target machine.

Writing CK in VS Code? Get highlighting, live diagnostics, completion, and navigation. Explore the extension

↵ open · esc close