GNU APL SVN 839 does not compile. Tested with gcc 6.3.1 and clang 3.8.0 using ./configure; make clean all .
Here are the compilation errors. I can post the entire make transcript if it'd help. gcc === g++ -DHAVE_CONFIG_H -I. -I.. -Werror -Wall -Wno-strict-aliasing -I/usr/include -I sql -I/usr/include -I sql -rdynamic -g -O2 -MT apl-Common.o -MD -MP -MF .deps/apl-Common.Tpo -c -o apl-Common.o `test -f 'Common.cc' || echo './'`Common.cc Command.cc: In static member function ‘static void Command::lib_common(std::ostream&, const UCS_string&, int)’: Command.cc:1022:17: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] if (col == (col_width.size() - 1) || c == (directories.size() - 1)) ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ g++ -DHAVE_CONFIG_H -I. -I.. -Werror -Wall -Wno-strict-aliasing -I/usr/include -I sql -I/usr/include -I sql -rdynamic -g -O2 -MT apl-Executable.o -MD -MP -MF .deps/apl-Executable.Tpo -c -o apl-Executable.o `test -f 'Executable.cc' || echo './'`Executable.cc Error.cc: In member function ‘void Error::print(std::ostream&) const’: Error.cc:60:9: error: this ‘if’ clause does not guard... [-Werror=misleading-indentation] if (symbol_name.size()) ^~ Error.cc:63:27: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘if’ out << " Thrown at: " << throw_loc << endl ^~~ g++ -DHAVE_CONFIG_H -I. -I.. -Werror -Wall -Wno-strict-aliasing -I/usr/include -I sql -I/usr/include -I sql -rdynamic -g -O2 -MT apl-FloatCell.o -MD -MP -MF .deps/apl-FloatCell.Tpo -c -o apl-FloatCell.o `test -f 'FloatCell.cc' || echo './'`FloatCell.cc Executable.cc: In member function ‘UCS_string Executable::extract_lambda_text(Fun_signature, int) const’: Executable.cc:691:19: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] if (tidx >= text.size()) ~~~~~^~~~~~~~~~~~~~ cc1plus: all warnings being treated as errors clang ===== clang++ -DHAVE_CONFIG_H -I. -I.. -Werror -Wall -Wno-strict-aliasing -I/usr/include -I sql -I/usr/include -I sql -g -O2 -MT apl-Assert.o -MD -MP -MF .deps/apl-Assert.Tpo -c -o apl-Assert.o `test -f 'Assert.cc' || echo './'`Assert.cc In file included from Archive.cc:41: In file included from ./Macro.hh:24: In file included from ./UserFunction.hh:29: ./Symbol.hh:39:1: error: 'ValueStackItem' defined as a struct here but previously declared as a class [-Werror,-Wmismatched-tags] struct ValueStackItem ^ ./Archive.hh:40:1: note: did you mean struct here? class ValueStackItem; ^~~~~ struct In file included from Assert.cc:28: In file included from ./Workspace.hh:30: In file included from ./Quad_RL.hh:24: ./SystemVariable.hh:82:17: error: 'NL_SystemVariable::push_label' hides overloaded virtual function [-Werror,-Woverloaded-virtual] virtual void push_label(int label) {} ^ ./Symbol.hh:175:17: note: hidden overloaded virtual function 'Symbol::push_label' declared here: type mismatch at 1st parameter ('Function_Line' vs 'int') virtual void push_label(Function_Line label); clang++ -DHAVE_CONFIG_H -I. -I.. -Werror -Wall -Wno-strict-aliasing -I/usr/include -I sql -I/usr/include -I sql -g -O2 -MT apl-Avec.o -MD -MP -MF .deps/apl-Avec.Tpo -c -o apl-Avec.o `test -f 'Avec.cc' || echo './'`Avec.cc In file included from Archive.cc:51: In file included from ./Workspace.hh:30: In file included from ./Quad_RL.hh:24: ./SystemVariable.hh:82:17: error: 'NL_SystemVariable::push_label' hides overloaded virtual function [-Werror,-Woverloaded-virtual] virtual void push_label(int label) {} ^ ./Symbol.hh:175:17: note: hidden overloaded virtual function 'Symbol::push_label' declared here: type mismatch at 1st parameter ('Function_Line' vs 'int') virtual void push_label(Function_Line label); ^ In file included from main.cc:42: In file included from ./Workspace.hh:30: In file included from ./Quad_RL.hh:24: ./SystemVariable.hh:82:17: error: 'NL_SystemVariable::push_label' hides overloaded virtual function [-Werror,-Woverloaded-virtual] virtual void push_label(int label) {} ^ ./Symbol.hh:175:17: note: hidden overloaded virtual function 'Symbol::push_label' declared here: type mismatch at 1st parameter ('Function_Line' vs 'int') virtual void push_label(Function_Line label); ^ 1 error generated. ^