✦✧
✦了解 CalcKernel 的最新变化 CK

CALCKERNEL 语言

面向数值内核。
编译为原生代码。

CalcKernel(CK)是一门面向数值密集型任务的静态类型语言。它将 CK 程序编译为原生机器码,也可输出 C 和 WebAssembly,嵌入已有系统。

原生代码 · 静态类型 · C / WebAssembly
探索语言特点↓
CK 语言

专注数值计算,边界清楚,行为可预期。

CK 为嵌入大型应用的紧凑计算例程而设计。类型系统、明确的数值规则和清楚的数据接口,帮助开发者判断内核读取、修改和返回什么。

数值计算内核

让数据处理路径一目了然。

这个内核将调用方提供的 f64 切片中的每个值乘以一个系数。类型化输入与原地更新明确了数据边界;编译器只会在满足正确性条件且目标平台支持时应用相应变换。

了解语言设计
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;
  }
}
原地处理内核slice<f64> · while · export fn
性能实测

出色的原生计算性能

用相同输入,对比 CK、C++、Rust、JavaScript、Java 与 NumPy 在图像模糊和矩阵乘法中的速度。以 JavaScript 为 1.0x,直观看到各自的表现。

1024×1024 图像模糊(3×3 高斯卷积)

对每个内部像素执行相同的九点加权滤波;边缘像素设为 0。

1,024 × 1,024

C++

4.1x

Rust

4.0x

CK

3.7x

Java

2.1x

JavaScript

1.0x

NumPy

0.64x
1024×1024 图像模糊(3×3 高斯卷积) — 相对 JavaScript 调优版的速度倍率
语言相对 JavaScript 的速度倍率
C++4.1x
Rust4.0x
CK3.7x
Java2.1x
JavaScript1.0x
NumPy0.64x

JavaScript = 1.0x · 同机实测 · 条长为压缩刻度,以倍数为准

了解更多
适用场景

让计算核心保持专注。

CK 适用于嵌入大型系统的数值内核,例如数据变换、反复执行的评分或模拟,以及其他计算密集型例程。将数据契约放在边界,调度、存储和面向用户的功能交给宿主应用。

CK 聚焦计算内核。宿主应用负责内存管理,以及内核周边的输入输出、网络和界面。

三个实际问题

CK 在你的技术栈中做什么?

应用仍用你熟悉的工具编写;让 CK 负责边界明确、需要反复执行的数值计算。

01 / 03

为什么不直接用 Rust 或 C++?

如果它们已经满足项目需要,就继续使用。CK 更专注于数值内核:同一份源码可构建 Native 库、生成 C 代码或 WebAssembly 模块,供现有程序调用。优势在于清晰的计算边界;速度仍要用你的负载实测。

查看实测结果
02 / 03

什么时候值得用 CK?

先通过性能分析找到耗时明显、反复执行的计算,并确认它有清晰的数值输入和结果。如果同一内核还要供多个应用或运行环境使用,CK 的独立构建方式更有价值。

了解输出方式
03 / 03

Node、Python、Rust 项目怎么接?

先导出 CK 函数并构建模块,再由现有项目调用。Node.js 可加载 WebAssembly;Python 和 Rust 可通过生成的 C ABI 调用 Native 库。数据和内存仍由宿主负责。

Node.jsWebAssembly
Pythonctypes · C ABI
RustFFI · C ABI
查看接入指南
使用 CALCKERNEL 构建

从语言开始,用真实负载验证性能。

先了解语言、运行一个内核,再使用相同输入和目标机器对照测量结果。

使用 VS Code 编写 CK?扩展提供语法高亮、实时错误提示、补全和代码导航。 了解 VS Code 扩展

↵ 打开 · esc 关闭