Skip to content

Road Map

Tim Atherton edited this page Mar 8, 2022 · 44 revisions

This page describes some of the features we're planning for future releases.

version 0.6.0

Design Goals

  1. Error Handling
  2. Language Features
  3. Performance
  4. Geometry
  5. Interface
  6. Code cleaning
  7. Morphoview improvements

Error Handling

  • User-defined error handles.
  • Raising errors from within user code.
  • try...catch to handle errors from within user code.
  • Improve re-entrant use of the VM with respect to errors.

Language Features

  • Variadic arguments in user code such as fn foo(a,b... , option = 1) where b is a variadic argument. The argument b would work like a list in user code.
  • Improve Array implementation.
  • List and Array slices using Range objects.
  • Support for Complex Numbers
  • Fix import ... for to work correctly with multiple imports.
  • Switch statements
  • Mutually recursive functions
  • Map/table/sum
  • Mixins [class ... is ... with]

Debugger

  • Properly support modules
  • Single stepping
  • Print expressions
  • Ultimately interface with VSCode

Performance

  • GPU accelerated algorithms
  • Permit compilation with alternative libraries such as Librsb Intel math kernel libraries and PetSc.
  • Use pthreads to parallelize force and energy calculations as well as offer sub-virtual machines.
  • Add slots to instances so that lookup can be done swiftly where the property is unambiguous.
  • Low-level tuning of the VM
    • Is it advantageous to eliminate the register/constant flags and hence gain more opcodes?
    • Are BLT, BEQ, BLE instructions beneficial?
  • Optimizer
    • Repeated expressions
    • Conversion of method calls to function calls where the class is unambiguous
  • Dynamically loaded packages compiled in C. Extensions should be writable with a simple morpho.h header file provided as part of the installation.
  • Transpile morpho functions to C and dynamically bind.
  • A System class.

Geometry

  • Mesh data structures needs to be rethought to provide orientation.
  • Support for multiple types of element and discretization.
  • Mesh pruning.
  • Support for Multivector arithmetic.
  • VolumeIntegrate—and perhaps a more general approach to integration.
  • Stability eigenanalysis
  • Faster optimization algorithms
  • A mesh generator
  • Delaunay triangulations

Interface

  • Jupyter interface.
  • Plotting library; More sophisticated graphics.
  • 2D plots

Code cleaning

  • Improve code modularity by defining new objects types through a common interface. This would simplify object.c considerably

Morphoview improvements

  • More control over shading. Ability to choose per vertex (interpolated) per element (flat) shading.
  • Compact commands for commonly used primitives. Provision of, e.g., spheres and cylinders, that are commonly used in morpho
  • Text. Morphoview should be able to display text.
  • Interactivity. In order to do this, morpho must link with morphoview over ZeroMQ
  • VR integration.
Clone this wiki locally