Mercurial > octave
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 |
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 |