annotate etc/ROADMAP.md @ 33601:e7b0ea3ae6c8 bytecode-interpreter tip

maint: Merge default to bytecode-interpreter
author Arun Giridhar <arungiridhar@gmail.com>
date Sat, 18 May 2024 12:39:04 -0400
parents 82ae00b40c2c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
32705
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
1 Octave Roadmap (version 10 onwards)
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
2
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
3 This roadmap is intended to be a living document, and serves multiple purposes:
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
4 * For developers to agree on activities and large-scale features,
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
5 * To decide priorities,
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
6 * To inform new contributors where they can contribute and feel ownership,
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
7 * To allow easier parcelling of smaller activities into GSoC etc,
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
8 * To be a transparent basis for any financial decisions to spend project money.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
9
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
10 This document is different from a wishlist of features, such as those
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
11 present on the Octave wiki, in that this document lists names of people
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
12 willing to work on specific activities, whether they are contributors writing code
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
13 themselves, or existing Octave maintainers soliciting / reviewing / accepting code
32721
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
14 from new contributors.
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
15
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
16 * For new contributors, this is a way to get your contribution
32705
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
17 reviewed and merged into the Octave codebase with more confidence, and a way
32721
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
18 to work with a more experienced Octave developer on a named activity so you too
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
19 can become an Octave developer over time.
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
20
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
21 * For existing maintainers, this is a way to get new developers and
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
22 contributors in, which helps Octave development scale.
32705
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
23
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
24 If you want to take ownership of some activity below, or create a new activity,
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
25 please edit the list as necessary, add your name, and post about it on Discourse.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
26 If you can, please split up a large activity into smaller pieces that can then
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
27 be specifically written by new contributors, GSoC interns, etc. The aim is to
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
28 allow anyone to jump in to start contributing to a topic.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
29
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
30 This roadmap process starts from Octave 10. As has been the practice for many
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
31 years, a major version of Octave is released each year, and no single feature
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
32 will be "required" for any given version to be released, but it is good to have
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
33 target versions for this list of features so that certain long-pending activities
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
34 get more priority.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
35
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
36 - Better support for classdef. (LEAD?)
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
37 - Matlab-compatible classdef behavior.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
38 - (Needs to be split up into smaller activities.)
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
39 - Target: Octave 10.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
40
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
41 - HDF5 compatibility with Matlab: (LEAD?)
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
42 - Deprecate Octave's native savefile formats in favor of Matlab-compatible HDF5.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
43 - Decide how to handle backwards compatibility with older savefiles.
32721
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
44 - Needs h5read/h5write as well as v7.3 MAT-file load/save support.
32705
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
45 - Influenced by classdef decision above.
32721
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
46 - Note: Examine Nelson's implementation.
32705
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
47 - Target: Octave 10.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
48
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
49 - String class "foo" as distinct from array of characters 'foo'. (LEAD?)
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
50 - See https://octave.discourse.group/t/implementation-of-a-string-class/1089
33170
82ae00b40c2c maint: strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 32829
diff changeset
51 - Depends on HDF5.
32721
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
52 - Note: Examine Nelson's implementation.
32705
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
53 - Target: Octave 10.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
54
32721
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
55 - Dictionaries (aka associative arrays / hashmaps). (LEAD? GUILLAUME?)
32705
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
56 - See https://octave.discourse.group/t/adding-hashmaps-to-octave/3306
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
57 - Depends on HDF5 and string.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
58 - Target: Octave 10.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
59
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
60 - Release bytecode interpreter. (PETTER, JWE)
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
61 - First question: When Octave is released with the bytecode interpreter,
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
62 will it *replace* the tree-walker or will it sit alongside it? Once that
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
63 question is answered and agreed upon, these activities follow.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
64 - Behavior compatibility with tree-walking interpreter.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
65 - Code clarity and documentation.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
66 - Style check.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
67 - Performance experiments.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
68 - Target: Octave 10
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
69
32828
7c6a8d72f91b ROADMAP.md: Add command window widget activity
Arun Giridhar <arungiridhar@gmail.com>
parents: 32721
diff changeset
70 - New command window widget. (LEAD?)
32829
ad4c271d6faa ROADMAP.md: Expand entry for command widget
Arun Giridhar <arungiridhar@gmail.com>
parents: 32828
diff changeset
71 - In Octave 9, this widget is available but experimental. It can be invoked
ad4c271d6faa ROADMAP.md: Expand entry for command widget
Arun Giridhar <arungiridhar@gmail.com>
parents: 32828
diff changeset
72 with the runtime argument `--experimental-terminal-widget`. To make it
ad4c271d6faa ROADMAP.md: Expand entry for command widget
Arun Giridhar <arungiridhar@gmail.com>
parents: 32828
diff changeset
73 production quality (i.e., not experimental), the following features and
ad4c271d6faa ROADMAP.md: Expand entry for command widget
Arun Giridhar <arungiridhar@gmail.com>
parents: 32828
diff changeset
74 more need to be added:
ad4c271d6faa ROADMAP.md: Expand entry for command widget
Arun Giridhar <arungiridhar@gmail.com>
parents: 32828
diff changeset
75 - readline-like command line editing: recall history with up/down arrow keys
ad4c271d6faa ROADMAP.md: Expand entry for command widget
Arun Giridhar <arungiridhar@gmail.com>
parents: 32828
diff changeset
76 - capture output written to stdout/stderr
ad4c271d6faa ROADMAP.md: Expand entry for command widget
Arun Giridhar <arungiridhar@gmail.com>
parents: 32828
diff changeset
77 - a pager to enable `more on` to work
ad4c271d6faa ROADMAP.md: Expand entry for command widget
Arun Giridhar <arungiridhar@gmail.com>
parents: 32828
diff changeset
78 - search the contents of the command window
ad4c271d6faa ROADMAP.md: Expand entry for command widget
Arun Giridhar <arungiridhar@gmail.com>
parents: 32828
diff changeset
79 - clear the command window for `clc`
32828
7c6a8d72f91b ROADMAP.md: Add command window widget activity
Arun Giridhar <arungiridhar@gmail.com>
parents: 32721
diff changeset
80 - Background: https://wiki.octave.org/GUI_terminal_widget
7c6a8d72f91b ROADMAP.md: Add command window widget activity
Arun Giridhar <arungiridhar@gmail.com>
parents: 32721
diff changeset
81 - Discussion: https://octave.discourse.group/t/new-command-window-widget/501
7c6a8d72f91b ROADMAP.md: Add command window widget activity
Arun Giridhar <arungiridhar@gmail.com>
parents: 32721
diff changeset
82 - Target: Octave 11
7c6a8d72f91b ROADMAP.md: Add command window widget activity
Arun Giridhar <arungiridhar@gmail.com>
parents: 32721
diff changeset
83
32705
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
84 - Graph theory routines (ARUN)
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
85 - These need a full overhaul and in some cases ground-up implementation.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
86 - Matlab switched to graph objects some versions ago, as opposed to the
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
87 traditional approach (pre-2016) of directly manipulating adjacency matrices
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
88 and edge lists.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
89 - Octave needs to implement / import many classical graph functions
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
90 (e.g. all-pairs shortest paths, transitive closure, betweenness centrality, etc).
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
91 These are not difficult to write, but have mostly been written by end users
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
92 for their own work, so the first effort is to converge on a usable function API.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
93 - Possible dependency on HDF5 if graph classes are written as classdefs,
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
94 so graph objects will not be saved until then, but the rest of the
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
95 development can start and proceed.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
96 - Target: Octave 10-11, potential GSoC project for 2024.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
97
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
98 - Argument blocks implementation. (LEAD?)
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
99 - Some work has already been done, but needs to be completed.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
100 - Target: Octave 11.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
101
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
102 - Assess OpenGL role and improvements. (RIK?)
32721
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
103 - May possibly need a paid consultant.
32705
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
104 - Target: Octave 11
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
105
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
106 - Replace GLPK with more performant solver for LP / MILP. (ARUN)
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
107 - Candidate: HiGHS.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
108 - More generally, provide a usable API for optimization routines so that
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
109 users can drop in their own favorite solver. The idea is that the user
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
110 should be able to switch backend solvers with just a simple change
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
111 like changing this:
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
112 `linprog (... , "solver", "glpk")`
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
113 to this:
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
114 `linprog (... , "solver", "highs")`
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
115 without changing any other user-written code. Can this sort of thing
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
116 be done properly so that new solvers are easy to add to Octave by their
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
117 respective authors?
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
118 - Target: Octave 11