-
Notifications
You must be signed in to change notification settings - Fork 12
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.
- Error Handling
- Language Features
- Performance
- Geometry
- Interface
- Code cleaning
- Morphoview improvements
- 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.
- 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]
- Properly support modules
- Single stepping
- Set and remove breakpoints
- Print expressions
- Set expressions
- Ultimately interface with VSCode
- 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.
- 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
- Improve code modularity by defining new objects types through a common interface. This would simplify object.c considerably
- 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.
- 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.