updated ocaml

This commit is contained in:
2022-09-30 12:15:09 +02:00
parent 99dedbc446
commit 6f930cbbf7
23 changed files with 276 additions and 2734 deletions

View File

@@ -1,9 +0,0 @@
TIMESTAMP = 1532851883
SHA256 (ocaml-4.05.0.tar.xz) = 04a527ba14b4d7d1b2ea7b2ae21aefecfa8d304399db94f35a96df1459e02ef9
SIZE (ocaml-4.05.0.tar.xz) = 2442036
SHA256 (ocaml-4.05-refman-html.tar.gz) = 2524723648dbbc34b42cbe2fe06822b79837299429d26ff037169b568888cd9c
SIZE (ocaml-4.05-refman-html.tar.gz) = 882287
SHA256 (ocaml-4.05-refman.ps.gz) = 1540f86028a9460313b5ab3e0544e280052577d5dc4966f80647e1f49c5ab8df
SIZE (ocaml-4.05-refman.ps.gz) = 1221553
SHA256 (ocaml-4.05-refman.pdf) = 3d3a82a676668ccf66fa6d88f46a2496c89b1488ee6098585a6b7f22a9171eef
SIZE (ocaml-4.05-refman.pdf) = 1741857

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@
# for committer: bump PORTREVISION for math/facile whenever ocaml gets updated
PORTNAME= ocaml
PORTVERSION= 4.05.0
PORTVERSION= 4.07.1
CATEGORIES= lang
MASTER_SITES+= http://caml.inria.fr/pub/distrib/${DISTNAME:R}/ GENTOO
MASTER_SITES+= http://caml.inria.fr/pub/distrib/${DISTNAME:R}/:docs
@@ -13,7 +13,7 @@ MAINTAINER= michipili@gmail.com
COMMENT= Objective Caml compiler and programming environment
BROKEN_aarch64= Does not build: sh: as: not found
#BROKEN_aarch64= Does not build: sh: as: not found
BROKEN_sparc64= No rule to make target 'none.o', needed by 'libasmrun.a'
BROKEN_mips64= No ASM support
BROKEN_mips= No ASM support
@@ -54,15 +54,14 @@ post-patch:
${REINPLACE_CMD} \
-e '\|MKLIB=|s|ar rc|${AR} rc|' \
-e '\|RANLIB|s|ranlib|${RANLIB}|' \
-e '\|bytecclinkopts=|s|""|"${LDFLAGS}"|' \
-e "\|nativecclinkopts=|s|''|\"${LDFLAGS:C/-Wl,//}\"|" \
-e '\|^ldflags=|s|""|"${LDFLAGS}"|' \
${WRKSRC}/configure
${REINPLACE_CMD} -e 's,$$(ARCH),$$(SYSTEM_ARCH),' \
${WRKSRC}/Makefile ${WRKSRC}/Makefile.tools \
${WRKSRC}/asmrun/Makefile \
${WRKSRC}/ocamltest/Makefile \
${WRKSRC}/otherlibs/systhreads/Makefile \
${WRKSRC}/testsuite/makefiles/Makefile.common \
${WRKSRC}/testsuite/tests/asmcomp/Makefile
${WRKSRC}/testsuite/tests/asmgen/Makefile
post-configure:
${REINPLACE_CMD} -E \

3
lang/ocaml407/distinfo Normal file
View File

@@ -0,0 +1,3 @@
TIMESTAMP = 1664531881
SHA256 (ocaml-4.07.1.tar.xz) = dfe48b1da31da9c82d77612582fae74c80e8d1ac650e1c24f5ac9059e48307b8
SIZE (ocaml-4.07.1.tar.xz) = 2935928

View File

@@ -0,0 +1,10 @@
--- asmrun/startup.c.orig 2017-07-13 08:56:44 UTC
+++ asmrun/startup.c
@@ -44,7 +44,6 @@
#endif
extern int caml_parser_trace;
-CAMLexport header_t caml_atom_table[256];
char * caml_code_area_start, * caml_code_area_end;
struct ext_table caml_code_fragments_table;

View File

@@ -0,0 +1,11 @@
--- asmrun/amd64.S.orig 2020-08-22 20:02:29 UTC
+++ asmrun/amd64.S
@@ -725,7 +725,7 @@ G(caml_system__spacetime_shapes):
#elif defined(SYS_mingw64) || defined(SYS_cygwin)
.section .rdata,"dr"
#else
- .section .rodata.cst8,"a",@progbits
+ .section .rodata.cst8,"aM",@progbits,8
#endif
.globl G(caml_negf_mask)
.align SIXTEEN_ALIGN

View File

@@ -0,0 +1,12 @@
--- byterun/backtrace.c.orig 2020-08-22 14:46:44 UTC
+++ byterun/backtrace.c
@@ -27,9 +27,6 @@
#include "caml/backtrace_prim.h"
#include "caml/fail.h"
-/* The table of debug information fragments */
-struct ext_table caml_debug_info;
-
CAMLexport int32_t caml_backtrace_active = 0;
CAMLexport int32_t caml_backtrace_pos = 0;
CAMLexport backtrace_slot * caml_backtrace_buffer = NULL;

View File

@@ -1,22 +1,13 @@
--- configure.orig 2017-07-13 08:56:44 UTC
+++ configure
@@ -806,7 +806,7 @@ if test $with_sharedlibs = "yes"; then
*-*-linux-gnu|*-*-linux|*-*-freebsd[3-9]*|*-*-freebsd[1-9][0-9]*\
|*-*-openbsd*|*-*-netbsd*|*-*-dragonfly*|*-*-gnu*|*-*-haiku*)
sharedcccompopts="-fPIC"
- mksharedlib="$bytecc -shared"
+ mksharedlib="$bytecc $bytecclinkopts -shared"
bytecclinkopts="$bytecclinkopts -Wl,-E"
byteccrpath="-Wl,-rpath,"
mksharedlibrpath="-Wl,-rpath,"
@@ -838,6 +838,7 @@ if test $with_sharedlibs = "yes"; then
x86_64-*-darwin*) natdynlink=true;;
s390x*-*-linux*) natdynlink=true;;
powerpc*-*-linux*) natdynlink=true;;
+ powerpc*-*-freebsd*) natdynlink=true;;
sparc*-*-linux*) natdynlink=true;;
i686-*-kfreebsd*) natdynlink=true;;
x86_64-*-kfreebsd*) natdynlink=true;;
x86_64-*-dragonfly*) natdynlink=true;;
@@ -854,6 +855,7 @@ if test $with_sharedlibs = "yes"; then
arm*-*-freebsd*) natdynlink=true;;
earm*-*-netbsd*) natdynlink=true;;
@@ -25,17 +16,18 @@
esac
fi
@@ -921,6 +923,9 @@ case "$target" in
@@ -921,6 +923,10 @@ case "$target" in
powerpc*-*-linux*) arch=power;
if $arch64; then model=ppc64; else model=ppc; fi
system=elf;;
+ powerpc64le*-*-freebsd*) arch=power; model=ppc64le; system=bsd_elf;;
+ powerpc*-*-freebsd*) arch=power;
+ if $arch64; then model=ppc64; else model=ppc; fi
+ system=bsd_elf;;
powerpc-*-netbsd*) arch=power; model=ppc; system=elf;;
powerpc-*-netbsd*) arch=power; model=ppc; system=netbsd;;
powerpc-*-openbsd*) arch=power; model=ppc; system=bsd_elf;;
s390x*-*-linux*) arch=s390x; model=z10; system=elf;;
@@ -930,6 +935,7 @@ case "$target" in
@@ -930,6 +936,7 @@ case "$target" in
armv6t2*-*-linux-gnueabi) arch=arm; model=armv6t2; system=linux_eabi;;
armv6*-*-linux-gnueabi) arch=arm; model=armv6; system=linux_eabi;;
armv6*-*-freebsd*) arch=arm; model=armv6; system=freebsd;;
@@ -43,7 +35,7 @@
earmv6*-*-netbsd*) arch=arm; model=armv6; system=netbsd;;
earmv7*-*-netbsd*) arch=arm; model=armv7; system=netbsd;;
armv5te*-*-linux-gnueabi) arch=arm; model=armv5te; system=linux_eabi;;
@@ -946,6 +952,7 @@ case "$target" in
@@ -946,6 +953,7 @@ case "$target" in
x86_64-*-darwin*) arch=amd64; system=macosx;;
x86_64-*-mingw*) arch=amd64; system=mingw;;
aarch64-*-linux*) arch=arm64; system=linux;;
@@ -51,8 +43,8 @@
x86_64-*-cygwin*) arch=amd64; system=cygwin;;
esac
@@ -1051,10 +1058,12 @@ case "$arch,$system" in
case "$nativecc" in gcc*) ;; *) cc_profile='-xpg';; esac;;
@@ -1086,10 +1094,13 @@ case "$arch,$system" in
i386,macosx) profiling='true';;
amd64,linux) profiling='true';;
amd64,openbsd) profiling='true';;
+ amd64,dragonfly) profiling='true';;
@@ -60,25 +52,26 @@
amd64,netbsd) profiling='true';;
arm,netbsd) profiling='true';;
amd64,gnu) profiling='true';;
+ arm64,freebsd) profiling='true';;
+ arm,freebsd) profiling='true';;
arm,linux*) profiling='true';;
power,elf) profiling='true';;
power,bsd*) profiling='true';;
@@ -1168,7 +1177,7 @@ fi
if test "$with_curses" = "yes"; then
for libs in "" "-lcurses" "-ltermcap" "-lcurses -ltermcap" "-lncurses"; do
- if sh ./hasgot $libs tgetent tgetstr tgetnum tputs; then
+ if sh ./hasgot -i term.h $libs tgetent tgetstr tgetnum tputs; then
inf "termcap functions found (with libraries '$libs')"
echo "#define HAS_TERMCAP" >> s.h
curseslibs="${libs}"
@@ -2029,7 +2037,7 @@ MKLIB=${TOOLPREF}ar rc \$(1) \$(2); ${TOOLPREF}ranlib
#ml Printf.sprintf "${TOOLPREF}ar rc %s %s %s; ${TOOLPREF}ranlib %s"
#ml Printf.sprintf "${TOOLPREF}ar rc %s %s %s && ${TOOLPREF}ranlib %s"
#ml out opts files out;;
EOF
-echo "ARCH=$arch" >> Makefile
+echo "SYSTEM_ARCH=$arch" >> Makefile
echo "MODEL=$model" >> Makefile
echo "SYSTEM=$system" >> Makefile
echo "NATIVECC=$nativecc $nativecccompopts" >> Makefile
-config ARCH "$arch"
+config SYSTEM_ARCH "$arch"
config MODEL "$model"
config SYSTEM "$system"
config OCAMLOPT_CFLAGS "$common_cflags"
@@ -2112,7 +2122,7 @@ config NATDYNLINK "$natdynlink"
config CMXS "$cmxs"
config MKEXE "$mkexe"
config MKEXEDEBUGFLAG "$mkexedebugflag"
-config MKDLL "$mksharedlib"
+config MKDLL "$mksharedlib \$(LDFLAGS)"
config MKMAINDLL "$mkmaindll"
config RUNTIMED "${debugruntime}"
config RUNTIMEI "${with_instrumented_runtime}"

