The package rpms/haxe.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/haxe.git/commit/?id=731990683e028....
Change:
+ExcludeArch: %{ix86}
Thanks.
Full change:
============
commit 8fea9b9cf333ccdd89ed9c0e65b902add8765caa
Merge: be49314 4ee090f
Author: Andy Li <andy(a)onthewings.net>
Date: Sat Mar 23 23:04:16 2024 +0000
Merge branch 'rawhide' into f38
diff --cc haxe.spec
index 265d68b,dc54fcb..8743c95
--- a/haxe.spec
+++ b/haxe.spec
@@@ -123,14 -123,38 +123,17 @@@ pop
%{_datadir}/%{name}/
%changelog
+ * Tue Mar 05 2024 Andy Li <andy(a)onthewings.net> - 4.3.4-1
+ - New upstream version 4.3.4. (RHBZ#2267830)
+
-* Wed Jan 24 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 4.3.3-5
-- Rebuilt for
https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
-
-* Sat Jan 20 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 4.3.3-4
-- Rebuilt for
https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
-
-* Mon Dec 18 2023 Richard W.M. Jones <rjones(a)redhat.com> - 4.3.3-3
-- OCaml 5.1.1 + s390x code gen fix for Fedora 40
-
-* Tue Dec 12 2023 Richard W.M. Jones <rjones(a)redhat.com> - 4.3.3-2
-- OCaml 5.1.1 rebuild for Fedora 40
-
* Sun Nov 19 2023 Andy Li <andy(a)onthewings.net> - 4.3.3-1
- New upstream version 4.3.3. (RHBZ#2250370)
-- Drop haxe-ocaml5.patch which is no longer needed.
-* Thu Oct 05 2023 Richard W.M. Jones <rjones(a)redhat.com> - 4.3.2-2
-- OCaml 5.1 rebuild for Fedora 40
+* Wed Sep 13 2023 Andy Li <andy(a)onthewings.net> - 4.3.2-2
+- Use the properly built haxelib. (RHBZ#2237112)
-* Fri Sep 15 2023 Andy Li <andy(a)onthewings.net> - 4.3.2-1
+* Sat Sep 09 2023 Andy Li <andy(a)onthewings.net> - 4.3.2-1
- New upstream version 4.3.2. (RHBZ#2237112)
-- Use the properly built haxelib. (RHBZ#2129517)
-- Add haxe-ocaml5.patch from upstream for OCaml 5 compat. (RHBZ#2218692)
-
-* Thu Jul 20 2023 Fedora Release Engineering <releng(a)fedoraproject.org> - 4.3.1-3
-- Rebuilt for
https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
-
-* Wed Jul 12 2023 Richard W.M. Jones <rjones(a)redhat.com> - 4.3.1-2
-- OCaml 5.0 rebuild for Fedora 39
* Sun Apr 30 2023 Andy Li <andy(a)onthewings.net> - 4.3.1-1
- New upstream version 4.3.1. (RHBZ#2185083, RHBZ#2128307)
commit 4ee090fe295e379159cffc65feeb5e8ddb1d3dd5
Author: Andy Li <andy(a)onthewings.net>
Date: Tue Mar 5 22:13:26 2024 +0000
New upstream version 4.3.4. (RHBZ#2267830)
diff --git a/.gitignore b/.gitignore
index 24b35f5..ee81255 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,3 +37,4 @@
/haxe-4.3.1.tar.gz
/haxe-4.3.2.tar.gz
/haxe-4.3.3.tar.gz
+/haxe-4.3.4.tar.gz
diff --git a/haxe.spec b/haxe.spec
index 2407e8b..dc54fcb 100644
--- a/haxe.spec
+++ b/haxe.spec
@@ -5,8 +5,8 @@ ExcludeArch: %{ix86}
%global commit_hx3compat f1f18201e5c0479cb5adf5f6028788b37f37b730
Name: haxe
-Version: 4.3.3
-Release: 5%{?dist}
+Version: 4.3.4
+Release: 1%{?dist}
Summary: Multi-target universal programming language
# As described in
https://haxe.org/foundation/open-source.html:
@@ -123,6 +123,9 @@ popd
%{_datadir}/%{name}/
%changelog
+* Tue Mar 05 2024 Andy Li <andy(a)onthewings.net> - 4.3.4-1
+- New upstream version 4.3.4. (RHBZ#2267830)
+
* Wed Jan 24 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 4.3.3-5
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git a/sources b/sources
index b31e539..1116e1d 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
-SHA512 (haxe-4.3.3.tar.gz) =
72fd7370f4a42d3524bad78e4ab2b4e839e4d9db6f4e8a942bdddfbe93f97c11ee8e7e96c524b5f8ab0a37a0e151cdeb4dd1d085f6093b70adb555cab6113b0b
+SHA512 (haxe-4.3.4.tar.gz) =
4993a7aaa2e9feb01e60ba52c3ce936b319265a4285c9fe2832d6b815ff657efaaeb7d14137a3a00640ec1a1ff9c83441c1531fa9f8a96d894267b5cc6daed2f
SHA512 (haxelib-f17fffa97554b1bdba37750e3418051f017a5bc2.tar.gz) =
adc80c20833062a6639f352861a950a4289a06ba97dcc57e327186cec8aa7988e17b5f4df518ced9a371ae4f0fd7d065bd79f400aa48045081066fa784c6b837
SHA512 (hx3compat-f1f18201e5c0479cb5adf5f6028788b37f37b730.tar.gz) =
d3df767744c073715a5deb9e1b602006aded8335d7afe28686e9440c4d9fabe6eb29314beb7b929bb7a76de68a815a9a7c7a49d2a92183e9a5331923f70249ff
commit d354a34563b86ffacc4aa2c877134e272f3029fb
Author: Andy Li <andy(a)onthewings.net>
Date: Tue Mar 5 21:41:54 2024 +0000
haxe-ocaml5.patch was removed
diff --git a/haxe-ocaml5.patch b/haxe-ocaml5.patch
deleted file mode 100644
index ed19f22..0000000
--- a/haxe-ocaml5.patch
+++ /dev/null
@@ -1,1356 +0,0 @@
-From 87ada5e2afa288c136fc1963c5d2c126dcd7241d Mon Sep 17 00:00:00 2001
-From: Rudy Ges <k(a)klabz.org>
-Date: Thu, 14 Sep 2023 20:37:45 +0200
-Subject: [PATCH] OCaml 5 compatibility (#11272)
-
----
- .github/workflows/main.yml | 15 ++++--
- Earthfile | 3 ++
- extra/github-actions/cache-opam-windows.yml | 6 ---
- extra/github-actions/cache-opam.yml | 6 ---
- extra/github-actions/workflows/main.yml | 27 +++++++++--
- haxe.opam | 5 +-
- libs/extc/extc_stubs.c | 42 ++++++++---------
- libs/extc/process_stubs.c | 4 +-
- libs/extlib-leftovers/uTF8.ml | 2 +-
- libs/ilib/peReader.ml | 4 +-
- libs/objsize/c_objsize.c | 31 ++++++++++--
- libs/swflib/swfParser.ml | 2 +-
- libs/swflib/swfPic.ml | 2 +-
- libs/ttflib/tTFParser.ml | 2 +-
- libs/ziplib/zip.ml | 16 +++----
- src/codegen/dotnet.ml | 4 +-
- src/codegen/java.ml | 2 +-
- src/codegen/javaModern.ml | 2 +-
- src/codegen/swfLoader.ml | 2 +-
- src/compiler/displayProcessing.ml | 2 +-
- src/context/display/displayException.ml | 16 +++----
- src/context/display/documentSymbols.ml | 2 +-
- src/context/typecore.ml | 8 ++--
- src/core/path.ml | 4 +-
- src/dune | 2 +-
- src/generators/gencpp.ml | 4 +-
- src/generators/genhl.ml | 4 +-
- src/generators/genphp7.ml | 52 ++++++++++-----------
- src/generators/genswf9.ml | 2 +-
- src/generators/hl2c.ml | 2 +-
- src/generators/hlinterp.ml | 12 ++---
- src/macro/eval/evalJit.ml | 2 +-
- src/macro/eval/evalStdLib.ml | 28 +++++------
- src/optimization/inlineConstructors.ml | 4 +-
- src/typing/matcher.ml | 2 +-
- src/typing/typeloadCheck.ml | 2 +-
- src/typing/typeloadParse.ml | 2 +-
- 37 files changed, 185 insertions(+), 142 deletions(-)
- delete mode 100644 extra/github-actions/cache-opam-windows.yml
- delete mode 100644 extra/github-actions/cache-opam.yml
-
-diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
-index 5c13a228f..f9378961b 100644
---- a/.github/workflows/main.yml
-+++ b/.github/workflows/main.yml
-@@ -259,6 +259,10 @@ jobs:
- env:
- PLATFORM: linux64
- OPAMYES: 1
-+ strategy:
-+ fail-fast: false
-+ matrix:
-+ ocaml: ["4.08.1", "5.0.0"]
- steps:
- - uses: actions/checkout@main
- with:
-@@ -269,7 +273,7 @@ jobs:
- uses: actions/cache(a)v3.0.11
- with:
- path: ~/.opam/
-- key: ${{ runner.os }}-${{ hashFiles('./haxe.opam', './libs/')
}}-2
-+ key: ${{ runner.os }}-${{ matrix.ocaml }}-${{ hashFiles('./haxe.opam',
'./libs/') }}
-
- - name: Install Neko from S3
- run: |
-@@ -303,6 +307,7 @@ jobs:
- set -ex
- opam init # --disable-sandboxing
- opam update
-+ opam switch create ${{ matrix.ocaml }}
- opam pin add haxe . --no-action
- opam install haxe --deps-only --assume-depexts
- opam list
-@@ -343,11 +348,12 @@ jobs:
- - name: Upload artifact
- uses: actions/upload-artifact@v3
- with:
-- name: linuxBinaries
-+ name: linuxBinaries${{ (matrix.ocaml == '5.0.0' &&
'_ocaml5') || '' }}
- path: out
-
- - name: Upload xmldoc artifact
- uses: actions/upload-artifact@v3
-+ if: matrix.ocaml == '4.08.1'
- with:
- name: xmldoc
- path: extra/doc
-@@ -363,6 +369,7 @@ jobs:
- strategy:
- fail-fast: false
- matrix:
-+ ocaml: ["4.08.1", "5.0.0"]
- target: [macro, js, hl, cpp, 'java,jvm', cs, php, python, lua, flash,
neko]
- include:
- - target: hl
-@@ -379,7 +386,7 @@ jobs:
- submodules: recursive
- - uses: actions/download-artifact@v3
- with:
-- name: linuxBinaries
-+ name: linuxBinaries${{ (matrix.ocaml == '5.0.0' &&
'_ocaml5') || '' }}
- path: linuxBinaries
-
- - name: Install Neko from S3
-@@ -586,7 +593,7 @@ jobs:
- uses: actions/cache(a)v3.0.11
- with:
- path: ~/.opam/
-- key: ${{ runner.os }}-${{ hashFiles('./haxe.opam', './libs/')
}}-2
-+ key: ${{ runner.os }}-${{ hashFiles('./haxe.opam', './libs/')
}}
-
- - name: Install Neko from S3
- run: |
-diff --git a/Earthfile b/Earthfile
-index 8f399bb10..dda473f6c 100644
---- a/Earthfile
-+++ b/Earthfile
-@@ -93,6 +93,9 @@ devcontainer:
- # Install OCaml libraries
- COPY haxe.opam .
- RUN opam init --disable-sandboxing
-+ RUN opam switch create 4.08.1
-+ RUN eval $(opam env)
-+ RUN opam env
- RUN opam install . --yes --deps-only --no-depexts
- RUN opam list
- RUN ocamlopt -v
-diff --git a/extra/github-actions/cache-opam-windows.yml
b/extra/github-actions/cache-opam-windows.yml
-deleted file mode 100644
-index 5270fbf1f..000000000
---- a/extra/github-actions/cache-opam-windows.yml
-+++ /dev/null
-@@ -1,6 +0,0 @@
--- name: Cache opam
-- id: cache-opam
-- uses: actions/cache(a)v3.0.11
-- with:
-- path: D:\.opam
-- key: ${{ runner.os }}${{ env.ARCH }}-${{ hashFiles('./haxe.opam',
'./libs/') }}
-diff --git a/extra/github-actions/cache-opam.yml b/extra/github-actions/cache-opam.yml
-deleted file mode 100644
-index faaee00b7..000000000
---- a/extra/github-actions/cache-opam.yml
-+++ /dev/null
-@@ -1,6 +0,0 @@
--- name: Cache opam
-- id: cache-opam
-- uses: actions/cache(a)v3.0.11
-- with:
-- path: ~/.opam/
-- key: ${{ runner.os }}-${{ hashFiles('./haxe.opam', './libs/') }}-2
-diff --git a/extra/github-actions/workflows/main.yml
b/extra/github-actions/workflows/main.yml
-index 629d1bd64..5dbff6761 100644
---- a/extra/github-actions/workflows/main.yml
-+++ b/extra/github-actions/workflows/main.yml
-@@ -57,12 +57,22 @@ jobs:
- env:
- PLATFORM: linux64
- OPAMYES: 1
-+ strategy:
-+ fail-fast: false
-+ matrix:
-+ ocaml: ["4.08.1", "5.0.0"]
- steps:
- - uses: actions/checkout@main
- with:
- submodules: recursive
-
-- @import cache-opam.yml
-+ - name: Cache opam
-+ id: cache-opam
-+ uses: actions/cache(a)v3.0.11
-+ with:
-+ path: ~/.opam/
-+ key: ${{ runner.os }}-${{ matrix.ocaml }}-${{ hashFiles('./haxe.opam',
'./libs/') }}
-+
- @import install-neko-unix.yml
-
- - name: Install dependencies
-@@ -79,6 +89,7 @@ jobs:
- set -ex
- opam init # --disable-sandboxing
- opam update
-+ opam switch create ${{ matrix.ocaml }}
- opam pin add haxe . --no-action
- opam install haxe --deps-only --assume-depexts
- opam list
-@@ -119,11 +130,12 @@ jobs:
- - name: Upload artifact
- uses: actions/upload-artifact@v3
- with:
-- name: linuxBinaries
-+ name: linuxBinaries${{ (matrix.ocaml == '5.0.0' &&
'_ocaml5') || '' }}
- path: out
-
- - name: Upload xmldoc artifact
- uses: actions/upload-artifact@v3
-+ if: matrix.ocaml == '4.08.1'
- with:
- name: xmldoc
- path: extra/doc
-@@ -139,6 +151,7 @@ jobs:
- strategy:
- fail-fast: false
- matrix:
-+ ocaml: ["4.08.1", "5.0.0"]
- target: [macro, js, hl, cpp, 'java,jvm', cs, php, python, lua, flash,
neko]
- include:
- - target: hl
-@@ -155,7 +168,7 @@ jobs:
- submodules: recursive
- - uses: actions/download-artifact@v3
- with:
-- name: linuxBinaries
-+ name: linuxBinaries${{ (matrix.ocaml == '5.0.0' &&
'_ocaml5') || '' }}
- path: linuxBinaries
-
- @import install-neko-unix.yml
-@@ -325,7 +338,13 @@ jobs:
- with:
- submodules: recursive
-
-- @import cache-opam.yml
-+ - name: Cache opam
-+ id: cache-opam
-+ uses: actions/cache(a)v3.0.11
-+ with:
-+ path: ~/.opam/
-+ key: ${{ runner.os }}-${{ hashFiles('./haxe.opam', './libs/')
}}
-+
- @import install-neko-unix.yml
- @import build-mac.yml
-
-diff --git a/haxe.opam b/haxe.opam
-index 60e1671fe..6da637e95 100644
---- a/haxe.opam
-+++ b/haxe.opam
-@@ -19,15 +19,16 @@ build: [
- install: [make "install" "INSTALL_DIR=%{prefix}%"]
- remove: [make "uninstall" "INSTALL_DIR=%{prefix}%"]
- depends: [
-- "ocaml" {>= "4.08"}
-+ ("ocaml" {>= "5.0"} & ("camlp5" {build}))
-+ | ("ocaml" {>= "4.08" & < "5.0"} &
("camlp5" {build & = "8.00"}))
- "ocamlfind" {build}
- "dune" {>= "1.11"}
-- "camlp5" {build & = "8.00"}
- "sedlex" {>= "2.0"}
- "xml-light"
- "extlib" {>= "1.7.8"}
- "ptmap" {>= "2.0.0"}
- "sha"
-+ "camlp-streams"
- "conf-libpcre2-8"
- "conf-zlib"
- "conf-neko"
-diff --git a/libs/extc/extc_stubs.c b/libs/extc/extc_stubs.c
-index 30dc986d5..92faa58aa 100644
---- a/libs/extc/extc_stubs.c
-+++ b/libs/extc/extc_stubs.c
-@@ -92,7 +92,7 @@ int Zflush_val(value zflush_val) {
- case 4: return Z_FINISH;
- // TODO: support Z_BLOCK and Z_TREE
- // TODO: append the received value
-- default: failwith("Error in `Zflush_val` (extc_stubs.c): Unknown zflush
value");
-+ default: caml_failwith("Error in `Zflush_val` (extc_stubs.c): Unknown zflush
value");
- }
- assert(0);
- }
-@@ -222,14 +222,14 @@ CAMLprim value zlib_deflate_init2(value level_val, value
window_bits_val) {
- break;
- case Z_STREAM_ERROR:
- // TODO: use stream->msg to get _zlib_'s text message
-- failwith("Error in `zlib_deflate_init2` (extc_stubs.c): call to `deflateInit2`
failed: Z_STREAM_ERROR");
-+ caml_failwith("Error in `zlib_deflate_init2` (extc_stubs.c): call to
`deflateInit2` failed: Z_STREAM_ERROR");
- break;
- case Z_VERSION_ERROR:
- // TODO: use stream->msg to get _zlib_'s text message
-- failwith("Error in `zlib_deflate_init2` (extc_stubs.c): call to `deflateInit2`
failed: Z_VERSION_ERROR");
-+ caml_failwith("Error in `zlib_deflate_init2` (extc_stubs.c): call to
`deflateInit2` failed: Z_VERSION_ERROR");
- break;
- default:
-- failwith("Error in `zlib_deflate_init2` (extc_stubs.c): unknown return code from
`deflateInit2`");
-+ caml_failwith("Error in `zlib_deflate_init2` (extc_stubs.c): unknown return code
from `deflateInit2`");
- }
- assert(0);
- }
-@@ -275,7 +275,7 @@ CAMLprim value zlib_deflate(value stream_val, value src, value spos,
value slen,
- if (deflate_result == Z_OK || deflate_result == Z_STREAM_END) {
- stream->next_in = NULL;
- stream->next_out = NULL;
-- value zresult = alloc_small(3, 0);
-+ value zresult = caml_alloc_small(3, 0);
- // z_finish
- Field(zresult, 0) = Val_bool(deflate_result == Z_STREAM_END);
- // z_read
-@@ -291,14 +291,14 @@ CAMLprim value zlib_deflate(value stream_val, value src, value
spos, value slen,
- break;
- case Z_STREAM_ERROR:
- // TODO: use stream->msg to get _zlib_'s text message
-- failwith("Error in `zlib_deflate` (extc_stubs.c): call to `deflate` failed:
Z_STREAM_ERROR");
-+ caml_failwith("Error in `zlib_deflate` (extc_stubs.c): call to `deflate` failed:
Z_STREAM_ERROR");
- break;
- case Z_BUF_ERROR:
- // TODO: use stream->msg to get _zlib_'s text message
-- failwith("Error in `zlib_deflate` (extc_stubs.c): call to `deflate` failed:
Z_BUF_ERROR");
-+ caml_failwith("Error in `zlib_deflate` (extc_stubs.c): call to `deflate` failed:
Z_BUF_ERROR");
- break;
- default:
-- failwith("Error in `zlib_deflate` (extc_stubs.c): unknown return code from
`deflate`");
-+ caml_failwith("Error in `zlib_deflate` (extc_stubs.c): unknown return code from
`deflate`");
- }
- assert(0);
- }
-@@ -309,14 +309,14 @@ CAMLprim value zlib_deflate_bytecode(value *arg, int nargs) {
-
- CAMLprim value zlib_deflate_end(value zv) {
- if( deflateEnd(ZStreamP_val(zv)) != 0 )
-- failwith("zlib_deflate_end");
-+ caml_failwith("zlib_deflate_end");
- return Val_unit;
- }
-
- CAMLprim value zlib_inflate_init(value wbits) {
- value z = zlib_new_stream();
- if( inflateInit2(ZStreamP_val(z),Int_val(wbits)) != Z_OK )
-- failwith("zlib_inflate_init");
-+ caml_failwith("zlib_inflate_init");
- return z;
- }
-
-@@ -330,12 +330,12 @@ CAMLprim value zlib_inflate( value zv, value src, value spos, value
slen, value
- z->avail_in = Int_val(slen);
- z->avail_out = Int_val(dlen);
- if( (r = inflate(z,Int_val(flush))) < 0 )
-- failwith("zlib_inflate");
-+ caml_failwith("zlib_inflate");
-
- z->next_in = NULL;
- z->next_out = NULL;
-
-- res = alloc_small(3, 0);
-+ res = caml_alloc_small(3, 0);
- Field(res, 0) = Val_bool(r == Z_STREAM_END);
- Field(res, 1) = Val_int(Int_val(slen) - z->avail_in);
- Field(res, 2) = Val_int(Int_val(dlen) - z->avail_out);
-@@ -348,7 +348,7 @@ CAMLprim value zlib_inflate_bytecode(value * arg, int nargs) {
-
- CAMLprim value zlib_inflate_end(value zv) {
- if( inflateEnd(ZStreamP_val(zv)) != 0 )
-- failwith("zlib_inflate_end");
-+ caml_failwith("zlib_inflate_end");
- return Val_unit;
- }
-
-@@ -368,13 +368,13 @@ CAMLprim value executable_path(value u) {
- #ifdef _WIN32
- char path[MAX_PATH];
- if( GetModuleFileName(NULL,path,MAX_PATH) == 0 )
-- failwith("executable_path");
-+ caml_failwith("executable_path");
- return caml_copy_string(path);
- #elif __APPLE__
- char path[MAXPATHLEN+1];
- uint32_t path_len = MAXPATHLEN;
- if ( _NSGetExecutablePath(path, &path_len) )
-- failwith("executable_path");
-+ caml_failwith("executable_path");
- return caml_copy_string(path);
- #elif __FreeBSD__
- char path[PATH_MAX];
-@@ -387,7 +387,7 @@ CAMLprim value executable_path(value u) {
- len = sizeof(path);
- error = sysctl(name, 4, path, &len, NULL, 0);
- if( error < 0 )
-- failwith("executable_path");
-+ caml_failwith("executable_path");
- return caml_copy_string(path);
- #else
- char path[PATH_MAX];
-@@ -397,7 +397,7 @@ CAMLprim value executable_path(value u) {
- if( p != NULL )
- return caml_copy_string(p);
- else
-- failwith("executable_path");
-+ caml_failwith("executable_path");
- }
- path[length] = '\0';
- return caml_copy_string(path);
-@@ -408,12 +408,12 @@ CAMLprim value get_full_path( value f ) {
- #ifdef _WIN32
- char path[MAX_PATH];
- if( GetFullPathName(String_val(f),MAX_PATH,path,NULL) == 0 )
-- failwith("get_full_path");
-+ caml_failwith("get_full_path");
- return caml_copy_string(path);
- #else
- char path[4096];
- if( realpath(String_val(f),path) == NULL )
-- failwith("get_full_path");
-+ caml_failwith("get_full_path");
- return caml_copy_string(path);
- #endif
- }
-@@ -428,7 +428,7 @@ CAMLprim value get_real_path( value path ) {
-
- // this will ensure the full class path with proper casing
- if( GetFullPathName(String_val(path),MAX_PATH,out,NULL) == 0 )
-- failwith("get_real_path");
-+ caml_failwith("get_real_path");
-
- len = strlen(out);
- i = 0;
-@@ -501,7 +501,7 @@ CAMLprim value sys_time() {
- ULARGE_INTEGER ui;
- GetSystemTime(&t);
- if( !SystemTimeToFileTime(&t,&ft) )
-- failwith("sys_cpu_time");
-+ caml_failwith("sys_cpu_time");
- ui.LowPart = ft.dwLowDateTime;
- ui.HighPart = ft.dwHighDateTime;
- return caml_copy_double( ((double)ui.QuadPart) / 10000000.0 - EPOCH_DIFF );
-diff --git a/libs/extc/process_stubs.c b/libs/extc/process_stubs.c
-index c17c7a4f5..1f42c0fd1 100644
---- a/libs/extc/process_stubs.c
-+++ b/libs/extc/process_stubs.c
-@@ -67,10 +67,10 @@
- #define val_null Val_int(0)
- #define val_some(v) Field(v,0)
- #define val_int(v) Int_val(v)
--#define neko_error() failwith(__FUNCTION__)
-+#define neko_error() caml_failwith(__FUNCTION__)
-
- static value alloc_private( int size ) {
-- return alloc((size + sizeof(value) - 1) / sizeof(value), Abstract_tag);
-+ return caml_alloc((size + sizeof(value) - 1) / sizeof(value), Abstract_tag);
- }
-
- // --- buffer api
-diff --git a/libs/extlib-leftovers/uTF8.ml b/libs/extlib-leftovers/uTF8.ml
-index ef61364de..ec25bd7ae 100644
---- a/libs/extlib-leftovers/uTF8.ml
-+++ b/libs/extlib-leftovers/uTF8.ml
-@@ -177,7 +177,7 @@ let rec iter_aux proc s i =
-
- let iter proc s = iter_aux proc s 0
-
--let compare s1 s2 = Pervasives.compare s1 s2
-+let compare s1 s2 = Stdlib.compare s1 s2
-
- exception Malformed_code
-
-diff --git a/libs/ilib/peReader.ml b/libs/ilib/peReader.ml
-index fc79151e5..4d2e4aadb 100644
---- a/libs/ilib/peReader.ml
-+++ b/libs/ilib/peReader.ml
-@@ -25,7 +25,7 @@ open ExtList;;
- exception Error_message of string
-
- type reader_ctx = {
-- ch : Pervasives.in_channel;
-+ ch : Stdlib.in_channel;
- i : IO.input;
- verbose : bool;
- }
-@@ -42,7 +42,7 @@ let seek r pos =
- seek_in r.ch pos
-
- let pos r =
-- Pervasives.pos_in r.ch
-+ Stdlib.pos_in r.ch
-
- let info r msg =
- if r.verbose then
-diff --git a/libs/objsize/c_objsize.c b/libs/objsize/c_objsize.c
-index 5f222e072..4a3167531 100644
---- a/libs/objsize/c_objsize.c
-+++ b/libs/objsize/c_objsize.c
-@@ -12,6 +12,11 @@
- #include "util.h"
-
- #include <caml/memory.h>
-+#include <caml/version.h>
-+
-+#if OCAML_VERSION_MAJOR >= 5
-+#include <caml/address_class.h>
-+#endif
-
- // FROM byterun/gc.h
- #define Caml_white (0 << 8)
-@@ -38,6 +43,7 @@
- #define In_static_data 4
- #define In_code_area 8
-
-+#if OCAML_VERSION_MAJOR < 5
- #ifdef ARCH_SIXTYFOUR
-
- // 64 bits: Represent page table as a sparse hash table
-@@ -63,6 +69,23 @@ CAMLextern unsigned char * caml_page_table[Pagetable1_size];
-
- #define Is_in_heap_or_young(a) (Classify_addr(a) & (In_heap | In_young))
-
-+void store_explicit(header_t hd, value v, int col)
-+ {
-+ Hd_val(v) = Coloredhd_hd(hd, col);
-+ }
-+
-+#else
-+
-+void store_explicit(header_t hd, value v, int col)
-+ {
-+ atomic_store_explicit(
-+ Hp_atomic_val(v),
-+ Coloredhd_hd(hd, col),
-+ memory_order_release);
-+ }
-+
-+#endif
-+
- //--------------------------------------------------------
-
-
-@@ -352,7 +375,7 @@ void c_rec_objsize(value v, size_t depth)
-
- DBG(printf("COL: w %08lx %i\n", v, col));
-
-- Hd_val(v) = Coloredhd_hd(hd, Col_blue);
-+ store_explicit(hd, v, Col_blue);
-
- if (Tag_val(v) < No_scan_tag)
- {
-@@ -378,7 +401,7 @@ void restore_colors(value v)
-
- col = readcolor();
- DBG(printf("COL: r %08lx %i\n", v, col));
-- Hd_val(v) = Coloredhd_hd(Hd_val(v), col);
-+ store_explicit(Hd_val(v), v, col);
-
- if (Tag_val(v) < No_scan_tag)
- {
-@@ -417,7 +440,7 @@ int c_objsize(value v, value scan, value reach, size_t* headers,
size_t* data, s
- head = Field(head,1);
- if( col == Col_blue ) continue;
- writecolor(col);
-- Hd_val(v) = Coloredhd_hd(hd, Col_blue);
-+ store_explicit(hd, v, Col_blue);
- }
-
- acc_data = 0;
-@@ -444,7 +467,7 @@ int c_objsize(value v, value scan, value reach, size_t* headers,
size_t* data, s
- head = Field(head,1);
- if( Colornum_hd(Hd_val(v)) != Col_blue ) continue;
- col = readcolor();
-- Hd_val(v) = Coloredhd_hd(Hd_val(v), col);
-+ store_explicit(Hd_val(v), v, col);
- }
-
- while( COND_BLOCK(reach) ) {
-diff --git a/libs/swflib/swfParser.ml b/libs/swflib/swfParser.ml
-index 2f6474532..8006c81ae 100644
---- a/libs/swflib/swfParser.ml
-+++ b/libs/swflib/swfParser.ml
-@@ -444,7 +444,7 @@ and tag_length t =
- (* READ PRIMS *)
-
- let skip ch n =
-- seek_in ch ((Pervasives.pos_in ch) + n)
-+ seek_in ch ((Stdlib.pos_in ch) + n)
-
- let read_rgba ch =
- let r = read_byte ch in
-diff --git a/libs/swflib/swfPic.ml b/libs/swflib/swfPic.ml
-index 7e69e28eb..613260d18 100644
---- a/libs/swflib/swfPic.ml
-+++ b/libs/swflib/swfPic.ml
-@@ -59,7 +59,7 @@ let load_picture file id =
- let len = String.length file in
- let p = (try String.rindex file '.' with Not_found -> len) in
- let ext = String.sub file (p + 1) (len - (p + 1)) in
-- match String.uppercase ext with
-+ match ExtString.String.uppercase ext with
- | "PNG" ->
- let png , header, data = (try
- let p = Png.parse ch in
-diff --git a/libs/ttflib/tTFParser.ml b/libs/ttflib/tTFParser.ml
-index 68d1e2632..9b3468ac7 100644
---- a/libs/ttflib/tTFParser.ml
-+++ b/libs/ttflib/tTFParser.ml
-@@ -24,7 +24,7 @@ open TTFData
- open IO
-
- type ctx = {
-- file : Pervasives.in_channel;
-+ file : Stdlib.in_channel;
- ch : input;
- mutable entry : entry;
- }
-diff --git a/libs/ziplib/zip.ml b/libs/ziplib/zip.ml
-index 9245f0d00..0e5edc1eb 100644
---- a/libs/ziplib/zip.ml
-+++ b/libs/ziplib/zip.ml
-@@ -62,7 +62,7 @@ type entry =
-
- type in_file =
- { if_filename: string;
-- if_channel: Pervasives.in_channel;
-+ if_channel: Stdlib.in_channel;
- if_entries: entry list;
- if_directory: (string, entry) Hashtbl.t;
- if_comment: string }
-@@ -72,7 +72,7 @@ let comment ifile = ifile.if_comment
-
- type out_file =
- { of_filename: string;
-- of_channel: Pervasives.out_channel;
-+ of_channel: Stdlib.out_channel;
- mutable of_entries: entry list;
- of_comment: string }
-
-@@ -217,7 +217,7 @@ let read_cd filename ic cd_entries cd_offset cd_bound =
- (* Open a ZIP file for reading *)
-
- let open_in filename =
-- let ic = Pervasives.open_in_bin filename in
-+ let ic = Stdlib.open_in_bin filename in
- let (cd_entries, cd_size, cd_offset, cd_comment) = read_ecd filename ic in
- let entries =
- read_cd filename ic cd_entries cd_offset (Int32.add cd_offset cd_size) in
-@@ -232,7 +232,7 @@ let open_in filename =
- (* Close a ZIP file opened for reading *)
-
- let close_in ifile =
-- Pervasives.close_in ifile.if_channel
-+ Stdlib.close_in ifile.if_channel
-
- (* Return the info associated with an entry *)
-
-@@ -369,7 +369,7 @@ let open_out ?(comment = "") filename =
- if String.length comment >= 0x10000 then
- raise(Error(filename, "", "comment too long"));
- { of_filename = filename;
-- of_channel = Pervasives.open_out_bin filename;
-+ of_channel = Stdlib.open_out_bin filename;
- of_entries = [];
- of_comment = comment }
-
-@@ -416,7 +416,7 @@ let close_out ofile =
- write4_int oc start_cd; (* offset of central dir *)
- write2 oc (String.length ofile.of_comment); (* length of comment *)
- writestring oc ofile.of_comment; (* comment *)
-- Pervasives.close_out oc
-+ Stdlib.close_out oc
-
- (* Write a local file header and return the corresponding entry *)
-
-@@ -552,9 +552,9 @@ let copy_file_to_entry infilename ofile ?(extra = "")
?(comment = "")
- with Unix.Unix_error(_,_,_) -> None in
- try
- copy_channel_to_entry ic ofile ~extra ~comment ~level ?mtime:mtime' name;
-- Pervasives.close_in ic
-+ Stdlib.close_in ic
- with x ->
-- Pervasives.close_in ic; raise x
-+ Stdlib.close_in ic; raise x
-
-
- (* Add an entry whose content will be produced by the caller *)
-diff --git a/src/codegen/dotnet.ml b/src/codegen/dotnet.ml
-index e90cfe955..90bf25ec6 100644
---- a/src/codegen/dotnet.ml
-+++ b/src/codegen/dotnet.ml
-@@ -68,7 +68,7 @@ let cs_unops =
- let netname_to_hx name =
- let len = String.length name in
- let chr = String.get name 0 in
-- String.make 1 (Char.uppercase chr) ^ (String.sub name 1 (len-1))
-+ String.make 1 (Char.uppercase_ascii chr) ^ (String.sub name 1 (len-1))
-
- (* -net-lib implementation *)
-
-@@ -105,7 +105,7 @@ let escape_chars =
-
- let netcl_to_hx cl =
- let cl = if String.length cl > 0 && String.get cl 0 >= 'a'
&& String.get cl 0 <= 'z' then
-- Char.escaped (Char.uppercase (String.get cl 0)) ^ (String.sub cl 1 (String.length cl
- 1))
-+ Char.escaped (Char.uppercase_ascii (String.get cl 0)) ^ (String.sub cl 1
(String.length cl - 1))
- else
- cl
- in
-diff --git a/src/codegen/java.ml b/src/codegen/java.ml
-index ba86b4eea..20906bbec 100644
---- a/src/codegen/java.ml
-+++ b/src/codegen/java.ml
-@@ -46,7 +46,7 @@ let is_haxe_keyword = function
- let jname_to_hx name =
- let name =
- if name <> "" && (String.get name 0 < 'A' ||
String.get name 0 > 'Z') then
-- Char.escaped (Char.uppercase (String.get name 0)) ^ String.sub name 1 (String.length
name - 1)
-+ Char.escaped (Char.uppercase_ascii (String.get name 0)) ^ String.sub name 1
(String.length name - 1)
- else
- name
- in
-diff --git a/src/codegen/javaModern.ml b/src/codegen/javaModern.ml
-index 5908c19a0..7a298292c 100644
---- a/src/codegen/javaModern.ml
-+++ b/src/codegen/javaModern.ml
-@@ -555,7 +555,7 @@ module PathConverter = struct
- let jname_to_hx name =
- let name =
- if name <> "" && (String.get name 0 < 'A' ||
String.get name 0 > 'Z') then
-- Char.escaped (Char.uppercase (String.get name 0)) ^ String.sub name 1 (String.length
name - 1)
-+ Char.escaped (Char.uppercase_ascii (String.get name 0)) ^ String.sub name 1
(String.length name - 1)
- else
- name
- in
-diff --git a/src/codegen/swfLoader.ml b/src/codegen/swfLoader.ml
-index 6b7ef3b67..6588dffde 100644
---- a/src/codegen/swfLoader.ml
-+++ b/src/codegen/swfLoader.ml
-@@ -33,7 +33,7 @@ let lowercase_pack pack =
- let name =
- let fchar = String.get name 0 in
- if fchar >= 'A' && fchar <= 'Z' then
-- (String.make 1 (Char.lowercase fchar)) ^ String.sub name 1 (String.length name -
1)
-+ (String.make 1 (Char.lowercase_ascii fchar)) ^ String.sub name 1 (String.length
name - 1)
- else
- name
- in
-diff --git a/src/compiler/displayProcessing.ml b/src/compiler/displayProcessing.ml
-index 7cec1d9d7..e32f7fcac 100644
---- a/src/compiler/displayProcessing.ml
-+++ b/src/compiler/displayProcessing.ml
-@@ -268,7 +268,7 @@ let maybe_load_display_file_before_typing tctx display_file_dot_path
= match dis
-
- let handle_display_after_typing ctx tctx display_file_dot_path =
- let com =
ctx.com in
-- if ctx.com.display.dms_kind = DMNone & ctx.has_error then raise Abort;
-+ if ctx.com.display.dms_kind = DMNone && ctx.has_error then raise Abort;
- begin match ctx.com.display.dms_kind,!Parser.delayed_syntax_completion with
- | DMDefault,Some(kind,subj) -> DisplayOutput.handle_syntax_completion com kind
subj
- | _ -> ()
-diff --git a/src/context/display/displayException.ml
b/src/context/display/displayException.ml
-index a731f9a1d..661bb1bd1 100644
---- a/src/context/display/displayException.ml
-+++ b/src/context/display/displayException.ml
-@@ -23,9 +23,9 @@ let max_completion_items = ref 0
- let filter_somehow ctx items kind subj =
- let subject = match subj.s_name with
- | None -> ""
-- | Some name-> String.lowercase name
-+ | Some name-> ExtString.String.lowercase name
- in
-- let subject_length = String.length subject in
-+ let subject_length = ExtString.String.length subject in
- let determine_cost s =
- let get_initial_cost o =
- if o = 0 then
-@@ -33,7 +33,7 @@ let filter_somehow ctx items kind subj =
- else begin
- (* Consider `.` as anchors and determine distance from closest one. Penalize
starting distance by factor 2. *)
- try
-- let last_anchor = String.rindex_from s o '.' in
-+ let last_anchor = ExtString.String.rindex_from s o '.' in
- (o - (last_anchor + 1)) * 2
- with Not_found ->
- o * 2
-@@ -54,12 +54,12 @@ let filter_somehow ctx items kind subj =
- let o',new_cost = index_from o subject.[i] in
- loop (i + 1) o' (cost + new_cost)
- end else
-- cost + (if o = String.length s - 1 then 0 else 1) (* Slightly penalize for not-exact
matches. *)
-+ cost + (if o = ExtString.String.length s - 1 then 0 else 1) (* Slightly penalize for
not-exact matches. *)
- in
- if subject_length = 0 then
- 0
- else try
-- let o = String.index s subject.[0] in
-+ let o = ExtString.String.index s subject.[0] in
- loop 1 o (get_initial_cost o);
- with Not_found | Invalid_argument _ ->
- -1
-@@ -67,7 +67,7 @@ let filter_somehow ctx items kind subj =
- let rec loop acc items index =
- match items with
- | item :: items ->
-- let name = String.lowercase (get_filter_name item) in
-+ let name = ExtString.String.lowercase (get_filter_name item) in
- let cost = determine_cost name in
- let acc = if cost >= 0 then
- (item,index,cost) :: acc
-@@ -102,8 +102,8 @@ let patch_completion_subject subj =
- match subj.s_name with
- | Some name ->
- let delta = p.pmax - p.pmin in
-- let name = if delta > 0 && delta < String.length name then
-- String.sub name 0 delta
-+ let name = if delta > 0 && delta < ExtString.String.length name then
-+ ExtString.String.sub name 0 delta
- else
- name
- in
-diff --git a/src/context/display/documentSymbols.ml
b/src/context/display/documentSymbols.ml
-index 705c8be1d..4d61a6ae4 100644
---- a/src/context/display/documentSymbols.ml
-+++ b/src/context/display/documentSymbols.ml
-@@ -56,7 +56,7 @@ let collect_module_symbols mname with_locals (pack,decls) =
- | FFun f ->
- add_field (
- if fst cff_name = "new" then Constructor
-- else if ((parent_kind = EnumAbstract or parent_kind = Abstract) &&
Meta.has_one_of [Meta.Op; Meta.ArrayAccess; Meta.Resolve] cff_meta) then Operator
-+ else if ((parent_kind = EnumAbstract || parent_kind = Abstract) &&
Meta.has_one_of [Meta.Op; Meta.ArrayAccess; Meta.Resolve] cff_meta) then Operator
- else Method
- );
- if with_locals then func field_parent f
-diff --git a/src/context/typecore.ml b/src/context/typecore.ml
-index 22ccc8a00..fc2b33ba6 100644
---- a/src/context/typecore.ml
-+++ b/src/context/typecore.ml
-@@ -602,7 +602,7 @@ let merge_core_doc ctx mt =
-
- let field_to_type_path com e =
- let rec loop e pack name = match e with
-- | EField(e,f,_),p when Char.lowercase (String.get f 0) <> String.get f 0 ->
(match name with
-+ | EField(e,f,_),p when Char.lowercase_ascii (String.get f 0) <> String.get f 0
-> (match name with
- | [] | _ :: [] ->
- loop e pack (f :: name)
- | _ -> (* too many name paths *)
-@@ -614,7 +614,7 @@ let field_to_type_path com e =
- let pack, name, sub = match name with
- | [] ->
- let fchar = String.get f 0 in
-- if Char.uppercase fchar = fchar then
-+ if Char.uppercase_ascii fchar = fchar then
- pack, f, None
- else begin
- display_error com "A class name must start with an uppercase letter"
(snd e);
-@@ -664,12 +664,12 @@ let s_field_call_candidate fcc =
- let relative_path ctx file =
- let slashes path = String.concat "/" (ExtString.String.nsplit path
"\\") in
- let fpath = slashes (Path.get_full_path file) in
-- let fpath_lower = String.lowercase fpath in
-+ let fpath_lower = String.lowercase_ascii fpath in
- let flen = String.length fpath_lower in
- let rec loop = function
- | [] -> file
- | path :: l ->
-- let spath = String.lowercase (slashes path) in
-+ let spath = String.lowercase_ascii (slashes path) in
- let slen = String.length spath in
- if slen > 0 && slen < flen && String.sub fpath_lower 0 slen =
spath then String.sub fpath slen (flen - slen) else loop l
- in
-diff --git a/src/core/path.ml b/src/core/path.ml
-index c5bf6d74d..119908524 100644
---- a/src/core/path.ml
-+++ b/src/core/path.ml
-@@ -223,7 +223,7 @@ end = struct
-
- let create =
- if Globals.is_windows then
-- (fun f -> String.lowercase (get_full_path f))
-+ (fun f -> ExtString.String.lowercase (get_full_path f))
- else
- get_full_path
-
-@@ -378,7 +378,7 @@ let full_dot_path pack mname tname =
-
- let file_extension file =
- match List.rev (ExtString.String.nsplit file ".") with
-- | e :: _ -> String.lowercase e
-+ | e :: _ -> ExtString.String.lowercase e
- | [] -> ""
-
- module FilePath = struct
-diff --git a/src/dune b/src/dune
-index 6e21a11d4..f0175d635 100644
---- a/src/dune
-+++ b/src/dune
-@@ -9,7 +9,7 @@
- (library
- (name haxe)
- (libraries
-- extc extproc extlib_leftovers ilib javalib mbedtls neko objsize pcre2 swflib ttflib
ziplib
-+ extc extproc extlib_leftovers ilib javalib mbedtls neko objsize pcre2 camlp-streams
swflib ttflib ziplib
- json
- unix str bigarray threads dynlink
- xml-light extlib ptmap sha
-diff --git a/src/generators/gencpp.ml b/src/generators/gencpp.ml
-index a8ff59cf2..8156bfe83 100644
---- a/src/generators/gencpp.ml
-+++ b/src/generators/gencpp.ml
-@@ -7030,8 +7030,8 @@ let write_build_options common_ctx filename defines =
- | _ -> write_define name (escape_command value)) defines;
- let pin,pid = Process_helper.open_process_args_in_pid "haxelib"
[|"haxelib"; "path"; "hxcpp"|] in
- set_binary_mode_in pin false;
-- write_define "hxcpp" (Pervasives.input_line pin);
-- Pervasives.ignore (Process_helper.close_process_in_pid (pin,pid));
-+ write_define "hxcpp" (Stdlib.input_line pin);
-+ Stdlib.ignore (Process_helper.close_process_in_pid (pin,pid));
- writer#close;;
-
- let create_member_types common_ctx =
-diff --git a/src/generators/genhl.ml b/src/generators/genhl.ml
-index e8ffa87cd..12518a9ad 100644
---- a/src/generators/genhl.ml
-+++ b/src/generators/genhl.ml
-@@ -4059,7 +4059,7 @@ let add_types ctx types =
- | Method MethNormal when not (List.exists (fun (m,_,_) -> m = Meta.HlNative)
f.cf_meta) ->
- (match f.cf_expr with
- | Some { eexpr = TFunction { tf_expr = { eexpr = TBlock ([] | [{ eexpr = TReturn
(Some { eexpr = TConst _ })}]) } } } | None ->
-- let name = prefix ^ String.lowercase (Str.global_replace (Str.regexp
"[A-Z]+") "_\\0" f.cf_name) in
-+ let name = prefix ^ String.lowercase_ascii (Str.global_replace (Str.regexp
"[A-Z]+") "_\\0" f.cf_name) in
- f.cf_meta <- (Meta.HlNative, [(EConst (String(lib,SDoubleQuotes)),p);(EConst
(String(name,SDoubleQuotes)),p)], p) :: f.cf_meta;
- | _ -> ())
- | _ -> ()
-@@ -4149,7 +4149,7 @@ let generate com =
- in
-
- if Path.file_extension com.file = "c" then begin
-- let gnames = Array.create (Array.length code.globals) "" in
-+ let gnames = Array.make (Array.length code.globals) "" in
- PMap.iter (fun n i -> gnames.(i) <- n) ctx.cglobals.map;
- if not (Common.defined com Define.SourceHeader) then begin
- let version_major = com.version / 1000 in
-diff --git a/src/generators/genphp7.ml b/src/generators/genphp7.ml
-index 6d6b53941..9109993ef 100644
---- a/src/generators/genphp7.ml
-+++ b/src/generators/genphp7.ml
-@@ -15,8 +15,8 @@ open Sourcemaps
- *)
- let escape_bin s =
- let b = Buffer.create 0 in
-- for i = 0 to String.length s - 1 do
-- match Char.code (String.unsafe_get s i) with
-+ for i = 0 to ExtString.String.length s - 1 do
-+ match Char.code (ExtString.String.unsafe_get s i) with
- | c when c = Char.code('\\') || c = Char.code('"') || c =
Char.code('$') ->
- Buffer.add_string b "\\";
- Buffer.add_char b (Char.chr c)
-@@ -46,7 +46,7 @@ let write_resource dir name data =
- *)
- let copy_file src dst =
- let buffer_size = 8192 in
-- let buffer = String.create buffer_size in
-+ let buffer = ExtString.String.create buffer_size in
- let fd_in = Unix.openfile src [O_RDONLY] 0 in
- let fd_out = Unix.openfile dst [O_WRONLY; O_CREAT; O_TRUNC] 0o644 in
- let rec copy_loop () =
-@@ -196,7 +196,7 @@ end
- (**
- Check if specified string is a reserved word in PHP
- *)
--let is_keyword str = Hashtbl.mem php_keywords_tbl (String.lowercase str)
-+let is_keyword str = Hashtbl.mem php_keywords_tbl (ExtString.String.lowercase str)
-
- (**
- Check if specified type is php.NativeArray
-@@ -531,10 +531,10 @@ let get_full_type_name ?(escape=false) ?(omit_first_slash=false)
(type_path:path
- else
- "" :: get_real_path module_path
- in
-- (String.concat "\\" parts) ^ "\\" ^ type_name
-+ (ExtString.String.concat "\\" parts) ^ "\\" ^ type_name
- in
- if escape then
-- String.escaped name
-+ ExtString.String.escaped name
- else
- name
-
-@@ -618,7 +618,7 @@ let fix_call_args callee_type exprs =
- Escapes all "$" chars and encloses `str` into double quotes
- *)
- let quote_string str =
-- "\"" ^ (Str.global_replace (Str.regexp "\\$") "\\$"
(String.escaped str)) ^ "\""
-+ "\"" ^ (Str.global_replace (Str.regexp "\\$") "\\$"
(ExtString.String.escaped str)) ^ "\""
-
- (**
- Check if specified field is a var with non-constant expression
-@@ -1296,21 +1296,21 @@ class code_writer (ctx:php_generator_context) hx_type_path
php_name =
- Decrease indentation by one level
- *)
- method indent_less =
-- indentation <- String.make ((String.length indentation) - 1) '\t';
-+ indentation <- ExtString.String.make ((ExtString.String.length indentation) - 1)
'\t';
- (**
- Set indentation level (starting from zero for no indentation)
- *)
- method indent level =
-- indentation <- String.make level '\t';
-+ indentation <- ExtString.String.make level '\t';
- (**
- Get indentation level (starting from zero for no indentation)
- *)
-- method get_indentation = String.length indentation
-+ method get_indentation = ExtString.String.length indentation
- (**
- Set indentation level (starting from zero for no indentation)
- *)
- method set_indentation level =
-- indentation <- String.make level '\t'
-+ indentation <- ExtString.String.make level '\t'
- (**
- Specify local var name declared in current scope
- *)
-@@ -1326,7 +1326,7 @@ class code_writer (ctx:php_generator_context) hx_type_path php_name
=
- else if get_type_name type_path = "" then
- match get_module_path type_path with
- | [] -> "\\"
-- | module_path -> "\\" ^ (String.concat "\\" (get_real_path
module_path)) ^ "\\"
-+ | module_path -> "\\" ^ (ExtString.String.concat "\\"
(get_real_path module_path)) ^ "\\"
- else begin
- let orig_type_path = type_path in
- let type_path = match type_path with (pack, name) -> (pack, get_real_name name)
in
-@@ -1942,7 +1942,7 @@ class code_writer (ctx:php_generator_context) hx_type_path php_name
=
- set_sourcemap_pointer sourcemap sm_pointer_before_body;
- let locals = vars#pop_captured in
- if List.length locals > 0 then begin
-- self#write ("unset($" ^ (String.concat ", $" locals) ^
");\n");
-+ self#write ("unset($" ^ (ExtString.String.concat ", $"
locals) ^ ");\n");
- self#write_indentation
- end;
- self#write_bypassing_sourcemap body;
-@@ -2999,7 +2999,7 @@ class virtual type_builder ctx (wrapper:type_wrapper) =
- Returns generated file contents
- *)
- method get_contents =
-- if (String.length contents) = 0 then begin
-+ if (ExtString.String.length contents) = 0 then begin
- self#write_declaration;
- writer#write_line " {"; (** opening bracket for a class *)
- self#write_body;
-@@ -3016,7 +3016,7 @@ class virtual type_builder ctx (wrapper:type_wrapper) =
- writer#write_statement ("require_once __DIR__.'/" ^ polyfills_file ^
"'");
- writer#write_statement (boot_class ^ "::__hx__init()")
- end;
-- let haxe_class = match wrapper#get_type_path with (path, name) -> String.concat
"." (path @ [name]) in
-+ let haxe_class = match wrapper#get_type_path with (path, name) ->
ExtString.String.concat "." (path @ [name]) in
- writer#write_statement (boot_class ^ "::registerClass(" ^ (self#get_name)
^ "::class, '" ^ haxe_class ^ "')");
- self#write_rtti_meta;
- self#write_pre_hx_init;
-@@ -3051,7 +3051,7 @@ class virtual type_builder ctx (wrapper:type_wrapper) =
- writer#write "\n";
- let namespace = self#get_namespace in
- if List.length namespace > 0 then
-- writer#write_line ("namespace " ^ (String.concat "\\" namespace)
^ ";\n");
-+ writer#write_line ("namespace " ^ (ExtString.String.concat "\\"
namespace) ^ ";\n");
- writer#write_use
- (**
- Generates PHP docblock and attributes to output buffer.
-@@ -3082,11 +3082,11 @@ class virtual type_builder ctx (wrapper:type_wrapper) =
- Writes description section of docblocks
- *)
- method write_doc_description (doc:string) =
-- let lines = Str.split (Str.regexp "\n") (String.trim doc)
-+ let lines = Str.split (Str.regexp "\n") (ExtString.String.trim doc)
- and write_line line =
-- let trimmed = String.trim line in
-- if String.length trimmed > 0 then (
-- if String.get trimmed 0 = '*' then
-+ let trimmed = ExtString.String.trim line in
-+ if ExtString.String.length trimmed > 0 then (
-+ if ExtString.String.get trimmed 0 = '*' then
- writer#write_line (" " ^ trimmed)
- else
- writer#write_line (" * " ^ trimmed)
-@@ -3554,7 +3554,7 @@ class class_builder ctx (cls:tclass) =
- cls.cl_implements
- in
- let interfaces = List.map use_interface unique in
-- writer#write (String.concat ", " interfaces);
-+ writer#write (ExtString.String.concat ", " interfaces);
- end;
- (**
- Returns either user-defined constructor or creates empty constructor if instance
initialization is required.
-@@ -3667,7 +3667,7 @@ class class_builder ctx (cls:tclass) =
- List.iter
- (fun field ->
- if not !required then
-- required := (String.lowercase field.cf_name = String.lowercase self#get_name)
-+ required := (ExtString.String.lowercase field.cf_name =
ExtString.String.lowercase self#get_name)
- )
- (cls.cl_ordered_statics @ cls.cl_ordered_fields);
- !required
-@@ -3676,10 +3676,10 @@ class class_builder ctx (cls:tclass) =
- Writes `-D php-prefix` value as class constant PHP_PREFIX
- *)
- method private write_php_prefix () =
-- let prefix = String.concat "\\" ctx.pgc_prefix in
-+ let prefix = ExtString.String.concat "\\" ctx.pgc_prefix in
- let indentation = writer#get_indentation in
- writer#indent 1;
-- writer#write_statement ("const PHP_PREFIX = \"" ^ (String.escaped
prefix) ^ "\"");
-+ writer#write_statement ("const PHP_PREFIX = \"" ^
(ExtString.String.escaped prefix) ^ "\"");
- writer#indent indentation
- (**
- Writes expressions for `__hx__init` method
-@@ -3998,8 +3998,8 @@ class generator (ctx:php_generator_context) =
- if front_dirs <> [] then
- ignore(create_dir_recursive (root_dir :: front_dirs));
- let lib_path =
-- (String.concat "" (List.fold_left (fun acc s -> if s <>
"." then "../" :: acc else acc) [] front_dirs))
-- ^ (String.concat "/" self#get_lib_path)
-+ (ExtString.String.concat "" (List.fold_left (fun acc s -> if s
<> "." then "../" :: acc else acc) [] front_dirs))
-+ ^ (ExtString.String.concat "/" self#get_lib_path)
- in
- let channel = open_out (root_dir ^ "/" ^ filename) in
- output_string channel "<?php\n";
-diff --git a/src/generators/genswf9.ml b/src/generators/genswf9.ml
-index 9bbd0ae6a..c2027e574 100644
---- a/src/generators/genswf9.ml
-+++ b/src/generators/genswf9.ml
-@@ -645,7 +645,7 @@ let begin_switch ctx =
- constructs := (tag,ctx.infos.ipos) :: !constructs;
- in
- let fend() =
-- let cases = Array.create (!max + 1) 1 in
-+ let cases = Array.make (!max + 1) 1 in
- List.iter (fun (tag,pos) -> Array.set cases tag (pos - switch_pos)) !constructs;
- DynArray.set ctx.code switch_index (HSwitch (1,Array.to_list cases));
- branch();
-diff --git a/src/generators/hl2c.ml b/src/generators/hl2c.ml
-index af03a2617..2304debb0 100644
---- a/src/generators/hl2c.ml
-+++ b/src/generators/hl2c.ml
-@@ -1134,7 +1134,7 @@ let make_types_idents htypes =
- try
- PMap.find vp (!types_descs)
- with Not_found ->
-- let arr = Array.create (Array.length vp.vfields) ("",DSimple HVoid) in
-+ let arr = Array.make (Array.length vp.vfields) ("",DSimple HVoid) in
- let td = DVirtual arr in
- types_descs := PMap.add vp td (!types_descs);
- Array.iteri (fun i (f,_,t) -> arr.(i) <- (f,make_desc t)) vp.vfields;
-diff --git a/src/generators/hlinterp.ml b/src/generators/hlinterp.ml
-index f6fc7f32f..2b5bc247a 100644
---- a/src/generators/hlinterp.ml
-+++ b/src/generators/hlinterp.ml
-@@ -1111,7 +1111,7 @@ let interp ctx f args =
- (match rtype r with
- | HEnum e ->
- let _, _, fl = e.efields.(f) in
-- let vl = Array.create (Array.length fl) VUndef in
-+ let vl = Array.make (Array.length fl) VUndef in
- set r (VEnum (e, f, vl))
- | _ -> Globals.die "" __LOC__
- )
-@@ -1257,7 +1257,7 @@ let load_native ctx lib name t =
- | _ -> Globals.die "" __LOC__)
- | "alloc_array" ->
- (function
-- | [VType t;VInt i] -> VArray (Array.create (int i) (default t),t)
-+ | [VType t;VInt i] -> VArray (Array.make (int i) (default t),t)
- | _ -> Globals.die "" __LOC__)
- | "alloc_obj" ->
- (function
-@@ -1347,7 +1347,7 @@ let load_native ctx lib name t =
- | "math_asin" -> (function [VFloat f] -> VFloat (asin f) | _ ->
Globals.die "" __LOC__)
- | "math_atan" -> (function [VFloat f] -> VFloat (atan f) | _ ->
Globals.die "" __LOC__)
- | "math_atan2" -> (function [VFloat a; VFloat b] -> VFloat (atan2 a b)
| _ -> Globals.die "" __LOC__)
-- | "math_log" -> (function [VFloat f] -> VFloat (Pervasives.log f) | _
-> Globals.die "" __LOC__)
-+ | "math_log" -> (function [VFloat f] -> VFloat (Stdlib.log f) | _
-> Globals.die "" __LOC__)
- | "math_exp" -> (function [VFloat f] -> VFloat (exp f) | _ ->
Globals.die "" __LOC__)
- | "math_pow" -> (function [VFloat a; VFloat b] -> VFloat (a ** b) | _
-> Globals.die "" __LOC__)
- | "parse_int" ->
-@@ -1539,7 +1539,7 @@ let load_native ctx lib name t =
- | "Darwin" -> "Mac"
- | n -> n
- ) in
-- Pervasives.ignore (Process_helper.close_process_in_pid (ic, pid));
-+ Stdlib.ignore (Process_helper.close_process_in_pid (ic, pid));
- cached_sys_name := Some uname;
- uname)
- | "Win32" | "Cygwin" -> "Windows"
-@@ -2147,7 +2147,7 @@ let add_code ctx code =
- ctx.t_globals <- globals;
- (* expand function table *)
- let nfunctions = Array.length code.functions + Array.length code.natives in
-- let functions = Array.create nfunctions (FNativeFun ("",(fun _ ->
Globals.die "" __LOC__),HDyn)) in
-+ let functions = Array.make nfunctions (FNativeFun ("",(fun _ ->
Globals.die "" __LOC__),HDyn)) in
- Array.blit ctx.t_functions 0 functions 0 (Array.length ctx.t_functions);
- let rec loop i =
- if i = Array.length code.natives then () else
-@@ -2191,7 +2191,7 @@ let add_code ctx code =
- (* ------------------------------- CHECK ----------------------------------------------
*)
-
- let check code macros =
-- let ftypes = Array.create (Array.length code.natives + Array.length code.functions)
HVoid in
-+ let ftypes = Array.make (Array.length code.natives + Array.length code.functions) HVoid
in
- let is_native_fun = Hashtbl.create 0 in
-
- let check_fun f =
-diff --git a/src/macro/eval/evalJit.ml b/src/macro/eval/evalJit.ml
-index 6218f394f..d2b5f3c15 100644
---- a/src/macro/eval/evalJit.ml
-+++ b/src/macro/eval/evalJit.ml
-@@ -230,7 +230,7 @@ and jit_expr jit return e =
- let hasret = jit_closure.has_nonfinal_return in
- let eci = get_env_creation jit_closure false tf.tf_expr.epos.pfile (EKLocalFunction
jit.num_closures) in
- let captures = Hashtbl.fold (fun vid (i,declared) acc -> (i,vid,declared) :: acc)
jit_closure.captures [] in
-- let captures = List.sort (fun (i1,_,_) (i2,_,_) -> Pervasives.compare i1 i2)
captures in
-+ let captures = List.sort (fun (i1,_,_) (i2,_,_) -> Stdlib.compare i1 i2) captures
in
- (* Check if the out-of-scope var is in the outer scope because otherwise we have to
promote outwards. *)
- List.iter (fun var -> ignore(get_capture_slot jit var))
jit_closure.captures_outside_scope;
- let captures = ExtList.List.filter_map (fun (i,vid,declared) ->
-diff --git a/src/macro/eval/evalStdLib.ml b/src/macro/eval/evalStdLib.ml
-index 501387567..935733b53 100644
---- a/src/macro/eval/evalStdLib.ml
-+++ b/src/macro/eval/evalStdLib.ml
-@@ -289,7 +289,7 @@ module StdBytes = struct
- let compare = vifun1 (fun vthis other ->
- let this = this vthis in
- let other = decode_bytes other in
-- vint (Pervasives.compare this other)
-+ vint (Stdlib.compare this other)
- )
-
- let fastGet = vfun2 (fun b pos ->
-@@ -1694,13 +1694,13 @@ module StdMath = struct
- let ceil = vfun1 (fun v -> match v with VInt32 _ -> v | _ -> vint32 (to_int
(ceil (num v))))
- let cos = vfun1 (fun v -> vfloat (cos (num v)))
- let exp = vfun1 (fun v -> vfloat (exp (num v)))
-- let fceil = vfun1 (fun v -> vfloat (Pervasives.ceil (num v)))
-- let ffloor = vfun1 (fun v -> vfloat (Pervasives.floor (num v)))
-+ let fceil = vfun1 (fun v -> vfloat (Stdlib.ceil (num v)))
-+ let ffloor = vfun1 (fun v -> vfloat (Stdlib.floor (num v)))
- let floor = vfun1 (fun v -> match v with VInt32 _ -> v | _ -> vint32 (to_int
(floor (num v))))
-- let fround = vfun1 (fun v -> vfloat (Pervasives.floor (num v +. 0.5)))
-+ let fround = vfun1 (fun v -> vfloat (Stdlib.floor (num v +. 0.5)))
- let isFinite = vfun1 (fun v -> vbool (match v with VFloat f -> f <>
infinity && f <> neg_infinity && f = f | _ -> true))
- let isNaN = vfun1 (fun v -> vbool (match v with VFloat f -> f <> f | VInt32
_ -> false | _ -> true))
-- let log = vfun1 (fun v -> vfloat (Pervasives.log (num v)))
-+ let log = vfun1 (fun v -> vfloat (Stdlib.log (num v)))
-
- let max = vfun2 (fun a b ->
- let a = num a in
-@@ -1716,7 +1716,7 @@ module StdMath = struct
-
- let pow = vfun2 (fun a b -> vfloat ((num a) ** (num b)))
- let random = vfun0 (fun () -> vfloat (Random.State.float random 1.))
-- let round = vfun1 (fun v -> match v with VInt32 _ -> v | _ -> vint32 (to_int
(Pervasives.floor (num v +. 0.5))))
-+ let round = vfun1 (fun v -> match v with VInt32 _ -> v | _ -> vint32 (to_int
(Stdlib.floor (num v +. 0.5))))
- let sin = vfun1 (fun v -> vfloat (sin (num v)))
-
- let sqrt = vfun1 (fun v ->
-@@ -2690,7 +2690,7 @@ module StdSys = struct
- | "Darwin" -> "Mac"
- | n -> n
- ) in
-- Pervasives.ignore (Process_helper.close_process_in_pid (ic, pid));
-+ Stdlib.ignore (Process_helper.close_process_in_pid (ic, pid));
- cached_sys_name := Some uname;
- uname)
- | "Win32" | "Cygwin" -> "Windows"
-@@ -2735,10 +2735,12 @@ module StdThread = struct
- vnull
- )
-
-- let kill = vifun0 (fun vthis ->
-- Thread.kill (this vthis).tthread;
-- vnull
-- )
-+ (* Thread.kill has been marked deprecated (because unstable or even not working at all)
for a while, and removed in ocaml 5 *)
-+ (* See also
https://github.com/HaxeFoundation/haxe/issues/5800 *)
-+ (* let kill = vifun0 (fun vthis -> *)
-+ (* Thread.kill (this vthis).tthread; *)
-+ (* vnull *)
-+ (* ) *)
-
- let self = vfun0 (fun () ->
- let eval = get_eval (get_ctx()) in
-@@ -3064,7 +3066,7 @@ module StdUtf8 = struct
- let compare = vfun2 (fun a b ->
- let a = decode_string a in
- let b = decode_string b in
-- vint (Pervasives.compare a b)
-+ vint (Stdlib.compare a b)
- )
-
- let decode = vfun1 (fun s ->
-@@ -3730,7 +3732,7 @@ let init_standard_library builtins =
- "id",StdThread.id;
- "get_events",StdThread.get_events;
- "set_events",StdThread.set_events;
-- "kill",StdThread.kill;
-+ (* "kill",StdThread.kill; *)
- "sendMessage",StdThread.sendMessage;
- ];
- init_fields builtins (["sys";"thread"],"Tls") [] [
-diff --git a/src/optimization/inlineConstructors.ml
b/src/optimization/inlineConstructors.ml
-index 8df1b5d79..de9b666cf 100644
---- a/src/optimization/inlineConstructors.ml
-+++ b/src/optimization/inlineConstructors.ml
-@@ -499,7 +499,7 @@ let inline_constructors ctx original_e =
- | IOFInlineMethod(io,io_var,c,tl,cf,tf) ->
- let argvs, pl = analyze_call_args call_args in
- io.io_dependent_vars <- io.io_dependent_vars @ argvs;
-- io.io_has_untyped <- io.io_has_untyped or (Meta.has Meta.HasUntyped cf.cf_meta);
-+ io.io_has_untyped <- io.io_has_untyped || (Meta.has Meta.HasUntyped cf.cf_meta);
- begin match Inline.type_inline ctx cf tf (mk (TLocal io_var.iv_var) (TInst (c,tl))
e.epos) pl e.etype None e.epos true with
- | Some e ->
- let e = mark_ctors e in
-@@ -727,4 +727,4 @@ let inline_constructors ctx original_e =
- end
- ) !vars;
- e
-- end
-\ No newline at end of file
-+ end
-diff --git a/src/typing/matcher.ml b/src/typing/matcher.ml
-index 72f2a5e3a..6ca7e9a35 100644
---- a/src/typing/matcher.ml
-+++ b/src/typing/matcher.ml
-@@ -1461,7 +1461,7 @@ module TexprConverter = struct
- in
- let s = match unmatched with
- | [] -> "_"
-- | _ -> String.concat " | " (List.sort Pervasives.compare sl)
-+ | _ -> String.concat " | " (List.sort Stdlib.compare sl)
- in
- typing_error (Printf.sprintf "Unmatched patterns: %s" (s_subject v_lookup s
e_subject)) e_subject.epos
-
-diff --git a/src/typing/typeloadCheck.ml b/src/typing/typeloadCheck.ml
-index 616be2ec1..6e649860f 100644
---- a/src/typing/typeloadCheck.ml
-+++ b/src/typing/typeloadCheck.ml
-@@ -318,7 +318,7 @@ let check_module_types ctx m p t =
- let t = t_infos t in
- try
- let path2 = ctx.com.type_to_module#find t.mt_path in
-- if m.m_path <> path2 && String.lowercase (s_type_path path2) =
String.lowercase (s_type_path m.m_path) then typing_error ("Module " ^
s_type_path path2 ^ " is loaded with a different case than " ^ s_type_path
m.m_path) p;
-+ if m.m_path <> path2 && String.lowercase_ascii (s_type_path path2) =
String.lowercase_ascii (s_type_path m.m_path) then typing_error ("Module " ^
s_type_path path2 ^ " is loaded with a different case than " ^ s_type_path
m.m_path) p;
- let m2 = ctx.com.module_lut#find path2 in
- let hex1 = Digest.to_hex m.m_extra.m_sign in
- let hex2 = Digest.to_hex m2.m_extra.m_sign in
-diff --git a/src/typing/typeloadParse.ml b/src/typing/typeloadParse.ml
-index fcc192381..066443ada 100644
---- a/src/typing/typeloadParse.ml
-+++ b/src/typing/typeloadParse.ml
-@@ -102,7 +102,7 @@ let resolve_module_file com m remap p =
- with Not_found ->
- Common.find_file com (compose_path true)
- in
-- let file = (match String.lowercase (snd m) with
-+ let file = (match ExtString.String.lowercase (snd m) with
- | "con" | "aux" | "prn" | "nul" |
"com1" | "com2" | "com3" | "lpt1" |
"lpt2" | "lpt3" when Sys.os_type = "Win32" ->
- (* these names are reserved by the OS - old DOS legacy, such files cannot be easily
created but are reported as visible *)
- if (try (Unix.stat file).Unix.st_size with _ -> 0) > 0 then file else raise
Not_found
---
-2.42.0.windows.2
-
commit 895d29e9f757e831cbb4fe5057b5ba501af7851c
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Wed Jan 24 21:33:22 2024 +0000
Rebuilt for
https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git a/haxe.spec b/haxe.spec
index 1fed374..2407e8b 100644
--- a/haxe.spec
+++ b/haxe.spec
@@ -6,7 +6,7 @@ ExcludeArch: %{ix86}
Name: haxe
Version: 4.3.3
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Multi-target universal programming language
# As described in
https://haxe.org/foundation/open-source.html:
@@ -123,6 +123,9 @@ popd
%{_datadir}/%{name}/
%changelog
+* Wed Jan 24 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 4.3.3-5
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
* Sat Jan 20 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 4.3.3-4
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
commit a908adbe75a5450b2b438614dfd44881b9bd273b
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Sat Jan 20 21:59:34 2024 +0000
Rebuilt for
https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git a/haxe.spec b/haxe.spec
index d5a060b..1fed374 100644
--- a/haxe.spec
+++ b/haxe.spec
@@ -6,7 +6,7 @@ ExcludeArch: %{ix86}
Name: haxe
Version: 4.3.3
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Multi-target universal programming language
# As described in
https://haxe.org/foundation/open-source.html:
@@ -123,6 +123,9 @@ popd
%{_datadir}/%{name}/
%changelog
+* Sat Jan 20 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 4.3.3-4
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
* Mon Dec 18 2023 Richard W.M. Jones <rjones(a)redhat.com> - 4.3.3-3
- OCaml 5.1.1 + s390x code gen fix for Fedora 40
commit 4b8606100e8993f5ec89163cb5d4b1e6f2bf3249
Author: Richard W.M. Jones <rjones(a)redhat.com>
Date: Mon Dec 18 19:28:44 2023 +0000
OCaml 5.1.1 + s390x code gen fix for Fedora 40
diff --git a/haxe.spec b/haxe.spec
index 1c180a3..d5a060b 100644
--- a/haxe.spec
+++ b/haxe.spec
@@ -6,7 +6,7 @@ ExcludeArch: %{ix86}
Name: haxe
Version: 4.3.3
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Multi-target universal programming language
# As described in
https://haxe.org/foundation/open-source.html:
@@ -123,6 +123,9 @@ popd
%{_datadir}/%{name}/
%changelog
+* Mon Dec 18 2023 Richard W.M. Jones <rjones(a)redhat.com> - 4.3.3-3
+- OCaml 5.1.1 + s390x code gen fix for Fedora 40
+
* Tue Dec 12 2023 Richard W.M. Jones <rjones(a)redhat.com> - 4.3.3-2
- OCaml 5.1.1 rebuild for Fedora 40
commit e90137048950a6fb075491dfa97e0a6673aa5d63
Author: Richard W.M. Jones <rjones(a)redhat.com>
Date: Tue Dec 12 22:06:25 2023 +0000
OCaml 5.1.1 rebuild for Fedora 40
diff --git a/haxe.spec b/haxe.spec
index acde4b9..1c180a3 100644
--- a/haxe.spec
+++ b/haxe.spec
@@ -6,7 +6,7 @@ ExcludeArch: %{ix86}
Name: haxe
Version: 4.3.3
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Multi-target universal programming language
# As described in
https://haxe.org/foundation/open-source.html:
@@ -123,6 +123,9 @@ popd
%{_datadir}/%{name}/
%changelog
+* Tue Dec 12 2023 Richard W.M. Jones <rjones(a)redhat.com> - 4.3.3-2
+- OCaml 5.1.1 rebuild for Fedora 40
+
* Sun Nov 19 2023 Andy Li <andy(a)onthewings.net> - 4.3.3-1
- New upstream version 4.3.3. (RHBZ#2250370)
- Drop haxe-ocaml5.patch which is no longer needed.
commit dfb562e16da3daa58c2f8f326b637cef610946c0
Author: Andy Li <andy(a)onthewings.net>
Date: Sun Nov 19 16:19:28 2023 +0000
commit sources
diff --git a/.gitignore b/.gitignore
index 286ac5c..24b35f5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,3 +36,4 @@
/haxelib-f17fffa97554b1bdba37750e3418051f017a5bc2.tar.gz
/haxe-4.3.1.tar.gz
/haxe-4.3.2.tar.gz
+/haxe-4.3.3.tar.gz
diff --git a/sources b/sources
index 71dbfdf..b31e539 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
-SHA512 (haxe-4.3.2.tar.gz) =
78d9cba573582dcfec7f1be413bb6061b90375432ede498f2d28fa8d8262d1eaa4760337ca40eb8439149aead9e00c5471d0badef58dd62bf59516be57fcbf65
+SHA512 (haxe-4.3.3.tar.gz) =
72fd7370f4a42d3524bad78e4ab2b4e839e4d9db6f4e8a942bdddfbe93f97c11ee8e7e96c524b5f8ab0a37a0e151cdeb4dd1d085f6093b70adb555cab6113b0b
SHA512 (haxelib-f17fffa97554b1bdba37750e3418051f017a5bc2.tar.gz) =
adc80c20833062a6639f352861a950a4289a06ba97dcc57e327186cec8aa7988e17b5f4df518ced9a371ae4f0fd7d065bd79f400aa48045081066fa784c6b837
SHA512 (hx3compat-f1f18201e5c0479cb5adf5f6028788b37f37b730.tar.gz) =
d3df767744c073715a5deb9e1b602006aded8335d7afe28686e9440c4d9fabe6eb29314beb7b929bb7a76de68a815a9a7c7a49d2a92183e9a5331923f70249ff
commit f6a3d0c1d24b4bc5341e77d09b27cc98c8e2b7e5
Author: Andy Li <andy(a)onthewings.net>
Date: Sun Nov 19 15:50:08 2023 +0000
New upstream version 4.3.3. (RHBZ#2250370)
diff --git a/haxe.spec b/haxe.spec
index cea23dd..acde4b9 100644
--- a/haxe.spec
+++ b/haxe.spec
@@ -5,8 +5,8 @@ ExcludeArch: %{ix86}
%global commit_hx3compat f1f18201e5c0479cb5adf5f6028788b37f37b730
Name: haxe
-Version: 4.3.2
-Release: 2%{?dist}
+Version: 4.3.3
+Release: 1%{?dist}
Summary: Multi-target universal programming language
# As described in
https://haxe.org/foundation/open-source.html:
@@ -26,7 +26,6 @@ URL:
https://haxe.org/
Source0:
https://github.com/HaxeFoundation/%{name}/archive/%{version}.tar.gz#/%{na...
Source1:
https://github.com/HaxeFoundation/haxelib/archive/%{commit_haxelib}.tar.g...
Source2:
https://github.com/HaxeFoundation/hx3compat/archive/%{commit_hx3compat}.t...
-Patch0: haxe-ocaml5.patch
BuildRequires: make
BuildRequires: nekovm-devel >= 2.3.0
@@ -66,7 +65,6 @@ by the Haxe compiler.
%prep
%setup -q
-%patch 0 -p1
pushd extra/haxelib_src && tar -xf %{SOURCE1} --strip-components=1 &&
popd
pushd extra/haxelib_src/hx3compat && tar -xf %{SOURCE2} --strip-components=1
&& popd
@@ -125,6 +123,10 @@ popd
%{_datadir}/%{name}/
%changelog
+* Sun Nov 19 2023 Andy Li <andy(a)onthewings.net> - 4.3.3-1
+- New upstream version 4.3.3. (RHBZ#2250370)
+- Drop haxe-ocaml5.patch which is no longer needed.
+
* Thu Oct 05 2023 Richard W.M. Jones <rjones(a)redhat.com> - 4.3.2-2
- OCaml 5.1 rebuild for Fedora 40
commit ae9bc364eb9a0c531285e6655cf6047086515a27
Author: Richard W.M. Jones <rjones(a)redhat.com>
Date: Thu Oct 5 21:48:14 2023 +0100
OCaml 5.1 rebuild for Fedora 40
diff --git a/haxe.spec b/haxe.spec
index 727a060..cea23dd 100644
--- a/haxe.spec
+++ b/haxe.spec
@@ -6,7 +6,7 @@ ExcludeArch: %{ix86}
Name: haxe
Version: 4.3.2
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Multi-target universal programming language
# As described in
https://haxe.org/foundation/open-source.html:
@@ -125,6 +125,9 @@ popd
%{_datadir}/%{name}/
%changelog
+* Thu Oct 05 2023 Richard W.M. Jones <rjones(a)redhat.com> - 4.3.2-2
+- OCaml 5.1 rebuild for Fedora 40
+
* Fri Sep 15 2023 Andy Li <andy(a)onthewings.net> - 4.3.2-1
- New upstream version 4.3.2. (RHBZ#2237112)
- Use the properly built haxelib. (RHBZ#2129517)
commit 774aa47babf8ded2e73b8b72b7d5fe6105293263
Author: Jerry James <loganjerry(a)gmail.com>
Date: Wed Oct 4 23:23:54 2023 -0600
Package notes no longer have to be avoided
diff --git a/haxe.spec b/haxe.spec
index 2495170..727a060 100644
--- a/haxe.spec
+++ b/haxe.spec
@@ -1,7 +1,6 @@
# OCaml packages not built on i686 since OCaml 5 / Fedora 39.
ExcludeArch: %{ix86}
-%undefine _package_note_flags
%global commit_haxelib f17fffa97554b1bdba37750e3418051f017a5bc2
%global commit_hx3compat f1f18201e5c0479cb5adf5f6028788b37f37b730
commit ba5f4dd6bbd608e03ef748a9e9f73b95ec5162d2
Author: Andy Li <andy(a)onthewings.net>
Date: Fri Sep 15 15:48:31 2023 +0000
add haxe-ocaml5.patch
diff --git a/haxe-ocaml5.patch b/haxe-ocaml5.patch
new file mode 100644
index 0000000..ed19f22
--- /dev/null
+++ b/haxe-ocaml5.patch
@@ -0,0 +1,1356 @@
+From 87ada5e2afa288c136fc1963c5d2c126dcd7241d Mon Sep 17 00:00:00 2001
+From: Rudy Ges <k(a)klabz.org>
+Date: Thu, 14 Sep 2023 20:37:45 +0200
+Subject: [PATCH] OCaml 5 compatibility (#11272)
+
+---
+ .github/workflows/main.yml | 15 ++++--
+ Earthfile | 3 ++
+ extra/github-actions/cache-opam-windows.yml | 6 ---
+ extra/github-actions/cache-opam.yml | 6 ---
+ extra/github-actions/workflows/main.yml | 27 +++++++++--
+ haxe.opam | 5 +-
+ libs/extc/extc_stubs.c | 42 ++++++++---------
+ libs/extc/process_stubs.c | 4 +-
+ libs/extlib-leftovers/uTF8.ml | 2 +-
+ libs/ilib/peReader.ml | 4 +-
+ libs/objsize/c_objsize.c | 31 ++++++++++--
+ libs/swflib/swfParser.ml | 2 +-
+ libs/swflib/swfPic.ml | 2 +-
+ libs/ttflib/tTFParser.ml | 2 +-
+ libs/ziplib/zip.ml | 16 +++----
+ src/codegen/dotnet.ml | 4 +-
+ src/codegen/java.ml | 2 +-
+ src/codegen/javaModern.ml | 2 +-
+ src/codegen/swfLoader.ml | 2 +-
+ src/compiler/displayProcessing.ml | 2 +-
+ src/context/display/displayException.ml | 16 +++----
+ src/context/display/documentSymbols.ml | 2 +-
+ src/context/typecore.ml | 8 ++--
+ src/core/path.ml | 4 +-
+ src/dune | 2 +-
+ src/generators/gencpp.ml | 4 +-
+ src/generators/genhl.ml | 4 +-
+ src/generators/genphp7.ml | 52 ++++++++++-----------
+ src/generators/genswf9.ml | 2 +-
+ src/generators/hl2c.ml | 2 +-
+ src/generators/hlinterp.ml | 12 ++---
+ src/macro/eval/evalJit.ml | 2 +-
+ src/macro/eval/evalStdLib.ml | 28 +++++------
+ src/optimization/inlineConstructors.ml | 4 +-
+ src/typing/matcher.ml | 2 +-
+ src/typing/typeloadCheck.ml | 2 +-
+ src/typing/typeloadParse.ml | 2 +-
+ 37 files changed, 185 insertions(+), 142 deletions(-)
+ delete mode 100644 extra/github-actions/cache-opam-windows.yml
+ delete mode 100644 extra/github-actions/cache-opam.yml
+
+diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
+index 5c13a228f..f9378961b 100644
+--- a/.github/workflows/main.yml
++++ b/.github/workflows/main.yml
+@@ -259,6 +259,10 @@ jobs:
+ env:
+ PLATFORM: linux64
+ OPAMYES: 1
++ strategy:
++ fail-fast: false
++ matrix:
++ ocaml: ["4.08.1", "5.0.0"]
+ steps:
+ - uses: actions/checkout@main
+ with:
+@@ -269,7 +273,7 @@ jobs:
+ uses: actions/cache(a)v3.0.11
+ with:
+ path: ~/.opam/
+- key: ${{ runner.os }}-${{ hashFiles('./haxe.opam', './libs/')
}}-2
++ key: ${{ runner.os }}-${{ matrix.ocaml }}-${{ hashFiles('./haxe.opam',
'./libs/') }}
+
+ - name: Install Neko from S3
+ run: |
+@@ -303,6 +307,7 @@ jobs:
+ set -ex
+ opam init # --disable-sandboxing
+ opam update
++ opam switch create ${{ matrix.ocaml }}
+ opam pin add haxe . --no-action
+ opam install haxe --deps-only --assume-depexts
+ opam list
+@@ -343,11 +348,12 @@ jobs:
+ - name: Upload artifact
+ uses: actions/upload-artifact@v3
+ with:
+- name: linuxBinaries
++ name: linuxBinaries${{ (matrix.ocaml == '5.0.0' &&
'_ocaml5') || '' }}
+ path: out
+
+ - name: Upload xmldoc artifact
+ uses: actions/upload-artifact@v3
++ if: matrix.ocaml == '4.08.1'
+ with:
+ name: xmldoc
+ path: extra/doc
+@@ -363,6 +369,7 @@ jobs:
+ strategy:
+ fail-fast: false
+ matrix:
++ ocaml: ["4.08.1", "5.0.0"]
+ target: [macro, js, hl, cpp, 'java,jvm', cs, php, python, lua, flash,
neko]
+ include:
+ - target: hl
+@@ -379,7 +386,7 @@ jobs:
+ submodules: recursive
+ - uses: actions/download-artifact@v3
+ with:
+- name: linuxBinaries
++ name: linuxBinaries${{ (matrix.ocaml == '5.0.0' &&
'_ocaml5') || '' }}
+ path: linuxBinaries
+
+ - name: Install Neko from S3
+@@ -586,7 +593,7 @@ jobs:
+ uses: actions/cache(a)v3.0.11
+ with:
+ path: ~/.opam/
+- key: ${{ runner.os }}-${{ hashFiles('./haxe.opam', './libs/')
}}-2
++ key: ${{ runner.os }}-${{ hashFiles('./haxe.opam', './libs/')
}}
+
+ - name: Install Neko from S3
+ run: |
+diff --git a/Earthfile b/Earthfile
+index 8f399bb10..dda473f6c 100644
+--- a/Earthfile
++++ b/Earthfile
+@@ -93,6 +93,9 @@ devcontainer:
+ # Install OCaml libraries
+ COPY haxe.opam .
+ RUN opam init --disable-sandboxing
++ RUN opam switch create 4.08.1
++ RUN eval $(opam env)
++ RUN opam env
+ RUN opam install . --yes --deps-only --no-depexts
+ RUN opam list
+ RUN ocamlopt -v
+diff --git a/extra/github-actions/cache-opam-windows.yml
b/extra/github-actions/cache-opam-windows.yml
+deleted file mode 100644
+index 5270fbf1f..000000000
+--- a/extra/github-actions/cache-opam-windows.yml
++++ /dev/null
+@@ -1,6 +0,0 @@
+-- name: Cache opam
+- id: cache-opam
+- uses: actions/cache(a)v3.0.11
+- with:
+- path: D:\.opam
+- key: ${{ runner.os }}${{ env.ARCH }}-${{ hashFiles('./haxe.opam',
'./libs/') }}
+diff --git a/extra/github-actions/cache-opam.yml b/extra/github-actions/cache-opam.yml
+deleted file mode 100644
+index faaee00b7..000000000
+--- a/extra/github-actions/cache-opam.yml
++++ /dev/null
+@@ -1,6 +0,0 @@
+-- name: Cache opam
+- id: cache-opam
+- uses: actions/cache(a)v3.0.11
+- with:
+- path: ~/.opam/
+- key: ${{ runner.os }}-${{ hashFiles('./haxe.opam', './libs/') }}-2
+diff --git a/extra/github-actions/workflows/main.yml
b/extra/github-actions/workflows/main.yml
+index 629d1bd64..5dbff6761 100644
+--- a/extra/github-actions/workflows/main.yml
++++ b/extra/github-actions/workflows/main.yml
+@@ -57,12 +57,22 @@ jobs:
+ env:
+ PLATFORM: linux64
+ OPAMYES: 1
++ strategy:
++ fail-fast: false
++ matrix:
++ ocaml: ["4.08.1", "5.0.0"]
+ steps:
+ - uses: actions/checkout@main
+ with:
+ submodules: recursive
+
+- @import cache-opam.yml
++ - name: Cache opam
++ id: cache-opam
++ uses: actions/cache(a)v3.0.11
++ with:
++ path: ~/.opam/
++ key: ${{ runner.os }}-${{ matrix.ocaml }}-${{ hashFiles('./haxe.opam',
'./libs/') }}
++
+ @import install-neko-unix.yml
+
+ - name: Install dependencies
+@@ -79,6 +89,7 @@ jobs:
+ set -ex
+ opam init # --disable-sandboxing
+ opam update
++ opam switch create ${{ matrix.ocaml }}
+ opam pin add haxe . --no-action
+ opam install haxe --deps-only --assume-depexts
+ opam list
+@@ -119,11 +130,12 @@ jobs:
+ - name: Upload artifact
+ uses: actions/upload-artifact@v3
+ with:
+- name: linuxBinaries
++ name: linuxBinaries${{ (matrix.ocaml == '5.0.0' &&
'_ocaml5') || '' }}
+ path: out
+
+ - name: Upload xmldoc artifact
+ uses: actions/upload-artifact@v3
++ if: matrix.ocaml == '4.08.1'
+ with:
+ name: xmldoc
+ path: extra/doc
+@@ -139,6 +151,7 @@ jobs:
+ strategy:
+ fail-fast: false
+ matrix:
++ ocaml: ["4.08.1", "5.0.0"]
+ target: [macro, js, hl, cpp, 'java,jvm', cs, php, python, lua, flash,
neko]
+ include:
+ - target: hl
+@@ -155,7 +168,7 @@ jobs:
+ submodules: recursive
+ - uses: actions/download-artifact@v3
+ with:
+- name: linuxBinaries
++ name: linuxBinaries${{ (matrix.ocaml == '5.0.0' &&
'_ocaml5') || '' }}
+ path: linuxBinaries
+
+ @import install-neko-unix.yml
+@@ -325,7 +338,13 @@ jobs:
+ with:
+ submodules: recursive
+
+- @import cache-opam.yml
++ - name: Cache opam
++ id: cache-opam
++ uses: actions/cache(a)v3.0.11
++ with:
++ path: ~/.opam/
++ key: ${{ runner.os }}-${{ hashFiles('./haxe.opam', './libs/')
}}
++
+ @import install-neko-unix.yml
+ @import build-mac.yml
+
+diff --git a/haxe.opam b/haxe.opam
+index 60e1671fe..6da637e95 100644
+--- a/haxe.opam
++++ b/haxe.opam
+@@ -19,15 +19,16 @@ build: [
+ install: [make "install" "INSTALL_DIR=%{prefix}%"]
+ remove: [make "uninstall" "INSTALL_DIR=%{prefix}%"]
+ depends: [
+- "ocaml" {>= "4.08"}
++ ("ocaml" {>= "5.0"} & ("camlp5" {build}))
++ | ("ocaml" {>= "4.08" & < "5.0"} &
("camlp5" {build & = "8.00"}))
+ "ocamlfind" {build}
+ "dune" {>= "1.11"}
+- "camlp5" {build & = "8.00"}
+ "sedlex" {>= "2.0"}
+ "xml-light"
+ "extlib" {>= "1.7.8"}
+ "ptmap" {>= "2.0.0"}
+ "sha"
++ "camlp-streams"
+ "conf-libpcre2-8"
+ "conf-zlib"
+ "conf-neko"
+diff --git a/libs/extc/extc_stubs.c b/libs/extc/extc_stubs.c
+index 30dc986d5..92faa58aa 100644
+--- a/libs/extc/extc_stubs.c
++++ b/libs/extc/extc_stubs.c
+@@ -92,7 +92,7 @@ int Zflush_val(value zflush_val) {
+ case 4: return Z_FINISH;
+ // TODO: support Z_BLOCK and Z_TREE
+ // TODO: append the received value
+- default: failwith("Error in `Zflush_val` (extc_stubs.c): Unknown zflush
value");
++ default: caml_failwith("Error in `Zflush_val` (extc_stubs.c): Unknown zflush
value");
+ }
+ assert(0);
+ }
+@@ -222,14 +222,14 @@ CAMLprim value zlib_deflate_init2(value level_val, value
window_bits_val) {
+ break;
+ case Z_STREAM_ERROR:
+ // TODO: use stream->msg to get _zlib_'s text message
+- failwith("Error in `zlib_deflate_init2` (extc_stubs.c): call to `deflateInit2`
failed: Z_STREAM_ERROR");
++ caml_failwith("Error in `zlib_deflate_init2` (extc_stubs.c): call to
`deflateInit2` failed: Z_STREAM_ERROR");
+ break;
+ case Z_VERSION_ERROR:
+ // TODO: use stream->msg to get _zlib_'s text message
+- failwith("Error in `zlib_deflate_init2` (extc_stubs.c): call to `deflateInit2`
failed: Z_VERSION_ERROR");
++ caml_failwith("Error in `zlib_deflate_init2` (extc_stubs.c): call to
`deflateInit2` failed: Z_VERSION_ERROR");
+ break;
+ default:
+- failwith("Error in `zlib_deflate_init2` (extc_stubs.c): unknown return code from
`deflateInit2`");
++ caml_failwith("Error in `zlib_deflate_init2` (extc_stubs.c): unknown return code
from `deflateInit2`");
+ }
+ assert(0);
+ }
+@@ -275,7 +275,7 @@ CAMLprim value zlib_deflate(value stream_val, value src, value spos,
value slen,
+ if (deflate_result == Z_OK || deflate_result == Z_STREAM_END) {
+ stream->next_in = NULL;
+ stream->next_out = NULL;
+- value zresult = alloc_small(3, 0);
++ value zresult = caml_alloc_small(3, 0);
+ // z_finish
+ Field(zresult, 0) = Val_bool(deflate_result == Z_STREAM_END);
+ // z_read
+@@ -291,14 +291,14 @@ CAMLprim value zlib_deflate(value stream_val, value src, value
spos, value slen,
+ break;
+ case Z_STREAM_ERROR:
+ // TODO: use stream->msg to get _zlib_'s text message
+- failwith("Error in `zlib_deflate` (extc_stubs.c): call to `deflate` failed:
Z_STREAM_ERROR");
++ caml_failwith("Error in `zlib_deflate` (extc_stubs.c): call to `deflate` failed:
Z_STREAM_ERROR");
+ break;
+ case Z_BUF_ERROR:
+ // TODO: use stream->msg to get _zlib_'s text message
+- failwith("Error in `zlib_deflate` (extc_stubs.c): call to `deflate` failed:
Z_BUF_ERROR");
++ caml_failwith("Error in `zlib_deflate` (extc_stubs.c): call to `deflate` failed:
Z_BUF_ERROR");
+ break;
+ default:
+- failwith("Error in `zlib_deflate` (extc_stubs.c): unknown return code from
`deflate`");
++ caml_failwith("Error in `zlib_deflate` (extc_stubs.c): unknown return code from
`deflate`");
+ }
+ assert(0);
+ }
+@@ -309,14 +309,14 @@ CAMLprim value zlib_deflate_bytecode(value *arg, int nargs) {
+
+ CAMLprim value zlib_deflate_end(value zv) {
+ if( deflateEnd(ZStreamP_val(zv)) != 0 )
+- failwith("zlib_deflate_end");
++ caml_failwith("zlib_deflate_end");
+ return Val_unit;
+ }
+
+ CAMLprim value zlib_inflate_init(value wbits) {
+ value z = zlib_new_stream();
+ if( inflateInit2(ZStreamP_val(z),Int_val(wbits)) != Z_OK )
+- failwith("zlib_inflate_init");
++ caml_failwith("zlib_inflate_init");
+ return z;
+ }
+
+@@ -330,12 +330,12 @@ CAMLprim value zlib_inflate( value zv, value src, value spos, value
slen, value
+ z->avail_in = Int_val(slen);
+ z->avail_out = Int_val(dlen);
+ if( (r = inflate(z,Int_val(flush))) < 0 )
+- failwith("zlib_inflate");
++ caml_failwith("zlib_inflate");
+
+ z->next_in = NULL;
+ z->next_out = NULL;
+
+- res = alloc_small(3, 0);
++ res = caml_alloc_small(3, 0);
+ Field(res, 0) = Val_bool(r == Z_STREAM_END);
+ Field(res, 1) = Val_int(Int_val(slen) - z->avail_in);
+ Field(res, 2) = Val_int(Int_val(dlen) - z->avail_out);
+@@ -348,7 +348,7 @@ CAMLprim value zlib_inflate_bytecode(value * arg, int nargs) {
+
+ CAMLprim value zlib_inflate_end(value zv) {
+ if( inflateEnd(ZStreamP_val(zv)) != 0 )
+- failwith("zlib_inflate_end");
++ caml_failwith("zlib_inflate_end");
+ return Val_unit;
+ }
+
+@@ -368,13 +368,13 @@ CAMLprim value executable_path(value u) {
+ #ifdef _WIN32
+ char path[MAX_PATH];
+ if( GetModuleFileName(NULL,path,MAX_PATH) == 0 )
+- failwith("executable_path");
++ caml_failwith("executable_path");
+ return caml_copy_string(path);
+ #elif __APPLE__
+ char path[MAXPATHLEN+1];
+ uint32_t path_len = MAXPATHLEN;
+ if ( _NSGetExecutablePath(path, &path_len) )
+- failwith("executable_path");
++ caml_failwith("executable_path");
+ return caml_copy_string(path);
+ #elif __FreeBSD__
+ char path[PATH_MAX];
+@@ -387,7 +387,7 @@ CAMLprim value executable_path(value u) {
+ len = sizeof(path);
+ error = sysctl(name, 4, path, &len, NULL, 0);
+ if( error < 0 )
+- failwith("executable_path");
++ caml_failwith("executable_path");
+ return caml_copy_string(path);
+ #else
+ char path[PATH_MAX];
+@@ -397,7 +397,7 @@ CAMLprim value executable_path(value u) {
+ if( p != NULL )
+ return caml_copy_string(p);
+ else
+- failwith("executable_path");
++ caml_failwith("executable_path");
+ }
+ path[length] = '\0';
+ return caml_copy_string(path);
+@@ -408,12 +408,12 @@ CAMLprim value get_full_path( value f ) {
+ #ifdef _WIN32
+ char path[MAX_PATH];
+ if( GetFullPathName(String_val(f),MAX_PATH,path,NULL) == 0 )
+- failwith("get_full_path");
++ caml_failwith("get_full_path");
+ return caml_copy_string(path);
+ #else
+ char path[4096];
+ if( realpath(String_val(f),path) == NULL )
+- failwith("get_full_path");
++ caml_failwith("get_full_path");
+ return caml_copy_string(path);
+ #endif
+ }
+@@ -428,7 +428,7 @@ CAMLprim value get_real_path( value path ) {
+
+ // this will ensure the full class path with proper casing
+ if( GetFullPathName(String_val(path),MAX_PATH,out,NULL) == 0 )
+- failwith("get_real_path");
++ caml_failwith("get_real_path");
+
+ len = strlen(out);
+ i = 0;
+@@ -501,7 +501,7 @@ CAMLprim value sys_time() {
+ ULARGE_INTEGER ui;
+ GetSystemTime(&t);
+ if( !SystemTimeToFileTime(&t,&ft) )
+- failwith("sys_cpu_time");
++ caml_failwith("sys_cpu_time");
+ ui.LowPart = ft.dwLowDateTime;
+ ui.HighPart = ft.dwHighDateTime;
+ return caml_copy_double( ((double)ui.QuadPart) / 10000000.0 - EPOCH_DIFF );
+diff --git a/libs/extc/process_stubs.c b/libs/extc/process_stubs.c
+index c17c7a4f5..1f42c0fd1 100644
+--- a/libs/extc/process_stubs.c
++++ b/libs/extc/process_stubs.c
+@@ -67,10 +67,10 @@
+ #define val_null Val_int(0)
+ #define val_some(v) Field(v,0)
+ #define val_int(v) Int_val(v)
+-#define neko_error() failwith(__FUNCTION__)
++#define neko_error() caml_failwith(__FUNCTION__)
+
+ static value alloc_private( int size ) {
+- return alloc((size + sizeof(value) - 1) / sizeof(value), Abstract_tag);
++ return caml_alloc((size + sizeof(value) - 1) / sizeof(value), Abstract_tag);
+ }
+
+ // --- buffer api
+diff --git a/libs/extlib-leftovers/uTF8.ml b/libs/extlib-leftovers/uTF8.ml
+index ef61364de..ec25bd7ae 100644
+--- a/libs/extlib-leftovers/uTF8.ml
++++ b/libs/extlib-leftovers/uTF8.ml
+@@ -177,7 +177,7 @@ let rec iter_aux proc s i =
+
+ let iter proc s = iter_aux proc s 0
+
+-let compare s1 s2 = Pervasives.compare s1 s2
++let compare s1 s2 = Stdlib.compare s1 s2
+
+ exception Malformed_code
+
+diff --git a/libs/ilib/peReader.ml b/libs/ilib/peReader.ml
+index fc79151e5..4d2e4aadb 100644
+--- a/libs/ilib/peReader.ml
++++ b/libs/ilib/peReader.ml
+@@ -25,7 +25,7 @@ open ExtList;;
+ exception Error_message of string
+
+ type reader_ctx = {
+- ch : Pervasives.in_channel;
++ ch : Stdlib.in_channel;
+ i : IO.input;
+ verbose : bool;
+ }
+@@ -42,7 +42,7 @@ let seek r pos =
+ seek_in r.ch pos
+
+ let pos r =
+- Pervasives.pos_in r.ch
++ Stdlib.pos_in r.ch
+
+ let info r msg =
+ if r.verbose then
+diff --git a/libs/objsize/c_objsize.c b/libs/objsize/c_objsize.c
+index 5f222e072..4a3167531 100644
+--- a/libs/objsize/c_objsize.c
++++ b/libs/objsize/c_objsize.c
+@@ -12,6 +12,11 @@
+ #include "util.h"
+
+ #include <caml/memory.h>
++#include <caml/version.h>
++
++#if OCAML_VERSION_MAJOR >= 5
++#include <caml/address_class.h>
++#endif
+
+ // FROM byterun/gc.h
+ #define Caml_white (0 << 8)
+@@ -38,6 +43,7 @@
+ #define In_static_data 4
+ #define In_code_area 8
+
++#if OCAML_VERSION_MAJOR < 5
+ #ifdef ARCH_SIXTYFOUR
+
+ // 64 bits: Represent page table as a sparse hash table
+@@ -63,6 +69,23 @@ CAMLextern unsigned char * caml_page_table[Pagetable1_size];
+
+ #define Is_in_heap_or_young(a) (Classify_addr(a) & (In_heap | In_young))
+
++void store_explicit(header_t hd, value v, int col)
++ {
++ Hd_val(v) = Coloredhd_hd(hd, col);
++ }
++
++#else
++
++void store_explicit(header_t hd, value v, int col)
++ {
++ atomic_store_explicit(
++ Hp_atomic_val(v),
++ Coloredhd_hd(hd, col),
++ memory_order_release);
++ }
++
++#endif
++
+ //--------------------------------------------------------
+
+
+@@ -352,7 +375,7 @@ void c_rec_objsize(value v, size_t depth)
+
+ DBG(printf("COL: w %08lx %i\n", v, col));
+
+- Hd_val(v) = Coloredhd_hd(hd, Col_blue);
++ store_explicit(hd, v, Col_blue);
+
+ if (Tag_val(v) < No_scan_tag)
+ {
+@@ -378,7 +401,7 @@ void restore_colors(value v)
+
+ col = readcolor();
+ DBG(printf("COL: r %08lx %i\n", v, col));
+- Hd_val(v) = Coloredhd_hd(Hd_val(v), col);
++ store_explicit(Hd_val(v), v, col);
+
+ if (Tag_val(v) < No_scan_tag)
+ {
+@@ -417,7 +440,7 @@ int c_objsize(value v, value scan, value reach, size_t* headers,
size_t* data, s
+ head = Field(head,1);
+ if( col == Col_blue ) continue;
+ writecolor(col);
+- Hd_val(v) = Coloredhd_hd(hd, Col_blue);
++ store_explicit(hd, v, Col_blue);
+ }
+
+ acc_data = 0;
+@@ -444,7 +467,7 @@ int c_objsize(value v, value scan, value reach, size_t* headers,
size_t* data, s
+ head = Field(head,1);
+ if( Colornum_hd(Hd_val(v)) != Col_blue ) continue;
+ col = readcolor();
+- Hd_val(v) = Coloredhd_hd(Hd_val(v), col);
++ store_explicit(Hd_val(v), v, col);
+ }
+
+ while( COND_BLOCK(reach) ) {
+diff --git a/libs/swflib/swfParser.ml b/libs/swflib/swfParser.ml
+index 2f6474532..8006c81ae 100644
+--- a/libs/swflib/swfParser.ml
++++ b/libs/swflib/swfParser.ml
+@@ -444,7 +444,7 @@ and tag_length t =
+ (* READ PRIMS *)
+
+ let skip ch n =
+- seek_in ch ((Pervasives.pos_in ch) + n)
++ seek_in ch ((Stdlib.pos_in ch) + n)
+
+ let read_rgba ch =
+ let r = read_byte ch in
+diff --git a/libs/swflib/swfPic.ml b/libs/swflib/swfPic.ml
+index 7e69e28eb..613260d18 100644
+--- a/libs/swflib/swfPic.ml
++++ b/libs/swflib/swfPic.ml
+@@ -59,7 +59,7 @@ let load_picture file id =
+ let len = String.length file in
+ let p = (try String.rindex file '.' with Not_found -> len) in
+ let ext = String.sub file (p + 1) (len - (p + 1)) in
+- match String.uppercase ext with
++ match ExtString.String.uppercase ext with
+ | "PNG" ->
+ let png , header, data = (try
+ let p = Png.parse ch in
+diff --git a/libs/ttflib/tTFParser.ml b/libs/ttflib/tTFParser.ml
+index 68d1e2632..9b3468ac7 100644
+--- a/libs/ttflib/tTFParser.ml
++++ b/libs/ttflib/tTFParser.ml
+@@ -24,7 +24,7 @@ open TTFData
+ open IO
+
+ type ctx = {
+- file : Pervasives.in_channel;
++ file : Stdlib.in_channel;
+ ch : input;
+ mutable entry : entry;
+ }
+diff --git a/libs/ziplib/zip.ml b/libs/ziplib/zip.ml
+index 9245f0d00..0e5edc1eb 100644
+--- a/libs/ziplib/zip.ml
++++ b/libs/ziplib/zip.ml
+@@ -62,7 +62,7 @@ type entry =
+
+ type in_file =
+ { if_filename: string;
+- if_channel: Pervasives.in_channel;
++ if_channel: Stdlib.in_channel;
+ if_entries: entry list;
+ if_directory: (string, entry) Hashtbl.t;
+ if_comment: string }
+@@ -72,7 +72,7 @@ let comment ifile = ifile.if_comment
+
+ type out_file =
+ { of_filename: string;
+- of_channel: Pervasives.out_channel;
++ of_channel: Stdlib.out_channel;
+ mutable of_entries: entry list;
+ of_comment: string }
+
+@@ -217,7 +217,7 @@ let read_cd filename ic cd_entries cd_offset cd_bound =
+ (* Open a ZIP file for reading *)
+
+ let open_in filename =
+- let ic = Pervasives.open_in_bin filename in
++ let ic = Stdlib.open_in_bin filename in
+ let (cd_entries, cd_size, cd_offset, cd_comment) = read_ecd filename ic in
+ let entries =
+ read_cd filename ic cd_entries cd_offset (Int32.add cd_offset cd_size) in
+@@ -232,7 +232,7 @@ let open_in filename =
+ (* Close a ZIP file opened for reading *)
+
+ let close_in ifile =
+- Pervasives.close_in ifile.if_channel
++ Stdlib.close_in ifile.if_channel
+
+ (* Return the info associated with an entry *)
+
+@@ -369,7 +369,7 @@ let open_out ?(comment = "") filename =
+ if String.length comment >= 0x10000 then
+ raise(Error(filename, "", "comment too long"));
+ { of_filename = filename;
+- of_channel = Pervasives.open_out_bin filename;
++ of_channel = Stdlib.open_out_bin filename;
+ of_entries = [];
+ of_comment = comment }
+
+@@ -416,7 +416,7 @@ let close_out ofile =
+ write4_int oc start_cd; (* offset of central dir *)
+ write2 oc (String.length ofile.of_comment); (* length of comment *)
+ writestring oc ofile.of_comment; (* comment *)
+- Pervasives.close_out oc
++ Stdlib.close_out oc
+
+ (* Write a local file header and return the corresponding entry *)
+
+@@ -552,9 +552,9 @@ let copy_file_to_entry infilename ofile ?(extra = "")
?(comment = "")
+ with Unix.Unix_error(_,_,_) -> None in
+ try
+ copy_channel_to_entry ic ofile ~extra ~comment ~level ?mtime:mtime' name;
+- Pervasives.close_in ic
++ Stdlib.close_in ic
+ with x ->
+- Pervasives.close_in ic; raise x
++ Stdlib.close_in ic; raise x
+
+
+ (* Add an entry whose content will be produced by the caller *)
+diff --git a/src/codegen/dotnet.ml b/src/codegen/dotnet.ml
+index e90cfe955..90bf25ec6 100644
+--- a/src/codegen/dotnet.ml
++++ b/src/codegen/dotnet.ml
+@@ -68,7 +68,7 @@ let cs_unops =
+ let netname_to_hx name =
+ let len = String.length name in
+ let chr = String.get name 0 in
+- String.make 1 (Char.uppercase chr) ^ (String.sub name 1 (len-1))
++ String.make 1 (Char.uppercase_ascii chr) ^ (String.sub name 1 (len-1))
+
+ (* -net-lib implementation *)
+
+@@ -105,7 +105,7 @@ let escape_chars =
+
+ let netcl_to_hx cl =
+ let cl = if String.length cl > 0 && String.get cl 0 >= 'a'
&& String.get cl 0 <= 'z' then
+- Char.escaped (Char.uppercase (String.get cl 0)) ^ (String.sub cl 1 (String.length cl
- 1))
++ Char.escaped (Char.uppercase_ascii (String.get cl 0)) ^ (String.sub cl 1
(String.length cl - 1))
+ else
+ cl
+ in
+diff --git a/src/codegen/java.ml b/src/codegen/java.ml
+index ba86b4eea..20906bbec 100644
+--- a/src/codegen/java.ml
++++ b/src/codegen/java.ml
+@@ -46,7 +46,7 @@ let is_haxe_keyword = function
+ let jname_to_hx name =
+ let name =
+ if name <> "" && (String.get name 0 < 'A' ||
String.get name 0 > 'Z') then
+- Char.escaped (Char.uppercase (String.get name 0)) ^ String.sub name 1 (String.length
name - 1)
++ Char.escaped (Char.uppercase_ascii (String.get name 0)) ^ String.sub name 1
(String.length name - 1)
+ else
+ name
+ in
+diff --git a/src/codegen/javaModern.ml b/src/codegen/javaModern.ml
+index 5908c19a0..7a298292c 100644
+--- a/src/codegen/javaModern.ml
++++ b/src/codegen/javaModern.ml
+@@ -555,7 +555,7 @@ module PathConverter = struct
+ let jname_to_hx name =
+ let name =
+ if name <> "" && (String.get name 0 < 'A' ||
String.get name 0 > 'Z') then
+- Char.escaped (Char.uppercase (String.get name 0)) ^ String.sub name 1 (String.length
name - 1)
++ Char.escaped (Char.uppercase_ascii (String.get name 0)) ^ String.sub name 1
(String.length name - 1)
+ else
+ name
+ in
+diff --git a/src/codegen/swfLoader.ml b/src/codegen/swfLoader.ml
+index 6b7ef3b67..6588dffde 100644
+--- a/src/codegen/swfLoader.ml
++++ b/src/codegen/swfLoader.ml
+@@ -33,7 +33,7 @@ let lowercase_pack pack =
+ let name =
+ let fchar = String.get name 0 in
+ if fchar >= 'A' && fchar <= 'Z' then
+- (String.make 1 (Char.lowercase fchar)) ^ String.sub name 1 (String.length name -
1)
++ (String.make 1 (Char.lowercase_ascii fchar)) ^ String.sub name 1 (String.length
name - 1)
+ else
+ name
+ in
+diff --git a/src/compiler/displayProcessing.ml b/src/compiler/displayProcessing.ml
+index 7cec1d9d7..e32f7fcac 100644
+--- a/src/compiler/displayProcessing.ml
++++ b/src/compiler/displayProcessing.ml
+@@ -268,7 +268,7 @@ let maybe_load_display_file_before_typing tctx display_file_dot_path
= match dis
+
+ let handle_display_after_typing ctx tctx display_file_dot_path =
+ let com =
ctx.com in
+- if ctx.com.display.dms_kind = DMNone & ctx.has_error then raise Abort;
++ if ctx.com.display.dms_kind = DMNone && ctx.has_error then raise Abort;
+ begin match ctx.com.display.dms_kind,!Parser.delayed_syntax_completion with
+ | DMDefault,Some(kind,subj) -> DisplayOutput.handle_syntax_completion com kind
subj
+ | _ -> ()
+diff --git a/src/context/display/displayException.ml
b/src/context/display/displayException.ml
+index a731f9a1d..661bb1bd1 100644
+--- a/src/context/display/displayException.ml
++++ b/src/context/display/displayException.ml
+@@ -23,9 +23,9 @@ let max_completion_items = ref 0
+ let filter_somehow ctx items kind subj =
+ let subject = match subj.s_name with
+ | None -> ""
+- | Some name-> String.lowercase name
++ | Some name-> ExtString.String.lowercase name
+ in
+- let subject_length = String.length subject in
++ let subject_length = ExtString.String.length subject in
+ let determine_cost s =
+ let get_initial_cost o =
+ if o = 0 then
+@@ -33,7 +33,7 @@ let filter_somehow ctx items kind subj =
+ else begin
+ (* Consider `.` as anchors and determine distance from closest one. Penalize
starting distance by factor 2. *)
+ try
+- let last_anchor = String.rindex_from s o '.' in
++ let last_anchor = ExtString.String.rindex_from s o '.' in
+ (o - (last_anchor + 1)) * 2
+ with Not_found ->
+ o * 2
+@@ -54,12 +54,12 @@ let filter_somehow ctx items kind subj =
+ let o',new_cost = index_from o subject.[i] in
+ loop (i + 1) o' (cost + new_cost)
+ end else
+- cost + (if o = String.length s - 1 then 0 else 1) (* Slightly penalize for not-exact
matches. *)
++ cost + (if o = ExtString.String.length s - 1 then 0 else 1) (* Slightly penalize for
not-exact matches. *)
+ in
+ if subject_length = 0 then
+ 0
+ else try
+- let o = String.index s subject.[0] in
++ let o = ExtString.String.index s subject.[0] in
+ loop 1 o (get_initial_cost o);
+ with Not_found | Invalid_argument _ ->
+ -1
+@@ -67,7 +67,7 @@ let filter_somehow ctx items kind subj =
+ let rec loop acc items index =
+ match items with
+ | item :: items ->
+- let name = String.lowercase (get_filter_name item) in
++ let name = ExtString.String.lowercase (get_filter_name item) in
+ let cost = determine_cost name in
+ let acc = if cost >= 0 then
+ (item,index,cost) :: acc
+@@ -102,8 +102,8 @@ let patch_completion_subject subj =
+ match subj.s_name with
+ | Some name ->
+ let delta = p.pmax - p.pmin in
+- let name = if delta > 0 && delta < String.length name then
+- String.sub name 0 delta
++ let name = if delta > 0 && delta < ExtString.String.length name then
++ ExtString.String.sub name 0 delta
+ else
+ name
+ in
+diff --git a/src/context/display/documentSymbols.ml
b/src/context/display/documentSymbols.ml
+index 705c8be1d..4d61a6ae4 100644
+--- a/src/context/display/documentSymbols.ml
++++ b/src/context/display/documentSymbols.ml
+@@ -56,7 +56,7 @@ let collect_module_symbols mname with_locals (pack,decls) =
+ | FFun f ->
+ add_field (
+ if fst cff_name = "new" then Constructor
+- else if ((parent_kind = EnumAbstract or parent_kind = Abstract) &&
Meta.has_one_of [Meta.Op; Meta.ArrayAccess; Meta.Resolve] cff_meta) then Operator
++ else if ((parent_kind = EnumAbstract || parent_kind = Abstract) &&
Meta.has_one_of [Meta.Op; Meta.ArrayAccess; Meta.Resolve] cff_meta) then Operator
+ else Method
+ );
+ if with_locals then func field_parent f
+diff --git a/src/context/typecore.ml b/src/context/typecore.ml
+index 22ccc8a00..fc2b33ba6 100644
+--- a/src/context/typecore.ml
++++ b/src/context/typecore.ml
+@@ -602,7 +602,7 @@ let merge_core_doc ctx mt =
+
+ let field_to_type_path com e =
+ let rec loop e pack name = match e with
+- | EField(e,f,_),p when Char.lowercase (String.get f 0) <> String.get f 0 ->
(match name with
++ | EField(e,f,_),p when Char.lowercase_ascii (String.get f 0) <> String.get f 0
-> (match name with
+ | [] | _ :: [] ->
+ loop e pack (f :: name)
+ | _ -> (* too many name paths *)
+@@ -614,7 +614,7 @@ let field_to_type_path com e =
+ let pack, name, sub = match name with
+ | [] ->
+ let fchar = String.get f 0 in
+- if Char.uppercase fchar = fchar then
++ if Char.uppercase_ascii fchar = fchar then
+ pack, f, None
+ else begin
+ display_error com "A class name must start with an uppercase letter"
(snd e);
+@@ -664,12 +664,12 @@ let s_field_call_candidate fcc =
+ let relative_path ctx file =
+ let slashes path = String.concat "/" (ExtString.String.nsplit path
"\\") in
+ let fpath = slashes (Path.get_full_path file) in
+- let fpath_lower = String.lowercase fpath in
++ let fpath_lower = String.lowercase_ascii fpath in
+ let flen = String.length fpath_lower in
+ let rec loop = function
+ | [] -> file
+ | path :: l ->
+- let spath = String.lowercase (slashes path) in
++ let spath = String.lowercase_ascii (slashes path) in
+ let slen = String.length spath in
+ if slen > 0 && slen < flen && String.sub fpath_lower 0 slen =
spath then String.sub fpath slen (flen - slen) else loop l
+ in
+diff --git a/src/core/path.ml b/src/core/path.ml
+index c5bf6d74d..119908524 100644
+--- a/src/core/path.ml
++++ b/src/core/path.ml
+@@ -223,7 +223,7 @@ end = struct
+
+ let create =
+ if Globals.is_windows then
+- (fun f -> String.lowercase (get_full_path f))
++ (fun f -> ExtString.String.lowercase (get_full_path f))
+ else
+ get_full_path
+
+@@ -378,7 +378,7 @@ let full_dot_path pack mname tname =
+
+ let file_extension file =
+ match List.rev (ExtString.String.nsplit file ".") with
+- | e :: _ -> String.lowercase e
++ | e :: _ -> ExtString.String.lowercase e
+ | [] -> ""
+
+ module FilePath = struct
+diff --git a/src/dune b/src/dune
+index 6e21a11d4..f0175d635 100644
+--- a/src/dune
++++ b/src/dune
+@@ -9,7 +9,7 @@
+ (library
+ (name haxe)
+ (libraries
+- extc extproc extlib_leftovers ilib javalib mbedtls neko objsize pcre2 swflib ttflib
ziplib
++ extc extproc extlib_leftovers ilib javalib mbedtls neko objsize pcre2 camlp-streams
swflib ttflib ziplib
+ json
+ unix str bigarray threads dynlink
+ xml-light extlib ptmap sha
+diff --git a/src/generators/gencpp.ml b/src/generators/gencpp.ml
+index a8ff59cf2..8156bfe83 100644
+--- a/src/generators/gencpp.ml
++++ b/src/generators/gencpp.ml
+@@ -7030,8 +7030,8 @@ let write_build_options common_ctx filename defines =
+ | _ -> write_define name (escape_command value)) defines;
+ let pin,pid = Process_helper.open_process_args_in_pid "haxelib"
[|"haxelib"; "path"; "hxcpp"|] in
+ set_binary_mode_in pin false;
+- write_define "hxcpp" (Pervasives.input_line pin);
+- Pervasives.ignore (Process_helper.close_process_in_pid (pin,pid));
++ write_define "hxcpp" (Stdlib.input_line pin);
++ Stdlib.ignore (Process_helper.close_process_in_pid (pin,pid));
+ writer#close;;
+
+ let create_member_types common_ctx =
+diff --git a/src/generators/genhl.ml b/src/generators/genhl.ml
+index e8ffa87cd..12518a9ad 100644
+--- a/src/generators/genhl.ml
++++ b/src/generators/genhl.ml
+@@ -4059,7 +4059,7 @@ let add_types ctx types =
+ | Method MethNormal when not (List.exists (fun (m,_,_) -> m = Meta.HlNative)
f.cf_meta) ->
+ (match f.cf_expr with
+ | Some { eexpr = TFunction { tf_expr = { eexpr = TBlock ([] | [{ eexpr = TReturn
(Some { eexpr = TConst _ })}]) } } } | None ->
+- let name = prefix ^ String.lowercase (Str.global_replace (Str.regexp
"[A-Z]+") "_\\0" f.cf_name) in
++ let name = prefix ^ String.lowercase_ascii (Str.global_replace (Str.regexp
"[A-Z]+") "_\\0" f.cf_name) in
+ f.cf_meta <- (Meta.HlNative, [(EConst (String(lib,SDoubleQuotes)),p);(EConst
(String(name,SDoubleQuotes)),p)], p) :: f.cf_meta;
+ | _ -> ())
+ | _ -> ()
+@@ -4149,7 +4149,7 @@ let generate com =
+ in
+
+ if Path.file_extension com.file = "c" then begin
+- let gnames = Array.create (Array.length code.globals) "" in
++ let gnames = Array.make (Array.length code.globals) "" in
+ PMap.iter (fun n i -> gnames.(i) <- n) ctx.cglobals.map;
+ if not (Common.defined com Define.SourceHeader) then begin
+ let version_major = com.version / 1000 in
+diff --git a/src/generators/genphp7.ml b/src/generators/genphp7.ml
+index 6d6b53941..9109993ef 100644
+--- a/src/generators/genphp7.ml
++++ b/src/generators/genphp7.ml
+@@ -15,8 +15,8 @@ open Sourcemaps
+ *)
+ let escape_bin s =
+ let b = Buffer.create 0 in
+- for i = 0 to String.length s - 1 do
+- match Char.code (String.unsafe_get s i) with
++ for i = 0 to ExtString.String.length s - 1 do
++ match Char.code (ExtString.String.unsafe_get s i) with
+ | c when c = Char.code('\\') || c = Char.code('"') || c =
Char.code('$') ->
+ Buffer.add_string b "\\";
+ Buffer.add_char b (Char.chr c)
+@@ -46,7 +46,7 @@ let write_resource dir name data =
+ *)
+ let copy_file src dst =
+ let buffer_size = 8192 in
+- let buffer = String.create buffer_size in
++ let buffer = ExtString.String.create buffer_size in
+ let fd_in = Unix.openfile src [O_RDONLY] 0 in
+ let fd_out = Unix.openfile dst [O_WRONLY; O_CREAT; O_TRUNC] 0o644 in
+ let rec copy_loop () =
+@@ -196,7 +196,7 @@ end
+ (**
+ Check if specified string is a reserved word in PHP
+ *)
+-let is_keyword str = Hashtbl.mem php_keywords_tbl (String.lowercase str)
++let is_keyword str = Hashtbl.mem php_keywords_tbl (ExtString.String.lowercase str)
+
+ (**
+ Check if specified type is php.NativeArray
+@@ -531,10 +531,10 @@ let get_full_type_name ?(escape=false) ?(omit_first_slash=false)
(type_path:path
+ else
+ "" :: get_real_path module_path
+ in
+- (String.concat "\\" parts) ^ "\\" ^ type_name
++ (ExtString.String.concat "\\" parts) ^ "\\" ^ type_name
+ in
+ if escape then
+- String.escaped name
++ ExtString.String.escaped name
+ else
+ name
+
+@@ -618,7 +618,7 @@ let fix_call_args callee_type exprs =
+ Escapes all "$" chars and encloses `str` into double quotes
+ *)
+ let quote_string str =
+- "\"" ^ (Str.global_replace (Str.regexp "\\$") "\\$"
(String.escaped str)) ^ "\""
++ "\"" ^ (Str.global_replace (Str.regexp "\\$") "\\$"
(ExtString.String.escaped str)) ^ "\""
+
+ (**
+ Check if specified field is a var with non-constant expression
+@@ -1296,21 +1296,21 @@ class code_writer (ctx:php_generator_context) hx_type_path
php_name =
+ Decrease indentation by one level
+ *)
+ method indent_less =
+- indentation <- String.make ((String.length indentation) - 1) '\t';
++ indentation <- ExtString.String.make ((ExtString.String.length indentation) - 1)
'\t';
+ (**
+ Set indentation level (starting from zero for no indentation)
+ *)
+ method indent level =
+- indentation <- String.make level '\t';
++ indentation <- ExtString.String.make level '\t';
+ (**
+ Get indentation level (starting from zero for no indentation)
+ *)
+- method get_indentation = String.length indentation
++ method get_indentation = ExtString.String.length indentation
+ (**
+ Set indentation level (starting from zero for no indentation)
+ *)
+ method set_indentation level =
+- indentation <- String.make level '\t'
++ indentation <- ExtString.String.make level '\t'
+ (**
+ Specify local var name declared in current scope
+ *)
+@@ -1326,7 +1326,7 @@ class code_writer (ctx:php_generator_context) hx_type_path php_name
=
+ else if get_type_name type_path = "" then
+ match get_module_path type_path with
+ | [] -> "\\"
+- | module_path -> "\\" ^ (String.concat "\\" (get_real_path
module_path)) ^ "\\"
++ | module_path -> "\\" ^ (ExtString.String.concat "\\"
(get_real_path module_path)) ^ "\\"
+ else begin
+ let orig_type_path = type_path in
+ let type_path = match type_path with (pack, name) -> (pack, get_real_name name)
in
+@@ -1942,7 +1942,7 @@ class code_writer (ctx:php_generator_context) hx_type_path php_name
=
+ set_sourcemap_pointer sourcemap sm_pointer_before_body;
+ let locals = vars#pop_captured in
+ if List.length locals > 0 then begin
+- self#write ("unset($" ^ (String.concat ", $" locals) ^
");\n");
++ self#write ("unset($" ^ (ExtString.String.concat ", $"
locals) ^ ");\n");
+ self#write_indentation
+ end;
+ self#write_bypassing_sourcemap body;
+@@ -2999,7 +2999,7 @@ class virtual type_builder ctx (wrapper:type_wrapper) =
+ Returns generated file contents
+ *)
+ method get_contents =
+- if (String.length contents) = 0 then begin
++ if (ExtString.String.length contents) = 0 then begin
+ self#write_declaration;
+ writer#write_line " {"; (** opening bracket for a class *)
+ self#write_body;
+@@ -3016,7 +3016,7 @@ class virtual type_builder ctx (wrapper:type_wrapper) =
+ writer#write_statement ("require_once __DIR__.'/" ^ polyfills_file ^
"'");
+ writer#write_statement (boot_class ^ "::__hx__init()")
+ end;
+- let haxe_class = match wrapper#get_type_path with (path, name) -> String.concat
"." (path @ [name]) in
++ let haxe_class = match wrapper#get_type_path with (path, name) ->
ExtString.String.concat "." (path @ [name]) in
+ writer#write_statement (boot_class ^ "::registerClass(" ^ (self#get_name)
^ "::class, '" ^ haxe_class ^ "')");
+ self#write_rtti_meta;
+ self#write_pre_hx_init;
+@@ -3051,7 +3051,7 @@ class virtual type_builder ctx (wrapper:type_wrapper) =
+ writer#write "\n";
+ let namespace = self#get_namespace in
+ if List.length namespace > 0 then
+- writer#write_line ("namespace " ^ (String.concat "\\" namespace)
^ ";\n");
++ writer#write_line ("namespace " ^ (ExtString.String.concat "\\"
namespace) ^ ";\n");
+ writer#write_use
+ (**
+ Generates PHP docblock and attributes to output buffer.
+@@ -3082,11 +3082,11 @@ class virtual type_builder ctx (wrapper:type_wrapper) =
+ Writes description section of docblocks
+ *)
+ method write_doc_description (doc:string) =
+- let lines = Str.split (Str.regexp "\n") (String.trim doc)
++ let lines = Str.split (Str.regexp "\n") (ExtString.String.trim doc)
+ and write_line line =
+- let trimmed = String.trim line in
+- if String.length trimmed > 0 then (
+- if String.get trimmed 0 = '*' then
++ let trimmed = ExtString.String.trim line in
++ if ExtString.String.length trimmed > 0 then (
++ if ExtString.String.get trimmed 0 = '*' then
+ writer#write_line (" " ^ trimmed)
+ else
+ writer#write_line (" * " ^ trimmed)
+@@ -3554,7 +3554,7 @@ class class_builder ctx (cls:tclass) =
+ cls.cl_implements
+ in
+ let interfaces = List.map use_interface unique in
+- writer#write (String.concat ", " interfaces);
++ writer#write (ExtString.String.concat ", " interfaces);
+ end;
+ (**
+ Returns either user-defined constructor or creates empty constructor if instance
initialization is required.
+@@ -3667,7 +3667,7 @@ class class_builder ctx (cls:tclass) =
+ List.iter
+ (fun field ->
+ if not !required then
+- required := (String.lowercase field.cf_name = String.lowercase self#get_name)
++ required := (ExtString.String.lowercase field.cf_name =
ExtString.String.lowercase self#get_name)
+ )
+ (cls.cl_ordered_statics @ cls.cl_ordered_fields);
+ !required
+@@ -3676,10 +3676,10 @@ class class_builder ctx (cls:tclass) =
+ Writes `-D php-prefix` value as class constant PHP_PREFIX
+ *)
+ method private write_php_prefix () =
+- let prefix = String.concat "\\" ctx.pgc_prefix in
++ let prefix = ExtString.String.concat "\\" ctx.pgc_prefix in
+ let indentation = writer#get_indentation in
+ writer#indent 1;
+- writer#write_statement ("const PHP_PREFIX = \"" ^ (String.escaped
prefix) ^ "\"");
++ writer#write_statement ("const PHP_PREFIX = \"" ^
(ExtString.String.escaped prefix) ^ "\"");
+ writer#indent indentation
+ (**
+ Writes expressions for `__hx__init` method
+@@ -3998,8 +3998,8 @@ class generator (ctx:php_generator_context) =
+ if front_dirs <> [] then
+ ignore(create_dir_recursive (root_dir :: front_dirs));
+ let lib_path =
+- (String.concat "" (List.fold_left (fun acc s -> if s <>
"." then "../" :: acc else acc) [] front_dirs))
+- ^ (String.concat "/" self#get_lib_path)
++ (ExtString.String.concat "" (List.fold_left (fun acc s -> if s
<> "." then "../" :: acc else acc) [] front_dirs))
++ ^ (ExtString.String.concat "/" self#get_lib_path)
+ in
+ let channel = open_out (root_dir ^ "/" ^ filename) in
+ output_string channel "<?php\n";
+diff --git a/src/generators/genswf9.ml b/src/generators/genswf9.ml
+index 9bbd0ae6a..c2027e574 100644
+--- a/src/generators/genswf9.ml
++++ b/src/generators/genswf9.ml
+@@ -645,7 +645,7 @@ let begin_switch ctx =
+ constructs := (tag,ctx.infos.ipos) :: !constructs;
+ in
+ let fend() =
+- let cases = Array.create (!max + 1) 1 in
++ let cases = Array.make (!max + 1) 1 in
+ List.iter (fun (tag,pos) -> Array.set cases tag (pos - switch_pos)) !constructs;
+ DynArray.set ctx.code switch_index (HSwitch (1,Array.to_list cases));
+ branch();
+diff --git a/src/generators/hl2c.ml b/src/generators/hl2c.ml
+index af03a2617..2304debb0 100644
+--- a/src/generators/hl2c.ml
++++ b/src/generators/hl2c.ml
+@@ -1134,7 +1134,7 @@ let make_types_idents htypes =
+ try
+ PMap.find vp (!types_descs)
+ with Not_found ->
+- let arr = Array.create (Array.length vp.vfields) ("",DSimple HVoid) in
++ let arr = Array.make (Array.length vp.vfields) ("",DSimple HVoid) in
+ let td = DVirtual arr in
+ types_descs := PMap.add vp td (!types_descs);
+ Array.iteri (fun i (f,_,t) -> arr.(i) <- (f,make_desc t)) vp.vfields;
+diff --git a/src/generators/hlinterp.ml b/src/generators/hlinterp.ml
+index f6fc7f32f..2b5bc247a 100644
+--- a/src/generators/hlinterp.ml
++++ b/src/generators/hlinterp.ml
+@@ -1111,7 +1111,7 @@ let interp ctx f args =
+ (match rtype r with
+ | HEnum e ->
+ let _, _, fl = e.efields.(f) in
+- let vl = Array.create (Array.length fl) VUndef in
++ let vl = Array.make (Array.length fl) VUndef in
+ set r (VEnum (e, f, vl))
+ | _ -> Globals.die "" __LOC__
+ )
+@@ -1257,7 +1257,7 @@ let load_native ctx lib name t =
+ | _ -> Globals.die "" __LOC__)
+ | "alloc_array" ->
+ (function
+- | [VType t;VInt i] -> VArray (Array.create (int i) (default t),t)
++ | [VType t;VInt i] -> VArray (Array.make (int i) (default t),t)
+ | _ -> Globals.die "" __LOC__)
+ | "alloc_obj" ->
+ (function
+@@ -1347,7 +1347,7 @@ let load_native ctx lib name t =
+ | "math_asin" -> (function [VFloat f] -> VFloat (asin f) | _ ->
Globals.die "" __LOC__)
+ | "math_atan" -> (function [VFloat f] -> VFloat (atan f) | _ ->
Globals.die "" __LOC__)
+ | "math_atan2" -> (function [VFloat a; VFloat b] -> VFloat (atan2 a b)
| _ -> Globals.die "" __LOC__)
+- | "math_log" -> (function [VFloat f] -> VFloat (Pervasives.log f) | _
-> Globals.die "" __LOC__)
++ | "math_log" -> (function [VFloat f] -> VFloat (Stdlib.log f) | _
-> Globals.die "" __LOC__)
+ | "math_exp" -> (function [VFloat f] -> VFloat (exp f) | _ ->
Globals.die "" __LOC__)
+ | "math_pow" -> (function [VFloat a; VFloat b] -> VFloat (a ** b) | _
-> Globals.die "" __LOC__)
+ | "parse_int" ->
+@@ -1539,7 +1539,7 @@ let load_native ctx lib name t =
+ | "Darwin" -> "Mac"
+ | n -> n
+ ) in
+- Pervasives.ignore (Process_helper.close_process_in_pid (ic, pid));
++ Stdlib.ignore (Process_helper.close_process_in_pid (ic, pid));
+ cached_sys_name := Some uname;
+ uname)
+ | "Win32" | "Cygwin" -> "Windows"
+@@ -2147,7 +2147,7 @@ let add_code ctx code =
+ ctx.t_globals <- globals;
+ (* expand function table *)
+ let nfunctions = Array.length code.functions + Array.length code.natives in
+- let functions = Array.create nfunctions (FNativeFun ("",(fun _ ->
Globals.die "" __LOC__),HDyn)) in
++ let functions = Array.make nfunctions (FNativeFun ("",(fun _ ->
Globals.die "" __LOC__),HDyn)) in
+ Array.blit ctx.t_functions 0 functions 0 (Array.length ctx.t_functions);
+ let rec loop i =
+ if i = Array.length code.natives then () else
+@@ -2191,7 +2191,7 @@ let add_code ctx code =
+ (* ------------------------------- CHECK ----------------------------------------------
*)
+
+ let check code macros =
+- let ftypes = Array.create (Array.length code.natives + Array.length code.functions)
HVoid in
++ let ftypes = Array.make (Array.length code.natives + Array.length code.functions) HVoid
in
+ let is_native_fun = Hashtbl.create 0 in
+
+ let check_fun f =
+diff --git a/src/macro/eval/evalJit.ml b/src/macro/eval/evalJit.ml
+index 6218f394f..d2b5f3c15 100644
+--- a/src/macro/eval/evalJit.ml
++++ b/src/macro/eval/evalJit.ml
+@@ -230,7 +230,7 @@ and jit_expr jit return e =
+ let hasret = jit_closure.has_nonfinal_return in
+ let eci = get_env_creation jit_closure false tf.tf_expr.epos.pfile (EKLocalFunction
jit.num_closures) in
+ let captures = Hashtbl.fold (fun vid (i,declared) acc -> (i,vid,declared) :: acc)
jit_closure.captures [] in
+- let captures = List.sort (fun (i1,_,_) (i2,_,_) -> Pervasives.compare i1 i2)
captures in
++ let captures = List.sort (fun (i1,_,_) (i2,_,_) -> Stdlib.compare i1 i2) captures
in
+ (* Check if the out-of-scope var is in the outer scope because otherwise we have to
promote outwards. *)
+ List.iter (fun var -> ignore(get_capture_slot jit var))
jit_closure.captures_outside_scope;
+ let captures = ExtList.List.filter_map (fun (i,vid,declared) ->
+diff --git a/src/macro/eval/evalStdLib.ml b/src/macro/eval/evalStdLib.ml
+index 501387567..935733b53 100644
+--- a/src/macro/eval/evalStdLib.ml
++++ b/src/macro/eval/evalStdLib.ml
+@@ -289,7 +289,7 @@ module StdBytes = struct
+ let compare = vifun1 (fun vthis other ->
+ let this = this vthis in
+ let other = decode_bytes other in
+- vint (Pervasives.compare this other)
++ vint (Stdlib.compare this other)
+ )
+
+ let fastGet = vfun2 (fun b pos ->
+@@ -1694,13 +1694,13 @@ module StdMath = struct
+ let ceil = vfun1 (fun v -> match v with VInt32 _ -> v | _ -> vint32 (to_int
(ceil (num v))))
+ let cos = vfun1 (fun v -> vfloat (cos (num v)))
+ let exp = vfun1 (fun v -> vfloat (exp (num v)))
+- let fceil = vfun1 (fun v -> vfloat (Pervasives.ceil (num v)))
+- let ffloor = vfun1 (fun v -> vfloat (Pervasives.floor (num v)))
++ let fceil = vfun1 (fun v -> vfloat (Stdlib.ceil (num v)))
++ let ffloor = vfun1 (fun v -> vfloat (Stdlib.floor (num v)))
+ let floor = vfun1 (fun v -> match v with VInt32 _ -> v | _ -> vint32 (to_int
(floor (num v))))
+- let fround = vfun1 (fun v -> vfloat (Pervasives.floor (num v +. 0.5)))
++ let fround = vfun1 (fun v -> vfloat (Stdlib.floor (num v +. 0.5)))
+ let isFinite = vfun1 (fun v -> vbool (match v with VFloat f -> f <>
infinity && f <> neg_infinity && f = f | _ -> true))
+ let isNaN = vfun1 (fun v -> vbool (match v with VFloat f -> f <> f | VInt32
_ -> false | _ -> true))
+- let log = vfun1 (fun v -> vfloat (Pervasives.log (num v)))
++ let log = vfun1 (fun v -> vfloat (Stdlib.log (num v)))
+
+ let max = vfun2 (fun a b ->
+ let a = num a in
+@@ -1716,7 +1716,7 @@ module StdMath = struct
+
+ let pow = vfun2 (fun a b -> vfloat ((num a) ** (num b)))
+ let random = vfun0 (fun () -> vfloat (Random.State.float random 1.))
+- let round = vfun1 (fun v -> match v with VInt32 _ -> v | _ -> vint32 (to_int
(Pervasives.floor (num v +. 0.5))))
++ let round = vfun1 (fun v -> match v with VInt32 _ -> v | _ -> vint32 (to_int
(Stdlib.floor (num v +. 0.5))))
+ let sin = vfun1 (fun v -> vfloat (sin (num v)))
+
+ let sqrt = vfun1 (fun v ->
+@@ -2690,7 +2690,7 @@ module StdSys = struct
+ | "Darwin" -> "Mac"
+ | n -> n
+ ) in
+- Pervasives.ignore (Process_helper.close_process_in_pid (ic, pid));
++ Stdlib.ignore (Process_helper.close_process_in_pid (ic, pid));
+ cached_sys_name := Some uname;
+ uname)
+ | "Win32" | "Cygwin" -> "Windows"
+@@ -2735,10 +2735,12 @@ module StdThread = struct
+ vnull
+ )
+
+- let kill = vifun0 (fun vthis ->
+- Thread.kill (this vthis).tthread;
+- vnull
+- )
++ (* Thread.kill has been marked deprecated (because unstable or even not working at all)
for a while, and removed in ocaml 5 *)
++ (* See also
https://github.com/HaxeFoundation/haxe/issues/5800 *)
++ (* let kill = vifun0 (fun vthis -> *)
++ (* Thread.kill (this vthis).tthread; *)
++ (* vnull *)
++ (* ) *)
+
+ let self = vfun0 (fun () ->
+ let eval = get_eval (get_ctx()) in
+@@ -3064,7 +3066,7 @@ module StdUtf8 = struct
+ let compare = vfun2 (fun a b ->
+ let a = decode_string a in
+ let b = decode_string b in
+- vint (Pervasives.compare a b)
++ vint (Stdlib.compare a b)
+ )
+
+ let decode = vfun1 (fun s ->
+@@ -3730,7 +3732,7 @@ let init_standard_library builtins =
+ "id",StdThread.id;
+ "get_events",StdThread.get_events;
+ "set_events",StdThread.set_events;
+- "kill",StdThread.kill;
++ (* "kill",StdThread.kill; *)
+ "sendMessage",StdThread.sendMessage;
+ ];
+ init_fields builtins (["sys";"thread"],"Tls") [] [
+diff --git a/src/optimization/inlineConstructors.ml
b/src/optimization/inlineConstructors.ml
+index 8df1b5d79..de9b666cf 100644
+--- a/src/optimization/inlineConstructors.ml
++++ b/src/optimization/inlineConstructors.ml
+@@ -499,7 +499,7 @@ let inline_constructors ctx original_e =
+ | IOFInlineMethod(io,io_var,c,tl,cf,tf) ->
+ let argvs, pl = analyze_call_args call_args in
+ io.io_dependent_vars <- io.io_dependent_vars @ argvs;
+- io.io_has_untyped <- io.io_has_untyped or (Meta.has Meta.HasUntyped cf.cf_meta);
++ io.io_has_untyped <- io.io_has_untyped || (Meta.has Meta.HasUntyped cf.cf_meta);
+ begin match Inline.type_inline ctx cf tf (mk (TLocal io_var.iv_var) (TInst (c,tl))
e.epos) pl e.etype None e.epos true with
+ | Some e ->
+ let e = mark_ctors e in
+@@ -727,4 +727,4 @@ let inline_constructors ctx original_e =
+ end
+ ) !vars;
+ e
+- end
+\ No newline at end of file
++ end
+diff --git a/src/typing/matcher.ml b/src/typing/matcher.ml
+index 72f2a5e3a..6ca7e9a35 100644
+--- a/src/typing/matcher.ml
++++ b/src/typing/matcher.ml
+@@ -1461,7 +1461,7 @@ module TexprConverter = struct
+ in
+ let s = match unmatched with
+ | [] -> "_"
+- | _ -> String.concat " | " (List.sort Pervasives.compare sl)
++ | _ -> String.concat " | " (List.sort Stdlib.compare sl)
+ in
+ typing_error (Printf.sprintf "Unmatched patterns: %s" (s_subject v_lookup s
e_subject)) e_subject.epos
+
+diff --git a/src/typing/typeloadCheck.ml b/src/typing/typeloadCheck.ml
+index 616be2ec1..6e649860f 100644
+--- a/src/typing/typeloadCheck.ml
++++ b/src/typing/typeloadCheck.ml
+@@ -318,7 +318,7 @@ let check_module_types ctx m p t =
+ let t = t_infos t in
+ try
+ let path2 = ctx.com.type_to_module#find t.mt_path in
+- if m.m_path <> path2 && String.lowercase (s_type_path path2) =
String.lowercase (s_type_path m.m_path) then typing_error ("Module " ^
s_type_path path2 ^ " is loaded with a different case than " ^ s_type_path
m.m_path) p;
++ if m.m_path <> path2 && String.lowercase_ascii (s_type_path path2) =
String.lowercase_ascii (s_type_path m.m_path) then typing_error ("Module " ^
s_type_path path2 ^ " is loaded with a different case than " ^ s_type_path
m.m_path) p;
+ let m2 = ctx.com.module_lut#find path2 in
+ let hex1 = Digest.to_hex m.m_extra.m_sign in
+ let hex2 = Digest.to_hex m2.m_extra.m_sign in
+diff --git a/src/typing/typeloadParse.ml b/src/typing/typeloadParse.ml
+index fcc192381..066443ada 100644
+--- a/src/typing/typeloadParse.ml
++++ b/src/typing/typeloadParse.ml
+@@ -102,7 +102,7 @@ let resolve_module_file com m remap p =
+ with Not_found ->
+ Common.find_file com (compose_path true)
+ in
+- let file = (match String.lowercase (snd m) with
++ let file = (match ExtString.String.lowercase (snd m) with
+ | "con" | "aux" | "prn" | "nul" |
"com1" | "com2" | "com3" | "lpt1" |
"lpt2" | "lpt3" when Sys.os_type = "Win32" ->
+ (* these names are reserved by the OS - old DOS legacy, such files cannot be easily
created but are reported as visible *)
+ if (try (Unix.stat file).Unix.st_size with _ -> 0) > 0 then file else raise
Not_found
+--
+2.42.0.windows.2
+
commit 6cb4c0807c2162b538525bf4d9b99bebd2b1ad05
Author: Andy Li <andy(a)onthewings.net>
Date: Fri Sep 15 15:40:01 2023 +0000
New upstream version 4.3.2. (RHBZ#2237112)
Use the properly built haxelib. (RHBZ#2129517)
Add haxe-ocaml5.patch from upstream for OCaml 5 compat. (RHBZ#2218692)
diff --git a/.gitignore b/.gitignore
index 17f5266..286ac5c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,3 +35,4 @@
/haxe-4.3.0.tar.gz
/haxelib-f17fffa97554b1bdba37750e3418051f017a5bc2.tar.gz
/haxe-4.3.1.tar.gz
+/haxe-4.3.2.tar.gz
diff --git a/haxe.spec b/haxe.spec
index fd37d46..2495170 100644
--- a/haxe.spec
+++ b/haxe.spec
@@ -6,8 +6,8 @@ ExcludeArch: %{ix86}
%global commit_hx3compat f1f18201e5c0479cb5adf5f6028788b37f37b730
Name: haxe
-Version: 4.3.1
-Release: 3%{?dist}
+Version: 4.3.2
+Release: 1%{?dist}
Summary: Multi-target universal programming language
# As described in
https://haxe.org/foundation/open-source.html:
@@ -27,6 +27,7 @@ URL:
https://haxe.org/
Source0:
https://github.com/HaxeFoundation/%{name}/archive/%{version}.tar.gz#/%{na...
Source1:
https://github.com/HaxeFoundation/haxelib/archive/%{commit_haxelib}.tar.g...
Source2:
https://github.com/HaxeFoundation/hx3compat/archive/%{commit_hx3compat}.t...
+Patch0: haxe-ocaml5.patch
BuildRequires: make
BuildRequires: nekovm-devel >= 2.3.0
@@ -34,6 +35,7 @@ BuildRequires: ocaml
BuildRequires: ocaml-findlib
BuildRequires: ocaml-dune
BuildRequires: ocaml-camlp5-devel
+BuildRequires: ocaml-camlp-streams
BuildRequires: ocaml-sedlex-devel >= 2.0
BuildRequires: ocaml-xml-light-devel
BuildRequires: ocaml-extlib-devel >= 1.7.8
@@ -65,6 +67,7 @@ by the Haxe compiler.
%prep
%setup -q
+%patch 0 -p1
pushd extra/haxelib_src && tar -xf %{SOURCE1} --strip-components=1 &&
popd
pushd extra/haxelib_src/hx3compat && tar -xf %{SOURCE2} --strip-components=1
&& popd
@@ -72,9 +75,18 @@ pushd extra/haxelib_src/hx3compat && tar -xf %{SOURCE2}
--strip-components=1 &&
# note that the Makefile does not support parallel building
make
-# Compile haxelib
-%cmake -S extra/haxelib_src -DHAXE_COMPILER="$(realpath haxe)"
-DCMAKE_BINARY_DIR="$(pwd)"
+# Recompile haxelib.
+#
+# In the default Makefile, haxelib is built using `nekotools boot ...`.
+# It produces haxelib by concatenating the neko binary with haxelib neko bytecode.
+#
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.o...
+#
+# Instead, use the haxelib CMake, which use `nekotools boot -c ...`
+# to produce a C source code and build it with standard C toolchain.
+rm ./haxelib
+%cmake -S extra/haxelib_src -DHAXE_COMPILER="$(realpath haxe)"
%cmake_build
+mv %__cmake_builddir/haxelib .
chmod 755 haxe haxelib
@@ -114,6 +126,11 @@ popd
%{_datadir}/%{name}/
%changelog
+* Fri Sep 15 2023 Andy Li <andy(a)onthewings.net> - 4.3.2-1
+- New upstream version 4.3.2. (RHBZ#2237112)
+- Use the properly built haxelib. (RHBZ#2129517)
+- Add haxe-ocaml5.patch from upstream for OCaml 5 compat. (RHBZ#2218692)
+
* Thu Jul 20 2023 Fedora Release Engineering <releng(a)fedoraproject.org> - 4.3.1-3
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
diff --git a/sources b/sources
index efc0092..71dbfdf 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
-SHA512 (haxe-4.3.1.tar.gz) =
3c531ad9f7c496a718b1b6232cc570a2390c83ea152cf107fc8794a8581dc23f786f6c42cc7efe29b0e94733ad22f587cd58cfb794ca8657315d67699c67a761
+SHA512 (haxe-4.3.2.tar.gz) =
78d9cba573582dcfec7f1be413bb6061b90375432ede498f2d28fa8d8262d1eaa4760337ca40eb8439149aead9e00c5471d0badef58dd62bf59516be57fcbf65
SHA512 (haxelib-f17fffa97554b1bdba37750e3418051f017a5bc2.tar.gz) =
adc80c20833062a6639f352861a950a4289a06ba97dcc57e327186cec8aa7988e17b5f4df518ced9a371ae4f0fd7d065bd79f400aa48045081066fa784c6b837
SHA512 (hx3compat-f1f18201e5c0479cb5adf5f6028788b37f37b730.tar.gz) =
d3df767744c073715a5deb9e1b602006aded8335d7afe28686e9440c4d9fabe6eb29314beb7b929bb7a76de68a815a9a7c7a49d2a92183e9a5331923f70249ff
commit 8dd63ae27b48ed139e455f82afba69b2bd54322a
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Thu Jul 20 06:10:01 2023 +0000
Rebuilt for
https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/haxe.spec b/haxe.spec
index a035448..fd37d46 100644
--- a/haxe.spec
+++ b/haxe.spec
@@ -7,7 +7,7 @@ ExcludeArch: %{ix86}
Name: haxe
Version: 4.3.1
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Multi-target universal programming language
# As described in
https://haxe.org/foundation/open-source.html:
@@ -114,6 +114,9 @@ popd
%{_datadir}/%{name}/
%changelog
+* Thu Jul 20 2023 Fedora Release Engineering <releng(a)fedoraproject.org> - 4.3.1-3
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
+
* Wed Jul 12 2023 Richard W.M. Jones <rjones(a)redhat.com> - 4.3.1-2
- OCaml 5.0 rebuild for Fedora 39
commit 996ac4c31721aefd3e33dc24c73004a49cc4a0be
Author: Richard W.M. Jones <rjones(a)redhat.com>
Date: Wed Jul 12 14:01:05 2023 +0100
OCaml 5.0 rebuild for Fedora 39
diff --git a/haxe.spec b/haxe.spec
index 6fb22dc..a035448 100644
--- a/haxe.spec
+++ b/haxe.spec
@@ -7,7 +7,7 @@ ExcludeArch: %{ix86}
Name: haxe
Version: 4.3.1
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Multi-target universal programming language
# As described in
https://haxe.org/foundation/open-source.html:
@@ -114,6 +114,9 @@ popd
%{_datadir}/%{name}/
%changelog
+* Wed Jul 12 2023 Richard W.M. Jones <rjones(a)redhat.com> - 4.3.1-2
+- OCaml 5.0 rebuild for Fedora 39
+
* Sun Apr 30 2023 Andy Li <andy(a)onthewings.net> - 4.3.1-1
- New upstream version 4.3.1. (RHBZ#2185083, RHBZ#2128307)
- Update haxelib to 4.1.0.
commit 731990683e0287e77b001c219fdb893472f543c8
Author: Richard W.M. Jones <rjones(a)redhat.com>
Date: Tue Jul 11 11:36:26 2023 +0100
ExcludeArch i686
(
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.o...)
diff --git a/haxe.spec b/haxe.spec
index 64bc49c..6fb22dc 100644
--- a/haxe.spec
+++ b/haxe.spec
@@ -1,3 +1,6 @@
+# OCaml packages not built on i686 since OCaml 5 / Fedora 39.
+ExcludeArch: %{ix86}
+
%undefine _package_note_flags
%global commit_haxelib f17fffa97554b1bdba37750e3418051f017a5bc2
%global commit_hx3compat f1f18201e5c0479cb5adf5f6028788b37f37b730