Skip to content

Awesome Future Features

Mason Bially edited this page Feb 27, 2014 · 3 revisions

This is a place to put awesome future features that madz could provide/allow. They are somewhat split into categories.

Usage

Live

Eventually Madz will be a live service which launches and manages tasks, manages module system states, etc. this will allow for integration into IDE's and specialized tools, as needed.

Ontology

Ontological support for determining information about modules, types, and other classes.

Development

MST: Module Stack Trace Framework

This feature will allow for annotation of stack traces with module boundaries, and merge multiple languages call stacks.

IMPs: Inter Module Protocol

These represent ways modules communicate with each other. They can allow for better performance and cross module optimizations. They are automatic, and should not effect implementation details.

The planner will automatically build IMP domains, generate the wrapping, compiling, deploying, and other objects which will manage the modules within the IMP domain transparently.

IMP/LIB

This allows modules to be compiled into the same object, a library, static or dynamic, to create less required objects.

IMP/LLVM

Link Time Optimization enabled LLVM code objects can be compiled across module boundaries for efficient speeds. This will rely on a lot of the same technologies as the IMP/LIB, but just add LLVM features.

Deployment

ELM: External Library Manager

A tool to manage external libraries. Would be able to download a plugin, containing arbitrary code, to deploy a library. Helper modules could provide common tasks, downloading from source forge, build cmake, etc. Often a library can be deployed in two forms, the runtime and the development kit. Plugins should also provide the ability to configure existing installations, and on systems with package managers, this should be automatic.

Runtime

ER: Exceptional Restart (or Exception Replacement)

A shared system for managing exceptions between runtimes. Borrowing from lisp's restarts.

Clone this wiki locally