View File

@@ -1,5 +1,5 @@
--- testsuite/tests/asmcomp/power.S.orig 2019-12-02 12:36:28 UTC
+++ testsuite/tests/asmcomp/power.S
--- testsuite/tests/asmgen/power.S.orig 2019-12-02 12:36:28 UTC
+++ testsuite/tests/asmgen/power.S
@@ -26,11 +26,11 @@
#define RESERVED_STACK 16
#define LR_SAVE_AREA 4

File diff suppressed because it is too large Load Diff

View File

@@ -1,21 +0,0 @@
# Created by: Kiriyama Kazuhiko <kiri@kiri.toba-cmt.ac.jp>
# $FreeBSD: head/lang/ocaml/Makefile 536967 2020-05-29 11:27:54Z antoine $
# for committer: bump PORTREVISION for math/facile whenever ocaml gets updated
PORTNAME= ocaml
PORTVERSION= 4.10.0
CATEGORIES= lang
MASTER_SITES+= http://caml.inria.fr/pub/distrib/${DISTNAME:R}/ GENTOO
MASTER_SITES+= http://caml.inria.fr/pub/distrib/${DISTNAME:R}/:docs
PKGNAMESUFFIX= ${SFX}
MAINTAINER= michipili@gmail.com
COMMENT= Objective Caml compiler and programming environment
USES= compiler:c11 gmake tar:xz autoreconf
USE_LDCONFIG= yes
GNU_CONFIGURE= yes
SSP_UNSAFE= yes
MAKE_JOBS_UNSAFE= yes
.include <bsd.port.mk>

View File

