This file is indexed.

/usr/share/doc/mlton/guide/GnuMP is in mlton-doc 20100608-5.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta name="robots" content="index,nofollow">



<title>GnuMP - MLton Standard ML Compiler (SML Compiler)</title>
<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="all" href="common.css">
<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="screen" href="screen.css">
<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="print" href="print.css">


<link rel="Start" href="Home">


</head>

<body lang="en" dir="ltr">

<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-833377-1";
urchinTracker();
</script>
<table bgcolor = lightblue cellspacing = 0 style = "border: 0px;" width = 100%>
  <tr>
    <td style = "
		border: 0px;
		color: darkblue; 
		font-size: 150%;
		text-align: left;">
      <a class = mltona href="Home">MLton MLTONWIKIVERSION</a>
    <td style = "
		border: 0px;
		font-size: 150%;
		text-align: center;
		width: 50%;">
      GnuMP
    <td style = "
		border: 0px;
		text-align: right;">
      <table cellspacing = 0 style = "border: 0px">
        <tr style = "vertical-align: middle;">
      </table>
  <tr style = "background-color: white;">
    <td colspan = 3
	style = "
		border: 0px;
		font-size:70%;
		text-align: right;">
      <a href = "Home">Home</a>
      &nbsp;<a href = "TitleIndex">Index</a>
      &nbsp;
</table>
<div id="content" lang="en" dir="ltr">
The <a class="external" href="http://www.gnu.org/software/gmp/gmp.html"><img src="moin-www.png" alt="[WWW]" height="11" width="11">GnuMP</a> library (GNU multiprecision library) is a library for arbitrary precision integer arithmetic.  MLton uses the GnuMP library to implement the <a href="BasisLibrary"> Basis Library</a> <tt>IntInf</tt> module. <h2 id="head-b05203cf89b60eb36609a1a8b7f3cafe0927486a">Known issues</h2>

    <ul>

    <li>
<p>
 There is a known problem with the GnuMP library (prior to version 4.2.x), where it requires a lot of  stack space for some computations, e.g. <tt>IntInf.toString</tt> of a  million digit number.  If you run with stack size limited, you may see  a segfault in such programs.  This problem is mentioned in the  <a class="external" href="http://gmplib.org/#FAQ"><img src="moin-www.png" alt="[WWW]" height="11" width="11">GnuMP FAQ</a>, where they describe two  solutions. 
</p>
</li>

        <ul>

        <li>
<p>
 Increase (or unlimit) your stack space.  From your program, use   <tt>setrlimit</tt>, or from the shell, use <tt>ulimit</tt>. 
</p>
</li>
        <li class="gap">
<p>
 Configure and rebuild <tt>libgmp</tt> with <tt>--disable-alloca</tt>,   which will cause it to allocate temporaries using <tt>malloc</tt>   instead of on the stack. 
</p>
</li>

        </ul>


    <li class="gap">
<p>
 On some platforms, the GnuMP library may be configured to use one  of multiple ABIs (Application Binary Interfaces).  For example, on  some 32-bit architectures, GnuMP may be configured to represent a  limb as either a 32-bit <tt>long</tt> or as a 64-bit <tt>long&nbsp;long</tt>.  Similarly, GnuMP may be configured to use specific CPU features. 
</p>
<p>
 In order to efficiently use the GnuMP library, MLton represents an  <tt>IntInf.int</tt> value in a manner compatible with the GnuMP  library's representation of a limb.  Hence, it is important that  MLton and the GnuMP library agree upon the representation of a limb. 
</p>
</li>

        <ul>

        <li>
<p>
 When using a source package of MLton, building will detect the   GnuMP library's representation of a limb. 
</p>
</li>
        <li class="gap">
<p>
 When using a binary package of MLton that is dynamically linked   against the GnuMP library, the build machine and the install machine   must have the GnuMP library configured with the same representation   of a limb.  (On the other hand, the build machine need not have the   GnuMP library configured with CPU features compatible with the install   machine.) 
</p>
</li>
        <li class="gap">
<p>
 When using a binary package of MLton that is statically linked   against the GnuMP library, the build machine and the install machine   need not have the GnuMP library configured with the same   representation of a limb.  (On the other hand, the build machine   must have the GnuMP library configured with CPU features compatible   with the install machine.) 
</p>
<p>
  However, MLton will be configured with the representation of a limb   from the GnuMP library of the build machine.  Executables produced   by MLton will be incompatible with the GnuMP library of the install   machine.  To <em>reconfigure</em> MLton with the representation of a limb   from the GnuMP library of the install machine, one must edit: 
<pre>/usr/lib/mlton/self/sizes</pre>   changing the 
<pre>mplimb = ??</pre>   entry so that <tt>??</tt> corresponds to the bytes in a limb; and, one must edit: 
<pre>/usr/lib/mlton/sml/basis/config/c/arch-os/c-types.sml</pre>  changing the 
<pre>(* from "gmp.h" *)
structure C_MPLimb = struct open Word?? type t = word end
functor C_MPLimb_ChooseWordN (A: CHOOSE_WORDN_ARG) = ChooseWordN_Word?? (A)
</pre>  entries so that <tt>??</tt> corresponds to the bits in a limb. 
</p>
</li>
</ul>

</ul>

</div>



<p>
<hr>
Last edited on 2007-12-17 16:36:16 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>