C library for typing memory blocks and Python module
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.conda Conda suddenly raises on 'nomkl' on Windows. Sep 19, 2018
libndtypes Address corner case where types are logically but not physically equal. Jan 18, 2019
python Add a flag that allows broadcasting of the 'out' arguments. Jan 17, 2019
vcbuild Add fast type serialization. Apr 2, 2018
.appveyor.yml Move to Python 3.6 on appveyor. Jan 28, 2018
.travis.yml Avoid spurious compiler warning in gcc-5. Nov 11, 2018
AUTHORS.txt Add AUTHORS.txt. May 8, 2018
INSTALL.txt Use Python 3.7 in INSTALL.txt. Sep 9, 2018
LICENSE.txt Update copyright. Jan 10, 2018
Makefile.in Add separate conda library and module builds. Jan 25, 2018
README.rst Fix link. May 8, 2018
config.h.in Add infrastructure for detecting big-endian systems. Dec 20, 2017
config.sub Add autotools and build the shared library. Oct 17, 2017
configure Run autoconf. May 8, 2018
install-sh Add autotools and build the shared library. Oct 17, 2017
setup.py Add -jN parallel build option to setup.py. Jan 2, 2019



ndtypes is a package for typing raw memory blocks using a close variant of the datashape type language.


libndtypes implements the type part of a compiler frontend. It can describe C types needed for array computing and additionally includes symbolic types for the purposes of dynamic type checking.

libndtypes has the concept of abstract and concrete types. Concrete types contain the exact data layout and all sizes that are required to access subtypes or individual elements in memory.

Abstract types are for type checking and include functions, symbolic dimensions and type variables. Module support is planned at a later stage.

Concrete types with rich layout information make it possible to write relatively small container libraries that can traverse memory without type erasure.


ndtypes (Python module)

The ndtypes Python module implements bindings for libndtypes. Its purpose is to support the type part required for the xnd container module.




libndtypes/ndtypes was created by Stefan Krah. The funding that made this project possible came from Anaconda Inc. and currently from Quansight LLC.