@@ -1,3 +0,0 @@
TIMESTAMP = 1593075385
SHA256 (ocaml-4.10.0.tar.xz) = 30734db17b609fdd1609c39a05912325c299023968a2c783e5955dd5163dfeb7
SIZE (ocaml-4.10.0.tar.xz) = 3416016

View File

@@ -1,99 +0,0 @@
--- asmrun/power.S.orig 2019-12-02 12:34:04 UTC
+++ asmrun/power.S
@@ -13,7 +13,7 @@
/* */
/**************************************************************************/
-#if defined(MODEL_ppc64le)
+#if _CALL_ELF == 2
.abiversion 2
#endif
@@ -42,7 +42,7 @@
#define CALLBACK_LINK_SIZE 16
#define CALLBACK_LINK_OFFSET 0
#endif
-#if defined(MODEL_ppc64)
+#if _CALL_ELF == 1
#define RESERVED_STACK 48
#define PARAM_SAVE_AREA (8*8)
#define LR_SAVE 16
@@ -54,7 +54,7 @@
#define CALLBACK_LINK_SIZE 32
#define CALLBACK_LINK_OFFSET 48
#endif
-#if defined(MODEL_ppc64le)
+#if _CALL_ELF == 2
#define RESERVED_STACK 32
#define PARAM_SAVE_AREA 0
#define LR_SAVE 16
@@ -82,7 +82,7 @@
#endif
-#if defined(MODEL_ppc64)
+#if _CALL_ELF == 1
#define FUNCTION(name) \
.section ".opd","aw"; \
.align 3; \
@@ -98,7 +98,7 @@
#endif
-#if defined(MODEL_ppc64le)
+#if _CALL_ELF == 2
#define FUNCTION(name) \
.section ".text"; \
.globl name; \
@@ -157,7 +157,7 @@
#endif
-#if defined(MODEL_ppc64)
+#if _CALL_ELF == 1
.section ".opd","aw"
#else
.section ".text"
@@ -338,14 +338,14 @@ FUNCTION(caml_c_call)
#if defined(MODEL_ppc)
mtctr 28
bctrl
-#elif defined(MODEL_ppc64)
+#elif _CALL_ELF == 1
ld 0, 0(28)
mr 26, 2 /* save current TOC in a callee-save register */
mtctr 0
ld 2, 8(28)
bctrl
mr 2, 26 /* restore current TOC */
-#elif defined(MODEL_ppc64le)
+#elif _CALL_ELF == 2
mtctr 28
mr 12, 28
mr 26, 2 /* save current TOC in a callee-save register */
@@ -514,14 +514,14 @@ FUNCTION(caml_start_program)
#if defined(MODEL_ppc)
mtctr 12
.L105: bctrl
-#elif defined(MODEL_ppc64)
+#elif _CALL_ELF == 1
ld 0, 0(12)
mtctr 0
std 2, TOC_SAVE(1)
ld 2, 8(12)
.L105: bctrl
ld 2, TOC_SAVE(1)
-#elif defined(MODEL_ppc64le)
+#elif _CALL_ELF == 2
mtctr 12
std 2, TOC_SAVE(1)
.L105: bctrl
@@ -634,7 +634,7 @@ FUNCTION(caml_callback3_exn)
b .L102
ENDFUNCTION(caml_callback3_exn)
-#if defined(MODEL_ppc64)
+#if _CALL_ELF == 1
.section ".opd","aw"
#else
.section ".text"

View File

@@ -1,15 +0,0 @@
--- byterun/caml/stack.h.orig 2017-07-13 08:56:44 UTC
+++ byterun/caml/stack.h
@@ -40,10 +40,10 @@
#if defined(MODEL_ppc)
#define Saved_return_address(sp) *((intnat *)((sp) - 4))
#define Callback_link(sp) ((struct caml_context *)((sp) + 16))
-#elif defined(MODEL_ppc64)
+#elif _CALL_ELF == 1
#define Saved_return_address(sp) *((intnat *)((sp) + 16))
#define Callback_link(sp) ((struct caml_context *)((sp) + (48 + 32)))
-#elif defined(MODEL_ppc64le)
+#elif _CALL_ELF == 2
#define Saved_return_address(sp) *((intnat *)((sp) + 16))
#define Callback_link(sp) ((struct caml_context *)((sp) + (32 + 32)))
#else

View File

