34 x86_64-linux Ubuntu 12.04 LTS |
34 x86_64-linux Ubuntu 12.04 LTS |
35 |
35 |
36 x86_64-darwin Mac OS X 10.10 Yosemite (macbroy31 MacBookPro6,2) |
36 x86_64-darwin Mac OS X 10.10 Yosemite (macbroy31 MacBookPro6,2) |
37 Mac OS X 10.11 El Capitan (macbroy2 MacPro4,1) |
37 Mac OS X 10.11 El Capitan (macbroy2 MacPro4,1) |
38 macOS 10.12 Sierra (macbroy30 MacBookPro6,2) |
38 macOS 10.12 Sierra (macbroy30 MacBookPro6,2) |
|
39 macOS 10.13 High Sierra |
39 |
40 |
40 x86_64-windows Windows 7 |
41 x86_64-windows Windows 7 |
41 x86_64-cygwin Cygwin 2.8 http://isabelle.in.tum.de/cygwin_2017 (x86_64/release) |
42 x86_64-cygwin Cygwin 2.8 http://isabelle.in.tum.de/cygwin_2017 (x86_64/release) |
42 |
43 |
43 All of the above platforms are 100% supported by Isabelle -- end-users |
44 All of the above platforms are 100% supported by Isabelle -- end-users |
44 should not have to care about the differences (at least in theory). |
45 should not have to care about the differences (at least in theory). |
45 |
46 |
46 Fringe platforms like BSD or Solaris are not supported. |
47 Exotic platforms like BSD, Solaris, NixOS are not supported. |
47 |
48 |
48 |
49 |
49 64 bit vs. 32 bit platform personality |
50 64 bit vs. 32 bit platform personality |
50 -------------------------------------- |
51 -------------------------------------- |
51 |
52 |
52 Isabelle requires 64 bit hardware running a 64 bit operating |
53 Isabelle requires 64 bit hardware running a 64 bit operating |
53 system. Windows and Mac OS X allow x86 executables as well, but for |
54 system. Windows and Mac OS X allow x86 executables as well, but for |
54 Linux this requires separate installation of 32 bit shared |
55 Linux this requires separate installation of 32 bit shared |
55 libraries. The POSIX emulation on Windows via Cygwin64 is exclusively |
56 libraries. The POSIX emulation on Windows via Cygwin64 works |
56 for x86_64. |
57 exclusively for x86_64. |
57 |
58 |
58 ML works both for x86_64 and x86, and the latter is preferred for space |
59 Poly/ML supports both for x86_64 and x86, and the latter is preferred |
59 and performance reasons. Java is always for x86_64 on all platforms. |
60 for space and performance reasons. Java is always the x86_64 version |
|
61 on all platforms. |
60 |
62 |
61 Add-on executables are expected to work without manual user |
63 Add-on executables are expected to work without manual user |
62 configuration. Each component settings script needs to determine the |
64 configuration. Each component settings script needs to determine the |
63 platform details appropriately. |
65 platform details appropriately. |
64 |
66 |
65 |
67 |
66 The Isabelle settings environment provides the following variables to |
68 The Isabelle settings environment provides the following important |
67 help configuring platform-dependent tools: |
69 variables to help configuring platform-dependent tools: |
68 |
70 |
69 ISABELLE_PLATFORM64 (potentially empty) |
71 ISABELLE_PLATFORM64 (potentially empty) |
70 ISABELLE_PLATFORM32 (potentially empty) |
72 ISABELLE_PLATFORM32 (potentially empty) |
71 ISABELLE_PLATFORM |
|
72 |
73 |
73 The ISABELLE_PLATFORM setting variable prefers the 32 bit personality of |
74 Each can be empty, but not both at the same time. Using GNU bash |
74 the platform, if possible. Using regular bash notation, tools may |
75 notation, tools may express their platform preference, e.g. first 64 |
75 express their preference for 64 bit with a fall-back for 32 bit as |
76 bit and second 32 bit, or the opposite: |
76 follows: |
|
77 |
77 |
78 "${ISABELLE_PLATFORM64:-$ISABELLE_PLATFORM32}" |
78 "${ISABELLE_PLATFORM64:-$ISABELLE_PLATFORM32}" |
|
79 "${ISABELLE_PLATFORM32:-$ISABELLE_PLATFORM64}" |
79 |
80 |
80 |
81 |
81 There is a second set of settings for native Windows (instead of the |
82 There is a another set of settings for native Windows (instead of the |
82 POSIX emulation of Cygwin used before): |
83 POSIX emulation of Cygwin used before): |
83 |
84 |
84 ISABELLE_WINDOWS_PLATFORM64 |
85 ISABELLE_WINDOWS_PLATFORM64 |
85 ISABELLE_WINDOWS_PLATFORM32 |
86 ISABELLE_WINDOWS_PLATFORM32 |
86 ISABELLE_WINDOWS_PLATFORM |
|
87 |
87 |
88 It can be used like this: |
88 These are always empty on Linux and Mac OS X, and non-empty on |
89 |
89 Windows. They can be used like this to prefer native Windows and then |
90 "${ISABELLE_WINDOWS_PLATFORM:-$ISABELLE_PLATFORM}" |
90 Unix (first 64 bit second 32 bit): |
91 |
91 |
92 "${ISABELLE_WINDOWS_PLATFORM64:-${ISABELLE_WINDOWS_PLATFORM32:-${ISABELLE_PLATFORM64:-$ISABELLE_PLATFORM32}}}" |
92 "${ISABELLE_WINDOWS_PLATFORM64:-${ISABELLE_WINDOWS_PLATFORM32:-${ISABELLE_PLATFORM64:-$ISABELLE_PLATFORM32}}}" |
93 |
93 |
94 |
94 |
95 Dependable system tools |
95 Dependable system tools |
96 ----------------------- |
96 ----------------------- |
97 |
97 |
98 The following portable system tools can be taken for granted: |
98 The following portable system tools can be taken for granted: |
99 |
99 |
100 * Scala on top of Java 8. Isabelle/Scala irons out many oddities and |
100 * Scala on top of Java. Isabelle/Scala irons out many oddities and |
101 portability issues of the Java platform. |
101 portability issues of the Java platform. |
102 |
102 |
103 * GNU bash as uniform shell on all platforms. The POSIX "standard" shell |
103 * GNU bash as uniform shell on all platforms. The POSIX "standard" |
104 /bin/sh does *not* work -- there are too many non-standard |
104 shell /bin/sh does *not* work portably -- there are too many |
105 implementations of it. On Debian and Ubuntu /bin/sh is actually |
105 non-standard implementations of it. On Debian and Ubuntu /bin/sh is |
106 /bin/dash and thus introduces many oddities. |
106 actually /bin/dash and introduces many oddities. |
107 |
107 |
108 * Perl as largely portable system programming language, with its |
108 * Perl as largely portable system programming language, with its |
109 fairly robust support for processes, signals, sockets etc. |
109 fairly robust support for processes, signals, sockets etc. |
110 |
110 |
111 |
111 |
121 precedence over /usr/bin/perl in the PATH, then the end-user needs |
121 precedence over /usr/bin/perl in the PATH, then the end-user needs |
122 to take care of installing extra modules, e.g. for HTTP support. |
122 to take care of installing extra modules, e.g. for HTTP support. |
123 Such add-ons are usually included in Apple's /usr/bin/perl by |
123 Such add-ons are usually included in Apple's /usr/bin/perl by |
124 default. |
124 default. |
125 |
125 |
126 * The Java runtime has its own idea about the underlying platform, which |
|
127 affects Java native libraries in particular. In Isabelle/Scala the |
|
128 function isabelle.Platform.jvm_platform identifies the JVM platform. |
|
129 In the settings environment, ISABELLE_JAVA_PLATFORM provides the same |
|
130 information without running the JVM. |
|
131 |
|
132 * Common Unix tools like /bin/sh, /bin/kill, sed, ulimit are |
126 * Common Unix tools like /bin/sh, /bin/kill, sed, ulimit are |
133 notoriously non-portable an should be avoided. |
127 notoriously non-portable an should be avoided. |
134 |
128 |
135 * The traditional "uname" Unix tool only tells about its own executable |
129 * The traditional "uname" Unix tool only tells about its own executable |
136 format, not the underlying platform! |
130 format, not the underlying platform! |