# HG changeset patch # User wenzelm # Date 1477076331 -7200 # Node ID 321065f9f55b6459c31a7651fbd134821353bdd6 # Parent 20c543b9fa80aa1a45890b158cffd483c323b736 misc tuning and updates; diff -r 20c543b9fa80 -r 321065f9f55b Admin/PLATFORMS --- a/Admin/PLATFORMS Fri Oct 21 20:49:40 2016 +0200 +++ b/Admin/PLATFORMS Fri Oct 21 20:58:51 2016 +0200 @@ -1,5 +1,5 @@ -Some notes on multi-platform support of Isabelle -================================================ +Multi-platform support of Isabelle +================================== Preamble -------- @@ -13,13 +13,13 @@ functions like Isabelle_System.bash. The settings environment also provides some means for portability, e.g. the bash function "platform_path" to keep the impression that Windows/Cygwin adheres to -Isabelle/POSIX standards, although Poly/ML and the JVM are -Windows-specific things. +Isabelle/POSIX standards, although Poly/ML and the JVM are native on +Windows. When producing add-on tools, it is important to stay within this clean room of Isabelle, and refrain from overly ambitious system hacking. -The existing Isabelle scripts follow a peculiar style that reflects -long years of experience in getting system plumbing right. +The existing Isabelle bash scripts follow a peculiar style that +reflects long years of experience in getting system plumbing right. Supported platforms @@ -27,7 +27,7 @@ The following hardware and operating system platforms are officially supported by the Isabelle distribution (and bundled tools), with the -following reference versions (which have been selected to be neither +following base-line versions (which have been selected to be neither too old nor too new): x86-linux Ubuntu 12.04 LTS @@ -39,12 +39,14 @@ Mac OS X 10.11 El Capitan (??) macOS 10.12 Sierra (???) - x86-cygwin http://isabelle.in.tum.de/cygwin_2015 (x86/release) + x86-windows Windows 7 + x86_64-windows Windows 7 + x86-cygwin http://isabelle.in.tum.de/cygwin_2016 (x86/release) All of the above platforms are 100% supported by Isabelle -- end-users should not have to care about the differences (at least in theory). -Fringe platforms like BSD or Solaris are unsupported. +Fringe platforms like BSD or Solaris are not supported. 32 bit vs. 64 bit platforms @@ -55,7 +57,7 @@ libraries, so native x86_64-linux needs to be used by default, despite its doubled space requirements for Poly/ML heaps. For Mac OS X, the x86-darwin personality usually works seamlessly for C/C++ programs, -but the Java 7 platform is only available for x86_64-darwin. +but the Java platform is only available for x86_64-darwin. Add-on executables are expected to work without manual user configuration. Each component settings script needs to determine the @@ -77,13 +79,13 @@ Moreover note that ML and JVM usually have a different idea of the platform, depending on the respective binaries that are actually run. -Poly/ML 5.5.x performs best in 32 bit mode, even for large +Poly/ML 5.6.x performs best in 32 bit mode, even for large applications, thanks to its sophisticated heap management. The JVM usually works better in 64 bit mode, which allows its heap to grow beyond 2 GB. -The traditional "uname" Unix tool usually only tells about its own -executable format, not the underlying platform! +The traditional "uname" Unix tool only tells about its own executable +format, not the underlying platform! Dependable system tools @@ -91,16 +93,16 @@ The following portable system tools can be taken for granted: +* Scala on top of Java 8. Isabelle/Scala irons out many oddities and + portability issues of the Java platform. + * GNU bash as uniform shell on all platforms. The POSIX "standard" - shell /bin/sh is *not* appropriate, because there are too many - non-standard implementations of it. + shell /bin/sh does *not* work -- there are too many non-standard + implementations of it. * Perl as largely portable system programming language, with its fairly robust support for processes, signals, sockets etc. -* Scala with Java 1.8. Isabelle/Scala irons out many oddities and - portability issues of the Java platform. - Known problems -------------- @@ -124,4 +126,4 @@ some clues about its platform, without running it. * Common Unix tools like /bin/sh, /bin/kill, sed, ulimit are - notoriously non-portable an should be avoided. \ No newline at end of file + notoriously non-portable an should be avoided.