Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ocaml for openSUSE:Factory checked in at 2021-09-28 19:16:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ocaml (Old) and /work/SRC/openSUSE:Factory/.ocaml.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ocaml" Tue Sep 28 19:16:22 2021 rev:84 rq:921338 version:4.12.1 Changes: -------- --- /work/SRC/openSUSE:Factory/ocaml/ocaml.changes 2021-04-22 18:03:46.462488947 +0200 +++ /work/SRC/openSUSE:Factory/.ocaml.new.1899/ocaml.changes 2021-09-28 19:16:26.660179768 +0200 @@ -1,0 +2,6 @@ +Fri Sep 24 08:08:08 UTC 2021 - oher...@suse.de + +- update to version 4.12.1 + See included Changes for benefits and breaking changes + +------------------------------------------------------------------- Old: ---- ocaml-4.12.0.tar.xz New: ---- ocaml-4.12.1.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ocaml.spec ++++++ --- /var/tmp/diff_new_pack.cMxRfG/_old 2021-09-28 19:16:27.148180331 +0200 +++ /var/tmp/diff_new_pack.cMxRfG/_new 2021-09-28 19:16:27.152180335 +0200 @@ -42,7 +42,7 @@ %bcond_without suse_ocaml_use_rpm_license_macro Name: ocaml -Version: 4.12.0 +Version: 4.12.1 Release: 0 Summary: OCaml Compiler and Programming Environment %if %{with suse_ocaml_use_rpm_license_macro} @@ -53,14 +53,14 @@ Group: Development/Languages/OCaml BuildRoot: %_tmppath/%name-%version-build URL: http://www.ocaml.org -Source0: http://caml.inria.fr/pub/distrib/ocaml-%{ocaml_base_version}/ocaml-%{version}.tar.xz +Source0: ocaml-%{version}.tar.xz Source2: %{name}-rpmlintrc Patch0: ocaml-configure-Allow-user-defined-C-compiler-flags.patch Patch1: ocaml-SIGSTKSZ.patch BuildRequires: autoconf >= 2.69 BuildRequires: fdupes BuildRequires: ncurses-devel -BuildRequires: ocaml-rpm-macros >= 20210421 +BuildRequires: ocaml-rpm-macros >= 20210911 BuildRequires: pkgconfig Requires: ncurses-devel Requires: ocaml(runtime) = %{version}-%{release} ++++++ _service ++++++ --- /var/tmp/diff_new_pack.cMxRfG/_old 2021-09-28 19:16:27.176180362 +0200 +++ /var/tmp/diff_new_pack.cMxRfG/_new 2021-09-28 19:16:27.180180367 +0200 @@ -1,7 +1,7 @@ <services> <service name="tar_scm" mode="disabled"> <param name="filename">ocaml</param> - <param name="revision">62b6fc9dbeb5ea7f43447cb68b3fad8c3327b6d8</param> + <param name="revision">46c947827ec2f6d6da7fe5e195ae5dda1d2ad0c5</param> <param name="scm">git</param> <param name="submodules">disable</param> <param name="url">https://github.com/ocaml/ocaml.git</param> ++++++ ocaml-4.12.0.tar.xz -> ocaml-4.12.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/Changes new/ocaml-4.12.1/Changes --- old/ocaml-4.12.0/Changes 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/Changes 2021-09-23 15:35:08.000000000 +0200 @@ -1,3 +1,49 @@ +OCaml 4.12.1 (24 September 2021) +-------------------------------- + +### Bug fixes: + +- #10107: Ensure modules compiled with -afl-instrument can still link on + platforms without AFL support. + (David Allsopp, review by Xavier Leroy) + +- #10294, #10295: fix an assert-failure in pattern-matching compilation + (Gabriel Scherer, review by Thomas Refis and Luc Maranget, + report by Nicol??s Ojeda B??r) + +- #10310: configure's --enable-spacetime option now causes an error rather than + being silently ignored. + (David Allsopp, review by Gabriel Scherer) + +- #10351: Fix DLL loading with binutils 2.36+ on mingw-w64 + (David Allsopp, review by Nicol??s Ojeda B??r) + +- #10442, #10446: Fix regression in the toplevel to #directory caused by + corrections and improvements to the Load_path in #9611. #directory now + adds the path to the start of the load path again (so files in the newly + added directory take priority). + (David Allsopp, report by Vasile Rotaru, review by Florian Angeletti + and Nicol??s Ojeda B??r) + +- #10449: Fix major GC work accounting (the GC was running too fast). + (Damien Doligez, report by Stephen Dolan, review by Nicol??s Ojeda B??r + and Sadiq Jaffer) + +- #10478: Fix segfault under Windows due to a mistaken initialization of thread + ID when a thread starts. + (David Allsopp, Nicol??s Ojeda B??r, review by Xavier Leroy) + +- #10626, #10628: Wrong reloading of the x86-64 instruction for + integer multiplication by a constant, causing the assembler to + reject the ocamlopt-generated code. + (Xavier Leroy, report by Dave Aitken, review by Vincent Laviron) + +### Manual and documentation + +- #10497: Styling changes in the post-processed HTML manual (webman) + (Wiktor Kuchta, review by Florian Angeletti) + + OCaml 4.12.0 (24 February 2021) ------------------------------- @@ -236,7 +282,7 @@ (David Allsopp, review by Guillaume Munch-Maccagnoni and Jacques-Henri Jourdan) -- #9508: Remove support for FreeBSD prior to 4.0R, that required explicit +- #9506: Remove support for FreeBSD prior to 4.0R, that required explicit floating-point initialization to behave like IEEE standard (Hannes Mehnert, review by David Allsopp) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/VERSION new/ocaml-4.12.1/VERSION --- old/ocaml-4.12.0/VERSION 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/VERSION 2021-09-23 15:35:08.000000000 +0200 @@ -1,4 +1,4 @@ -4.12.0 +4.12.1 # The version string is the first line of this file. # It must be in the format described in stdlib/sys.mli diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/asmcomp/amd64/reload.ml new/ocaml-4.12.1/asmcomp/amd64/reload.ml --- old/ocaml-4.12.0/asmcomp/amd64/reload.ml 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/asmcomp/amd64/reload.ml 2021-09-23 15:35:08.000000000 +0200 @@ -40,6 +40,7 @@ Iintop(others) R R S or S S R Iintop_imm(Iadd, n)/lea R R + Iintop_imm(Imul, n) R R Iintop_imm(others) S S Inegf...Idivf R R S Ifloatofint R S @@ -74,6 +75,11 @@ (* This add will be turned into a lea; args and results must be in registers *) super#reload_operation op arg res + | Iintop_imm(Imul, _) -> + (* The result (= the argument) must be a register (#10626) *) + if stackp arg.(0) + then (let r = self#makereg arg.(0) in ([|r|], [|r|])) + else (arg, res) | Iintop(Imulh | Idiv | Imod | Ilsl | Ilsr | Iasr) | Iintop_imm(_, _) -> (* The argument(s) and results can be either in register or on stack *) Binary files old/ocaml-4.12.0/boot/ocamlc and new/ocaml-4.12.1/boot/ocamlc differ Binary files old/ocaml-4.12.0/boot/ocamllex and new/ocaml-4.12.1/boot/ocamllex differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/configure new/ocaml-4.12.1/configure --- old/ocaml-4.12.0/configure 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/configure 2021-09-23 15:35:08.000000000 +0200 @@ -56,7 +56,7 @@ fi fi # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for OCaml 4.12.0. +# Generated by GNU Autoconf 2.69 for OCaml 4.12.1. # # Report bugs to <caml-l...@inria.fr>. # @@ -646,8 +646,8 @@ # Identity of this package. PACKAGE_NAME='OCaml' PACKAGE_TARNAME='ocaml' -PACKAGE_VERSION='4.12.0' -PACKAGE_STRING='OCaml 4.12.0' +PACKAGE_VERSION='4.12.1' +PACKAGE_STRING='OCaml 4.12.1' PACKAGE_BUGREPORT='caml-l...@inria.fr' PACKAGE_URL='http://www.ocaml.org' @@ -893,6 +893,7 @@ enable_frame_pointers enable_naked_pointers enable_naked_pointers_checker +enable_spacetime enable_cfi enable_installing_source_artifacts enable_installing_bytecode_programs @@ -1472,7 +1473,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures OCaml 4.12.0 to adapt to many kinds of systems. +\`configure' configures OCaml 4.12.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1538,7 +1539,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of OCaml 4.12.0:";; + short | recursive ) echo "Configuration of OCaml 4.12.1:";; esac cat <<\_ACEOF @@ -1694,7 +1695,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -OCaml configure 4.12.0 +OCaml configure 4.12.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2403,7 +2404,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by OCaml $as_me 4.12.0, which was +It was created by OCaml $as_me 4.12.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2752,8 +2753,8 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: Configuring OCaml version 4.12.0" >&5 -$as_echo "$as_me: Configuring OCaml version 4.12.0" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: Configuring OCaml version 4.12.1" >&5 +$as_echo "$as_me: Configuring OCaml version 4.12.1" >&6;} # Configuration variables @@ -2834,7 +2835,7 @@ -VERSION=4.12.0 +VERSION=4.12.1 # Note: This is present for the flexdll bootstrap where it exposed as the old @@ -3184,6 +3185,12 @@ fi +# Check whether --enable-spacetime was given. +if test "${enable_spacetime+set}" = set; then : + enableval=$enable_spacetime; as_fn_error $? "spacetime profiling was deleted in OCaml 4.12." "$LINENO" 5 +fi + + # Check whether --enable-cfi was given. if test "${enable_cfi+set}" = set; then : enableval=$enable_cfi; @@ -12640,7 +12647,7 @@ cc_warnings='-Wall -Wdeclaration-after-statement' ;; esac -case $enable_warn_error,4.12.0 in #( +case $enable_warn_error,4.12.1 in #( yes,*|,*+dev*) : cc_warnings="$cc_warnings $warn_error_flag" ;; #( *) : @@ -16922,7 +16929,7 @@ ocamldoc=ocamldoc fi -case $enable_ocamltest,4.12.0 in #( +case $enable_ocamltest,4.12.1 in #( yes,*|,*+dev*) : ocamltest='ocamltest' ;; #( *) : @@ -17642,7 +17649,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by OCaml $as_me 4.12.0, which was +This file was extended by OCaml $as_me 4.12.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -17709,7 +17716,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -OCaml config.status 4.12.0 +OCaml config.status 4.12.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/configure.ac new/ocaml-4.12.1/configure.ac --- old/ocaml-4.12.0/configure.ac 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/configure.ac 2021-09-23 15:35:08.000000000 +0200 @@ -282,6 +282,10 @@ [AS_HELP_STRING([--enable-naked-pointers-checker], [enable the naked pointers checker])]) +AC_ARG_ENABLE([spacetime], [], + [AC_MSG_ERROR([spacetime profiling was deleted in OCaml 4.12.])], + []) + AC_ARG_ENABLE([cfi], [AS_HELP_STRING([--disable-cfi], [disable the CFI directives in assembly files])]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/manual/manual/allfiles.etex new/ocaml-4.12.1/manual/manual/allfiles.etex --- old/ocaml-4.12.0/manual/manual/allfiles.etex 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/manual/manual/allfiles.etex 2021-09-23 15:35:08.000000000 +0200 @@ -23,8 +23,8 @@ \setcounter{page}{1} \begin{htmlonly} -\begin{quote} -\rule{}{} +\begin{maintitle} +\vspace*{2ex} This manual is also available in \ahref{https://ocaml.org/releases/\ocamlversion/ocaml-\ocamlversion-refman.pdf}{PDF}, \ahref{https://ocaml.org/releases/\ocamlversion/ocaml-\ocamlversion-refman.txt}{plain text}, @@ -32,8 +32,7 @@ \ahref{https://ocaml.org/releases/\ocamlversion/ocaml-\ocamlversion-refman-html.tar.gz}{bundle of HTML files}, and as a \ahref{https://ocaml.org/releases/\ocamlversion/ocaml-\ocamlversion-refman.info.tar.gz}{bundle of Emacs Info files}. -\rule{}{} -\end{quote} +\end{maintitle} \end{htmlonly} \tableofcontents diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/manual/manual/html_processing/scss/_common.scss new/ocaml-4.12.1/manual/manual/html_processing/scss/_common.scss --- old/ocaml-4.12.0/manual/manual/html_processing/scss/_common.scss 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/manual/manual/html_processing/scss/_common.scss 2021-09-23 15:35:08.000000000 +0200 @@ -7,7 +7,7 @@ $logo_height:67px; @if $ocamlorg { - .container { + .container { margin-left:0; margin-right:0; } @@ -19,6 +19,10 @@ @import url(https://fonts.googleapis.com/css?family=Noticia+Text:400,400i,700); @import url(https://fonts.googleapis.com/css?family=Fira+Sans:400,400i,500,500i,600,600i,700,700i); +$font-sans: "Fira Sans", Helvetica, Arial, sans-serif; +$font-mono: "Fira Mono", courier, monospace; +$font-serif: "Noticia Text", Georgia, serif; + /* Reset */ .pre,a,b,body,code,div,em,form,h1,h2,h3,h4,h5,h6,header,html,i,img,li,mark,menu,nav,object,output,p,pre,s,section,span,time,ul,td,var{ margin:0; @@ -47,7 +51,7 @@ } body{ - font-family:"Fira Sans",Helvetica,Arial,sans-serif; + font-family: $font-sans; text-align:left; color:#333; background:#fff @@ -76,7 +80,7 @@ &>header { margin-bottom: 30px; nav { - font-family: "Fira Sans", Helvetica, Arial, sans-serif; + font-family: $font-sans; } } } @@ -87,7 +91,7 @@ margin-right:4ex; margin-top:20px; margin-bottom:50px; - font-family:"Noticia Text",Georgia,serif; + font-family: $font-serif; line-height:1.5 } @@ -131,7 +135,7 @@ padding-left:12px; } a { - font-family:"Fira Sans",sans-serif; + font-family: $font-sans; font-size:.95em; color:#333; font-weight:400; @@ -179,7 +183,7 @@ } } } - + @mixin nav-toc-mobile { position:static; width:auto; @@ -225,7 +229,7 @@ position: absolute; background: transparent; } - .content, .api { + .content, .api { nav.toc { margin-right: 1em; float: left; @@ -244,3 +248,23 @@ margin-right:4px; margin-left:-1em } + +@mixin disc { + content:"???"; + color:$logocolor; + margin-right:4px; + margin-left:-1em; + font-family: $font-sans; + font-size:13px; + vertical-align:1px; +} + +@mixin diamond { + content:"???"; + color:$logocolor; + margin-right:4px; + margin-left:-1em; + font-family: $font-sans; + font-size:14px; + vertical-align:1px; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/manual/manual/html_processing/scss/manual.scss new/ocaml-4.12.1/manual/manual/html_processing/scss/manual.scss --- old/ocaml-4.12.0/manual/manual/html_processing/scss/manual.scss 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/manual/manual/html_processing/scss/manual.scss 2021-09-23 15:35:08.000000000 +0200 @@ -16,14 +16,14 @@ float:left; color:#777; cursor: context-menu; - font-family:"Fira Sans",Helvetica,Arial,sans-serif; + font-family: $font-sans; span{ /* menu icon */ font-size:22px; margin-right:1ex; } } ul{list-style:none;} - ul.itemize li::before{@include caret;} + ul.itemize li::before{@include disc;} /* When the TOC is repeated in the main content */ ul.ul-content { @@ -54,13 +54,16 @@ } } /* only for Contents/Foreword in index.html: */ - ul.ul-content li::before{@include caret;} + ul.ul-content li::before{ + @include disc; + margin-left: 0; + } /* table of contents: (manual.001.html): */ ul.toc ul.toc ul.toc{ font-size:smaller; } section>ul>li>a{ /* for Parts title */ - font-family:"Fira Sans",Helvetica,Arial,sans-serif; + font-family: $font-sans; font-size:larger; background:linear-gradient(to left,#fff 0,#ede8e5 100%); } @@ -140,7 +143,7 @@ color:#d5d5d5 } .h10,.h7,.h8,.h9,h1,h2,h3,h4,h5,h6{ - font-family:"Fira Sans",Helvetica,Arial,sans-serif; + font-family: $font-sans; font-weight:400; margin:.5em 0 .5em 0; padding-top:.1em; @@ -182,8 +185,11 @@ h4{ font-size:1.12em } +h2, h3, h4, h5 { + font-weight: 500; +} .ocaml,.pre,code,pre,tt{ - font-family:"Fira Mono",courier; + font-family: $font-mono; font-weight:400 } .pre,pre{ @@ -260,14 +266,13 @@ color: #d28853; } blockquote.quote{ - margin:0; /*font-size: smaller;*/ hr{ display:none; } } #part-menu{ - font-family:"Fira Sans"; + font-family: $font-sans; text-align:right; list-style:none; overflow-y:hidden; @@ -275,37 +280,78 @@ } #part-menu li.active a{ color:#000; - &::before{@include caret;} + &::before{@include diamond} +} +.center { + text-align: center; + margin-left: auto; + margin-right: auto; +} +.display { + margin: 0 auto; +} +.c001 { + border-spacing: 6px; + border-collapse: separate; } span.c003{ color:#564233; - font-family:"Fira Mono",courier; - background-color:#f3ece6; + font-family: $font-mono; border-radius:6px } div.caml-example.toplevel code.caml-input::before, div.caml-example.toplevel div.caml-input::before{ - content:"#"; + /* content:"#"; */ /* pre-4.11 */ color:#888 } -span.c004{ +span.number{ + padding-right: 1ex; +} +span.c004, span.c005, span.c007 { + font-family: $font-mono; +} +span.c003, span.c005 { + color: rgba(91, 33, 6, 0.87); +} +span.c002{ color:#888 } span.c006{ font-weight:700; color:#564233; - font-family:"Fira Mono",courier; + font-family: $font-mono; } -span.c009{ - font-style:italic; - background-color:#f3ece6; - border-radius:6px +.c008 { + font-family: $font-sans; } -span.authors.c009{ +span.c010 { + font-style: italic; +} +span.authors{ + font-style:italic; background-color:inherit } +span.c011 { + font-style: italic; +} +.c012 { + font-style: italic; +} span.c013{ - font-weight:700 + font-style: italic; +} +.center table { + margin-left: inherit; + margin-right: inherit; +} +td .c014 { + font-weight: bold; +} +.c016 { + text-align: center; +} +.cellpadding1 tr td { + padding: 1px 4px; } .caml-input{ span.ocamlkeyword{ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/manual/manual/html_processing/scss/style.scss new/ocaml-4.12.1/manual/manual/html_processing/scss/style.scss --- old/ocaml-4.12.0/manual/manual/html_processing/scss/style.scss 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/manual/manual/html_processing/scss/style.scss 2021-09-23 15:35:08.000000000 +0200 @@ -39,7 +39,7 @@ .api { // font-size: 16px; - // font-family: "Fira Sans", Helvetica, Arial, sans-serif; + // font-family: $font-sans; // text-align: left; // color: #333; // background: #FFFFFF; @@ -259,7 +259,7 @@ we restart the sequence there like h2 */ h1, h2, h3, h4, h5, h6, .h7, .h8, .h9, .h10 { - font-family: "Fira Sans", Helvetica, Arial, sans-serif; + font-family: $font-sans; font-weight: 400; margin: 0.5em 0 0.5em 0; padding-top: 0.1em; @@ -316,7 +316,7 @@ /* Preformatted and code */ tt, code, pre { - font-family: "Fira Mono", courier; + font-family: $font-mono; font-weight: 400; } @@ -705,7 +705,7 @@ span.arrow { font-size: 20px; line-height: 8pt; - font-family: "Fira Mono"; + font-family: $font-mono; } header dl dd, header dl dt { display: inline-block; @@ -742,7 +742,7 @@ } ul.tutos_menu { - font-family: "Fira Sans"; + font-family: $font-sans; text-align: right; list-style: none; } @@ -756,7 +756,7 @@ } span.c003 { - font-family: "Fira Mono", courier; + font-family: $font-mono; background-color: #f3ece6; border-radius: 6px; } @@ -793,8 +793,7 @@ code span.constructor, .caml-input span.kw2 { - font-weight: 500; - color: #a28867; + color: #8d543c; } .caml-input span.numeric { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/manual/manual/html_processing/src/process_manual.ml new/ocaml-4.12.1/manual/manual/html_processing/src/process_manual.ml --- old/ocaml-4.12.0/manual/manual/html_processing/src/process_manual.ml 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/manual/manual/html_processing/src/process_manual.ml 2021-09-23 15:35:08.000000000 +0200 @@ -19,9 +19,34 @@ let archives = ["refman-html.tar.gz"; "refman.txt"; "refman.pdf"; "refman.info.tar.gz"] +let preg_anyspace = + String.concat "\\|" + ["\u{00a0}"; (* NO-BREAK SPACE *) + "\u{2000}"; (* EN QUAD *) + "\u{2001}"; (* EM QUAD *) + "\u{2002}"; (* EN SPACE *) + "\u{2003}"; (* EM SPACE *) + "\u{2004}"; (* THREE-PER-EM SPACE *) + "\u{2005}"; (* FOUR-PER-EM SPACE *) + "\u{2006}"; (* SIX-PER-EM SPACE *) + "\u{2007}"; (* FIGURE SPACE *) + "\u{2008}"; (* PUNCTUATION SPACE *) + "\u{2009}"; (* THIN SPACE *) + "\u{200a}"; (* HAIR SPACE *) + "\u{202f}"; (* NARROW NO-BREAK SPACE *) + ] + |> sprintf "\\(%s\\)+" + +(* WARNING these are sensitive to Hevea fluctuations: *) +(* "long" space is either "??" (hevea 2.32) or "\u{2003}" (hevea 2.35) *) +let preg_emspace = "\\(\u{2003}\\|??\\)" +(* What hevea inserts between "Chapter" and the chapter number: *) +let preg_chapter_space = "\\(\u{2004}\u{200d}\\|" ^ preg_anyspace ^ "\\)" +let writtenby_css = "span.c010" (* "span.c009" for hevea 2.32 *) + (* Remove number: "Chapter??1????The core language" ==> "The core language" *) let remove_number s = - Re.Str.(global_replace (regexp ".+????") "" s) + Re.Str.(global_replace (regexp (".+" ^ preg_emspace)) "" s) let toc_get_title li = let a = li $ "a[href]" in @@ -78,16 +103,26 @@ "<div class=\"copyright\">" ^ !copyright_text ^ "</div>" |> parse + +(* New UTF8 space chars have been introduced in Hevea 2.35. In Hevea 2.32, only + html nb_spaces " " were used. With 2.35 we have + 'Chapter\u2004\u200d2\u2003The module system'. The \u200d is Zero Width + Joiner and should probably not be used here, see + https://github.com/maranget/hevea/pull/61 *) + +let reg_chapter = Re.Str.regexp + ("Chapter" ^ preg_chapter_space ^ "\\([0-9]+\\)" ^ preg_anyspace) + let load_html file = dbg "%s" file; (* First we perform some direct find/replace in the html string. *) let html = read_file (html_file file) - (* Normalize non-break spaces: *) + (* Normalize non-break spaces to the utf8 \u00A0: *) |> Re.Str.(global_replace (regexp_string " ") "??") - |> Re.Str.(global_replace (regexp "Chapter??\\([0-9]+\\)")) - (if file = "index.html" then "<span>\\1.</span>" - else "<span>Chapter \\1</span>") + |> Re.Str.(global_replace reg_chapter) + (if file = "index.html" then {|<span class="number">\3.</span>|} + else {|<span class="number">Chapter \3</span>|}) (* I think it would be good to replace "chapter" by "tutorial" for part I. The problem of course is how we number chapters in the other parts. *) @@ -97,9 +132,12 @@ (* Remove the chapter number in local links, it makes the TOC unnecessarily unfriendly. *) - |> Re.Str.(global_replace (regexp ">[0-9]+\\.\\([0-9]+\\)??") ">\\1??") - |> Re.Str.(global_replace (regexp "[0-9]+\\.\\([0-9]+\\.[0-9]+\\)??")) - "\\1??" + |> Re.Str.(global_replace + (regexp (">[0-9]+\\.\\([0-9]+\\)" ^ preg_anyspace))) + {|><span class="number">\1</span>|} + |> Re.Str.(global_replace + (regexp ("[0-9]+\\.\\([0-9]+\\(\\.[0-9]+\\)+\\)" ^ preg_anyspace))) + {|<span class="number">\1</span>|} (* The API (libref and compilerlibref directories) should be separate entities, to better distinguish them from the manual. *) @@ -111,8 +149,9 @@ (* For the main index file, we do a few adjustments *) let html = if file = "index.html" - then Re.Str.(global_replace (regexp "Part??\\([I|V]+\\)<br>") - "<span>\\1.??</span>" html) + then Re.Str.(global_replace + (regexp ("Part" ^ preg_chapter_space ^ "\\([I|V]+\\)<br>\n")) + {|<span class="number">\3.</span>|} html) else html in (* Set utf8 encoding directly in the html string *) @@ -194,7 +233,7 @@ | Some div -> div (* This is the case for "index.html" *) | None -> soup $ "h1" in title, header - + (* Create a new file by keeping only the head/headers parts of "soup", deleting everything after the title, and inserting the content of external file (hence preserving TOC and headers) (WARNING: this mutates soup) *) @@ -368,7 +407,7 @@ (* Move authors to the end *) let move_authors body = - body $? "span.c009" + body $? writtenby_css |> Option.iter (fun authors -> match leaf_text authors with | None -> () diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/manual/manual/macros.hva new/ocaml-4.12.1/manual/manual/macros.hva --- old/ocaml-4.12.0/manual/manual/macros.hva 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/manual/manual/macros.hva 2021-09-23 15:35:08.000000000 +0200 @@ -258,7 +258,7 @@ % Notations pour les metavariables \def\nmth#1#2#3{\({#1}_{#2}^{#3}\)} \def\optvar#1{[\var{#1}\/]} -\def\event{??} +\def\event{$\bowtie$} \def\fromoneto#1#2{$#1 = 1,\ldots{} , #2$} \newcommand{\vfill}{} @@ -280,3 +280,6 @@ %%% References to modules in the standard library \newcommand{\stdmoduleref}[1]{\ahref{libref/#1.html}{\texttt{#1}}} + +%%% Missing macro +\newcommand{\DeclareUnicodeCharacter}[2]{} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/ocaml-variants.opam new/ocaml-4.12.1/ocaml-variants.opam --- old/ocaml-4.12.0/ocaml-variants.opam 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/ocaml-variants.opam 2021-09-23 15:35:08.000000000 +0200 @@ -1,8 +1,8 @@ opam-version: "2.0" -version: "4.12.0" -synopsis: "OCaml 4.12.0" +version: "4.12.1" +synopsis: "OCaml 4.12.1" depends: [ - "ocaml" {= "4.12.0" & post} + "ocaml" {= "4.12.1" & post} "base-unix" {post} "base-bigarray" {post} "base-threads" {post} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/otherlibs/systhreads/st_stubs.c new/ocaml-4.12.1/otherlibs/systhreads/st_stubs.c --- old/ocaml-4.12.0/otherlibs/systhreads/st_stubs.c 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/otherlibs/systhreads/st_stubs.c 2021-09-23 15:35:08.000000000 +0200 @@ -523,9 +523,9 @@ /* Associate the thread descriptor with the thread */ st_tls_set(thread_descriptor_key, (void *) th); - st_thread_set_id(Ident(th->descr)); /* Acquire the global mutex */ caml_leave_blocking_section(); + st_thread_set_id(Ident(th->descr)); caml_setup_stack_overflow_detection(); #ifdef NATIVE_CODE /* Setup termination handler (for caml_thread_exit) */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/runtime/afl.c new/ocaml-4.12.1/runtime/afl.c --- old/ocaml-4.12.0/runtime/afl.c 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/runtime/afl.c 2021-09-23 15:35:08.000000000 +0200 @@ -15,6 +15,11 @@ /* Runtime support for afl-fuzz */ #include "caml/config.h" +/* Values used by the instrumentation logic (see cmmgen.ml) */ +static unsigned char afl_area_initial[1 << 16]; +unsigned char* caml_afl_area_ptr = afl_area_initial; +uintnat caml_afl_prev_loc; + #if !defined(HAS_SYS_SHM_H) || !defined(HAS_SHMAT) #include "caml/mlvalues.h" @@ -50,11 +55,6 @@ to count a testcase as "crashing" */ extern int caml_abort_on_uncaught_exn; -/* Values used by the instrumentation logic (see cmmgen.ml) */ -static unsigned char afl_area_initial[1 << 16]; -unsigned char* caml_afl_area_ptr = afl_area_initial; -uintnat caml_afl_prev_loc; - /* File descriptors used to synchronise with afl-fuzz */ #define FORKSRV_FD_READ 198 #define FORKSRV_FD_WRITE 199 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/runtime/caml/misc.h new/ocaml-4.12.1/runtime/caml/misc.h --- old/ocaml-4.12.0/runtime/caml/misc.h 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/runtime/caml/misc.h 2021-09-23 15:35:08.000000000 +0200 @@ -78,7 +78,7 @@ #ifndef CAMLDLLIMPORT #if defined(SUPPORT_DYNAMIC_LINKING) && defined(ARCH_SIXTYFOUR) \ - && defined(__CYGWIN__) + && (defined(__CYGWIN__) || defined(__MINGW32__)) #define CAMLDLLIMPORT __declspec(dllimport) #else #define CAMLDLLIMPORT diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/runtime/major_gc.c new/ocaml-4.12.1/runtime/major_gc.c --- old/ocaml-4.12.0/runtime/major_gc.c 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/runtime/major_gc.c 2021-09-23 15:35:08.000000000 +0200 @@ -456,7 +456,7 @@ if( Tag_hd(chd) < No_scan_tag ) { mark_stack_push(stk, child, 0, work); } else { - *work -= 1; /* Account for header */ + *work -= Whsize_hd (chd); } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/testsuite/tests/basic-more/pr10294.ml new/ocaml-4.12.1/testsuite/tests/basic-more/pr10294.ml --- old/ocaml-4.12.0/testsuite/tests/basic-more/pr10294.ml 1970-01-01 01:00:00.000000000 +0100 +++ new/ocaml-4.12.1/testsuite/tests/basic-more/pr10294.ml 2021-09-23 15:35:08.000000000 +0200 @@ -0,0 +1,45 @@ +(* TEST *) + +type import_error = Node of string +type export_error = Variant of string * string + +exception Import of import_error +exception Export of export_error +(* Pattern-matching analysis and compilation considers that two + exceptions constructors may be equal (one may be a rebinding of + the other) as long as they have the same arity, as is the case + here. + + The result of splitting on these two exception constructors is what + we call an "incoherent row", a pattern matrix whose rows have + incompatible types (one matching on [import_error], the other on + [export_error]). + + In the case of the code below, the incoherent row is as follows: + + (Node _) + (Variant (_, _)) + + Note that the two constructors [Node] and [Variant] have different + arities, but the same tag (0). + + In bug #10924, this causes an assertion-failure in the + pattern-matching compiler, because a matrix-decomposition + computation in Default_environment ends up considering that Node + and Variant are equal, creating a sub-matrix with one wildcard + pattern in the first row, and two in the second. + + This is fixed by comparing constructors by more than their tags + (which is insufficient for incoherent rows). +*) +let f = function + | Import (Node _) -> + 1 + | Export (Variant (_, _)) -> + 2 + | _ -> + 3 + +let () = + assert (f (Import (Node "foo")) = 1); + assert (f (Export (Variant ("foo", "bar"))) = 2); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/testsuite/tests/load_path/driver.ml new/ocaml-4.12.1/testsuite/tests/load_path/driver.ml --- old/ocaml-4.12.0/testsuite/tests/load_path/driver.ml 1970-01-01 01:00:00.000000000 +0100 +++ new/ocaml-4.12.1/testsuite/tests/load_path/driver.ml 2021-09-23 15:35:08.000000000 +0200 @@ -0,0 +1,3 @@ +#cd "test" +#directory "." +#use "payload.ml" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/testsuite/tests/load_path/payload.ml new/ocaml-4.12.1/testsuite/tests/load_path/payload.ml --- old/ocaml-4.12.0/testsuite/tests/load_path/payload.ml 1970-01-01 01:00:00.000000000 +0100 +++ new/ocaml-4.12.1/testsuite/tests/load_path/payload.ml 2021-09-23 15:35:08.000000000 +0200 @@ -0,0 +1 @@ +let _ = 42 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/testsuite/tests/load_path/test.ml new/ocaml-4.12.1/testsuite/tests/load_path/test.ml --- old/ocaml-4.12.0/testsuite/tests/load_path/test.ml 1970-01-01 01:00:00.000000000 +0100 +++ new/ocaml-4.12.1/testsuite/tests/load_path/test.ml 2021-09-23 15:35:08.000000000 +0200 @@ -0,0 +1,13 @@ +(* TEST + +* setup-ocaml-build-env +** script +script = "mkdir -p test" +*** script +script = "cp ${test_source_directory}/driver.ml test/" +**** script +script = "cp ${test_source_directory}/payload.ml test/" +***** ocaml +test_file = "test/driver.ml" +ocaml_script_as_argument = "true" +*) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/tools/ci/inria/launch new/ocaml-4.12.1/tools/ci/inria/launch --- old/ocaml-4.12.0/tools/ci/inria/launch 1970-01-01 01:00:00.000000000 +0100 +++ new/ocaml-4.12.1/tools/ci/inria/launch 2021-09-23 15:35:08.000000000 +0200 @@ -0,0 +1,31 @@ +#!/bin/sh +#************************************************************************** +#* * +#* OCaml * +#* * +#* Xavier Leroy, projet Cambium, INRIA Paris * +#* * +#* Copyright 2021 Institut National de Recherche en Informatique et * +#* en Automatique. * +#* * +#* All rights reserved. This file is distributed under the terms of * +#* the GNU Lesser General Public License version 2.1, with the * +#* special exception on linking described in the file LICENSE. * +#* * +#************************************************************************** + +# Set up the execution environment before launching the CI script +# given as argument. + +# Currently, the only setup performed is to make sure that ARM-based Macs +# run the script in ARM64 mode or in x86-64 mode, depending on what +# the OCAML_ARCH parameter requires. +# If OCAML_ARCH is just "macos", the default mode is used. + +set -x + +case "${OCAML_ARCH}" in + macos-arm) OCAML_ARCH=macos exec /usr/bin/arch -arm64 "$@";; + macos-x86) OCAML_ARCH=macos exec /usr/bin/arch -x86_64 "$@";; + *) exec "$@";; +esac diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/tools/ci/inria/main new/ocaml-4.12.1/tools/ci/inria/main --- old/ocaml-4.12.0/tools/ci/inria/main 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/tools/ci/inria/main 2021-09-23 15:35:08.000000000 +0200 @@ -93,7 +93,7 @@ # be considerate towards other potential users of the test machine case "${OCAML_ARCH}" in - bsd|macos|linux) renice 10 $$ ;; + bsd|linux) renice 10 $$ ;; esac # be verbose and stop on error diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/toplevel/opttopdirs.ml new/ocaml-4.12.1/toplevel/opttopdirs.ml --- old/ocaml-4.12.0/toplevel/opttopdirs.ml 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/toplevel/opttopdirs.ml 2021-09-23 15:35:08.000000000 +0200 @@ -35,7 +35,7 @@ let dir_directory s = let d = expand_directory Config.standard_library s in let dir = Load_path.Dir.create d in - Load_path.add dir; + Load_path.prepend_dir dir; toplevel_env := Stdlib.String.Set.fold (fun name env -> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/toplevel/topdirs.ml new/ocaml-4.12.1/toplevel/topdirs.ml --- old/ocaml-4.12.0/toplevel/topdirs.ml 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/toplevel/topdirs.ml 2021-09-23 15:35:08.000000000 +0200 @@ -72,7 +72,7 @@ let d = expand_directory Config.standard_library s in Dll.add_path [d]; let dir = Load_path.Dir.create d in - Load_path.add dir; + Load_path.prepend_dir dir; toplevel_env := Stdlib.String.Set.fold (fun name env -> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/typing/types.ml new/ocaml-4.12.1/typing/types.ml --- old/ocaml-4.12.0/typing/types.ml 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/typing/types.ml 2021-09-23 15:35:08.000000000 +0200 @@ -434,9 +434,14 @@ Path.same path1 path2 && b1 = b2 | (Cstr_constant _|Cstr_block _|Cstr_unboxed|Cstr_extension _), _ -> false -let may_equal_constr c1 c2 = match c1.cstr_tag,c2.cstr_tag with -| Cstr_extension _,Cstr_extension _ -> c1.cstr_arity = c2.cstr_arity -| tag1,tag2 -> equal_tag tag1 tag2 +let may_equal_constr c1 c2 = + c1.cstr_arity = c2.cstr_arity + && (match c1.cstr_tag,c2.cstr_tag with + | Cstr_extension _,Cstr_extension _ -> + (* extension constructors may be rebindings of each other *) + true + | tag1, tag2 -> + equal_tag tag1 tag2) type label_description = { lbl_name: string; (* Short name *) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/utils/load_path.ml new/ocaml-4.12.1/utils/load_path.ml --- old/ocaml-4.12.0/utils/load_path.ml 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/utils/load_path.ml 2021-09-23 15:35:08.000000000 +0200 @@ -66,7 +66,7 @@ we are starting from an empty cache, we can avoid checking whether a unit name already exists in the cache simply by adding entries in reverse order. *) -let add dir = +let prepend_add dir = assert (not Config.merlin || Local_store.is_bound ()); let new_files, new_files_uncap = add_to_maps (Filename.concat dir.Dir.path) @@ -78,14 +78,14 @@ let init l = reset (); dirs := List.rev_map Dir.create l; - List.iter add !dirs + List.iter prepend_add !dirs let remove_dir dir = assert (not Config.merlin || Local_store.is_bound ()); let new_dirs = List.filter (fun d -> Dir.path d <> dir) !dirs in if List.compare_lengths new_dirs !dirs <> 0 then begin reset (); - List.iter add new_dirs; + List.iter prepend_add new_dirs; dirs := new_dirs end @@ -103,8 +103,17 @@ files_uncap := SMap.union first !files_uncap new_files_uncap; dirs := dir :: !dirs +let append_dir = add + let add_dir dir = add (Dir.create dir) +(* Add the directory at the start of load path - so basenames are + unconditionally added. *) +let prepend_dir dir = + assert (not Config.merlin || Local_store.is_bound ()); + prepend_add dir; + dirs := !dirs @ [dir] + let is_basename fn = Filename.basename fn = fn let find fn = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-4.12.0/utils/load_path.mli new/ocaml-4.12.1/utils/load_path.mli --- old/ocaml-4.12.0/utils/load_path.mli 2021-02-24 14:49:29.000000000 +0100 +++ new/ocaml-4.12.1/utils/load_path.mli 2021-09-23 15:35:08.000000000 +0200 @@ -23,7 +23,7 @@ *) val add_dir : string -> unit -(** Add a directory to the load path *) +(** Add a directory to the end of the load path (i.e. at lowest priority.) *) val remove_dir : string -> unit (** Remove a directory from the load path *) @@ -60,7 +60,16 @@ sub-directories of this directory. *) end -val add : Dir.t -> unit +val[@deprecated] add : Dir.t -> unit +(** Old name for {!append_dir} *) + +val append_dir : Dir.t -> unit +(** [append_dir d] adds [d] to the end of the load path (i.e. at lowest + priority. *) + +val prepend_dir : Dir.t -> unit +(** [prepend_dir d] adds [d] to the start of the load path (i.e. at highest + priority. *) val get : unit -> Dir.t list (** Same as [get_paths ()], except that it returns a [Dir.t list]. *)