@@ -1,84 +0,0 @@
--- configure.orig 2017-07-13 08:56:44 UTC
+++ configure
@@ -806,7 +806,7 @@ if test $with_sharedlibs = "yes"; then
*-*-linux-gnu|*-*-linux|*-*-freebsd[3-9]*|*-*-freebsd[1-9][0-9]*\
|*-*-openbsd*|*-*-netbsd*|*-*-dragonfly*|*-*-gnu*|*-*-haiku*)
sharedcccompopts="-fPIC"
- mksharedlib="$bytecc -shared"
+ mksharedlib="$bytecc $bytecclinkopts -shared"
bytecclinkopts="$bytecclinkopts -Wl,-E"
byteccrpath="-Wl,-rpath,"
mksharedlibrpath="-Wl,-rpath,"
@@ -838,6 +838,7 @@ if test $with_sharedlibs = "yes"; then
x86_64-*-darwin*) natdynlink=true;;
s390x*-*-linux*) natdynlink=true;;
powerpc*-*-linux*) natdynlink=true;;
+ powerpc*-*-freebsd*) natdynlink=true;;
sparc*-*-linux*) natdynlink=true;;
i686-*-kfreebsd*) natdynlink=true;;
x86_64-*-kfreebsd*) natdynlink=true;;
@@ -854,6 +855,7 @@ if test $with_sharedlibs = "yes"; then
arm*-*-freebsd*) natdynlink=true;;
earm*-*-netbsd*) natdynlink=true;;
aarch64-*-linux*) natdynlink=true;;
+ aarch64-*-freebsd*) natdynlink=true;;
esac
fi
@@ -921,6 +923,9 @@ case "$target" in
powerpc*-*-linux*) arch=power;
if $arch64; then model=ppc64; else model=ppc; fi
system=elf;;
+ powerpc*-*-freebsd*) arch=power;
+ if $arch64; then model=ppc64; else model=ppc; fi
+ system=bsd_elf;;
powerpc-*-netbsd*) arch=power; model=ppc; system=elf;;
powerpc-*-openbsd*) arch=power; model=ppc; system=bsd_elf;;
s390x*-*-linux*) arch=s390x; model=z10; system=elf;;
@@ -930,6 +935,7 @@ case "$target" in
armv6t2*-*-linux-gnueabi) arch=arm; model=armv6t2; system=linux_eabi;;
armv6*-*-linux-gnueabi) arch=arm; model=armv6; system=linux_eabi;;
armv6*-*-freebsd*) arch=arm; model=armv6; system=freebsd;;
+ armv7*-*-freebsd*) arch=arm; model=armv7; system=freebsd;;
earmv6*-*-netbsd*) arch=arm; model=armv6; system=netbsd;;
earmv7*-*-netbsd*) arch=arm; model=armv7; system=netbsd;;
armv5te*-*-linux-gnueabi) arch=arm; model=armv5te; system=linux_eabi;;
@@ -946,6 +952,7 @@ case "$target" in
x86_64-*-darwin*) arch=amd64; system=macosx;;
x86_64-*-mingw*) arch=amd64; system=mingw;;
aarch64-*-linux*) arch=arm64; system=linux;;
+ aarch64-*-freebsd*) arch=arm64; system=freebsd;;
x86_64-*-cygwin*) arch=amd64; system=cygwin;;
esac
@@ -1051,10 +1058,12 @@ case "$arch,$system" in
case "$nativecc" in gcc*) ;; *) cc_profile='-xpg';; esac;;
amd64,linux) profiling='true';;
amd64,openbsd) profiling='true';;
+ amd64,dragonfly) profiling='true';;
amd64,freebsd) profiling='true';;
amd64,netbsd) profiling='true';;
arm,netbsd) profiling='true';;
amd64,gnu) profiling='true';;
+ arm,freebsd) profiling='true';;
arm,linux*) profiling='true';;
power,elf) profiling='true';;
power,bsd*) profiling='true';;
@@ -1168,7 +1177,7 @@ fi
if test "$with_curses" = "yes"; then
for libs in "" "-lcurses" "-ltermcap" "-lcurses -ltermcap" "-lncurses"; do
- if sh ./hasgot $libs tgetent tgetstr tgetnum tputs; then
+ if sh ./hasgot -i term.h $libs tgetent tgetstr tgetnum tputs; then
inf "termcap functions found (with libraries '$libs')"
echo "#define HAS_TERMCAP" >> s.h
curseslibs="${libs}"
@@ -2029,7 +2037,7 @@ MKLIB=${TOOLPREF}ar rc \$(1) \$(2); ${TOOLPREF}ranlib
#ml Printf.sprintf "${TOOLPREF}ar rc %s %s %s; ${TOOLPREF}ranlib %s"
#ml out opts files out;;
EOF
-echo "ARCH=$arch" >> Makefile
+echo "SYSTEM_ARCH=$arch" >> Makefile
echo "MODEL=$model" >> Makefile
echo "SYSTEM=$system" >> Makefile
echo "NATIVECC=$nativecc $nativecccompopts" >> Makefile

