DracoLIX
Draconis Scientific Computing & High-Performance Numerical Computing
A native, multi-language scientific computing stack built from scratch around performance, reliability and numerical control.
DracoLIX is an open-source scientific computing project developed by Draconis Engineering.
The goal is to build a high-performance numerical computing stack spanning linear algebra, numerical methods, scientific simulation and HPC, with a particular focus on giving the developer direct control over data types, memory layout and computation.
DracoLIX is designed to be independent of NumPy and similar numerical runtimes. Instead of wrapping an existing numerical backend, DracoLIX aims to provide its own array types, dtype system, memory model and computational kernels.
The project is currently in an early stage. At present, the implementation is focused primarily on matrix operations, but the architecture is being developed with a much larger scientific computing ecosystem in mind.
Vision
Scientific computing is built on numerical primitives.
Matrices, vectors, tensors, numerical solvers and differential equations form the foundation of everything from engineering simulations to data analysis and computational physics.
DracoLIX aims to provide that foundation for the Draconis Engineering ecosystem.
The long-term vision is a platform capable of powering:
- Linear algebra
- Numerical analysis
- Scientific simulation
- Optimization
- Differential equations
- CFD
- Engineering computation
- High-performance data analysis
- HPC workloads
The core principle is simple:
Build the numerical infrastructure instead of depending on it.
Architecture
DracoLIX is designed as a multi-language system where each language has a specific role.
DracoLIX
│
┌──────────┴──────────┐
▼ ▼
Public APIs Core Runtime
│ │
┌────────┼────────┐ │
│ │ │ │
Python Julia (C++) │
│ │ │ │
└────────┴────────┴─┬──────────┘
▼
DracoLIX C++ Core
│
┌─────────────┼─────────────┐
│ │ │
Arrays DTypes Memory
│ │ │
└─────────────┼─────────────┘
▼
Compute Runtime
│
┌─────────────┴─────────────┐
│ │
C++ Kernels Fortran Kernels (optional)
│ │
└─────────────┬─────────────┘
▼
CPU / SIMD
C++
C++ forms the foundation of DracoLIX.
It is responsible for:
- Core data structures
- Memory management
- Array implementations
- DType system
- Runtime and dispatch
- Parallel execution
- SIMD-oriented computation
- Language bindings
- Performance-critical kernels
C++ provides the systems-level control required to make DracoLIX independent of external numerical runtimes.
Fortran
Fortran is an optional HPC backend. Enabled via -DDRACOLIX_USE_FORTRAN=ON at build time; off by default.
It is intended for:
- Numerical kernels
- Scientific algorithms
- Linear algebra
- Numerical solvers
- Future HPC functionality
Where appropriate, Fortran and C++ communicate through well-defined native interfaces (iso_c_binding).
Python
Python is one of the primary high-level interfaces to DracoLIX.
The Python API is intended to make high-performance numerical computation accessible without requiring users to write Rust or Fortran.
Python bindings are implemented directly against the DracoLIX core rather than relying on NumPy as an underlying execution engine.
import dracolix as dlx
A = dlx.matrix(
[[1.0, 2.0],
[3.0, 4.0]],
dtype=dlx.f64
)
B = dlx.matrix(
[[5.0, 6.0],
[7.0, 8.0]],
dtype=dlx.f64
)
C = A @ B
Julia
Julia is planned as a first-class scientific computing interface.
Julia's strengths in numerical programming make it particularly suitable for:
- Scientific research
- Mathematical experimentation
- Numerical methods
- Differential equations
- Optimization
- Simulation
The Julia interface should communicate directly with the DracoLIX core rather than passing through Python.
Native DTypes
One of the core goals of DracoLIX is to provide its own numerical type system.
DracoLIX should not require NumPy's dtype system to represent numerical data.
Instead:
dlx.f32
dlx.f64
dlx.i32
dlx.i64
dlx.c64
dlx.c128
would represent native DracoLIX types.
Conceptually:
DType
│
┌───────────┼───────────┐
▼ ▼ ▼
Integer Float Complex
│ │ │
i8/i16/... f32/f64 c64/c128
The DType system is intended to become part of the DracoLIX runtime itself.
This allows the runtime to make decisions based on:
- Element size
- Alignment
- Numerical representation
- SIMD compatibility
- Kernel availability
- Memory requirements
- Future accelerator support
The goal is to build a numerical type system designed around DracoLIX's own execution model, not just copy NumPy.
Native Arrays
DracoLIX will provide its own numerical data structures.
dlx.Array
dlx.Vector
dlx.Matrix
dlx.Tensor
These structures will own and manage their underlying memory through the DracoLIX runtime.
A conceptual array representation might contain:
Array<T>
├── data
├── shape
├── strides
├── dtype
└── layout
This gives DracoLIX control over important performance characteristics such as:
- Contiguous memory
- Strided views
- Row-major and column-major layouts
- Memory alignment
- Cache efficiency
- SIMD compatibility
- Zero-copy views
- Slicing
- Parallel access
This is a deliberate design choice.
DracoLIX should not simply become:
Python
↓
NumPy
↓
C
↓
Rust
Instead:
Python
↓
nanobind
↓
DracoLIX Core
↓
Native Kernels
↓
CPU / SIMD / HPC
Computational Model
The long-term architecture separates what is being calculated from how it is calculated.
For example, a high-level operation might request:
C = A @ B
The runtime can then determine the appropriate implementation based on:
- DType
- Matrix dimensions
- Memory layout
- Hardware capabilities
- Available kernels
- Parallel execution options
Conceptually:
Matrix Multiplication
│
▼
Kernel Dispatch
│
┌───────────┼───────────┐
▼ ▼ ▼
Scalar SIMD Parallel
│ │ │
└───────────┼───────────┘
▼
Native Code
This dispatch architecture is intended to become increasingly important as DracoLIX grows beyond basic linear algebra.
Planned Scientific Computing Stack
DracoLIX is intended to grow incrementally.
1. Core
- Native DTypes
- Arrays
- Vectors
- Matrices
- Tensors
- Memory management
- Views and slicing
- Basic arithmetic
2. Linear Algebra
- Matrix multiplication
- Vector operations
- Decompositions
- Linear system solvers
- Eigenvalue problems
- Sparse matrices
- Advanced matrix algorithms
3. Numerical Computing
- Numerical integration
- Interpolation
- Optimization
- Root finding
- ODE solvers
- PDE solvers
- Numerical differentiation
4. Scientific Computing
- Scientific simulation
- Computational physics
- Engineering workloads
- CFD
- Large-scale numerical analysis
5. HPC
Future research areas may include:
- Advanced SIMD
- Multithreading
- GPU acceleration
- Distributed computation
- MPI
- Domain decomposition
- Large-scale simulation
These features are long-term goals, not current capabilities.
Draconis Ecosystem
DracoLIX is intended to become the numerical computation backbone of Draconis Engineering.
Draconis
│
┌──────────┼──────────┐
│ │ │
Olympus DuraPy ICARUS
│ │ │
└──────────┼──────────┘
│
DracoLIX
│
Numerical Computation
Olympus
Olympus Analytics Engine will be one of the first major consumers of DracoLIX.
As Olympus processes increasingly large quantities of training and physiological data, DracoLIX can provide the numerical foundation for:
- Time-series analysis
- Statistical calculations
- Signal processing
- Rolling computations
- Training-load calculations
- Numerical models
- Large-scale historical analysis
Olympus understands the domain.
DracoLIX handles the mathematics.
DuraPy
DuraPy can use DracoLIX as its numerical backend for high-performance scientific and endurance-sports computation.
ICARUS
ICARUS can use DracoLIX when numerical computation becomes part of an agent workflow, allowing the agent to delegate computationally intensive operations to a native numerical engine.
Design Principles
From the ground-up
DracoLIX should own its core numerical representation rather than simply wrapping another numerical library.
Speed
Performance matters.
Memory layout, cache behavior, SIMD, parallelism and algorithmic complexity should be considered fundamental parts of the architecture.
Reliability
Numerical software must be predictable.
Correctness, testing, numerical stability and deterministic behavior are core concerns.
Multi-language
Different languages are good at different things.
DracoLIX embraces Python, Julia, Rust and Fortran instead of forcing everything into one language.
Open Source
DracoLIX is fully open source.
The goal is to build a transparent numerical computing stack that can be studied, modified and extended by others.
Modular Architecture
DracoLIX should consist of smaller components rather than becoming one enormous monolithic library.
dracolix-core
dracolix-array
dracolix-linalg
dracolix-solver
dracolix-runtime
dracolix-python
dracolix-julia
...
The exact crate/package structure may evolve as the project develops.
Current Status
DracoLIX is experimental and heavily under development.
Current functionality is limited compared to the long-term vision.
At the moment, the project primarily contains early implementations of numerical operations such as matrix multiplication.
The architecture and roadmap described above represent the direction of the project, not a claim that all of these capabilities currently exist.
Roadmap
- Project foundation
- C++ numerical core
- Initial Python interface (nanobind binding)
- Matrix multiplication prototype
- Native DType system
- Native Array / Matrix types
- Memory layout system
- Better benchmarking infrastructure
- SIMD kernels
- Parallel execution
- Expanded linear algebra (matmul, matvec, dot, norms, diag, batched)
- Sparse matrices
- Numerical solvers
- Julia interface
- ODE/PDE tooling
- Optimization
- Scientific simulation
- CFD
- GPU acceleration
- Distributed HPC
The roadmap is intentionally ambitious.
Not every feature is guaranteed to be implemented, and priorities may change as the project evolves.
Philosophy
DracoLIX started as a simple linear algebra library.
The long-term goal is considerably larger.
Instead of building another abstraction layer around existing numerical software, DracoLIX aims to explore what a modern, native, multi-language scientific computing stack could look like when the numerical runtime itself is designed from the ground up.
Own the data. Own the types. Own the computation.
License
DracoLIX is open source and intended to remain freely available to the community.
See the repository license for details.
Release files for dracolix 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 4.0 MB
Release files / dracolix-0.2.0-cp313-cp313-win_amd64.whl
| Download URL | dracolix-0.2.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 222.4 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f4f5be3e95c42f43935eca3a19892dcff1432f7cdb738271b94e7217ea0add48
|
|
BLAKE2b-256 checksum How to use checksums |
9b1ba201ab587f00aa94ad6d5b2fd886437690920bdd86e409394c7ae4ca547b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / dracolix-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl
| Download URL | dracolix-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 336.3 kB |
| Tags | CPython 3.13 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
7d3790473744a9c6bd3f73f495e29dbefb01cb87476c9232f4f7684409e8d215
|
|
BLAKE2b-256 checksum How to use checksums |
51fdedcbfccc539d84f13e42ca216809b7c23b01899d278e29c468e09f0e9006
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / dracolix-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | dracolix-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 238.9 kB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
0aa103919ef0d7760f7b442eaa6b36084b5427fa2b2a1d16d28b8143f41f8888
|
|
BLAKE2b-256 checksum How to use checksums |
f5e948df046d6f19affb1cdfe05792585651146950a7073dc60586aacda7b2df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / dracolix-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | dracolix-0.2.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 191.5 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
7230c5c3e33ea26c9e9934a74466e1c6f9346d92364f5ade5b6a592f862a3fd9
|
|
BLAKE2b-256 checksum How to use checksums |
90498eb980c73825ef57f19df7a082ac564c9b34eae32d53ee9f5a3c31f583be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / dracolix-0.2.0-cp312-cp312-win_amd64.whl
| Download URL | dracolix-0.2.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 222.5 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
3fc2c41409d9344637cf5c9cc2f07bdca4d7698b571428669170cdadb48f92ab
|
|
BLAKE2b-256 checksum How to use checksums |
84649c0feae7302b5ab863232c5c293c779c3f84dfffcba753eb3bedc2ffbc5c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / dracolix-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl
| Download URL | dracolix-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 336.3 kB |
| Tags | CPython 3.12 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
64676bcee4703667fdf860ffd61097492d6297c210f98b10eab9c5d89523320b
|
|
BLAKE2b-256 checksum How to use checksums |
8520af60286b364b55dcb87f27ba4d5f1dafe477580360680d7976366adb9048
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / dracolix-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | dracolix-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 238.9 kB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
5ff680d9d97cbe493fbb6f2c9c9aa2784f5077ef2857d386d269be316099698d
|
|
BLAKE2b-256 checksum How to use checksums |
c82518449732fa21f340b13c69ebae4bc031eeb6750c4ef95cc09cca68c0b152
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / dracolix-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | dracolix-0.2.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 191.5 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b5e200dfc10236814a6450f4f2fbf080167aa934505a8ca786aef02816265d77
|
|
BLAKE2b-256 checksum How to use checksums |
c2f6f6cd24a623de134af4c173bc0cc2e7332d1224c118b88168c0c259eddd0e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / dracolix-0.2.0-cp311-cp311-win_amd64.whl
| Download URL | dracolix-0.2.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 222.1 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e462cac87bd39813100fd7895f5197f6cd0db8f708a721f28f162e809317b351
|
|
BLAKE2b-256 checksum How to use checksums |
b465d721bef21f2ceec0be98c1f9753f2146b3e3d85bf702fc47a404565b43ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / dracolix-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl
| Download URL | dracolix-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 336.7 kB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
7245b969ba8b13d1defd4131ad1e73ce011b88b27aa9888795729eb059d7c860
|
|
BLAKE2b-256 checksum How to use checksums |
cb9bcfcc085dd6223da16dfde0ba996d79cc5d60e5c4533663d6c5cd8e610db6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / dracolix-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | dracolix-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 239.4 kB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
a33c050b87ef3245f90039d76e43d5aef09799b95a20e5219a4016c313d5480e
|
|
BLAKE2b-256 checksum How to use checksums |
c5df33de49967d22d18c1d71642a4e0b80c92a62d724ca83f8d204c604cf53fc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / dracolix-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | dracolix-0.2.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 192.4 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c6c23fbc7017bcf770beaad1641fb0da97d7e96729e179fb3c9a970959592873
|
|
BLAKE2b-256 checksum How to use checksums |
c62f90778e43409c555aaa39929c8dd88a2e2613adb96682a19551e33c68d188
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / dracolix-0.2.0-cp310-cp310-win_amd64.whl
| Download URL | dracolix-0.2.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 221.7 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f3d85fa147dd61fb54a211a410b07e4f53794dd7449707f7dfdd7bd1aa6d023d
|
|
BLAKE2b-256 checksum How to use checksums |
59583ceef643325d988b17e2b5c4bb28940167a00211db5a00919ed747249464
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / dracolix-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl
| Download URL | dracolix-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 337.0 kB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
dd4c64a0a984a479fc117a8c487289991b958fb83a9ddef944baa353ff964461
|
|
BLAKE2b-256 checksum How to use checksums |
de3d55241fd6679e8c038cb39a089dd100d2050d93a954b8f64c56388be11ec4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / dracolix-0.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | dracolix-0.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 239.7 kB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
f2dc6551ddfff8b53d2cffc8d6676676b32924ee058018e47d3e370d0f215c40
|
|
BLAKE2b-256 checksum How to use checksums |
b64b955919c661e190955f8566bdd399136851c026c97fcdec1ab16c176ce0d5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / dracolix-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | dracolix-0.2.0-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 192.6 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
40d2d7b038a1815e34561a5412da6cfef91619702b454853c1d0e1b729c6be96
|
|
BLAKE2b-256 checksum How to use checksums |
aa814efd02b933bd14c31c0c2d9634fa289fb2340e7d4ed5cdd4aec38ecae6c8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|