Skip to content
Tools to help creating domain specific languages in Python.
Branch: master
Clone or download
Permalink
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
.coveragerc
.gitignore Add initial no numpy version Apr 2, 2019
.readthedocs.yml Fix rtd install Mar 26, 2019
README.md Move all roadmap to the other file Apr 15, 2019
ROADMAP.md Move all roadmap to the other file Apr 15, 2019
mypy.ini Add tests Apr 12, 2019
pyproject.toml
pytest.ini Add tests Apr 12, 2019

README.md

metadsl

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.

Roadmap

Development

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

Tests

This runs mypy and tests, and reports coverage.

pytest
# open coverage file
open htmlcov/index.html

Docs

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