Introducing ILNumerics.ONAL
We are happy to announce the public availability of ILNumerics.ONAL, the open-source reference implementation of the ONAL (Open Numerical Algorithm Language) standard for .NET.
ONAL defines a standardized numerical array language for .NET, designed to provide MATLAB- and NumPy-compatible expressiveness while remaining stable, vendor-neutral, and compiler-friendly.
The source code is available on GitHub, and NuGet packages are published on nuget.org.
Technical Highlights
ILNumerics.ONAL provides a complete, production-ready environment for numerical computing in C# and Visual Basic. The project is derived from the commercial ILNumerics technology stack, which has been used successfully in thousands of industrial and academic applications for more than a decade.
The ONAL language library includes:
- multidimensional dense arrays
- MATLAB- and NumPy-compatible array semantics
- broadcasting and advanced indexing
- mutable arrays with thread-safe semantics
- complex numbers as first-class numeric types
- cells and heterogeneous containers
- integration-friendly native buffer storage
- linear algebra and FFT functionality based on robust LAPACK implementations automatically translated from the official Netlib FORTRAN sources
- a comprehensive set of mathematical, elementary, and trigonometric functions
- Visual Studio debugger integration, including array visualizers for convenient inspection of numerical data
The implementation focuses deliberately on correctness, robustness, and numerical language semantics. Performance-related APIs and execution details are intentionally kept out of the programming model.
The code base is accompanied by a comprehensive suite of roughly 2000 unit tests.
Open Source and Why It Matters
We decided to open-source the ONAL language core in 2026 in response to a problem we have observed for many years across both industry and research: the uncontrolled growth of custom in-house math libraries.
In the absence of a comprehensive, vendor-neutral numerical foundation for .NET, many organizations ended up building and maintaining their own array and math infrastructures. The result was often duplicated effort, fragmented semantics, difficult maintenance, compatibility issues, and long-term dependency risks.
Too many of these libraries eventually accumulated quirky APIs, legacy design constraints, performance-driven low-level details leaking into user code, poor maintainability—and, ironically, disappointing performance.
ILNumerics.ONAL aims to provide a stable and open alternative: a standardized numerical language foundation that remains fully usable without proprietary execution engines or vendor-specific runtimes.
Users keep full ownership of their algorithms and numerical IP, while benefiting from a mature and actively maintained implementation.
The Larger ILNumerics Ecosystem
ILNumerics.ONAL represents the core language layer of the broader ILNumerics ecosystem.
Algorithms written against the ONAL standard execute directly on .NET with reliable baseline performance. When higher performance is required, ONAL-compatible compilers—such as the ILNumerics Accelerator Compiler—can transparently apply advanced optimization techniques including:
- automatic parallelization
- graph optimization
- array pipelining
- SIMD vectorization
- heterogeneous CPU/GPU scheduling
- kernel fusion
ILNumerics.Computing serves as a fully compatible high-performance execution layer for ONAL-based algorithms. Existing code can often be accelerated simply by changing a package reference, without rewriting algorithms or introducing parallelization-specific code.
In practice, this frequently outperforms weeks or months of manual optimization work involving threading, vectorization, memory management, and hardware tuning.
At the same time, projects gain access to the broader ILNumerics ecosystem, including advanced visualization systems, charting components, debugger tooling, and domain-specific extensions.
This separation allows the numerical language itself to remain stable, open, and vendor-neutral, while execution technology and tooling continue to evolve independently.
In many ways, ILNumerics.ONAL can be seen as the semantic core of ILNumerics.Computing, separated from all performance-induced API complexity and execution-specific implementation details. It provides a clean and stable foundation for numerical algorithms today, while preserving a straightforward path toward high-performance execution whenever needed.
Make sure to check out the project and get involved. Contributions, discussions, and feedback are very welcome.
GitHub: https://github.com/ilnumerics/ILNumerics.ONAL
Nuget: https://www.nuget.org/packages/ILNumerics.ONAL