CalcKernel README

The project's README from github.com/luxine/CalcKernel. As one markdown file: README.md.

CalcKernel

Website · Get started · Documentation · Download · VS Code extension · Performance measurements · MIT license

CalcKernel (CK) is a statically typed language for numerical computation kernels: focused calculations that can be called from a larger application. Write a .ck source file and use ckc to check, run, or build it. CK can produce native programs and libraries, or emit C and WebAssembly for integration with existing systems.

CK is designed to handle the calculation while your application keeps responsibility for the surrounding work, such as user interfaces, input and output, and data storage. Its typed function interfaces and caller-owned data slices make that boundary explicit.

The latest stable release is 0.15.2, a WebAssembly performance and correctness update.

Why CalcKernel

Start using CK

  1. Download the compiler for your system.
  2. Follow the first-program tutorial to create and run a CK program.
  3. Use any text editor, or install the optional CalcKernel extension for Visual Studio Code.

The extension provides CK syntax support, live diagnostics, code navigation, and commands to check, run, and build the current file. See the VS Code guide for setup details.

Learn more

Performance depends on the algorithm, implementation, libraries, and target machine. The linked measurements describe specific workloads and are not a general ranking of languages.

Build from source

The default feature set builds and tests the frontend, C, and WebAssembly components without LLVM:

cargo test --locked
cargo build --release --locked

Native builds require the pinned static LLVM prefix specified in native/llvm/manifest.toml. The bootstrap script checks the source archive's SHA-256 before building it:

rustc_host="$(rustc -vV | sed -n 's/^host: //p')"
llvm_archive="$PWD/llvm-project-22.1.8.src.tar.xz"
curl -fL 'https://github.com/llvm/llvm-project/releases/download/llvmorg-22.1.8/llvm-project-22.1.8.src.tar.xz' -o "$llvm_archive"
llvm_prefix="$PWD/build/llvm/prefix-$rustc_host-release"
./scripts/bootstrap-llvm.sh --archive "$llvm_archive" \
  --prefix "$llvm_prefix" --target "$rustc_host" --profile release
CKC_LLVM_PREFIX="$llvm_prefix" cargo build --release --features native-toolchain --locked

This prefix is needed to build CalcKernel's Native feature; release binaries do not require it at runtime. Windows MSVC build requirements are described in the getting-started guide.

Community

Contributions are welcome. Please read the contributing guide, security policy, and code of conduct.

License

CalcKernel is distributed under the MIT License.

CalcKernel (luxine/CalcKernel)

Searching Database…

Что это?CalcKernel (CK) — статически типизированный язык для написания узких ядер численных вычислений, которые вызывает более крупное приложение, а не полноценный прикладной язык.
CK — это отдельное приложение, библиотека или набор инструментов компилятора?CK — язык программирования со своим компилятором (ckc). Вы пишете файлы исходников .ck, а ckc проверяет, запускает или собирает их в нативные программы/библиотеки либо генерирует C или WebAssembly для встраивания в другие системы.
Как написать и запустить свою первую программу на CK?Скачайте готовый компилятор для своей системы, затем следуйте руководству по первой программе, чтобы создать и запустить программу на CK; подойдёт любой текстовый редактор, а для помощи с синтаксисом есть опциональное расширение VS Code.
Нужен ли установленный LLVM для использования CK?Не для готовых релизов. LLVM требуется только при сборке функции Native в CalcKernel из исходников — используется зафиксированный статический префикс LLVM, проверяемый по SHA-256 в bootstrap-скрипте; релизным бинарникам во время работы LLVM не нужен.
Насколько надёжны заявления CalcKernel о производительности?README прямо предупреждает, что замеры производительности охватывают конкретные нагрузки на конкретных машинах и не являются общим рейтингом против других языков, поэтому результаты могут меняться в зависимости от алгоритма и целевого железа.
На каких платформах можно собирать и запускать программы на CK?Компилятор скачивается под вашу систему, а целями могут быть нативный машинный код или WebAssembly; требования к сборке под MSVC на Windows в документации описаны отдельно, а поддержка Linux и macOS подразумевается самим нативным кроссплатформенным процессом сборки.
Что добавляет расширение CalcKernel для VS Code?Оно даёт поддержку синтаксиса CK, диагностику на лету, навигацию по коду и команды проверки, запуска и сборки текущего файла .ck прямо из редактора.
Для чего нужен профиль simd128?Это опциональный профиль WebAssembly, который векторизует поддерживаемые отображения массивов и целочисленные свёртки; неподдерживаемые случаи автоматически откатываются к обычному скалярному коду.
Как CK обеспечивает безопасность памяти обрабатываемых данных?Приложения передают в CK всю память через типизированные срезы данных, принадлежащие вызывающему, и сохраняют за собой владение ею, а сборки native/C могут опционально включать проверки целочисленного переполнения и границ срезов.
Зачем использовать CK вместо написания численного кода прямо на C?CK добавляет статическую типизацию и явные срезы данных во владении вызывающего на числовой границе, при этом компилируясь в нативный код, библиотеку с C-ABI или WebAssembly, давая более сильные гарантии, чем рукописный C, при схожих вариантах интеграции.
What are similar projects?scriptc, Tov, Singeli, raddebugger, spinel, perry, carbon-lang, goose
Creator
luxine
Size
3.9 MB
Stars
152
Age
20d
Commits · 90 Days