Skip to content
Tools to help creating domain specific languages in Python.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
binder Add initial no numpy version Apr 2, 2019
docs Add docs Mar 26, 2019
explorations Merge pull request #48 from Quansight-Labs/support-mutable-values Apr 15, 2019
metadsl Support mutable values in instances Apr 15, 2019
.gitignore Add initial no numpy version Apr 2, 2019
.readthedocs.yml Fix rtd install Mar 26, 2019 Move all roadmap to the other file Apr 15, 2019 Move all roadmap to the other file Apr 15, 2019
mypy.ini Add tests Apr 12, 2019
pytest.ini Add tests Apr 12, 2019


Documentation Status

A framework for creating domain specific language libraries in Python.

The initial use case is in scientific computing, where:

  1. You want to use the the APIs you know and love (ex. NumPy).
  2. But you want it to execute in a new way (ex. on a GPU or distributed accross machines).
  3. And you want to optimize a chain of operations before executing (ex. (x * y)[0] -> x[0] * y[0] / Mathematics of Arrays).

Guiding Principles

The goal here is to share as much optimization and representation logic as possible, so that the world users exist in can be extended more easily without having to cause them to change their code.

For example, if someone comes up with a new way of executing linear algebra or wants to try out a new way of optimizing expressions, they should be able to write those things in a pluggable manner, so that users can try them out with minimal effort.

This means we have to explicitly expose the protocols of the different levels to foster distributed collaboration and reuse.



Either use repo2docker:

repo2docker -E .

Or get started with Conda/flit:

conda create -n metadsl jupyterlab
conda activate metadsl
pip install flit
flit install --symlink


This runs mypy and tests, and reports coverage.

# open coverage file
open htmlcov/index.html


cd docs/
# build
make html
# serve
python -m http.server -d _build/html/
You can’t perform that action at this time.