Skip to content

Road Map

Tim Atherton edited this page Jun 3, 2024 · 44 revisions

Roadmap

Morpho 0.6.x will continue to extend the range of problems morpho can solve, provide improved performance, and convert the code to a more modular structure. We aim to release a new version quarterly. To create 0.6 have separated morpho into a shared library, hosted in this repository, and a separate terminal app, which allows morpho to be used in more ways. We expect to simplify the library by moving core functionality out into extensions.

Below are some of our goals for the 0.6.x series:

Contributions are welcome! Please suggest desirable new features via the Issue tracker above, and refer to the contributor guide.

Language Features

  • Type checking and type inference in the compiler.
  • Multiple dispatch. (0.6.1)
  • Formatting as part of string interpolation syntax.
  • Add named properties to classes.
  • Obviate need for self as part of method calls.
  • Switch statements.
  • Ternary operator.

Additional Features

  • Complex matrices and other storage schemes.
  • Extend Fields to enable complex matrices.
  • Half-Edge mesh structure.
  • Support for multiple types of element and discretization. (0.6.1)
  • Support for parallelization.

User Experience

  • Additional installation options, e.g. apt, conda.
  • Package versioning.
  • Package manager.
  • Improved interface for stability eigenanalysis.
  • Jupyter interface.
  • Interface debugger with VSCode.

Developer Experience

  • Improve debugger to allow calling functions and evaluating expressions.
  • Clean and improve the morpho API to enhance embeddability and writing extensions.
  • Allow optional arguments in morpho_call.
  • Allow extensions to load other extensions.
  • Allow extensions to check compatibility.

Modularization

  • Move functionals, and potentially the computational geometry library, into an extension.
  • Move non-core bundled modules (e.g. the VTK module) into extensions.

Minor Features

  • Enable use of keywords as property and method labels.
  • Star, closure and link methods for Selection.

Performance

  • New optimization module implementing quasinewton, etc. (0.6.1)
  • Rewrite bytecode optimizer to correctly perform data flow analysis.
  • Add slots to classes and instances (ties into names properties on classes)
  • Permit parallelization in morpho, e.g. through map.

Bug fixes

  • Fix Range class.
  • Redesign CALL opcode to enable automated checking of positional arguments.

Extensions

  • Plotting library; More sophisticated graphics.
  • libcurl
  • zeromq
  • images
  • multivectors
  • GPU acceleration.

Morphoview

  • More flexible shading model.
  • Improve API to facilitate less bandwidth.
  • Interactivity using ZeroMQ.
  • AR integration in morphoview or via separate app.