Admin/PLATFORMS
author wenzelm
Sat, 06 Mar 2010 14:28:31 +0100
changeset 35610 a5b7a0903441
child 36204 16c371c6ff86
permissions -rw-r--r--
Some notes on platform support of Isabelle.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
35610
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
     1
Some notes on platform support of Isabelle
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
     2
==========================================
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
     3
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
     4
Preamble
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
     5
--------
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
     6
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
     7
The general programming model is that of a stylized ML + Scala + POSIX
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
     8
environment, with hardly any system specific code in user-space tools
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
     9
and packages.
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    10
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    11
The basic Isabelle system infrastructure provides some facilities to
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    12
make this work, e.g. see the ML structures File and Path, or functions
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    13
like bash_output.  The settings environment also provides some means
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    14
for portability, e.g. jvm_path to hold up the impression that even
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    15
Java on Windows/Cygwin adheres to Isabelle/POSIX standards.
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    16
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    17
When producing add-on tools, it is important to stay within this clean
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    18
room of Isabelle, and refrain from overly ambitious system hacking.
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    19
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    20
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    21
Supported platforms
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    22
-------------------
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    23
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    24
The following hardware and operating system platforms are officially
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    25
supported by the Isabelle distribution (and bundled tools):
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    26
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    27
  x86-linux
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    28
  x86-darwin
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    29
  x86-cygwin
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    30
  x86_64-linux
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    31
  x86_64-darwin
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    32
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    33
As of Cygwin 1.7 there is only a 32 bit version of that platform.  The
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    34
other 64 bit platforms become more and more important for power users
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    35
and always need to be taken into account when testing tools.
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    36
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    37
All of the above platforms are 100% supported -- end-users should not
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    38
have to care about the differences at all.  There are also some
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    39
secondary platforms where Poly/ML also happens to work:
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    40
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    41
  ppc-darwin
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    42
  sparc-solaris
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    43
  x86-solaris
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    44
  x86-bsd
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    45
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    46
There is no guarantee that Isabelle add-ons work on these fringe
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    47
platforms.  Even Isabelle/Scala already fails on ppc-darwin due to
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    48
lack of JVM 1.6 support on that platform.
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    49
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    50
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    51
Dependable system tools
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    52
-----------------------
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    53
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    54
The following portable system tools can be taken for granted:
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    55
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    56
  * GNU bash as uniform shell on all platforms.  Note that the POSIX
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    57
    "standard" shell /bin/sh is *not* appropriate, because there are
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    58
    too many different implementations of it.
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    59
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    60
  * Perl as largely portable system programming language.  In some
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    61
    situations Python may as an alternative, but it usually performs
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    62
    not as well in addressing various delicate details of basic
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    63
    operating system concepts (processes, signals, sockets etc.).
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    64
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    65
  * Scala with Java Runtime 1.6.  The Isabelle/Pure.jar library irons
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    66
    out many oddities and portability problems of the Java platform.
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    67
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    68
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    69
Known problems
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    70
--------------
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    71
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    72
* Mac OS: If MacPorts is installed and its version of Perl takes
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    73
  precedence over /usr/bin/perl in the PATH, then the end-user needs
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    74
  to take care of installing add-on modules, e.g. HTTP support.  Such
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    75
  add-ons are usually included in Apple's /usr/bin/perl by default.
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    76
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    77
* The Java runtime has its own idea about the underlying platform,
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    78
  e.g. on 64 bit machine Isabelle/ML could be x86-linux, but the JVM
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    79
  could be x86_64-linux.  This affects Java native libraries in
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    80
  particular -- which are very hard to support in a platform
a5b7a0903441 Some notes on platform support of Isabelle.
wenzelm
parents:
diff changeset
    81
  independent manner, and should be avoided in the first place.