Category:Development: Difference between revisions

From Octave
Jump to navigation Jump to search
(34 intermediate revisions by 3 users not shown)
Line 1: Line 1:
:''This page contains links to pages of interest to Octave developers.''
:''This page contains links to pages of interest to Octave developers.''


== Getting started ==
= πŸ’‘ Getting started πŸ”° =
* [[Developer FAQ]] -- Start here.
* [[Developer FAQ]] -- Start here.
* [[Contribution guidelines]] for Octave
* [[Contribution guidelines]] for Octave
Line 7: Line 7:
** [[Octave style guide]]
** [[Octave style guide]]
** [[Help text style guide]]
** [[Help text style guide]]
** [[Commit message guidelines]]


== Octave development ==
= πŸ”¬ Octave development =


=== [[:Category:Building|Building]] ===
: {{Note|'''Attend our next [[meet | Online Developer Meeting]]''' πŸ™‚πŸ’¬ (See [[:Category:Meetings | all previous meetings]])}}
Β 
== πŸ› οΈ [[:Category:Building|Building]] ==


* [[Building]] -- General information how to build Octave from source.
* [[Building]] -- General information how to build Octave from source.
** [[Building on Microsoft Windows]]
** [[Building on Microsoft Windows]]
** [[Building on Ubuntu Virtual Machine]]
* [[Continuous Build]] -- Check changes with [https://buildbot.net/ Buildbot].
* [[Continuous Build]] -- Check changes with [https://buildbot.net/ Buildbot].
* [[MXE]] -- Cross-compiling to MS Windows.
* [[MXE]] -- Cross-compiling to MS Windows.
* [[Enable large arrays: Build octave such that it can use arrays larger than 2Gb.|Large array support]] --
* [[Enable large arrays: Build octave such that it can use arrays larger than 2Gb.|Large array support]]


==== Tools ====
=== πŸ”§ Tools ===


* [[Mercurial]] -- How to use Octave's version control scheme.
* [[Mercurial]] -- How to use Octave's version control scheme, creating patches (changesets).
* [[Doxygen]] -- Documentation for C++ files
* [[Doxygen]] -- Documentation for C++ files
* [https://ccache.samba.org/ ccache] -- How to faster compile Octave.
* [https://ccache.samba.org/ ccache] -- How to faster compile Octave.
* [[:Category:Editors|Editors]] -- A list of editors supporting Octave syntax highlighting.
* [[:Category:Editors|Editors]] -- A list of editors supporting Octave syntax highlighting.


=== [[:Category:Testing|Testing]] ===
== βš–οΈ [[:Category:Testing|Testing]] ==


* [[Tests]]
* [[Tests]]
Line 31: Line 35:
* [[Add BIST tests for octave functions written in C++|BIST for C++ files]]
* [[Add BIST tests for octave functions written in C++|BIST for C++ files]]


=== Debugging ===
== 🐞 Debugging ==


* [[Debugging Octave]] -- How to use [https://www.gnu.org/software/gdb/ gdb] to obtain stack traces.
* [[Debugging Octave]] -- How to use [https://www.gnu.org/software/gdb/ gdb] to obtain stack traces.
* [[Finding Memory Leaks]] -- How to use [https://www.valgrind.org/ valgrind].
* [[Finding Memory Leaks]] -- How to use [https://www.valgrind.org/ valgrind].


=== [[:Category:Releases|Releasing]] ===
== πŸŽ‰ [[:Category:Releases|Releasing]] ==


* The next release will be '''GNU Octave 6.1'''. See the '''[[6.1 Release Checklist]]''' for more information.
* The next minor release will be '''GNU Octave 7.3.0''' (a few months major release).
* [[:Category:Releases|Older releases]]
* The next major release will be [[8.1 Release Checklist | '''GNU Octave 8.1.0''']] (beginning of 2023).
* [[Release History]]
* [[:Category:Releases|Old release checklists]]
* "Nightly" Octave releases on https://octave.space
Β 
== 🎯 Goals for upcoming releases ==
Β 
As discussed in the [[Online Developer Meeting (2020-10-27)]], this wiki section is for a list of possible goals for the next release.Β  Although anyone may edit the wiki, '''this section is intended for active developers, not a place to dump wishlist items or feature requests'''.Β  Please create a subsection for your ideas/priorities.
Β 
=== jwe priorities ===
:''See also [[JWE Project Ideas]] for additional info about some of these items.''
Β 
==== Large New Features ====
* Compatible arguments block ([https://savannah.gnu.org/bugs/?func=detailitem&item_id=59405 some work has been done]; need to execute actions when functions are called)
* Compatible local functions
* Compatible string class
** Define class itself ([[https://github.com/apjanke/octave-tablicious/inst initial implementation]?)
** Construct strings objects from double quoted strings (painful transition).
* Compatible table class ([https://github.com/apjanke/octave-tablicious initial implementation]?)
* Create a low-level interface to HDF5 functions
** Support Matlab's HDF5-based MAT file format using the proposed low-level interface to HDF5 functions
** Allow all types of function handles to be saved and loaded
** Allow [[classdef]] objects to be saved and loaded
* Make import feature work
Β 
==== Internal Improvements ====
* Refactor/rewrite code for handling load path
* Refactor/rewrite exist and which functions
* Refactor function objects
* Refactor broadcasting and make it work for sparse matrices
* Replace the [[GUI terminal widget|terminal widget in the GUI]]
* Write stack-based byte-code interpreter that doesn't result in deeply nested function calls to evaluate code
* JIT compiler
* Move more code inside octave namespace
* Eliminate mutable class data where possible
* Eliminate singleton objects
* Use classdef for handle graphics?
Β 
==== Other ====
* Bug fixes, especially those related to compatibility issues
* Work through the open bug reports for which patches have been submitted - review/apply/reject and close as many of these reports as possible
Β 
= πŸ’‘ [[:Category:Project_Ideas|Project ideas]] and work in progress =


== [[:Category:Project_Ideas|Project ideas]] and work in progess ==
* [[Short projects]] -- Good starting point to get into the Octave development.
* [[Short projects]] -- Good starting point to get into the Octave development.
* [[Summer of Code Project Ideas]] -- Ideas page for GSoC, SOCIS, ... projects.
* [[Summer of Code - Getting Started]] -- Ideas page for GSoC, SOCIS, ... projects.
* [[Projects]] -- Many things that would be nice to have done.
* [[Projects]] -- Many things that would be nice to have done.
** [[Classdef]] -- Define own data types using <code>classdef</code>.
** [[Classdef]] -- Define own data types using <code>classdef</code>.
Line 51: Line 96:
** [[Pythonic]] -- Calling Python functions directly from Octave.
** [[Pythonic]] -- Calling Python functions directly from Octave.


== Meetings ==
= Other =
Β 
* Read about past [[:Category:Meetings | developer meetings]].


== Other ==
* [[Project Infrastructure]]
* [[Project Infrastructure]]


[[Category:Contents]]
[[Category:Contents]]

Revision as of 13:17, 25 August 2022

This page contains links to pages of interest to Octave developers.

πŸ’‘ Getting started πŸ”°

πŸ”¬ Octave development

Info icon.svg
Attend our next Online Developer Meeting πŸ™‚πŸ’¬ (See all previous meetings)

πŸ› οΈ Building

πŸ”§ Tools

  • Mercurial -- How to use Octave's version control scheme, creating patches (changesets).
  • Doxygen -- Documentation for C++ files
  • ccache -- How to faster compile Octave.
  • Editors -- A list of editors supporting Octave syntax highlighting.

βš–οΈ Testing

🐞 Debugging

πŸŽ‰ Releasing

🎯 Goals for upcoming releases

As discussed in the Online Developer Meeting (2020-10-27), this wiki section is for a list of possible goals for the next release. Although anyone may edit the wiki, this section is intended for active developers, not a place to dump wishlist items or feature requests. Please create a subsection for your ideas/priorities.

jwe priorities

See also JWE Project Ideas for additional info about some of these items.

Large New Features

  • Compatible arguments block (some work has been done; need to execute actions when functions are called)
  • Compatible local functions
  • Compatible string class
    • Define class itself ([initial implementation?)
    • Construct strings objects from double quoted strings (painful transition).
  • Compatible table class (initial implementation?)
  • Create a low-level interface to HDF5 functions
    • Support Matlab's HDF5-based MAT file format using the proposed low-level interface to HDF5 functions
    • Allow all types of function handles to be saved and loaded
    • Allow classdef objects to be saved and loaded
  • Make import feature work

Internal Improvements

  • Refactor/rewrite code for handling load path
  • Refactor/rewrite exist and which functions
  • Refactor function objects
  • Refactor broadcasting and make it work for sparse matrices
  • Replace the terminal widget in the GUI
  • Write stack-based byte-code interpreter that doesn't result in deeply nested function calls to evaluate code
  • JIT compiler
  • Move more code inside octave namespace
  • Eliminate mutable class data where possible
  • Eliminate singleton objects
  • Use classdef for handle graphics?

Other

  • Bug fixes, especially those related to compatibility issues
  • Work through the open bug reports for which patches have been submitted - review/apply/reject and close as many of these reports as possible

πŸ’‘ Project ideas and work in progress

Other