-
Notifications
You must be signed in to change notification settings - Fork 10
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.
- 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.
- 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]
- Properly support modules
- Single stepping
- Print expressions
- Ultimately interface with VSCode
- 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.
- 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
- Jupyter interface.
- Plotting library; More sophisticated graphics.
- 2D plots
- 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. Morphoview should be able to display text.
- Interactivity. In order to do this, morpho must link with morphoview over ZeroMQ
- VR integration.