diff options
author | Alexis Ballier <aballier@gentoo.org> | 2017-04-01 18:01:53 +0200 |
---|---|---|
committer | Alexis Ballier <aballier@gentoo.org> | 2017-04-02 10:37:46 +0200 |
commit | 0c53d5effb2f8fcd38632fdaa98af81f89fb6b03 (patch) | |
tree | 401415000186ab8336b0673956602cb4c5ffbb3b /dev-ml/core_kernel | |
parent | dev-ml/bin-prot: Bump to 0.9.0 (diff) | |
download | gentoo-0c53d5effb2f8fcd38632fdaa98af81f89fb6b03.tar.gz gentoo-0c53d5effb2f8fcd38632fdaa98af81f89fb6b03.tar.bz2 gentoo-0c53d5effb2f8fcd38632fdaa98af81f89fb6b03.zip |
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/Manifest | 2 | ||||
-rw-r--r-- | dev-ml/core_kernel/core_kernel-0.9.0.ebuild | 47 | ||||
-rw-r--r-- | dev-ml/core_kernel/core_kernel-113.33.01.ebuild | 56 | ||||
-rw-r--r-- | dev-ml/core_kernel/files/oc43.patch | 581 |
4 files changed, 48 insertions, 638 deletions
diff --git a/dev-ml/core_kernel/Manifest b/dev-ml/core_kernel/Manifest index 3fd665e59793..8e4f54464dc0 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 000000000000..e725deed96b8 --- /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 3c24459f1fcb..000000000000 --- 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 da1ad5a36bf5..000000000000 --- 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 |