Difference between revisions of "Online Developer Meeting (2021-10-26)"

From Octave
Jump to navigation Jump to search
(Create page.)
 
(Copy topics from last meeting. Add two potential topics for this meeting.)
Line 6: Line 6:
 
* Meet and greet 5 minutes before meeting (audio testing).
 
* Meet and greet 5 minutes before meeting (audio testing).
  
=== First topic ===
+
=== Progress of Octave 6.4.0 release ===
 +
 
 +
[https://octave.discourse.group/t/start-release-process-for-octave-6-4-0/1652 Start release process for Octave 6.4.0]
 +
 
 +
* State of OpenBLAS compilation bug(?): [https://savannah.gnu.org/bugs/index.php?61246 bug #61246: matrix inversions give wrong results (inv, lu, mldivide)]
 +
* <code>pkg test sparsersb</code> crashes Octave (only when installed to read-only directory?). Needs further investigation.
 +
* Which version numbers to update in which files on (minor) release? (CITATION file?)
 +
* Update of merge date for Octave 7.x?
 +
 
 +
=== Fallback topic: <code>spawn</code> with <code>P_OVERLAY</code> works differently on POSIX and Windows ===
 +
 
 +
(Only if there is nothing else to talk about.)
 +
 
 +
Markus' current understanding:
 +
* <code>spawn</code> with <code>P_OVERLAY</code> replaces the current process with a new one. On POSIX, another process waiting for the original process (like a terminal) will wait for the '''replacing''' process instead.
 +
* On Windows, <code>spawn</code> with <code>P_OVERLAY</code> also replaces the current process. But each process has a distinct id on Windows. I.e., the new process gets a different process id from the original one. Another process (like a terminal) waiting for the original process id will resume once the '''original''' process terminates. (The same happens with <code>exec</code>.) That leads to issues when trying to use the <code>octave.exe</code> wrapper on Windows.
 +
* Could we use <code>spawn</code> with <code>P_WAIT</code> instead? IIUC, that would require passing the return code from the spawned process. What else?
 +
 
 +
 
 +
== Previous topics ==
 +
:''The following items were not discussed.  Just some links to progress on those items are displayed.''
 +
 
 +
=== 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!
  
* First point
 
  
 
== See also ==
 
== See also ==

Revision as of 05:13, 25 October 2021

Todays topics

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

Progress of Octave 6.4.0 release

Start release process for Octave 6.4.0

Fallback topic: spawn with P_OVERLAY works differently on POSIX and Windows

(Only if there is nothing else to talk about.)

Markus' current understanding:

  • spawn with P_OVERLAY replaces the current process with a new one. On POSIX, another process waiting for the original process (like a terminal) will wait for the replacing process instead.
  • On Windows, spawn with P_OVERLAY also replaces the current process. But each process has a distinct id on Windows. I.e., the new process gets a different process id from the original one. Another process (like a terminal) waiting for the original process id will resume once the original process terminates. (The same happens with exec.) That leads to issues when trying to use the octave.exe wrapper on Windows.
  • Could we use spawn with P_WAIT instead? IIUC, that would require passing the return code from the spawned process. What else?


Previous topics

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

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 (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?

  • 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?

  • 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., 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

  • 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!


See also