summaryrefslogtreecommitdiff
path: root/dev-ml/core_kernel
diff options
context:
space:
mode:
authorAlexis Ballier <aballier@gentoo.org>2017-04-01 18:01:53 +0200
committerAlexis Ballier <aballier@gentoo.org>2017-04-02 10:37:46 +0200
commit0c53d5effb2f8fcd38632fdaa98af81f89fb6b03 (patch)
tree401415000186ab8336b0673956602cb4c5ffbb3b /dev-ml/core_kernel
parent7e8babd850f6bca379f8a5ba1d66ccb3e1dc06cc (diff)
downloadgentoo-0c53d5effb2f8fcd38632fdaa98af81f89fb6b03.tar.gz
gentoo-0c53d5effb2f8fcd38632fdaa98af81f89fb6b03.tar.xz
dev-ml/core_kernel: Bump to 0.9.0
Package-Manager: Portage-2.3.5, Repoman-2.3.2
Diffstat (limited to 'dev-ml/core_kernel')
-rw-r--r--dev-ml/core_kernel/Manifest2
-rw-r--r--dev-ml/core_kernel/core_kernel-0.9.0.ebuild47
-rw-r--r--dev-ml/core_kernel/core_kernel-113.33.01.ebuild56
-rw-r--r--dev-ml/core_kernel/files/oc43.patch581
4 files changed, 48 insertions, 638 deletions
diff --git a/dev-ml/core_kernel/Manifest b/dev-ml/core_kernel/Manifest
index 3fd665e5979..8e4f54464dc 100644
--- a/dev-ml/core_kernel/Manifest
+++ b/dev-ml/core_kernel/Manifest
@@ -1 +1 @@
-DIST core_kernel-113.33.01.tar.gz 663070 SHA256 ea39cc3bed70f2d51bd2dcffa7f27310b8a01b0cd2da8256a5ba85ab58662786 SHA512 62c97bab8a6044549290648463153b257c7ae910485034894b441701e92d62bfe6d284a2a1ec80f39b3a18732d9d3a2a13ada150ae55da26aa0fd7d4a25fc446 WHIRLPOOL ee69469febdf27bdd7086d2065731e7d23639db1442b3bc5f4711b86836c30c090efbb06c9bdbc7f389b28c5aef1806680fa1c03dae0d366a431177efd334c79
+DIST core_kernel-0.9.0.tar.gz 502937 SHA256 41a4784443751eac917ed3c92f21afa8515a2785a7ae4ec83697192b463b8364 SHA512 c262f25636d7a5105810c9588774a56e21e58cd156302781db3463898be0a42d9c8b1984ead739d0659d6f3eece4a305fc45c7cad4ed57149d26344affbdb668 WHIRLPOOL f54ac9cbce0caa8a1597035e4beb595f1fc0cf7f9070907a8d666cc4d17f1d19a7aba9e590f780ad7142360d9dc59cdc665584bb171364384e499736c9950c2e
diff --git a/dev-ml/core_kernel/core_kernel-0.9.0.ebuild b/dev-ml/core_kernel/core_kernel-0.9.0.ebuild
new file mode 100644
index 00000000000..e725deed96b
--- /dev/null
+++ b/dev-ml/core_kernel/core_kernel-0.9.0.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+DESCRIPTION="System-independent part of Core"
+HOMEPAGE="https://github.com/janestreet/core_kernel"
+SRC_URI="https://github.com/janestreet/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="LGPL-2.1-with-linking-exception"
+SLOT="0/${PV}"
+KEYWORDS="~amd64"
+IUSE=""
+
+RDEPEND="
+ dev-lang/ocaml:=
+ dev-ml/base:=
+ dev-ml/bin-prot:=
+ dev-ml/configurator:=
+ dev-ml/fieldslib:=
+ dev-ml/jane-street-headers:=
+ dev-ml/ppx_assert:=
+ dev-ml/ppx_base:=
+ dev-ml/ppx_driver:=
+ dev-ml/ppx_hash:=
+ dev-ml/ppx_inline_test:=
+ dev-ml/ppx_jane:=
+ dev-ml/ppx_sexp_conv:=
+ dev-ml/ppx_sexp_message:=
+ dev-ml/sexplib:=
+ dev-ml/stdio:=
+ dev-ml/typerep:=
+ dev-ml/variantslib:=
+ dev-ml/ocaml-migrate-parsetree:=
+"
+DEPEND="${RDEPEND}
+ dev-ml/opam
+ dev-ml/jbuilder
+"
+
+src_install() {
+ opam-installer -i \
+ --prefix="${ED}/usr" \
+ --libdir="${D}/$(ocamlc -where)" \
+ --docdir="${ED}/usr/share/doc/${PF}" \
+ ${PN}.install || die
+}
diff --git a/dev-ml/core_kernel/core_kernel-113.33.01.ebuild b/dev-ml/core_kernel/core_kernel-113.33.01.ebuild
deleted file mode 100644
index 3c24459f1fc..00000000000
--- a/dev-ml/core_kernel/core_kernel-113.33.01.ebuild
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright 1999-2015 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-OASIS_BUILD_DOCS=1
-OASIS_BUILD_TESTS=1
-
-inherit oasis
-
-DESCRIPTION="System-independent part of Core"
-HOMEPAGE="http://www.janestreet.com/ocaml"
-SRC_URI="http://ocaml.janestreet.com/ocaml-core/${PV%.*}/files/${P}.tar.gz"
-
-LICENSE="LGPL-2.1-with-linking-exception"
-SLOT="0/${PV}"
-KEYWORDS="~amd64"
-IUSE=""
-
-RDEPEND="
- >=dev-ml/bin-prot-112.17.00:=
- >=dev-ml/fieldslib-109.20.00:=
- dev-ml/ppx_assert:=
- dev-ml/ppx_bench:=
- dev-ml/ppx_driver:=
- dev-ml/ppx_expect:=
- dev-ml/ppx_inline_test:=
- dev-ml/ppx_jane:=
- >=dev-ml/sexplib-109.20.00:=
- >=dev-ml/variantslib-109.15.00:=
- >=dev-ml/typerep-111.17:=
- dev-ml/result:=
- "
-DEPEND="${RDEPEND}"
-
-src_prepare() {
- has_version '>=dev-lang/ocaml-4.03' && epatch "${FILESDIR}/oc43.patch"
-}
-
-src_configure() {
- emake setup.exe
- OASIS_SETUP_COMMAND="./setup.exe" oasis_src_configure
-}
-
-src_compile() {
- emake
-}
-
-src_install() {
- opam-installer -i \
- --prefix="${ED}/usr" \
- --libdir="${D}/$(ocamlc -where)" \
- --docdir="${ED}/usr/share/doc/${PF}" \
- ${PN}.install || die
- dodoc CHANGES.md
-}
diff --git a/dev-ml/core_kernel/files/oc43.patch b/dev-ml/core_kernel/files/oc43.patch
deleted file mode 100644
index da1ad5a36bf..00000000000
--- a/dev-ml/core_kernel/files/oc43.patch
+++ /dev/null
@@ -1,581 +0,0 @@
-diff -uNr core_kernel-113.33.01/check_caml_modify/caml_modify.ml core_kernel-113.33.01+4.03/check_caml_modify/caml_modify.ml
---- core_kernel-113.33.01/check_caml_modify/caml_modify.ml 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/check_caml_modify/caml_modify.ml 2016-03-22 15:15:54.000000000 +0100
-@@ -1,5 +1,5 @@
--external count : unit -> int = "check_caml_modify_count" "noalloc"
--external reset : unit -> unit = "check_caml_modify_reset" "noalloc"
-+external count : unit -> int = "check_caml_modify_count" [@@noalloc]
-+external reset : unit -> unit = "check_caml_modify_reset" [@@noalloc]
-
- let%test_unit _ =
- let x = Array.make (32 * 1024) [Random.int 10] in
-diff -uNr core_kernel-113.33.01/check_caml_modify/caml_modify.mli core_kernel-113.33.01+4.03/check_caml_modify/caml_modify.mli
---- core_kernel-113.33.01/check_caml_modify/caml_modify.mli 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/check_caml_modify/caml_modify.mli 2016-03-22 15:15:54.000000000 +0100
-@@ -6,7 +6,7 @@
-
- (** [count ()] returns the number of times [caml_modify] has been called since the last
- call to {!reset}. *)
--external count : unit -> int = "check_caml_modify_count" "noalloc"
-+external count : unit -> int = "check_caml_modify_count" [@@noalloc]
-
- (** [reset ()] reset the counter to [0]. *)
--external reset : unit -> unit = "check_caml_modify_reset" "noalloc"
-+external reset : unit -> unit = "check_caml_modify_reset" [@@noalloc]
-diff -uNr core_kernel-113.33.01/_oasis core_kernel-113.33.01+4.03/_oasis
---- core_kernel-113.33.01/_oasis 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/_oasis 2016-03-22 15:15:54.000000000 +0100
-@@ -1,8 +1,8 @@
- OASISFormat: 0.4
--OCamlVersion: >= 4.02.3
-+OCamlVersion: >= 4.03.0
- FindlibVersion: >= 1.3.2
- Name: core_kernel
--Version: 113.33.01
-+Version: 113.33.01+4.03
- Synopsis: Industrial strength alternative to OCaml's standard library
- Authors: Jane Street Group, LLC <opensource@janestreet.com>
- Copyrights: (C) 2008-2016 Jane Street Group LLC <opensource@janestreet.com>
-diff -uNr core_kernel-113.33.01/opam core_kernel-113.33.01+4.03/opam
---- core_kernel-113.33.01/opam 2016-03-22 11:43:53.000000000 +0100
-+++ core_kernel-113.33.01+4.03/opam 2016-03-22 17:51:34.000000000 +0100
-@@ -25,4 +25,4 @@
- "typerep"
- "variantslib"
- ]
--available: [ ocaml-version >= "4.02.3" ]
-+available: [ ocaml-version >= "4.03.0" ]
-diff -uNr core_kernel-113.33.01/src/bigstring.ml core_kernel-113.33.01+4.03/src/bigstring.ml
---- core_kernel-113.33.01/src/bigstring.ml 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/bigstring.ml 2016-03-22 15:15:54.000000000 +0100
-@@ -16,6 +16,8 @@
-
- external aux_create: max_mem_waiting_gc:int -> size:int -> t = "bigstring_alloc"
-
-+external test_allocation : unit -> 'a = "core_bigstring_test_allocation"
-+
- let create ?max_mem_waiting_gc size =
- let max_mem_waiting_gc =
- match max_mem_waiting_gc with
-@@ -35,6 +37,7 @@
- let max_mem_waiting_gc = Byte_units.create mem_units 256. in
- for _ = 0 to large_int do
- let (_ : t) = create ~max_mem_waiting_gc large_int in
-+ ignore (test_allocation ()); (* ensure we allocate something *)
- ()
- done;
- Alarm.delete alarm;
-@@ -48,7 +51,7 @@
-
- let length = Array1.dim
-
--external is_mmapped : t -> bool = "bigstring_is_mmapped_stub" "noalloc"
-+external is_mmapped : t -> bool = "bigstring_is_mmapped_stub" [@@noalloc]
-
- let init n ~f =
- let t = create n in
-@@ -119,7 +122,7 @@
- (struct
- external unsafe_blit
- : src : string -> src_pos : int -> dst : t -> dst_pos : int -> len : int -> unit
-- = "bigstring_blit_string_bigstring_stub" "noalloc"
-+ = "bigstring_blit_string_bigstring_stub" [@@noalloc]
- include Bigstring_sequence
- end)
- ;;
-@@ -131,7 +134,7 @@
- (struct
- external unsafe_blit
- : src : t -> src_pos : int -> dst : string -> dst_pos : int -> len : int -> unit
-- = "bigstring_blit_bigstring_string_stub" "noalloc"
-+ = "bigstring_blit_bigstring_string_stub" [@@noalloc]
- include String_sequence
- end)
- ;;
-@@ -200,7 +203,7 @@
-
- external unsafe_memcmp
- : t1 : t -> t1_pos : int -> t2 : t -> t2_pos : int -> len : int -> int
-- = "bigstring_memcmp_stub" "noalloc"
-+ = "bigstring_memcmp_stub" [@@noalloc]
-
- let compare t1 t2 =
- if phys_equal t1 t2 then 0 else
-@@ -395,7 +398,7 @@
-
- (* Search *)
-
--external unsafe_find : t -> char -> pos:int -> len:int -> int = "bigstring_find" "noalloc"
-+external unsafe_find : t -> char -> pos:int -> len:int -> int = "bigstring_find" [@@noalloc]
-
- let find ?(pos = 0) ?len chr bstr =
- let len = get_opt_len bstr ~pos len in
-diff -uNr core_kernel-113.33.01/src/bigstring.mli core_kernel-113.33.01+4.03/src/bigstring.mli
---- core_kernel-113.33.01/src/bigstring.mli 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/bigstring.mli 2016-03-22 15:15:54.000000000 +0100
-@@ -83,7 +83,7 @@
- (** [set t pos] sets the character at [pos] *)
- external set : t -> int -> char -> unit = "%caml_ba_set_1"
-
--external is_mmapped : t -> bool = "bigstring_is_mmapped_stub" "noalloc"
-+external is_mmapped : t -> bool = "bigstring_is_mmapped_stub" [@@noalloc]
- (** [is_mmapped bstr] @return whether the bigstring [bstr] is
- memory-mapped. *)
-
-@@ -159,7 +159,7 @@
-
- (** Same as [find], but does no bounds checking, and returns a negative value instead of
- [None] if [char] is not found. *)
--external unsafe_find : t -> char -> pos:int -> len:int -> int = "bigstring_find" "noalloc"
-+external unsafe_find : t -> char -> pos:int -> len:int -> int = "bigstring_find" [@@noalloc]
-
-
- (** {6 Destruction} *)
-diff -uNr core_kernel-113.33.01/src/bigstring_stubs.c core_kernel-113.33.01+4.03/src/bigstring_stubs.c
---- core_kernel-113.33.01/src/bigstring_stubs.c 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/bigstring_stubs.c 2016-03-22 15:15:54.000000000 +0100
-@@ -202,3 +202,14 @@
- core_bigstring_destroy(Caml_ba_array_val(v_bstr), 0);
- return Val_unit;
- }
-+
-+CAMLprim value core_bigstring_test_allocation(value v_unit)
-+{
-+ int i;
-+ value v;
-+ v_unit = v_unit;
-+ for (i = 0; i < 20; i++) {
-+ v = caml_alloc_small(100, 0);
-+ }
-+ return v;
-+}
-diff -uNr core_kernel-113.33.01/src/core_array.ml core_kernel-113.33.01+4.03/src/core_array.ml
---- core_kernel-113.33.01/src/core_array.ml 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/core_array.ml 2016-03-22 15:15:54.000000000 +0100
-@@ -937,7 +937,7 @@
- module Unsafe_blit = struct
- external unsafe_blit
- : src:t_ -> src_pos:int -> dst:t_ -> dst_pos:int -> len:int -> unit
-- = "core_array_unsafe_int_blit" "noalloc"
-+ = "core_array_unsafe_int_blit" [@@noalloc]
- end
-
- include
-@@ -966,7 +966,7 @@
- module Unsafe_blit = struct
- external unsafe_blit
- : src:t_ -> src_pos:int -> dst:t_ -> dst_pos:int -> len:int -> unit
-- = "core_array_unsafe_float_blit" "noalloc"
-+ = "core_array_unsafe_float_blit" [@@noalloc]
- end
-
- include
-@@ -1131,7 +1131,7 @@
-
- external unsafe_blit
- : src:[> read] t -> src_pos:int -> dst:[> write] t -> dst_pos:int -> len:int -> unit
-- = "core_array_unsafe_int_blit" "noalloc"
-+ = "core_array_unsafe_int_blit" [@@noalloc]
- end
-
- module Float : sig
-@@ -1141,7 +1141,7 @@
-
- external unsafe_blit
- : src:[> read] t -> src_pos:int -> dst:[> write] t -> dst_pos:int -> len:int -> unit
-- = "core_array_unsafe_float_blit" "noalloc"
-+ = "core_array_unsafe_float_blit" [@@noalloc]
- end
-
- val of_array_id : 'a array -> ('a, [< read_write]) t
-diff -uNr core_kernel-113.33.01/src/core_array.mli core_kernel-113.33.01+4.03/src/core_array.mli
---- core_kernel-113.33.01/src/core_array.mli 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/core_array.mli 2016-03-22 15:15:54.000000000 +0100
-@@ -97,7 +97,7 @@
-
- external unsafe_blit
- : src:t -> src_pos:int -> dst:t -> dst_pos:int -> len:int -> unit
-- = "core_array_unsafe_int_blit" "noalloc"
-+ = "core_array_unsafe_int_blit" [@@noalloc]
- end
-
- module Float : sig
-@@ -107,7 +107,7 @@
-
- external unsafe_blit
- : src:t -> src_pos:int -> dst:t -> dst_pos:int -> len:int -> unit
-- = "core_array_unsafe_float_blit" "noalloc"
-+ = "core_array_unsafe_float_blit" [@@noalloc]
- end
-
- (** [Array.of_list l] returns a fresh array containing the elements of [l]. *)
-@@ -332,7 +332,7 @@
-
- external unsafe_blit
- : src:[> read] t -> src_pos:int -> dst:[> write] t -> dst_pos:int -> len:int -> unit
-- = "core_array_unsafe_int_blit" "noalloc"
-+ = "core_array_unsafe_int_blit" [@@noalloc]
- end
-
- module Float : sig
-@@ -342,7 +342,7 @@
-
- external unsafe_blit
- : src:[> read] t -> src_pos:int -> dst:[> write] t -> dst_pos:int -> len:int -> unit
-- = "core_array_unsafe_float_blit" "noalloc"
-+ = "core_array_unsafe_float_blit" [@@noalloc]
- end
-
- (** [of_array_id] and [to_array_id] return the same underlying array. On the other
-diff -uNr core_kernel-113.33.01/src/core_gc.ml core_kernel-113.33.01+4.03/src/core_gc.ml
---- core_kernel-113.33.01/src/core_gc.ml 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/core_gc.ml 2016-03-22 15:15:54.000000000 +0100
-@@ -83,6 +83,7 @@
- the first-fit policy, which can be slower in some cases but can be better for
- programs with fragmentation problems. Default: 0. *)
- mutable allocation_policy : int;
-+ window_size : int;
- } [@@deriving compare, bin_io, sexp, fields]
- end
-
-@@ -91,7 +92,8 @@
- end
-
- let tune ?logger ?minor_heap_size ?major_heap_increment ?space_overhead
-- ?verbose ?max_overhead ?stack_limit ?allocation_policy () =
-+ ?verbose ?max_overhead ?stack_limit ?allocation_policy
-+ ?window_size () =
- let module Field = Fieldslib.Field in
- let old_control_params = get () in
- let f opt to_string field =
-@@ -113,6 +115,7 @@
- ~max_overhead: (f max_overhead string_of_int)
- ~stack_limit: (f stack_limit string_of_int)
- ~allocation_policy: (f allocation_policy string_of_int)
-+ ~window_size: (f window_size string_of_int)
- in
- set new_control_params
- ;;
-@@ -141,14 +144,14 @@
- ;;
-
- external minor_words : unit -> int = "core_kernel_gc_minor_words"
--external major_words : unit -> int = "core_kernel_gc_major_words" "noalloc"
--external promoted_words : unit -> int = "core_kernel_gc_promoted_words" "noalloc"
--external minor_collections : unit -> int = "core_kernel_gc_minor_collections" "noalloc"
--external major_collections : unit -> int = "core_kernel_gc_major_collections" "noalloc"
--external heap_words : unit -> int = "core_kernel_gc_heap_words" "noalloc"
--external heap_chunks : unit -> int = "core_kernel_gc_heap_chunks" "noalloc"
--external compactions : unit -> int = "core_kernel_gc_compactions" "noalloc"
--external top_heap_words : unit -> int = "core_kernel_gc_top_heap_words" "noalloc"
-+external major_words : unit -> int = "core_kernel_gc_major_words" [@@noalloc]
-+external promoted_words : unit -> int = "core_kernel_gc_promoted_words" [@@noalloc]
-+external minor_collections : unit -> int = "core_kernel_gc_minor_collections" [@@noalloc]
-+external major_collections : unit -> int = "core_kernel_gc_major_collections" [@@noalloc]
-+external heap_words : unit -> int = "core_kernel_gc_heap_words" [@@noalloc]
-+external heap_chunks : unit -> int = "core_kernel_gc_heap_chunks" [@@noalloc]
-+external compactions : unit -> int = "core_kernel_gc_compactions" [@@noalloc]
-+external top_heap_words : unit -> int = "core_kernel_gc_top_heap_words" [@@noalloc]
-
- external major_plus_minor_words : unit -> int = "core_kernel_gc_major_plus_minor_words"
-
-diff -uNr core_kernel-113.33.01/src/core_gc.mli core_kernel-113.33.01+4.03/src/core_gc.mli
---- core_kernel-113.33.01/src/core_gc.mli 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/core_gc.mli 2016-03-22 15:15:54.000000000 +0100
-@@ -148,6 +148,7 @@
- first-fit policy, which can be slower in some cases but
- can be better for programs with fragmentation problems.
- Default: 0. *)
-+ window_size : int;
- }
- [@@deriving bin_io, sexp, fields]
-
-@@ -185,21 +186,21 @@
- (%r15 on x86-64) to the global variable [caml_young_ptr] before the C stub tries to
- read its value. *)
- external minor_words : unit -> int = "core_kernel_gc_minor_words"
--external major_words : unit -> int = "core_kernel_gc_major_words" "noalloc"
--external promoted_words : unit -> int = "core_kernel_gc_promoted_words" "noalloc"
--external minor_collections : unit -> int = "core_kernel_gc_minor_collections" "noalloc"
--external major_collections : unit -> int = "core_kernel_gc_major_collections" "noalloc"
--external heap_words : unit -> int = "core_kernel_gc_heap_words" "noalloc"
--external heap_chunks : unit -> int = "core_kernel_gc_heap_chunks" "noalloc"
--external compactions : unit -> int = "core_kernel_gc_compactions" "noalloc"
--external top_heap_words : unit -> int = "core_kernel_gc_top_heap_words" "noalloc"
-+external major_words : unit -> int = "core_kernel_gc_major_words" [@@noalloc]
-+external promoted_words : unit -> int = "core_kernel_gc_promoted_words" [@@noalloc]
-+external minor_collections : unit -> int = "core_kernel_gc_minor_collections" [@@noalloc]
-+external major_collections : unit -> int = "core_kernel_gc_major_collections" [@@noalloc]
-+external heap_words : unit -> int = "core_kernel_gc_heap_words" [@@noalloc]
-+external heap_chunks : unit -> int = "core_kernel_gc_heap_chunks" [@@noalloc]
-+external compactions : unit -> int = "core_kernel_gc_compactions" [@@noalloc]
-+external top_heap_words : unit -> int = "core_kernel_gc_top_heap_words" [@@noalloc]
-
- (** This function returns [major_words () + minor_words ()]. It exists purely for speed
- (one call into C rather than two). Like [major_words] and [minor_words],
- [major_plus_minor_words] avoids allocating a [stat] record or a float, and may
- overflow on 32-bit machines.
-
-- This function is not marked ["noalloc"] to ensure that the allocation pointer is
-+ This function is not marked [[@@noalloc]] to ensure that the allocation pointer is
- up-to-date when the minor-heap measurement is made.
- *)
- external major_plus_minor_words : unit -> int = "core_kernel_gc_major_plus_minor_words"
-@@ -256,6 +257,7 @@
- -> ?max_overhead : int
- -> ?stack_limit : int
- -> ?allocation_policy : int
-+ -> ?window_size : int
- -> unit
- -> unit
-
-diff -uNr core_kernel-113.33.01/src/core_gc_stubs.c core_kernel-113.33.01+4.03/src/core_gc_stubs.c
---- core_kernel-113.33.01/src/core_gc_stubs.c 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/core_gc_stubs.c 2016-03-22 15:15:54.000000000 +0100
-@@ -11,8 +11,8 @@
-
- extern intnat caml_stat_minor_collections;
- extern intnat caml_stat_major_collections;
--extern intnat caml_stat_heap_size;
--extern intnat caml_stat_top_heap_size;
-+extern intnat caml_stat_heap_wsz;
-+extern intnat caml_stat_top_heap_wsz;
- extern intnat caml_stat_compactions;
- extern intnat caml_stat_heap_chunks;
-
-@@ -54,7 +54,7 @@
-
- CAMLprim value core_kernel_gc_heap_words(value unit __attribute__((unused)))
- {
-- return Val_long(caml_stat_heap_size / sizeof (value));
-+ return Val_long(caml_stat_heap_wsz);
- }
-
- CAMLprim value core_kernel_gc_heap_chunks(value unit __attribute__((unused)))
-@@ -69,7 +69,7 @@
-
- CAMLprim value core_kernel_gc_top_heap_words(value unit __attribute__((unused)))
- {
-- return Val_long(caml_stat_top_heap_size / sizeof (value));
-+ return Val_long(caml_stat_top_heap_wsz);
- }
-
- CAMLprim value core_kernel_gc_major_plus_minor_words(value unit __attribute__((unused)))
-diff -uNr core_kernel-113.33.01/src/core_pervasives.mli core_kernel-113.33.01+4.03/src/core_pervasives.mli
---- core_kernel-113.33.01/src/core_pervasives.mli 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/core_pervasives.mli 2016-03-22 15:15:54.000000000 +0100
-@@ -417,8 +417,8 @@
- zero. When [f] is non-zero, they are defined by
- [f = x *. 2 ** n] and [0.5 <= x < 1.0]. *)
-
--external ldexp : float -> int -> float = "caml_ldexp_float"
-- [@@deprecated "[since 2014-10] Use [Float]"]
-+external ldexp : (float [@unboxed]) -> (int [@untagged]) -> (float [@unboxed]) =
-+ "caml_ldexp_float" "caml_ldexp_float_unboxed" [@@noalloc]
- (** [ldexp x n] returns [x *. 2 ** n]. *)
-
- external modf : float -> float * float = "caml_modf_float"
-@@ -480,7 +480,8 @@
- (** The five classes of floating-point numbers, as determined by
- the {!Pervasives.classify_float} function. *)
-
--external classify_float : float -> fpclass = "caml_classify_float"
-+external classify_float : (float [@unboxed]) -> fpclass =
-+ "caml_classify_float" "caml_classify_float_unboxed" [@@noalloc]
- [@@deprecated "[since 2014-10] Use [Float]"]
- (** Return the class of the given floating-point number:
- normal, subnormal, zero, infinite, or not a number. *)
-@@ -953,6 +954,10 @@
- Equivalent to [fun r -> r := pred !r]. *)
-
-
-+(* Result type *)
-+
-+type ('a,'b) result = ('a, 'b) Pervasives.result = Ok of 'a | Error of 'b
-+
- (** {6 Operations on format strings} *)
-
- (** Format strings are character strings with special lexical conventions
-@@ -1054,7 +1059,6 @@
- [f1], then results from [f2].
- *)
-
--
- (** {6 Program termination} *)
-
- val exit : int -> 'a
-diff -uNr core_kernel-113.33.01/src/core_string.ml core_kernel-113.33.01+4.03/src/core_string.ml
---- core_kernel-113.33.01/src/core_string.ml 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/core_string.ml 2016-03-22 15:15:54.000000000 +0100
-@@ -949,7 +949,7 @@
- divergence is to expose the macro redefined in hash_stubs.c in the hash.h header of
- the OCaml compiler.) *)
- module Hash = struct
-- external hash : string -> int = "caml_hash_string" "noalloc"
-+ external hash : string -> int = "caml_hash_string" [@@noalloc]
-
- let%test_unit _ =
- List.iter ~f:(fun string -> assert (hash string = Caml.Hashtbl.hash string))
-diff -uNr core_kernel-113.33.01/src/core_string.mli core_kernel-113.33.01+4.03/src/core_string.mli
---- core_kernel-113.33.01/src/core_string.mli 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/core_string.mli 2016-03-22 15:15:54.000000000 +0100
-@@ -269,7 +269,7 @@
- val concat_array : ?sep : t -> t array -> t
-
- (** slightly faster hash function on strings *)
--external hash : t -> int = "caml_hash_string" "noalloc"
-+external hash : t -> int = "caml_hash_string" [@@noalloc]
-
- (** fast equality function on strings, doesn't use compare_val *)
- val equal : t -> t -> bool
-diff -uNr core_kernel-113.33.01/src/exn.ml core_kernel-113.33.01+4.03/src/exn.ml
---- core_kernel-113.33.01/src/exn.ml 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/exn.ml 2016-03-22 15:15:54.000000000 +0100
-@@ -112,7 +112,8 @@
- try func () with
- | exn -> raise (Reraised (str, exn))
-
--external clear_backtrace : unit -> unit = "clear_caml_backtrace_pos" "noalloc"
-+external clear_backtrace : unit -> unit = "clear_caml_backtrace_pos" [@@noalloc]
-+
- let raise_without_backtrace e =
- (* We clear the backtrace to reduce confusion, so that people don't think whatever
- is stored corresponds to this raise. *)
-diff -uNr core_kernel-113.33.01/src/float.ml core_kernel-113.33.01+4.03/src/float.ml
---- core_kernel-113.33.01/src/float.ml 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/float.ml 2016-03-22 15:15:54.000000000 +0100
-@@ -15,7 +15,7 @@
- type t = float [@@deriving sexp, bin_io, typerep]
- let compare (x : t) y = compare x y
- let equal (x : t) y = x = y
-- external hash : float -> int = "caml_hash_double" "noalloc"
-+ external hash : float -> int = "caml_hash_double" [@@noalloc]
-
- let%test_unit _ =
- List.iter ~f:(fun float -> assert (hash float = Caml.Hashtbl.hash float))
-@@ -381,6 +381,7 @@
- else
- invalid_argf "Float.iround_up_exn: argument (%f) is too small or NaN" (box t) ()
- end
-+[@@ocaml.inline always]
-
- let iround_down t =
- if t >= 0.0 then begin
-@@ -409,6 +410,7 @@
- else
- invalid_argf "Float.iround_down_exn: argument (%f) is too small or NaN" (box t) ()
- end
-+[@@ocaml.inline always]
-
- let iround_towards_zero t =
- if t >= iround_lbound && t <= iround_ubound then
-@@ -481,6 +483,7 @@
- else
- invalid_argf "Float.iround_nearest_exn: argument (%f) is too small or NaN" (box t)
- ()
-+[@@ocaml.inline always]
-
- (* The following [iround_exn] and [iround] functions are slower than the ones above.
- Their equivalence to those functions is tested in the unit tests below. *)
-diff -uNr core_kernel-113.33.01/src/heap_block.ml core_kernel-113.33.01+4.03/src/heap_block.ml
---- core_kernel-113.33.01/src/heap_block.ml 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/heap_block.ml 2016-03-22 15:15:54.000000000 +0100
-@@ -1,6 +1,6 @@
- type 'a t = 'a [@@deriving sexp_of]
-
--external is_heap_block : Obj.t -> bool = "core_heap_block_is_heap_block" "noalloc"
-+external is_heap_block : Obj.t -> bool = "core_heap_block_is_heap_block" [@@noalloc]
-
- let is_ok v = is_heap_block (Obj.repr v)
-
-diff -uNr core_kernel-113.33.01/src/int_math.ml core_kernel-113.33.01+4.03/src/int_math.ml
---- core_kernel-113.33.01/src/int_math.ml 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/int_math.ml 2016-03-22 15:15:54.000000000 +0100
-@@ -8,7 +8,7 @@
- Core_printf.invalid_argf "integer overflow in pow" ()
-
- (* To implement [int64_pow], we use C code rather than OCaml to eliminate allocation. *)
--external int_math_int_pow : int -> int -> int = "int_math_int_pow_stub" "noalloc"
-+external int_math_int_pow : int -> int -> int = "int_math_int_pow_stub" [@@noalloc]
- external int_math_int64_pow : int64 -> int64 -> int64 = "int_math_int64_pow_stub"
-
- let int_pow base exponent =
-diff -uNr core_kernel-113.33.01/src/META core_kernel-113.33.01+4.03/src/META
---- core_kernel-113.33.01/src/META 2016-03-22 11:43:53.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/META 2016-03-22 17:51:34.000000000 +0100
-@@ -1,6 +1,6 @@
- # OASIS_START
--# DO NOT EDIT (digest: decb3f50ccea06803a171b5aba7b36dd)
--version = "113.33.01"
-+# DO NOT EDIT (digest: f5e86cbda47f50180165621f5cbe2d8d)
-+version = "113.33.01+4.03"
- description = "Industrial strength alternative to OCaml's standard library"
- requires =
- "bin_prot fieldslib num ppx_assert.runtime-lib ppx_bench.runtime-lib ppx_expect.collector ppx_inline_test.runtime-lib result sexplib typerep variantslib"
-diff -uNr core_kernel-113.33.01/src/obj_array.ml core_kernel-113.33.01+4.03/src/obj_array.ml
---- core_kernel-113.33.01/src/obj_array.ml 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/obj_array.ml 2016-03-22 15:15:54.000000000 +0100
-@@ -33,16 +33,22 @@
-
- let empty = [||]
-
-+type not_a_float = Not_a_float_0 | Not_a_float_1 of int
-+let _not_a_float_0 = Not_a_float_0
-+let _not_a_float_1 = Not_a_float_1 42
-+
- let get t i =
-- (* Make the compiler believe [a] is an integer array so it does not check if [a] is
-- tagged with [Double_array_tag]. *)
-- Obj.repr (Array.get (Obj.magic (t : t) : int array) i : int)
-+ (* Make the compiler believe [a] is an array not containing floats so it does not
-+ check if [a] is tagged with [Double_array_tag]. It is NOT ok to use "int array"
-+ since (if this function is inlined and the array contains in-heap boxed values)
-+ wrong register typing may result, leading to a failure to register necessary
-+ GC roots. *)
-+ Obj.repr (Array.get (Obj.magic (t : t) : not_a_float array) i : not_a_float)
- ;;
-
- let unsafe_get t i =
-- (* Make the compiler believe [a] is an integer array so it does not check if [a] is
-- tagged with [Double_array_tag]. *)
-- Obj.repr (Array.unsafe_get (Obj.magic (t : t) : int array) i : int)
-+ (* See comment on [get]. *)
-+ Obj.repr (Array.unsafe_get (Obj.magic (t : t) : not_a_float array) i : not_a_float)
- ;;
-
- (* For [set] and [unsafe_set], if a pointer is involved, we first do a physical-equality
-diff -uNr core_kernel-113.33.01/src/time_ns.ml core_kernel-113.33.01+4.03/src/time_ns.ml
---- core_kernel-113.33.01/src/time_ns.ml 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/time_ns.ml 2016-03-22 15:15:54.000000000 +0100
-@@ -419,7 +419,7 @@
-
- #if JSC_ARCH_SIXTYFOUR
- external since_unix_epoch_or_zero : unit -> t
-- = "core_kernel_time_ns_gettime_or_zero" "noalloc"
-+ = "core_kernel_time_ns_gettime_or_zero" [@@noalloc]
- #else
- external since_unix_epoch_or_zero : unit -> t
- = "core_kernel_time_ns_gettime_or_zero"
-diff -uNr core_kernel-113.33.01/src/type_equal.ml core_kernel-113.33.01+4.03/src/type_equal.ml
---- core_kernel-113.33.01/src/type_equal.ml 2016-03-22 11:37:07.000000000 +0100
-+++ core_kernel-113.33.01+4.03/src/type_equal.ml 2016-03-22 15:15:54.000000000 +0100
-@@ -64,7 +64,8 @@
- type _ t = ..
-
- let sexp_of_t _sexp_of_a t =
-- (`type_witness (Obj.extension_id t)) |> [%sexp_of: [ `type_witness of int ]]
-+ (`type_witness (Obj.extension_id (Obj.extension_constructor t)))
-+ |> [%sexp_of: [ `type_witness of int ]]
- ;;
- end
-
-@@ -87,7 +88,8 @@
- (module M : S with type t = t)
- ;;
-
-- let uid (type a) (module M : S with type t = a) = Obj.extension_id M.Key
-+ let uid (type a) (module M : S with type t = a) =
-+ Obj.extension_id (Obj.extension_constructor M.Key)
-
- (* We want a constant allocated once that [same] can return whenever it gets the same
- witnesses. If we write the constant inside the body of [same], the native-code