From: Damien Doligez <damien.doligez@inria.fr>
To: caml users <caml-list@inria.fr>
Subject: [Caml-list] OCaml 3.12.1 compatibility report
Date: Thu, 16 Jun 2011 17:01:28 +0200 [thread overview]
Message-ID: <0EC5BE6E-FBB1-4B89-8362-5F9005AE7B84@inria.fr> (raw)
[-- Attachment #1: Type: text/plain, Size: 3536 bytes --]
OCaml 3.12.1 Compatibility Report
I have compiled the following software with the latest release
candidate of OCaml (3.12.1+rc1).
See below for a list of what I had to patch to get these to compile.
The packages I had to patch are marked here with a *
* advi-1.9.0.tar.gz
alt-ergo-0.93.tar.gz
bin_prot-1.3.1.tar.gz
* boomerang-0.2-source.tar.gz
* cameleon-1.9.21.tar.gz
* camlimages-4.0.0.tar.bz2
camomile-0.8.2.tar.bz2
camlp5-6.02.2.tgz
* camlzip-1.04.tar.gz
config-file-1.0.tar.gz
coq-8.3pl2.tar.gz
core-0.7.0.tar.gz
core_extended-0.7.0.tar.gz
cryptokit-1.4.tar.gz
extlib-1.5.1.tar.gz
fieldslib-0.1.2.tar.gz
findlib-1.2.7.tar.gz
frama-c-Carbon-20110201.tar.gz
* hevea-1.10.tar.gz
lablgtk-2.14.2.tar.gz
* lablgtkextras-1.0.tar.gz
lwt-2.3.0.tar.gz
menhir-20110201.tar.gz
* oasis-0.2.0.tar.gz
* obrowser-1.1.tar.gz
* ocaml-data-notation-0.0.3.tar.gz
ocaml-expect-0.0.2.tar.gz
* ocaml-fileutils-0.4.2.tar.gz
ocaml-mysql-1.0.4.tar.gz
ocaml-sqlite3-release-1.6.1.tar.gz
ocaml-ssl-0.4.5.tar.gz
ocaml-text-0.4.tar.gz
ocamlgraph-1.7.tar.gz
ocamlify-0.0.1.tar.gz
ocamlnet-3.2.1.tar.gz
ocgi-0.5.tar.gz
ocsigen-1.3.4.tar.gz
* omake-0.9.8.6-0.rc1.tar.gz
ounit-1.1.0.tar.gz
pcre-ocaml-release-6.2.2.tar.gz
react-0.9.2.tbz
res-release-3.2.0.tar.gz
sexplib-5.2.1.tar.gz
sks-1.1.1.tgz
type-conv-2.3.0.tar.gz
unison-2.40.63.tar.gz
* vsyml-2010-04-06.tar.gz
* xml-light-2.2.zip
zen_2.3.2.tar.gz
-----------------------------------------------------------
This is what I had to patch because of problems unrelated to 3.12.1:
advi: 2 lines
Change Makefile to link with graphics and lablgtk
boomerang: 1 line
Change Makefile to remove "doc" from subdirs
cameleon: 5 lines
Change ed_main.ml to remove call to GtkThread.set_do_jobs_delay
Change checkocaml.ml: detection of lablgtkextras depends on xml-light
configuration
camlimages: 15 lines
Add oPng.mli and oJpeg.mli
Change META file to add archives camlimages.cma and .cmxa (neeed for advi)
camlzip: 10 lines
Change Makefile to configure the location of libz.a
Add a META file for findlib
hevea: 2 lines
Change hevea.ml to remove target file in case of error
Change Makefile to pass LIBDIR and LATEXLIBDIR to install script
lablgtkextras: 40 lines
Change checkocaml.ml and Makefiles to detect where is xml-light installed
(see xml-light below)
oasis: 8 lines
Change setup.ml to handle OCaml version numbers with a + suffix
obrowser-1.1: 13 lines
Change in Makefile to add .PHONY annotation to AXO (my filesystem is
case-insensitive, so AXO interferes with axo).
Update pervasives.ml and pervasives.mli to reflect OCaml changes since 3.11.1
ocaml-data-notation: 3 lines
Change in Makefile to follow name change of "type-conv.syntax" to "type-conv"
Changes in pa_odn.ml to remove extraneous occurrences "_loc"
ocaml-fileutils: 2 lines
Changes in Makefile to remove use of non-portable "install -t"
omake: 1 line
Change in OMakefiles to remove "-warn-error A"
Note: DO NOT use "-warn-error A" in released code.
vsyml: 4 lines
Changes in Makefile to remove non-portable "echo -n"
xml-light: 3 lines
Changes in Makefile to install in a subdirectory of .../lib/ocaml
This is needed because xml-light exports xml.cmi and ocsigen has a
file xML.mli. These conflict because my filesystem is case-insensitive.
-- Damien
[-- Attachment #2: REPORT-3.12.1.txt --]
[-- Type: text/plain, Size: 3519 bytes --]
OCaml 3.12.1 Compatibility Report
I have compiled the following software with the latest release
candidate of OCaml (3.12.1+rc1).
See below for a list of what I had to patch to get these to compile.
The packages I had to patch are marked here with a *
* advi-1.9.0.tar.gz
alt-ergo-0.93.tar.gz
bin_prot-1.3.1.tar.gz
* boomerang-0.2-source.tar.gz
* cameleon-1.9.21.tar.gz
* camlimages-4.0.0.tar.bz2
camomile-0.8.2.tar.bz2
camlp5-6.02.2.tgz
* camlzip-1.04.tar.gz
config-file-1.0.tar.gz
coq-8.3pl2.tar.gz
core-0.7.0.tar.gz
core_extended-0.7.0.tar.gz
cryptokit-1.4.tar.gz
extlib-1.5.1.tar.gz
fieldslib-0.1.2.tar.gz
findlib-1.2.7.tar.gz
frama-c-Carbon-20110201.tar.gz
* hevea-1.10.tar.gz
lablgtk-2.14.2.tar.gz
* lablgtkextras-1.0.tar.gz
lwt-2.3.0.tar.gz
menhir-20110201.tar.gz
* oasis-0.2.0.tar.gz
* obrowser-1.1.tar.gz
* ocaml-data-notation-0.0.3.tar.gz
ocaml-expect-0.0.2.tar.gz
* ocaml-fileutils-0.4.2.tar.gz
ocaml-mysql-1.0.4.tar.gz
ocaml-sqlite3-release-1.6.1.tar.gz
ocaml-ssl-0.4.5.tar.gz
ocaml-text-0.4.tar.gz
ocamlgraph-1.7.tar.gz
ocamlify-0.0.1.tar.gz
ocamlnet-3.2.1.tar.gz
ocgi-0.5.tar.gz
ocsigen-1.3.4.tar.gz
* omake-0.9.8.6-0.rc1.tar.gz
ounit-1.1.0.tar.gz
pcre-ocaml-release-6.2.2.tar.gz
react-0.9.2.tbz
res-release-3.2.0.tar.gz
sexplib-5.2.1.tar.gz
sks-1.1.1.tgz
type-conv-2.3.0.tar.gz
unison-2.40.63.tar.gz
* vsyml-2010-04-06.tar.gz
* xml-light-2.2.zip
zen_2.3.2.tar.gz
-----------------------------------------------------------
This is what I had to patch because of problems unrelated to 3.12.1:
advi: 2 lines
Change Makefile to link with graphics and lablgtk
boomerang: 1 line
Change Makefile to remove "doc" from subdirs
cameleon: 5 lines
Change ed_main.ml to remove call to GtkThread.set_do_jobs_delay
Change checkocaml.ml: detection of lablgtkextras depends on xml-light
configuration
camlimages: 15 lines
Add oPng.mli and oJpeg.mli
Change META file to add archives camlimages.cma and .cmxa (neeed for advi)
camlzip: 10 lines
Change Makefile to configure the location of libz.a
Add a META file for findlib
hevea: 2 lines
Change hevea.ml to remove target file in case of error
Change Makefile to pass LIBDIR and LATEXLIBDIR to install script
lablgtkextras: 40 lines
Change checkocaml.ml and Makefiles to detect where is xml-light installed
(see xml-light below)
oasis: 8 lines
Change setup.ml to handle OCaml version numbers with a + suffix
obrowser-1.1: 13 lines
Change in Makefile to add .PHONY annotation to AXO (my filesystem is
case-insensitive, so AXO interferes with axo).
Update pervasives.ml and pervasives.mli to reflect OCaml changes since 3.11.1
ocaml-data-notation: 3 lines
Change in Makefile to follow name change of "type-conv.syntax" to "type-conv"
Changes in pa_odn.ml to remove extraneous occurrences "_loc"
ocaml-fileutils: 2 lines
Changes in Makefile to remove use of non-portable "install -t"
omake: 1 line
Change in OMakefiles to remove "-warn-error A"
Note: DO NOT use "-warn-error A" in released code.
vsyml: 4 lines
Changes in Makefile to remove non-portable "echo -n"
xml-light: 3 lines
Changes in Makefile to install in a subdirectory of .../lib/ocaml
This is needed because xml-light exports xml.cmi and ocsigen has a
file xML.mli. These conflict because my filesystem is case-insensitive.
[-- Attachment #3: advi-1.9.0.patch --]
[-- Type: application/octet-stream, Size: 571 bytes --]
--- advi-1.9.0/src/Makefile.in.orig 2010-04-05 10:16:22.000000000 +0200
+++ advi-1.9.0/src/Makefile.in 2011-05-20 09:56:29.000000000 +0200
@@ -97,8 +97,8 @@
AWK = @AWK@
BUILD_DATE = @BUILD_DATE@
CAMLIMAGES_INCLUDES = @CAMLIMAGES_INCLUDES@
-CAMLIMAGES_LIBS_BYTE = @CAMLIMAGES_LIBS_BYTE@
-CAMLIMAGES_LIBS_NATIVE = @CAMLIMAGES_LIBS_NATIVE@
+CAMLIMAGES_LIBS_BYTE = graphics.cma -I +lablgtk2 lablgtk.cma @CAMLIMAGES_LIBS_BYTE@
+CAMLIMAGES_LIBS_NATIVE = graphics.cmxa -I +lablgtk2 lablgtk.cmxa @CAMLIMAGES_LIBS_NATIVE@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
[-- Attachment #4: boomerang-0.2.patch --]
[-- Type: application/octet-stream, Size: 373 bytes --]
--- boomerang-0.2/OMakefile.orig 2010-06-07 15:01:55.000000000 +0200
+++ boomerang-0.2/OMakefile 2010-06-07 15:02:08.000000000 +0200
@@ -126,7 +126,7 @@
##############################################################################
# Include sub-directories
-SUBDIRS = common src lenses examples doc
+SUBDIRS = common src lenses examples #doc
.SUBDIRS: $(SUBDIRS)
[-- Attachment #5: cameleon-1.9.21.patch --]
[-- Type: application/octet-stream, Size: 1456 bytes --]
--- cameleon-1.9.21.orig/src/editor/ed_main.ml 2011-01-13 10:57:39.000000000 +0100
+++ cameleon-1.9.21/src/editor/ed_main.ml 2011-05-03 21:32:06.000000000 +0200
@@ -75,7 +75,7 @@
in
Cam_hooks.warning_message (Ed_misc.to_utf8 m);
);
- GtkThread.set_do_jobs_delay 0.02;
+ (*GtkThread.set_do_jobs_delay 0.02;*)
GtkThread.main ();
Ed_view.iter_factories
(fun f -> Ed_misc.catch_print_exceptions (fun () -> f#on_exit) ());
--- cameleon-1.9.21.orig/utils/checkocaml.ml 2011-01-13 10:57:39.000000000 +0100
+++ cameleon-1.9.21/utils/checkocaml.ml 2011-05-08 23:08:02.000000000 +0200
@@ -964,10 +964,10 @@
prerr_endline msg; exit 1
let _ = !print "\n### checking required tools and libraries ###\n"
-let _ =
+let xml_light_incs =
match detect_xml_light ~modes conf with
- [], [] -> !fatal_error "Could not link with Xml-light"
- | l, _ -> add_subst "XMLLIGHT_INCLUDES" (string_of_includes l)
+ [], [] -> !fatal_error "Could not link with Xml-light"; assert false
+ | l, _ -> add_subst "XMLLIGHT_INCLUDES" (string_of_includes l); l
let pcre_includes =
match detect_pcre ~modes conf with
@@ -1025,7 +1025,7 @@
let _ =
let (incs,b) =
- match detect_lablgtkextras ~modes lablgtk_incs conf with
+ match detect_lablgtkextras ~modes (lablgtk_incs @ xml_light_incs) conf with
[], [] -> !fatal_error "Could not link with LablGtk-extras"; assert false
| l, _ -> (string_of_includes l,true)
in
[-- Attachment #6: camlimages-4.0.0.patch --]
[-- Type: application/octet-stream, Size: 1332 bytes --]
--- camlimages-4.0.0.orig/src/oPng.mli 1970-01-01 01:00:00.000000000 +0100
+++ camlimages-4.0.0/src/oPng.mli 2011-05-17 17:47:40.000000000 +0200
@@ -0,0 +1,4 @@
+val load_as_rgb24 : string -> Images.load_option list -> OImages.oimage
+val load : string -> Images.load_option list -> OImages.oimage
+val save :
+ string -> Images.save_option list -> < image : Images.t; .. > -> unit
--- camlimages-4.0.0.orig/src/oJpeg.mli 1970-01-01 01:00:00.000000000 +0100
+++ camlimages-4.0.0/src/oJpeg.mli 2011-05-17 17:48:33.000000000 +0200
@@ -0,0 +1,9 @@
+val load : string -> Images.load_option list -> OImages.oimage
+val load_thumbnail :
+ string ->
+ Images.load_option list -> Geometry.spec -> int * int * OImages.oimage
+val save : string -> Images.save_option list -> OImages.oimage -> unit
+val save_as_cmyk :
+ string ->
+ Images.save_option list ->
+ (Images.rgb -> int * int * int * int) -> OImages.oimage -> unit
--- camlimages-4.0.0/src/META.in.orig 2011-05-20 09:48:04.000000000 +0200
+++ camlimages-4.0.0/src/META.in 2011-05-20 09:48:30.000000000 +0200
@@ -2,7 +2,8 @@
version = "@PACKAGE_VERSION@"
description = "Objective Caml image processing library"
-requires = "camlimages.core"
+archive(byte) = "camlimages.cma"
+archive(native) = "camlimages.cmxa"
package "core" (
archive(byte) = "camlimages_core.cma"
[-- Attachment #7: camlzip-1.04.patch --]
[-- Type: application/octet-stream, Size: 793 bytes --]
--- camlzip-1.04/Makefile 2009-10-20 15:59:55.000000000 +0200
+++ camlzip-1.04/Makefile.new 2009-10-20 16:00:31.000000000 +0200
@@ -4,10 +4,10 @@
ZLIB_LIB=-lz
# The directory containing the Zlib library (libz.a or libz.so)
-ZLIB_LIBDIR=/usr/local/lib
+ZLIB_LIBDIR=/opt/local/lib
# The directory containing the Zlib header file (zlib.h)
-ZLIB_INCLUDE=/usr/local/include
+ZLIB_INCLUDE=/opt/local/include
# Where to install the library. By default: sub-directory 'zip' of
# OCaml's standard library directory.
--- /dev/null 2009-10-20 16:35:40.000000000 +0200
+++ camlzip-1.04/META 2009-10-20 16:37:31.000000000 +0200
@@ -0,0 +1,6 @@
+name = "camlzip"
+version = "1.04"
+description = "compression library"
+archive(byte) = "zip.cma"
+archive(native) = "zip.cmxa"
+directory = "+zip"
[-- Attachment #8: hevea-1.10.patch --]
[-- Type: application/octet-stream, Size: 657 bytes --]
diff -r -u hevea-1.10 2/hevea.ml hevea-1.10/hevea.ml
--- hevea-1.10 2/hevea.ml 2007-02-09 15:44:28.000000000 +0100
+++ hevea-1.10/hevea.ml 2009-08-27 17:51:55.000000000 +0200
@@ -237,6 +237,7 @@
*)
end ;
let _ = finalize false in
+ begin try Sys.remove Parse_opts.name_out with _ -> () end;
prerr_endline "Adios" ;
exit 2
;;
--- hevea-1.10/Makefile.orig 2009-10-28 12:18:16.000000000 +0100
+++ hevea-1.10/Makefile 2009-10-28 12:18:00.000000000 +0100
@@ -48,7 +48,7 @@
all-make: $(TARGET)-make
install: config.sh
- ./install.sh $(TARGET)
+ LIBDIR=${LIBDIR} LATEXLIBDIR=${LATEXLIBDIR} ./install.sh $(TARGET)
byte: ocb-byte
opt: ocb-opt
[-- Attachment #9: lablgtkextras-1.0.patch --]
[-- Type: application/octet-stream, Size: 2887 bytes --]
--- lablgtkextras-1.0.orig/checkocaml.ml 2011-01-13 08:39:06.000000000 +0100
+++ lablgtkextras-1.0/checkocaml.ml 2011-05-06 13:58:36.000000000 +0200
@@ -836,6 +836,37 @@
iter includes
(*/c==v=[OCaml_conf.detect_lablgtk2]=0.1====*)
+(*c==v=[OCaml_conf.detect_xml_light]=0.3====*)
+let detect_xml_light ?(modes=[`Byte;`Opt]) conf =
+ let includes =
+ ["default install", [] ;
+ "+xml-light style", [Filename.concat (ocaml_libdir conf) "xml-light"] ;
+ ]
+ in
+ let includes =
+ match ocamlfind_query conf "xml-light" with
+ None -> includes
+ | Some s -> ("with ocamlfind", [s]) :: includes
+ in
+ let libs = ["xml-light.cma"] in
+ let f (mes, includes) mode =
+ let mes = Printf.sprintf "checking for Xml-light (%s) %s... "
+ (string_of_mode mode) mes
+ in
+ can_link ~mes mode conf ~includes ~libs []
+ in
+ let rec iter = function
+ [] -> ([], [])
+ | incs :: q ->
+ let f = f incs in
+ if List.for_all f modes then
+ (snd incs, libs)
+ else
+ iter q
+ in
+ iter includes
+(*/c==v=[OCaml_conf.detect_xml_light]=0.3====*)
+
let detect_cairo ?(modes=[`Byte;`Opt]) conf =
let includes = ["default install", ["+cairo"]] in
let includes =
@@ -894,6 +925,11 @@
| s, _ -> add_subst "LABLGTK2_INCLUDES" s
;;
let _ =
+ match detect_xml_light ~modes conf with
+ [], [] -> !fatal_error "Could not link with Xml-light"
+ | l, _ -> add_subst "XMLLIGHT_INCLUDES" (string_of_includes l)
+;;
+let _ =
let lablgladecc =
try ocaml_prog "lablgladecc2"
with Program_not_found _ ->
--- lablgtkextras-1.0.orig/master.Makefile.in 2011-01-13 08:39:06.000000000 +0100
+++ lablgtkextras-1.0/master.Makefile.in 2011-05-06 15:53:47.000000000 +0200
@@ -74,6 +74,7 @@
ROOT=@ROOT@
LABLGTK2_INCLUDES= @LABLGTK2_INCLUDES@
+XMLLIGHT_INCLUDES=@XMLLIGHT_INCLUDES@
# some common targets :
#######################
--- lablgtkextras-1.0.orig/src/Makefile 2011-01-13 08:39:06.000000000 +0100
+++ lablgtkextras-1.0/src/Makefile 2011-05-06 15:56:22.000000000 +0200
@@ -27,7 +27,7 @@
include ../master.Makefile
MY_INCLUDES=
-SYSTEM_INCLUDES= $(LABLGTK2_INCLUDES)
+SYSTEM_INCLUDES= $(LABLGTK2_INCLUDES) $(XMLLIGHT_INCLUDES)
INCLUDES=$(MY_INCLUDES) $(SYSTEM_INCLUDES)
--- lablgtkextras-1.0.orig/configure 2011-01-13 08:39:06.000000000 +0100
+++ lablgtkextras-1.0/configure 2011-05-06 16:02:43.000000000 +0200
@@ -556,6 +556,7 @@
ac_unique_file="master.Makefile.in"
ac_subst_vars='LTLIBOBJS
LIBOBJS
+XMLLIGHT_INCLUDES
LABLGTK2_INCLUDES
CWLIB_BYTE
CWLIB
--- lablgtkextras-1.0.orig/configure.ac 2011-01-13 08:39:06.000000000 +0100
+++ lablgtkextras-1.0/configure.ac 2011-05-06 16:00:35.000000000 +0200
@@ -153,6 +153,7 @@
AC_SUBST(CWLIB_BYTE)
AC_SUBST(LABLGTK2_INCLUDES)
+AC_SUBST(XMLLIGHT_INCLUDES)
# Finally create the master.Makefile.in and other files
ACFILES="master.Makefile src/version.ml src/install.ml"
[-- Attachment #10: oasis-version.patch --]
[-- Type: application/octet-stream, Size: 852 bytes --]
--- setup.ml.orig 2011-03-22 17:00:48.000000000 +0100
+++ setup.ml 2011-05-02 14:32:29.000000000 +0200
@@ -2662,10 +2662,14 @@
(ocamlc_config_map ())
0
in
- let nm_config =
+ let chop_version_suffix s =
+ try String.sub s 0 (String.index s '+')
+ with _ -> s
+ in
+ let nm_config, value_config =
match nm with
- | "ocaml_version" -> "version"
- | _ -> nm
+ | "ocaml_version" -> "version", chop_version_suffix
+ | _ -> nm, (fun x -> x)
in
var_redefine
nm
@@ -2677,7 +2681,7 @@
let value =
SMap.find nm_config map
in
- value
+ value_config value
with Not_found ->
failwithf2
(f_ "Cannot find field '%s' in '%s -config' output")
[-- Attachment #11: obrowser-1.1.patch --]
[-- Type: application/octet-stream, Size: 14142 bytes --]
diff -u -r obrowser-1.1.orig/Makefile obrowser-1.1/Makefile
--- obrowser-1.1.orig/Makefile 2010-01-22 19:16:35.000000000 +0100
+++ obrowser-1.1/Makefile 2010-04-27 16:07:08.000000000 +0200
@@ -24,6 +24,7 @@
@echo "[EXAMPLE] $*"
@cd examples/$* && $(MAKE) --no-print-directory
+.PHONY: AXO
AXO:
@echo "[AXO]"
@cd axo/ && $(MAKE) --no-print-directory
diff -u -r obrowser-1.1.orig/rt/caml/pervasives.ml obrowser-1.1/rt/caml/pervasives.ml
--- obrowser-1.1.orig/rt/caml/pervasives.ml 2010-01-22 19:16:35.000000000 +0100
+++ obrowser-1.1/rt/caml/pervasives.ml 2010-04-27 16:14:45.000000000 +0200
@@ -83,6 +83,8 @@
external (/.) : float -> float -> float = "%divfloat"
external ( ** ) : float -> float -> float = "caml_power_float" "pow" "float"
external exp : float -> float = "caml_exp_float" "exp" "float"
+external expm1 : float -> float = "caml_expm1_float" "caml_expm1" "float"
+external log1p : float -> float = "caml_log1p_float" "caml_log1p" "float"
external acos : float -> float = "caml_acos_float" "acos" "float"
external asin : float -> float = "caml_asin_float" "asin" "float"
external atan : float -> float = "caml_atan_float" "atan" "float"
diff -u -r obrowser-1.1.orig/rt/caml/pervasives.mli obrowser-1.1/rt/caml/pervasives.mli
--- obrowser-1.1.orig/rt/caml/pervasives.mli 2010-01-22 19:16:35.000000000 +0100
+++ obrowser-1.1/rt/caml/pervasives.mli 2010-04-27 16:18:35.000000000 +0200
@@ -264,6 +264,14 @@
external log10 : float -> float = "caml_log10_float" "log10" "float"
(** Base 10 logarithm. *)
+external expm1 : float -> float = "caml_expm1_float" "caml_expm1" "float"
+(** [expm1 x] computes [exp x -. 1.0], giving numerically-accurate results
+ even if [x] is close to [0.0]. *)
+
+external log1p : float -> float = "caml_log1p_float" "caml_log1p" "float"
+(** [log1p x] computes [log(1.0 +. x)] (natural logarithm),
+ giving numerically-accurate results even if [x] is close to [0.0]. *)
+
external cos : float -> float = "caml_cos_float" "cos" "float"
(** See {!Pervasives.atan2}. *)
--- obrowser-1.1/rt/caml/pervasives.mli.orig 2010-07-23 16:15:49.000000000 +0200
+++ obrowser-1.1/rt/caml/pervasives.mli 2010-07-23 16:24:44.000000000 +0200
@@ -11,19 +11,20 @@
(* *)
(***********************************************************************)
-(* $Id: pervasives.mli,v 1.113 2008/10/06 13:33:21 doligez Exp $ *)
+(* $Id: pervasives.mli 10548 2010-06-09 10:26:19Z weis $ *)
(** The initially opened module.
This module provides the basic operations over the built-in types
(numbers, booleans, strings, exceptions, references, lists, arrays,
- input-output channels, ...)
+ input-output channels, ...).
This module is automatically opened at the beginning of each compilation.
All components of this module can therefore be referred by their short
name, without prefixing them by [Pervasives].
*)
+
(** {6 Exceptions} *)
external raise : exn -> 'a = "%raise"
@@ -42,7 +43,6 @@
(** {6 Comparisons} *)
-
external ( = ) : 'a -> 'a -> bool = "%equal"
(** [e1 = e2] tests for structural equality of [e1] and [e2].
Mutable structures (e.g. references and arrays) are equal
@@ -71,7 +71,7 @@
The ordering is compatible with [(=)]. As in the case
of [(=)], mutable structures are compared by contents.
Comparison between functional values raises [Invalid_argument].
- Comparison between cyclic structures does not terminate. *)
+ Comparison between cyclic structures may not terminate. *)
external compare : 'a -> 'a -> int = "%compare"
(** [compare x y] returns [0] if [x] is equal to [y],
@@ -93,17 +93,22 @@
the {!List.sort} and {!Array.sort} functions. *)
val min : 'a -> 'a -> 'a
-(** Return the smaller of the two arguments. *)
+(** Return the smaller of the two arguments.
+ The result is unspecified if one of the arguments contains
+ the float value [nan]. *)
val max : 'a -> 'a -> 'a
-(** Return the greater of the two arguments. *)
+(** Return the greater of the two arguments.
+ The result is unspecified if one of the arguments contains
+ the float value [nan]. *)
external ( == ) : 'a -> 'a -> bool = "%eq"
(** [e1 == e2] tests for physical equality of [e1] and [e2].
- On integers and characters, physical equality is identical to structural
- equality. On mutable structures, [e1 == e2] is true if and only if
- physical modification of [e1] also affects [e2].
- On non-mutable structures, the behavior of [(==)] is
+ On mutable types such as references, arrays, strings, records with
+ mutable fields and objects with mutable instance variables,
+ [e1 == e2] is true if and only if physical modification of [e1]
+ also affects [e2].
+ On non-mutable types, the behavior of [(==)] is
implementation-dependent; however, it is guaranteed that
[e1 == e2] implies [compare e1 e2 = 0]. *)
@@ -113,7 +118,6 @@
(** {6 Boolean operations} *)
-
external not : bool -> bool = "%boolnot"
(** The boolean negation. *)
@@ -123,7 +127,7 @@
[e2] is not evaluated at all. *)
external ( & ) : bool -> bool -> bool = "%sequand"
-(** @deprecated {!Pervasives.(&&)} should be used instead. *)
+(** @deprecated {!Pervasives.( && )} should be used instead. *)
external ( || ) : bool -> bool -> bool = "%sequor"
(** The boolean ``or''. Evaluation is sequential, left-to-right:
@@ -131,7 +135,7 @@
[e2] is not evaluated at all. *)
external ( or ) : bool -> bool -> bool = "%sequor"
-(** @deprecated {!Pervasives.(||)} should be used instead.*)
+(** @deprecated {!Pervasives.( || )} should be used instead.*)
(** {6 Integer arithmetic} *)
@@ -141,13 +145,18 @@
They do not fail on overflow. *)
external ( ~- ) : int -> int = "%negint"
-(** Unary negation. You can also write [-e] instead of [~-e]. *)
+(** Unary negation. You can also write [- e] instead of [~- e]. *)
+
+external ( ~+ ) : int -> int = "%identity"
+(** Unary addition. You can also write [+ e] instead of [~+ e].
+ @since 3.12.0
+*)
external succ : int -> int = "%succint"
-(** [succ x] is [x+1]. *)
+(** [succ x] is [x + 1]. *)
external pred : int -> int = "%predint"
-(** [pred x] is [x-1]. *)
+(** [pred x] is [x - 1]. *)
external ( + ) : int -> int -> int = "%addint"
(** Integer addition. *)
@@ -164,15 +173,15 @@
Integer division rounds the real quotient of its arguments towards zero.
More precisely, if [x >= 0] and [y > 0], [x / y] is the greatest integer
less than or equal to the real quotient of [x] by [y]. Moreover,
- [(-x) / y = x / (-y) = -(x / y)]. *)
+ [(- x) / y = x / (- y) = - (x / y)]. *)
external ( mod ) : int -> int -> int = "%modint"
(** Integer remainder. If [y] is not zero, the result
of [x mod y] satisfies the following properties:
[x = (x / y) * y + x mod y] and
- [abs(x mod y) <= abs(y)-1].
+ [abs(x mod y) <= abs(y) - 1].
If [y = 0], [x mod y] raises [Division_by_zero].
- Notice that [x mod y] is nonpositive if and only if [x < 0].
+ Note that [x mod y] is negative only if [x < 0].
Raise [Division_by_zero] if [y] is zero. *)
val abs : int -> int
@@ -186,10 +195,8 @@
(** The smallest representable integer. *)
-
(** {7 Bitwise operations} *)
-
external ( land ) : int -> int -> int = "%andint"
(** Bitwise logical and. *)
@@ -230,12 +237,17 @@
[neg_infinity] for [-1.0 /. 0.0], and [nan] (``not a number'')
for [0.0 /. 0.0]. These special numbers then propagate through
floating-point computations as expected: for instance,
- [1.0 /. infinity] is [0.0], and any operation with [nan] as
- argument returns [nan] as result.
+ [1.0 /. infinity] is [0.0], and any arithmetic operation with [nan]
+ as argument returns [nan] as result.
*)
external ( ~-. ) : float -> float = "%negfloat"
-(** Unary negation. You can also write [-.e] instead of [~-.e]. *)
+(** Unary negation. You can also write [-. e] instead of [~-. e]. *)
+
+external ( ~+. ) : float -> float = "%identity"
+(** Unary addition. You can also write [+. e] instead of [~+. e].
+ @since 3.12.0
+*)
external ( +. ) : float -> float -> float = "%addfloat"
(** Floating-point addition *)
@@ -250,10 +262,10 @@
(** Floating-point division. *)
external ( ** ) : float -> float -> float = "caml_power_float" "pow" "float"
-(** Exponentiation *)
+(** Exponentiation. *)
external sqrt : float -> float = "caml_sqrt_float" "sqrt" "float"
-(** Square root *)
+(** Square root. *)
external exp : float -> float = "caml_exp_float" "exp" "float"
(** Exponential. *)
@@ -266,54 +278,64 @@
external expm1 : float -> float = "caml_expm1_float" "caml_expm1" "float"
(** [expm1 x] computes [exp x -. 1.0], giving numerically-accurate results
- even if [x] is close to [0.0]. *)
+ even if [x] is close to [0.0].
+ @since 3.12.0
+*)
external log1p : float -> float = "caml_log1p_float" "caml_log1p" "float"
(** [log1p x] computes [log(1.0 +. x)] (natural logarithm),
- giving numerically-accurate results even if [x] is close to [0.0]. *)
+ giving numerically-accurate results even if [x] is close to [0.0].
+ @since 3.12.0
+*)
external cos : float -> float = "caml_cos_float" "cos" "float"
-(** See {!Pervasives.atan2}. *)
+(** Cosine. Argument is in radians. *)
external sin : float -> float = "caml_sin_float" "sin" "float"
-(** See {!Pervasives.atan2}. *)
+(** Sine. Argument is in radians. *)
external tan : float -> float = "caml_tan_float" "tan" "float"
-(** See {!Pervasives.atan2}. *)
+(** Tangent. Argument is in radians. *)
external acos : float -> float = "caml_acos_float" "acos" "float"
-(** See {!Pervasives.atan2}. *)
+(** Arc cosine. The argument must fall within the range [[-1.0, 1.0]].
+ Result is in radians and is between [0.0] and [pi]. *)
external asin : float -> float = "caml_asin_float" "asin" "float"
-(** See {!Pervasives.atan2}. *)
+(** Arc sine. The argument must fall within the range [[-1.0, 1.0]].
+ Result is in radians and is between [-pi/2] and [pi/2]. *)
external atan : float -> float = "caml_atan_float" "atan" "float"
-(** See {!Pervasives.atan2}. *)
+(** Arc tangent.
+ Result is in radians and is between [-pi/2] and [pi/2]. *)
external atan2 : float -> float -> float = "caml_atan2_float" "atan2" "float"
-(** The usual trigonometric functions. *)
+(** [atan x y] returns the arc tangent of [y /. x]. The signs of [x]
+ and [y] are used to determine the quadrant of the result.
+ Result is in radians and is between [-pi] and [pi]. *)
external cosh : float -> float = "caml_cosh_float" "cosh" "float"
-(** See {!Pervasives.tanh}. *)
+(** Hyperbolic cosine. Argument is in radians. *)
external sinh : float -> float = "caml_sinh_float" "sinh" "float"
-(** See {!Pervasives.tanh}. *)
+(** Hyperbolic sine. Argument is in radians. *)
external tanh : float -> float = "caml_tanh_float" "tanh" "float"
-(** The usual hyperbolic trigonometric functions. *)
+(** Hyperbolic tangent. Argument is in radians. *)
external ceil : float -> float = "caml_ceil_float" "ceil" "float"
-(** See {!Pervasives.floor}. *)
+(** Round above to an integer value.
+ [ceil f] returns the least integer value greater than or equal to [f].
+ The result is returned as a float. *)
external floor : float -> float = "caml_floor_float" "floor" "float"
-(** Round the given float to an integer value.
- [floor f] returns the greatest integer value less than or
- equal to [f].
- [ceil f] returns the least integer value greater than or
- equal to [f]. *)
+(** Round below to an integer value.
+ [floor f] returns the greatest integer value less than or
+ equal to [f].
+ The result is returned as a float. *)
external abs_float : float -> float = "%absfloat"
-(** Return the absolute value of the argument. *)
+(** [abs_float f] returns the absolute value of [f]. *)
external mod_float : float -> float -> float = "caml_fmod_float" "fmod" "float"
(** [mod_float a b] returns the remainder of [a] with respect to
@@ -450,7 +472,6 @@
if the given string is not a valid representation of a float. *)
-
(** {6 Pair operations} *)
external fst : 'a * 'b -> 'a = "%field0"
@@ -552,8 +573,8 @@
The result is unspecified if the line read is not a valid
representation of a floating-point number. *)
-(** {7 General output functions} *)
+(** {7 General output functions} *)
type open_flag =
Open_rdonly (** open for reading. *)
@@ -779,6 +800,7 @@
This function has no effect under operating systems that
do not distinguish between text mode and binary mode. *)
+
(** {7 Operations on large files} *)
module LargeFile :
@@ -797,6 +819,7 @@
regular integers (type [int]), these alternate functions allow
operating on files whose sizes are greater than [max_int]. *)
+
(** {6 References} *)
type 'a ref = { mutable contents : 'a }
@@ -861,7 +884,6 @@
(** {6 Program termination} *)
-
val exit : int -> 'a
(** Terminate the process, returning the given status code
to the operating system: usually 0 to indicate no errors,
@@ -879,9 +901,9 @@
The functions are called in ``last in, first out'' order:
the function most recently added with [at_exit] is called first. *)
-
(**/**)
+
(** {6 For system use only, not for the casual user} *)
val valid_float_lexem : string -> string
--- obrowser-1.1/rt/caml/pervasives.ml.orig 2010-07-23 16:25:56.000000000 +0200
+++ obrowser-1.1/rt/caml/pervasives.ml 2010-07-23 16:29:32.000000000 +0200
@@ -51,6 +51,7 @@
(* Integer operations *)
external (~-) : int -> int = "%negint"
+external (~+) : int -> int = "%identity"
external succ : int -> int = "%succint"
external pred : int -> int = "%predint"
external (+) : int -> int -> int = "%addint"
@@ -77,6 +78,7 @@
(* Floating-point operations *)
external (~-.) : float -> float = "%negfloat"
+external (~+.) : float -> float = "%identity"
external (+.) : float -> float -> float = "%addfloat"
external (-.) : float -> float -> float = "%subfloat"
external ( *. ) : float -> float -> float = "%mulfloat"
[-- Attachment #12: ocaml-data-notation-0.0.3.patch --]
[-- Type: application/octet-stream, Size: 1205 bytes --]
--- ocaml-data-notation-0.0.3.orig/src/pa_odn.ml 2010-10-19 23:35:58.000000000 +0200
+++ ocaml-data-notation-0.0.3/src/pa_odn.ml 2011-05-03 14:51:05.000000000 +0200
@@ -199,7 +199,7 @@
function
| TyDcl (_loc, type_name, tps, rhs, _cl) ->
let body =
- Gen.switch_tp_def _loc
+ Gen.switch_tp_def
~alias:odn_of_alias
~sum:odn_of_sum
~record:odn_of_record
@@ -225,7 +225,7 @@
let _loc, recursive =
match tp with
| TyDcl (_loc, type_name, _, rhs, _) ->
- _loc, Gen.type_is_recursive _loc type_name rhs
+ _loc, Gen.type_is_recursive type_name rhs
| TyAnd (_loc, _, _) ->
_loc, true
| _ -> assert false
--- ocaml-data-notation-0.0.3.orig/src/META 2010-10-19 23:35:58.000000000 +0200
+++ ocaml-data-notation-0.0.3/src/META 2011-05-06 16:37:50.000000000 +0200
@@ -43,7 +43,7 @@
package "syntax" (
version = "0.0.3"
description = "Syntax extension for odn"
- requires = "type-conv.syntax camlp4 odn"
+ requires = "type-conv camlp4 odn"
archive(syntax,preprocessor) = "pa_odn.cma"
archive(syntax,toploop) = "pa_odn.cma"
exists_if = "pa_odn.cma"
[-- Attachment #13: ocaml-fileutils-0.4.2.patch --]
[-- Type: application/octet-stream, Size: 487 bytes --]
--- ocaml-fileutils-0.4.2.orig/Makefile 2011-05-03 15:04:34.000000000 +0200
+++ ocaml-fileutils-0.4.2/Makefile 2011-05-03 15:05:28.000000000 +0200
@@ -72,8 +72,8 @@
$(wildcard $(BUILDDIR)/fileutils-str.lib) \
$(wildcard $(BUILDDIR)/*.cmx)
$(INSTALL) -d $(htmldir)/api
- $(INSTALL_DATA) -t $(htmldir)/api \
- $(wildcard $(BUILDDIR)/fileutils.docdir/*)
+ $(INSTALL_DATA) \
+ $(wildcard $(BUILDDIR)/fileutils.docdir/*) $(htmldir)/api
uninstall:
-$(RM) -r $(htmldir)/api
[-- Attachment #14: omake-0.9.8.6.patch --]
[-- Type: application/octet-stream, Size: 372 bytes --]
--- omake-0.9.8.6.orig/lib/build/OCaml.om 2008-03-05 02:07:25.000000000 +0100
+++ omake-0.9.8.6/lib/build/OCaml.om 2011-05-02 22:53:23.000000000 +0200
@@ -176,7 +176,7 @@
#
declare OCAMLDEPFLAGS
public.OCAMLPPFLAGS =
-public.OCAMLFLAGS = -warn-error A
+public.OCAMLFLAGS = -warn-error a
public.OCAMLCFLAGS = -g
public.OCAMLOPTFLAGS =
public.OCAMLCPPFLAGS =
[-- Attachment #15: sks-1.1.1.patch --]
[-- Type: application/octet-stream, Size: 410 bytes --]
diff -N -r -u sks-1.1.1.orig/Makefile.local sks-1.1.1/Makefile.local
--- sks-1.1.1.orig/Makefile.local 1970-01-01 01:00:00.000000000 +0100
+++ sks-1.1.1/Makefile.local 2010-05-17 14:49:16.000000000 +0200
@@ -0,0 +1,9 @@
+BDBLIB=-L/opt/local/lib/db46
+BDBINCLUDE=-I/opt/local/include/db46
+LIBDB=-ldb-4.6
+MANDIR=${PREFIX}/share/man
+export BDBLIB
+export BDBINCLUDE
+export PREFIX
+export LIBDB
+export MANDIR
[-- Attachment #16: vsyml-2010-04-06.patch --]
[-- Type: application/octet-stream, Size: 1019 bytes --]
--- vsyml-2010-04-06.orig/makefile 2010-04-06 19:28:25.000000000 +0200
+++ vsyml-2010-04-06/makefile 2010-08-23 15:16:22.000000000 +0200
@@ -525,13 +525,13 @@
# dependencies for the symbolic simulator main file on cmo cma cmx and cmxa
$(VSYML_CMO_LST): $(VSYML_MAIN)
- echo -n "VSYML_CMO=" > $@
- for i in `grep -o -e '[a-zA-Z0-9_]*\.cmo' $<` ; do echo -n $$i " " >> $@ ; done
+ echo "VSYML_CMO=" | tr -d '\012' > $@
+ for i in `grep -o -e '[a-zA-Z0-9_]*\.cmo' $<` ; do echo $$i " " | tr -d '\012' >> $@ ; done
echo $(patsubst $(SRC_PATH)$(PATH_SEPARATOR)%.ml,%.cmo,$<) >> $@
$(VSYML_CMA_LST): $(VSYML_MAIN)
- echo -n "VSYML_CMA=" > $@
- for i in `grep -o -e '[a-zA-Z0-9_]*\.cma' $<` ; do echo -n $$i " " >> $@ ; done
+ echo "VSYML_CMA=" | tr -d '\012' > $@
+ for i in `grep -o -e '[a-zA-Z0-9_]*\.cma' $<` ; do echo $$i " " | tr -d '\012' >> $@ ; done
$(VSYML_BYTE_CMO_LST): $(VSYML_CMO_LST)
sed -e 's@\([a-zA-Z0-9_]*\)\.cmo@$(BYTE_PATH)$(PATH_SEPARATOR)\1.cmo@g' -e 's/VSYML_CMO/VSYML_BYTE_CMO/' $< > $@
[-- Attachment #17: xml-light-2.2.patch --]
[-- Type: application/octet-stream, Size: 603 bytes --]
--- xml-light/Makefile 2003-10-12 11:16:12.000000000 +0200
+++ xml-light-2.2/Makefile 2010-01-23 20:57:57.000000000 +0100
@@ -2,7 +2,7 @@
# http://tech.motion-twin.com
.SUFFIXES : .ml .mli .cmo .cmx .cmi .mll .mly
-INSTALLDIR=`ocamlc -where`
+INSTALLDIR=`ocamlc -where`/xml-light
CFLAGS=
LFLAGS= -a
LIBS=
@@ -12,6 +12,7 @@
opt: xml-light.cmxa test_opt.exe
install: all opt
+ mkdir -p "${INSTALLDIR}"
cp xml-light.cmxa xml-light.a xml-light.cma xml.mli xmlParser.mli dtd.mli xml.cmi xmlParser.cmi dtd.cmi xml.cmx dtd.cmx xmlParser.cmx $(INSTALLDIR)
doc:
[-- Attachment #18: Type: text/plain, Size: 2 bytes --]
next reply other threads:[~2011-06-16 15:01 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-16 15:01 Damien Doligez [this message]
2011-06-16 15:11 ` [Caml-list] " Sylvain Le Gall
2011-06-16 15:18 ` [Caml-list] " Stéphane Glondu
2011-06-16 15:33 ` Florent Ouchet
2011-06-16 17:46 ` Gerd Stolpmann
2011-06-27 9:31 ` Damien Doligez
2011-06-28 8:07 ` Florent Ouchet
2011-06-16 17:59 ` Serge Ziryukin
2011-06-27 10:29 ` Stéphane Glondu
2011-06-27 12:49 ` xclerc
2011-06-27 14:40 ` Till Varoquaux
2011-06-27 15:22 ` Xavier Leroy
2011-06-27 15:57 ` Markus Mottl
2011-06-28 16:52 ` Damien Doligez
2011-06-30 21:37 ` Markus Mottl
2011-07-04 11:45 ` xclerc
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0EC5BE6E-FBB1-4B89-8362-5F9005AE7B84@inria.fr \
--to=damien.doligez@inria.fr \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox