Skip to content

Repository files navigation

Blade

Project Status: WIP nightly build

Blade is a general purpose array-functional programming language.

Blade is primarily built to solve array problems with complex grid structures, particularly involving symmetric arrays. The syntax extends the classic ML-style grammar with cutting-edge concepts like rank and arity polymorphism, iteration patterns as first class values, and symmetry deduction from kernel annotations.

Spanning the simplest of arithmetic functions to powerful combinators of combinators, Blade guarantees the fastest way is the only way.

IDE Support

A VS Code extension is available here. Blade-REPL provides a REPL, tooltips for most objects, and full in-editor type deduction.

blade_fullsc

Requirements

Building the compiler needs only the .NET SDK 10 (F# 10; zero NuGet dependencies):

git clone https://github.com/cmdupuis3/Blade && cd Blade && dotnet build -c Release

Running Blade programs additionally needs g++ with OpenMP (C++17; MSYS2 UCRT64 on Windows, any recent GCC elsewhere). Check your environment with:

blade doctor

which compile-and-run probes every dependency and reports what is configured, from where, and what is broken (--json for tooling).

Optional dependencies, all probed by doctor:

  • BLAS/LAPACK — OpenBLAS by default (OPENBLAS_DIR), or any CBLAS/LAPACKE implementation (e.g. MKL) via BLADE_BLAS_LINK/BLADE_BLAS_INCLUDE/ BLADE_BLAS_FLAVOR; off by default, in which case Blade emits its own loops
  • NetCDF (NETCDF_DIR or system libnetcdf) — Zarr and CSV need no library
  • MPI — MS-MPI on Windows, OpenMPI/MPICH elsewhere
  • CUDA — nvcc (+ MSVC Build Tools on Windows)

Configuration is env vars or a blade.toolchain.json beside the binary (env wins per key); see docs/plans/plan-toolchain-packaging.md.

Current State

Blade is currently in development. The progenitor to Blade, Blade-DSL, is now in /legacy.

About

Fast, array-functional language for science and statistics

Topics

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages