Skip to content

Upcoming Engineering Tasks

Anders Ågren Thuné edited this page Aug 4, 2023 · 17 revisions

This page records tasks that improve the user experience or are part of our vision of Miking, but that are not necessarily research-related and that we haven’t gotten to (fully) yet. This list is intended to be a complement to the Github issues, to give a better overview of our current focus (it also includes some tasks which we have not yet made issues for).

  • Improve documentation
    • Installation page
    • Getting started guide
    • Standard library reference (with auto-generation a la Doxygen)
    • Improve documentation workflow, including keeping the website up-to-date (perhaps we could automatically pull selected Github wiki pages?)
  • Unify and improve error messages
  • Full bootstrapping
  • REPL for mi
  • Set up nightly builds for Mac, Windows, and GNU/Linux on Mac Mini machines
  • Improve type checker (and make it sound)
    • [X] Add value restriction
    • [X] Add check for local types escaping their scope
    • Add row polymorphism
    • Check type constructor arities and data constructor signatures
    • Relax the value restriction a la OCaml
    • Add GADT support
    • Add check for local constructors escaping their scope
    • Make the type checker return Result Expr TypeError instead of just failing, and add negative tests
    • Make unification lazier (as described at https://okmij.org/ftp/ML/generalization.html)
  • Make it possible to run type checker on parts of a program, reusing existing types
  • Refactor our builds and tests
  • Go through the Github issues
    • Mark stale issues as done
    • Fix easy issues
  • Remove remaining dependencies on type-annot.mc
  • Improve mi pretty-printer
  • [X] Create a self-contained, package-manager-independent build script for making Miking and all dependencies needed to compile programs (e.g. owl + openblas, …), for inclusion in distributions like PyPI.
  • dprint for mi compile