-
Notifications
You must be signed in to change notification settings - Fork 12
Road Map
Tim Atherton edited this page Nov 6, 2022
·
54 revisions
This page describes some of the features we're planning for future releases.
- Error Handling
- Language Features
- Debugger
- 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
- Profiler.
- 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 dictionary lookup
- Additional opcodes, e.g. test-and-branch instructions to improve performance
- A System class.
- Provide orientation information for meshes
- Support for multiple types of element and discretization.
- Mesh pruning.
- 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) or per element (flat) shading.
- Text support.
- Improved graphics module to support text
- GPU accelerated algorithms.
- Sub-virtual machines, promises etc.
- Support for Multivector arithmetic.
- Permit compilation with alternative libraries such as Librsb Intel math kernel libraries and PetSc.
- Jupyter interface.
- Interface debugger with VSCode.
- A more modular integrator.
- Dynamically linked extensions compiled in C, loaded with import and compiled with headers.
- libcurl
- zeromq
- Transpile morpho functions to C and dynamically bind.
- Package versioning
- Simple package manager
- Plotting library; More sophisticated graphics.
- 2D plots
- VR integration in morphoview
- Morphoview interactivity. In order to do this, morpho must link with morphoview over ZeroMQ