Online Developer Meeting (2021-09-28): Difference between revisions

From Octave
Jump to navigation Jump to search
(Create page.)
 
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
* Date: Tuesday, September 28, 2021 @ 18:00 UTC
* Date: Tuesday, September 28, 2021 @ 18:00 UTC
* Location: https://meet.jit.si/octave-dev-2021-09-28
* Location: https://meet.jit.si/octave-dev-2021-09-28


== Todays topics ==
== Todays topics ==
Line 6: Line 7:
* Meet and greet 5 minutes before meeting (audio testing).
* Meet and greet 5 minutes before meeting (audio testing).


=== First topic ===
=== Octave 6.4.0? ===
 
* Last(?) Octave 6 release?
* Background: 12 changes on the stable branch (~10 on the release branch of MXE Octave) since the last release. Most important ones:
** Octave GUI doesn't start for some Windows users. Bug in Qt 5.14 that is fixed in Qt 5.15.
** Crash to desktop fixed in Octave core ([https://savannah.gnu.org/bugs/?61191 bug #61191]).
** Crash to desktop fixed in librsb ([https://savannah.gnu.org/bugs/?60042 bug #60042], only affects Windows bundle).
** Command line arguments with parameters (e.g. <code>--path</code>) can't be combined with <code>--gui</code> ([https://savannah.gnu.org/bugs/?60886 bug #60886]).
 
* Ask on discourse for pending changes and do a new release.
 
=== Approximate release date for Octave 7? ===
 
* Last few cycles: merge to stable and release date of first stable version:
** 6.x: merge to stable: 2020-02-17 --- release: 2020-11-26 (~ 9.5 month)
** 5.x: merge to stable: 2018-12-20 --- release: 2019-02-23 (~ 2 month)
** 4.4.x: merge to stable: 2018-04-04 --- release: 2018-04-30 (< 1 month)
** 4.2.x: merge to stable: 2016-09-28 --- release: 2016-11-13 (~ 1.5 month)
 
* Unfinished projects:
** Symbol visibility breaks tests for indexing expressions on macOS. Also many linker warnings similar to this (see [https://savannah.gnu.org/bugs/index.php?59820 bug #59820]):
ld: warning: direct access in function 'conv_to_int_array(Array<octave::idx_vector> const&)' from file 'liboctave/array/.libs/libarray.a(libarray_la-Array-util.o)' to global weak symbol 'vtable for Array<long long>' from file 'liboctave/array/.libs/libarray.a(libarray_la-Array-i.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
** Support paths including spaces (mostly for Windows - '''not''' relying on short file names). What about package Makefiles? Probably best if we defer that one to later.
** more efficient mex file interface with direct pointers to data in Octave arrays (jwe)
** Prefer OCTAVE_LOCAL_BUFFER over Array objects where possible (Rik, not a blocker)
 
* Probably merge default to stable some time in November
* Probably release Octave 7 around the end of this year or early 2022.
 
=== CamelCase in Octave functions? ===
 
* What is our current stance on that?  -->  Avoid it for consistency. Allowed for compatibility.
 
=== Octave released on MSYS2 ===
 
* Not aiming to replace MXE Octave (more reliable, tested, stable(?)). Rather complement it.
* Target group:
** Users that want to use e.g. Octave packages that depends on third party packages not included in MXE Octave.
** Users that need features of newer versions of packages that are included in MXE Octave.
 
=== GCC plugins ===
 
* Call out to anyone who has experience with compiler plugins
* Is it possible to write a compiler plugin that identifies variables that match certain conditions? E.g., <code>m_</code> prefix for member variables.
* Might allow other analysis of the code: E.g., are static or global variables used in a thread-safe manner?
 
=== Convenience function to check for integer property ===
 
* Add a function that checks if a double has an integer value.
* Also return true for integer type input.
* What is a good name (in Octave and C++ code)?
 
=== Broadcasting with special matrix types ===
 
* Topic comes up repeatedly in bug reports.
* Add convenience option to disable support for these types (range, diagonal matrix, permutation matrix)?
* Cast to full matrices before broadcasting? Special handling for NaN and Inf values!
 
== Previous topics ==
:''The following items were not discussed.  Just some links to progress on those items are displayed.''
 
=== Switch this meeting to more casual format ===
 
* In the future notes of the talks will be added to this wiki in a more sparse fashion.
 
=== liboctave ===
 
* Make more use of STL
* Not all liboctave components can be replaced by STL containers, as the ND-indexing is not supported.
* <code>string_vector</code> class probably replaceable by STL containers.
 
=== Tips for Octave C++ code writers ===
 
Such as packages, toolboxes, etc.
 
* Prefer <code>OCTAVE_LOCAL_BUFFER</code> over heavy-weight <code>Array</code> object to store results of (Fortran-) library calls.
* Prefer <code>octave_value</code> type variables over internal data structures.
** Examples: Function handle class and Range class.
 
=== For package maintainers ===
 
* Do not use <code>error_state</code> anymore! https://octave.discourse.group/t/eliminating-use-of-error-state-in-octave-code/1515
* Do not suppress compiler warnings about deprecated features today, those are the bug reports of tomorrow, when it is too late.
 
=== octave namespace ===
 
* jwe made many breaking changes on the default branch moving symbols in the octave namespace, to keep the namespaces tidy.
 
=== Deprecations ===
 
* The operators <code>.+</code>, <code>.-</code>, and <code>**</code> https://octave.discourse.group/t/deprecating-fortran-style-exponent-operator/1516 will be deprecated.
 
=== Trolling ===
 
* In case of trolling behavior of users, please mark the thread, thus a Discourse admin can close the threat and mute the user.
** DO NOT FEED THE TROLL: Any further answer or conversation is most likely a waste of emotions and time.
* Any user violating the usage conditions https://octave.discourse.group/tos#heading--conditions will be muted or removed from the forum entirely.
 
=== Code sprints ===
 
* Wish for more code sprints, e.g.,
** "m_" convention https://octave.discourse.group/t/using-m-prefix-for-member-variables-in-c-classes/1517/17
** Close easy closable bugs [[Short_projects#Easy_Closes]]


== See also ==
== See also ==

Latest revision as of 07:28, 29 September 2021


Todays topics[edit]

  • Meet and greet 5 minutes before meeting (audio testing).

Octave 6.4.0?[edit]

  • Last(?) Octave 6 release?
  • Background: 12 changes on the stable branch (~10 on the release branch of MXE Octave) since the last release. Most important ones:
    • Octave GUI doesn't start for some Windows users. Bug in Qt 5.14 that is fixed in Qt 5.15.
    • Crash to desktop fixed in Octave core (bug #61191).
    • Crash to desktop fixed in librsb (bug #60042, only affects Windows bundle).
    • Command line arguments with parameters (e.g. --path) can't be combined with --gui (bug #60886).
  • Ask on discourse for pending changes and do a new release.

Approximate release date for Octave 7?[edit]

  • Last few cycles: merge to stable and release date of first stable version:
    • 6.x: merge to stable: 2020-02-17 --- release: 2020-11-26 (~ 9.5 month)
    • 5.x: merge to stable: 2018-12-20 --- release: 2019-02-23 (~ 2 month)
    • 4.4.x: merge to stable: 2018-04-04 --- release: 2018-04-30 (< 1 month)
    • 4.2.x: merge to stable: 2016-09-28 --- release: 2016-11-13 (~ 1.5 month)
  • Unfinished projects:
    • Symbol visibility breaks tests for indexing expressions on macOS. Also many linker warnings similar to this (see bug #59820):
ld: warning: direct access in function 'conv_to_int_array(Array<octave::idx_vector> const&)' from file 'liboctave/array/.libs/libarray.a(libarray_la-Array-util.o)' to global weak symbol 'vtable for Array<long long>' from file 'liboctave/array/.libs/libarray.a(libarray_la-Array-i.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
    • Support paths including spaces (mostly for Windows - not relying on short file names). What about package Makefiles? Probably best if we defer that one to later.
    • more efficient mex file interface with direct pointers to data in Octave arrays (jwe)
    • Prefer OCTAVE_LOCAL_BUFFER over Array objects where possible (Rik, not a blocker)
  • Probably merge default to stable some time in November
  • Probably release Octave 7 around the end of this year or early 2022.

CamelCase in Octave functions?[edit]

  • What is our current stance on that? --> Avoid it for consistency. Allowed for compatibility.

Octave released on MSYS2[edit]

  • Not aiming to replace MXE Octave (more reliable, tested, stable(?)). Rather complement it.
  • Target group:
    • Users that want to use e.g. Octave packages that depends on third party packages not included in MXE Octave.
    • Users that need features of newer versions of packages that are included in MXE Octave.

GCC plugins[edit]

  • Call out to anyone who has experience with compiler plugins
  • Is it possible to write a compiler plugin that identifies variables that match certain conditions? E.g., m_ prefix for member variables.
  • Might allow other analysis of the code: E.g., are static or global variables used in a thread-safe manner?

Convenience function to check for integer property[edit]

  • Add a function that checks if a double has an integer value.
  • Also return true for integer type input.
  • What is a good name (in Octave and C++ code)?

Broadcasting with special matrix types[edit]

  • Topic comes up repeatedly in bug reports.
  • Add convenience option to disable support for these types (range, diagonal matrix, permutation matrix)?
  • Cast to full matrices before broadcasting? Special handling for NaN and Inf values!

Previous topics[edit]

The following items were not discussed. Just some links to progress on those items are displayed.

Switch this meeting to more casual format[edit]

  • In the future notes of the talks will be added to this wiki in a more sparse fashion.

liboctave[edit]

  • Make more use of STL
  • Not all liboctave components can be replaced by STL containers, as the ND-indexing is not supported.
  • string_vector class probably replaceable by STL containers.

Tips for Octave C++ code writers[edit]

Such as packages, toolboxes, etc.

  • Prefer OCTAVE_LOCAL_BUFFER over heavy-weight Array object to store results of (Fortran-) library calls.
  • Prefer octave_value type variables over internal data structures.
    • Examples: Function handle class and Range class.

For package maintainers[edit]

octave namespace[edit]

  • jwe made many breaking changes on the default branch moving symbols in the octave namespace, to keep the namespaces tidy.

Deprecations[edit]

Trolling[edit]

  • In case of trolling behavior of users, please mark the thread, thus a Discourse admin can close the threat and mute the user.
    • DO NOT FEED THE TROLL: Any further answer or conversation is most likely a waste of emotions and time.
  • Any user violating the usage conditions https://octave.discourse.group/tos#heading--conditions will be muted or removed from the forum entirely.

Code sprints[edit]

See also[edit]