Skip to content

Road Map

Tim Atherton edited this page Apr 23, 2022 · 54 revisions

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

Next major version (0.6.0)

Areas of focus

  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.
  • Mutually recursive functions
  • Support for Complex Numbers
  • Improve import
  • Switch statements
  • Map/table/sum
  • Mixins [class ... is ... with]

Debugger

  • Properly support modules
  • Single stepping
  • Set and remove breakpoints
  • Print expressions
  • Set expressions
  • Ultimately interface with VSCode

Performance

  • GPU accelerated algorithms
  • Parallelization of force and energy calculations.
  • Low-level tuning of the VM
    • Test performance of redesigned instruction set eliminating constant flags.
    • Alternative call procedure to reduce register wipes.
  • Optimizer
    • Various code transformations
    • Conversion of method calls to function calls where the class is unambiguous
    • Moving properties to slots to avoid
    • Additional opcodes, e.g. test-and-branch instructions to improve performance
  • A System class.
    • Dynamically link packages compiled in C. Extensions should be writable with a simple morpho.h header file provided as part of the installation.

Geometry

  • Provide orientation information for meshes
  • Support for multiple types of element and discretization.
  • Mesh pruning.
  • A more modular integrator and support for volume integration
  • Stability eigenanalysis
  • Faster and more robust optimization algorithms
  • A mesh generator
  • Delaunay triangulations

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 support.
  • Interactivity. In order to do this, morpho must link with morphoview over ZeroMQ
  • VR integration.

Future versions

  • Sub-virtual machines, promises etc.
  • Transpile morpho functions to C and dynamically bind.
  • Support for Multivector arithmetic.
  • Jupyter interface.
  • Plotting library; More sophisticated graphics.
  • 2D plots
  • Permit compilation with alternative libraries such as Librsb Intel math kernel libraries and PetSc.
Clone this wiki locally