JWE Project Ideas

From Octave
Revision as of 17:46, 27 March 2024 by Jwe (talk | contribs)
Jump to navigation Jump to search


2021-11-19: This page is out of date -- jwe

Project Ideas

The following are projects that I'm interested in working on, roughly prioritized by my level of interest. I intend to provide expanded explanations of each project.

Comment parsing

Refactor comment handling in lexer and parser.

MException object

FTLK graphics widget

Eliminate fltk graphics widget or move to external package.

gnuplot graphics widget

Eliminate gnuplot graphics widget or move to external package.

Function objects

Refactor function objects.

arguments blocks

Finish implementation of Mmatlab-compatible argument validation blocks.

local functions

Implement Matlab-compatible local functions in script files.

string object

load_path class

Refactor (or rewrite) load_path class.

Broadcasting

  • Refactor broadcasting.
  • Make broadcasting work for sparse matrices.

GUI command widget

Make common command widget for Windows and Unixy systems work well enough to become the default command line interface for the GUI.

OpenGL graphics

Modernize our use of OpenGL graphics to use shader programs instead of the legacy OpenGL API.

classdef

Refactor (or rewrite) classdef implementation.

Qt graphics widget

Refactor (or rewrite) Qt graphics widget.

graphics properties

Refactor graphics properties classes.

graphics threading issues

Fix handling of graphics properties to be properly thread safe.

HDF5 load and save

Implement Matlab compatible HDF5-based load and save functions.

External editors

Make it possible to use external editors such as Emacs, vim, or others with the GUI in addition to Octave's built-in code editor.

who -file

Fix who -file to just read file and list info, not create dummy scope.

import

Make "import" work in a matlab-compatible way ===

Code quality

    • Better and more complete use of C++ namespaces.
    • Better use of C++ features. Especially standard library features as their implementation becomes more widely available. For example, we might be able to simplify some things in Octave by using the C++17 filesystem and special functions libraries, if they provide results that are at least as good what we are using now.
    • Eliminate C preprocessor macros where possible.
    • Use const in more parse tree functions.
    • remove, replace, or at least rename the "added static" concept in the symbol_record class.
    • Should not expose symbol_record in call_stack functions if possible.
    • Remove unused symbol_table/scope/record functions.
    • Do recursive functions work properly with load/save now?
    • Use enums for options internally (typically to replace bool values).
    • Audit global variables and eliminate them where possible.
    • Audit use of panic_* functions and replace with calls to error where possible.
    • Fix symbol visibility so we are mostly tagging namespace decls, not individual functions.
    • Complete use of dispatch types for functions (search for "classes:" to find the few current examples).
    • Tag for built-in functions to specify maxiumum number of inputs.