If variable-length arrays are not supported by standard C++, why use them? I'm sure you don't strictly need them, and by using them GNU-APL becomes non-portable.
--blake On Fri, Aug 15, 2025 at 12:06 PM Dr. Jürgen Sauermann via Bugs and suggestions for GNU APL <bug-apl@gnu.org> wrote: > Hi Louis, > > thanks, hopefully fixed in SVN 1880. > > I believe I have caught most of the C++ warnings. The warning about > dynamic arrays is somewhat bogus since every C++ compiler that I know of > supports dynamic arrays event though they are not standardised in C++ (and > only god knows why not). > > I haven't touched the ld warnings; it seems like these linker flags are > needed on > some platforms. It might be that re-running *libtoolize* and/or *aclocal* > gets rid of > these warnings. > > Best Regards, > Jürgen > > > On 8/12/25 20:18, Louis Chretien wrote: > > Yes, it did. The build was successful despite the warnings. > > — > Louis Chrétien > lchret...@mac.com > > On Aug 12, 2025, at 13:18, Dr. Jürgen Sauermann <mail@jürgen-sauermann.de> > <mail@jürgen-sauermann.de> wrote: > > Hi Louis, > > I will look into this. Did the build produce a working apl binary despite > the warnings? > > Thanks, > Jürgen > > > On 7/21/25 18:33, Louis Chretien via Bugs and suggestions for GNU APL > wrote: > > There is a bunch of warnings on the latest build of GNU APL for Mac OS > 14.7.6: > > ============================== > > Backtrace.cc:1401:18: warning: variable length arrays in C++ are a Clang > extension [-Wvla-cxx-extension] > 1401 | char si[strlen(const_si) + 1]; > | ^~~~~~~~~~~~~~~~~~~~ > Backtrace.cc:1401:25: note: read of non-constexpr variable 'const_si' is > not allowed in a constant expression > 1401 | char si[strlen(const_si) + 1]; > | ^ > Backtrace.cc:1400:23: note: declared here > 1400 | const char * const_si = strings[size - i - 1]; > | ^ > 1 warning generated. > > Bif_F12_INDEX_OF.cc:75:22: warning: variable length arrays in C++ are a > Clang extension [-Wvla-cxx-extension] > 75 | ShapeItem zz[rk_Z]; > | ^~~~ > Bif_F12_INDEX_OF.cc:75:22: note: initializer of 'rk_Z' is not a constant > expression > Bif_F12_INDEX_OF.cc:70:13: note: declared here > 70 | const sRank rk_Z = Z->get_rank(); > | ^ > 1 warning generated. > > PrimitiveFunction.cc:538:20: warning: variable length arrays in C++ are a > Clang extension [-Wvla-cxx-extension] > 538 | ShapeItem weight_Z[rank_Z]; > | ^~~~~~ > PrimitiveFunction.cc:538:20: note: read of non-const variable 'rank_Z' is > not allowed in a constant expression > PrimitiveFunction.cc:517:11: note: declared here > 517 | ShapeItem rank_Z = 0; > | ^ > 1 warning generated. > > Quad_CR.cc:1143:16: warning: variable length arrays in C++ are a Clang > extension [-Wvla-cxx-extension] > 1143 | UTF8 bytes_utf[len_B + 10]; > | ^~~~~~~~~~ > Quad_CR.cc:1143:16: note: initializer of 'len_B' is not a constant > expression > Quad_CR.cc:1141:17: note: declared here > 1141 | const ShapeItem len_B = B->element_count(); > | ^ > Quad_CR.cc:1723:32: warning: variable 'bi' set but not used > [-Wunused-but-set-variable] > 1723 | if (const APL_Integer bi = cell_B.get_near_int()) chunk > |= bit; > | ^ > 2 warnings generated. > > Quad_DLX.cc:465:16: warning: variable length arrays in C++ are a Clang > extension [-Wvla-cxx-extension] > 465 | char rows_used[rows]; > | ^~~~ > Quad_DLX.cc:465:16: note: implicit use of 'this' pointer is only allowed > within the evaluation of a call to a 'constexpr' member function > Quad_DLX.cc:478:18: warning: variable length arrays in C++ are a Clang > extension [-Wvla-cxx-extension] > 478 | int row[cols]; > | ^~~~ > Quad_DLX.cc:478:18: note: implicit use of 'this' pointer is only allowed > within the evaluation of a call to a 'constexpr' member function > 2 warnings generated. > > Tokenizer.cc:966:13: warning: variable length arrays in C++ are a Clang > extension [-Wvla-cxx-extension] > 966 | char buffer[int_digits.size() + fract_digits.size() + > expo_digits.size() + 20]; > | > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > Tokenizer.cc:966:24: note: non-constexpr function 'size' cannot be used in > a constant expression > 966 | char buffer[int_digits.size() + fract_digits.size() + > expo_digits.size() + 20]; > | ^ > /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/string:1284:65: > note: declared here > 1284 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 size_type > size() const _NOEXCEPT { > | ^ > 1 warning generated. > > UCS_string_vector.cc:228:25: warning: variable length arrays in C++ are a > Clang extension [-Wvla-cxx-extension] > 228 | ShapeItem column_widths[column_count]; > | ^~~~~~~~~~~~ > UCS_string_vector.cc:228:25: note: function parameter 'column_count' with > unknown value cannot be used in a constant expression > UCS_string_vector.cc:225:59: note: declared here > 225 | UCS_string_vector::print_table(std::ostream & out, size_t > column_count) const > | ^ > 1 warning generated. > > UserFunction.cc:638:13: warning: variable length arrays in C++ are a Clang > extension [-Wvla-cxx-extension] > 638 | char status[get_text_size()]; status[0] = Function_header; > | ^~~~~~~~~~~~~~~ > UserFunction.cc:638:13: note: implicit use of 'this' pointer is only > allowed within the evaluation of a call to a 'constexpr' member function > UserFunction.cc:731:13: warning: variable length arrays in C++ are a Clang > extension [-Wvla-cxx-extension] > 731 | char status[get_text_size()]; status[0] = Function_header; > | ^~~~~~~~~~~~~~~ > UserFunction.cc:731:13: note: implicit use of 'this' pointer is only > allowed within the evaluation of a call to a 'constexpr' member function > UserFunction.cc:856:35: warning: variable 'ec' set but not used > [-Wunused-but-set-variable] > 856 | if (const ErrorCode ec = transform_new_multi_lines()) > | ^ > UserFunction.cc:875:35: warning: variable 'ec' set but not used > [-Wunused-but-set-variable] > 875 | if (const ErrorCode ec = transform_old_multi_lines()) > | ^ > UserFunction.cc:1414:24: warning: variable 'ec' set but not used > [-Wunused-but-set-variable] > 1414 | if (const ErrorCode ec = parser.parse(body_text, body, true)) > | ^ > 5 warnings generated. > > ============================== > > Also, there is an option on the ld command that should probably be removed > in the makefile: > > ============================== > > checking for -single_module linker flag... ld: warning: -single_module is > obsolete > no > ld: warning: -bind_at_load is deprecated on macOS > > ============================== > > --- > Louis Chrétien > lchret...@mac.com > > > >