View File

@@ -1,62 +0,0 @@
--- testsuite/tests/asmcomp/power.S.orig 2019-12-02 12:36:28 UTC
+++ testsuite/tests/asmcomp/power.S
@@ -26,11 +26,11 @@
#define RESERVED_STACK 16
#define LR_SAVE_AREA 4
#endif
-#if defined(MODEL_ppc64)
+#if _CALL_ELF == 1
#define RESERVED_STACK 48
#define LR_SAVE_AREA 16
#endif
-#if defined(MODEL_ppc64le)
+#if _CALL_ELF == 2
#define RESERVED_STACK 32
#define LR_SAVE_AREA 16
#endif
@@ -46,7 +46,7 @@
name:
#endif
-#if defined(MODEL_ppc64)
+#if _CALL_ELF == 1
#define FUNCTION(name) \
.section ".opd","aw"; \
.align 3; \
@@ -58,7 +58,7 @@
.L.name:
#endif
-#if defined(MODEL_ppc64le)
+#if _CALL_ELF == 2
#define FUNCTION(name) \
.section ".text"; \
.globl name; \
@@ -118,11 +118,11 @@ FUNCTION(call_gen_code)
/* Get function pointer in CTR */
#if defined(MODEL_ppc)
mtctr 3
-#elif defined(MODEL_ppc64)
+#elif _CALL_ELF == 1
ld 0, 0(3)
mtctr 0
ld 2, 8(3)
-#elif defined(MODEL_ppc64le)
+#elif _CALL_ELF == 2
mtctr 3
mr 12, 3
#else
@@ -184,11 +184,11 @@ FUNCTION(caml_c_call)
/* Jump to C function (address in r28) */
#if defined(MODEL_ppc)
mtctr 28
-#elif defined(MODEL_ppc64)
+#elif _CALL_ELF == 1
ld 0, 0(28)
mtctr 0
ld 2, 8(28)
-#elif defined(MODEL_ppc64le)
+#elif _CALL_ELF == 2
mtctr 28
mr 12, 28
#else

View File

@@ -1,11 +0,0 @@
--- asmcomp/power/arch.ml.orig 2019-12-02 10:44:34 UTC
+++ asmcomp/power/arch.ml
@@ -28,7 +28,7 @@ type abi = ELF32 | ELF64v1 | ELF64v2
let abi =
match Config.model with
| "ppc" -> ELF32
- | "ppc64" -> ELF64v1
+ | "ppc64" -> ELF64v2
| "ppc64le" -> ELF64v2
| _ -> assert false

View File

@@ -1,11 +0,0 @@
--- ./configure.ac.orig 2020-02-21 16:22:37.000000000 +0200
+++ ./configure.ac 2020-06-25 11:17:52.476328000 +0200
@@ -928,6 +928,8 @@
[arch=arm64; system=linux],
[aarch64-*-freebsd*],
[arch=arm64; system=freebsd],
+ [amd64-*-freebsd*],
+ [arch=amd64; system=freebsd],
[x86_64-*-cygwin*],
[arch=amd64; system=cygwin]
)

View File

@@ -1,19 +0,0 @@
Objective Caml is an implementation of the ML language, based on
the Caml Light dialect extended with a complete class-based object system
and a powerful module system in the style of Standard ML.
Objective Caml comprises two compilers. One generates bytecode
which is then interpreted by a C program. This compiler runs quickly,
generates compact code with moderate memory requirements, and is
portable to essentially any 32 or 64 bit Unix platform. Performance of
generated programs is quite good for a bytecoded implementation:
almost twice as fast as Caml Light 0.7. This compiler can be used
either as a standalone, batch-oriented compiler that produces
standalone programs, or as an interactive, toplevel-based system.
The other compiler generates high-performance native code for a number
of processors. Compilation takes longer and generates bigger code, but
the generated programs deliver excellent performance, while retaining
the moderate memory requirements of the bytecode compiler.
WWW: https://ocaml.org/