JWE Project Ideas: Difference between revisions

Line 142: Line 142:
This is a large project, but one that will likely have to be tackled at some point.
This is a large project, but one that will likely have to be tackled at some point.


=== Miscellaneous ===
== Miscellaneous ==


==== Handle UTF-8 ====
=== Handle UTF-8 ===


We need to handle UTF-8 (or whatever) characters properly in all parts of Octave.  Try to do this in a Matlab-compatible way.
We need to handle UTF-8 (or whatever) characters properly in all parts of Octave.  Try to do this in a Matlab-compatible way.


==== Load / Save ====
=== Load / Save ===


* Make the load and save commands compatible with Matlab's HDF5-based file format.  Matlab users expect this and we need something like this to support large arrays anyway.  As much as possible, the initial implementation should be written in Octave's scripting language and the proposed [[Low-level interface to HDF5 functions]] so that it can easily be updated and patched as needed while we are still working out the details.  Only later should we consider translating performance-critical parts to C++, and then, only if really necessary.  
* Make the load and save commands compatible with Matlab's HDF5-based file format.  Matlab users expect this and we need something like this to support large arrays anyway.  As much as possible, the initial implementation should be written in Octave's scripting language and the proposed [[Low-level interface to HDF5 functions]] so that it can easily be updated and patched as needed while we are still working out the details.  Only later should we consider translating performance-critical parts to C++, and then, only if really necessary.  
* Phase out Octave's own text and binary formats.  Too much effort is required to maintain the code to support all the various formats.
* Phase out Octave's own text and binary formats.  Too much effort is required to maintain the code to support all the various formats.


==== Low-level interface to HDF5 functions ====
=== Low-level interface to HDF5 functions ===


Create a thin wrapper for the HDF5 library.  As much as possible, make it compatible with the [https://www.mathworks.com/help/matlab/low-level-functions.html Matlab interface to HDF5].  However, we may support newer functions (as of 2020/10/30, the list of Matlab functions appears to correspond to an older version of the library than is presently available in the HDF5 library itself) and support for legacy functions has a low priority.
Create a thin wrapper for the HDF5 library.  As much as possible, make it compatible with the [https://www.mathworks.com/help/matlab/low-level-functions.html Matlab interface to HDF5].  However, we may support newer functions (as of 2020/10/30, the list of Matlab functions appears to correspond to an older version of the library than is presently available in the HDF5 library itself) and support for legacy functions has a low priority.
Line 159: Line 159:
Also as of 2020/10/30, [[User:jwe|jwe]] is working on this project.  Help is welcome!
Also as of 2020/10/30, [[User:jwe|jwe]] is working on this project.  Help is welcome!


==== RNG issues ====
=== RNG issues ===


RandStream and Other RNG issues
RandStream and Other RNG issues
Line 165: Line 165:
This is likely a large project, but it would be nice to have updated, compatible interfaces.
This is likely a large project, but it would be nice to have updated, compatible interfaces.


==== MEX Interface ====
=== MEX Interface ===


Implement mxMakeReal and mxMakeComplex functions.
Implement mxMakeReal and mxMakeComplex functions.


==== JIT compiler ====
=== JIT compiler ===


A proof-of-concept implementation was done several years ago by a
A proof-of-concept implementation was done several years ago by a
Line 181: Line 181:
and Octave internals.
and Octave internals.


==== loadlibrary ====
=== loadlibrary ===


This feature might be nice to have but it has a low priority.
This feature might be nice to have but it has a low priority.


==== Complex integers ====
=== Complex integers ===


Should we support this feature?  Should we refactor the implementation of array objects to make this job easier?
Should we support this feature?  Should we refactor the implementation of array objects to make this job easier?


==== who -file option ====
=== who -file option ===


Should just read file and list info, not create dummy scope.  Likewise for whos function.
Should just read file and list info, not create dummy scope.  Likewise for whos function.