Hi David et al,
While experimenting with some of the recent PolyML commits, I realised the build system doesn?t seem to set any particular C++ standard. I guess this results in the compiler default (e.g. GNU++14 in the latest GCC [0]). Is this intentional?
Relatedly, coming up on 2018 it seems like it would be reasonable to require a compiler with C++11 support. I?m not sure how backwards compatible PolyML needs to be these days, but e.g. support for Windows 95/98 has been dropped. I notice some comments in interpreter.cpp that imply whatever is in Debian stable is a lower bound. Moving to C++11 would allow some parts of the code base to be replaced with their C++11 equivalents, reducing the maintenance burden. Some candidates:
- Bitmap -> std::vector<bool> - NORETURNFN -> [[noreturn]] - PCondVar -> std::condition_variable - PLock -> std::mutex - PLocker -> std::lock_guard
Perhaps this will provide a performance boost as well, but I wouldn?t necessarily count on it.
I?d be curious to hear if anyone has strong feelings about this or if any PolyML devs out there are living with a pre-C++11 compiler.
Thanks, Matt
[0]: https://gcc.gnu.org/onlinedocs/gcc/Standards.html#C_002b_002b-Language
On 16/12/17 04:03, Matthew Fernandez wrote:
Relatedly, coming up on 2018 it seems like it would be reasonable to require a compiler with C++11 support. I?m not sure how backwards compatible PolyML needs to be these days
For Isabelle the situation is documented here: http://isabelle.in.tum.de/repos/isabelle/file/tip/Admin/PLATFORMS#l26
Presently (Isabelle/ad538f6c5d2f) the bottom line e.g. for Linux is Ubuntu 12.04.
Makarius
On 16/12/17 12:24, Makarius wrote:
On 16/12/17 04:03, Matthew Fernandez wrote:
Relatedly, coming up on 2018 it seems like it would be reasonable to require a compiler with C++11 support. I?m not sure how backwards compatible PolyML needs to be these days
Presently (Isabelle/ad538f6c5d2f) the bottom line e.g. for Linux is Ubuntu 12.04.
Here are some more side-conditions for the Windows platform: http://isabelle.in.tum.de/repos/isabelle/file/ad538f6c5d2f/Admin/polyml/INST...
Only that particular gcc version works.
Makarius
On Dec 16, 2017, at 03:24, Makarius <makarius at sketis.net> wrote:
On 16/12/17 04:03, Matthew Fernandez wrote:
Relatedly, coming up on 2018 it seems like it would be reasonable to require a compiler with C++11 support. I?m not sure how backwards compatible PolyML needs to be these days
For Isabelle the situation is documented here: http://isabelle.in.tum.de/repos/isabelle/file/tip/Admin/PLATFORMS#l26
Presently (Isabelle/ad538f6c5d2f) the bottom line e.g. for Linux is Ubuntu 12.04.
Thanks for the details, Makarius. If I interpret this correctly (details below), from an Isabelle perspective Linux is the only platform holding you back. Are there reasons the supported Linux release is Ubuntu 12.04 and not a newer Ubuntu? The readme hints at some issues but there?s nothing specific listed under ?Known problems.?
Also is the platform ?x86_64-windows? using MSVC or is this still MinGW (Cygwin)?
My interpretation of the platform limitations: - x86_64-linux: GCC 4.6.3 (according to a machine I have on hand) - x86_64-darwin: at worst OS X 10.10 which seems to come with Clang 3.5 [0] - x86_64-windows: ? - x86_64-cygwin: MinGW 4.9.3 (== GCC 4.9.3)
Full C++11 support arrived in GCC 4.8.1 [1] and Clang 3.3 [2].
[0]: https://stackoverflow.com/questions/27308323/osx-10-10-yosemite-clang-gcc-ve... https://stackoverflow.com/questions/27308323/osx-10-10-yosemite-clang-gcc-versions [1]: https://gcc.gnu.org/projects/cxx-status.html#cxx11 https://gcc.gnu.org/projects/cxx-status.html#cxx11 [2]: https://clang.llvm.org/cxx_status.html#cxx11 https://clang.llvm.org/cxx_status.html#cxx11
On 18/12/17 03:07, Matthew Fernandez wrote:
On Dec 16, 2017, at 03:24, Makarius <makarius at sketis.net <mailto:makarius at sketis.net>> wrote:
For Isabelle the situation is documented here: http://isabelle.in.tum.de/repos/isabelle/file/tip/Admin/PLATFORMS#l26
Presently (Isabelle/ad538f6c5d2f) the bottom line e.g. for Linux is Ubuntu 12.04.
If I interpret this correctly (details below), from an Isabelle perspective Linux is the only platform holding you back. Are there reasons the supported Linux release is Ubuntu 12.04 and not a newer Ubuntu?
The reason is to weaken assumptions about the required OS as much as feasible, reaching back in time approx. 5-7 years. In the history of Isabelle bundling, I started out with only 2-3 years, but then many people showed up who could not run the application on their old server installation.
There need to be really good reasons to jump forward in OS base-line versions. The next will be Ubuntu 14.04, but there is no particular schedule when that move happens.
Also is the platform ?x86_64-windows? using MSVC or is this still MinGW (Cygwin)?
My interpretation of the platform limitations: ?- x86_64-linux: GCC 4.6.3 (according to a machine I have on hand) ?- x86_64-darwin: at worst OS X 10.10 which seems to come with Clang 3.5 [0] ?- x86_64-windows: ? ?- x86_64-cygwin: MinGW 4.9.3 (== GCC 4.9.3)
Note that MinGW counts as native Windows.
David Matthews somehow managed to build it in the documented setup of Isabelle/Admin/poly/INSTALL-MinGW -- it would be good to understand which GCC MinGW branch is actually the main one and how to move there.
Moreover, the main production platform for Poly/ML is always x86: the bulky x86_64 version is only for really huge things.
Makarius
On Dec 21, 2017, at 03:40, Makarius <makarius at sketis.net> wrote:
On 18/12/17 03:07, Matthew Fernandez wrote:
On Dec 16, 2017, at 03:24, Makarius <makarius at sketis.net <mailto:makarius at sketis.net>> wrote:
For Isabelle the situation is documented here: http://isabelle.in.tum.de/repos/isabelle/file/tip/Admin/PLATFORMS#l26
Presently (Isabelle/ad538f6c5d2f) the bottom line e.g. for Linux is Ubuntu 12.04.
If I interpret this correctly (details below), from an Isabelle perspective Linux is the only platform holding you back. Are there reasons the supported Linux release is Ubuntu 12.04 and not a newer Ubuntu?
The reason is to weaken assumptions about the required OS as much as feasible, reaching back in time approx. 5-7 years. In the history of Isabelle bundling, I started out with only 2-3 years, but then many people showed up who could not run the application on their old server installation.
There need to be really good reasons to jump forward in OS base-line versions. The next will be Ubuntu 14.04, but there is no particular schedule when that move happens.
Fair enough. I guess we?re stuck with pre-C++11 for now.