From: Paul Snively <psnively@mac.com>
To: Xavier Leroy <Xavier.Leroy@inria.fr>
Cc: Caml List <caml-list@inria.fr>
Subject: Re: [Caml-list] beta-test of OCaml 3.10.0
Date: Sat, 10 Mar 2007 13:24:30 -0800 [thread overview]
Message-ID: <B9193F9E-4EEE-411E-BB81-8973E685E5B4@mac.com> (raw)
In-Reply-To: <45EEB9CE.9080405@inria.fr>
[-- Attachment #1: Type: text/plain, Size: 1365 bytes --]
Dr. Leroy:
First, my deepest thanks to you and your colleagues for your
excellent, hard work on the Objective Caml system and its related
tools. I'm simultaneously learning a tremendous amount from
programming in O'Caml and having great fun doing so.
I'm curious as to whether there's any chance of having (some variant
of) the attached patch applied to the O'Caml 3.10.0 codebase. The
attached patch was provided to me by Alon Kama, maintainer of the
Ensemble process group communication system, in support of enabling
Ensemble 2.01 to work correctly on Mac OS X. As you know, Mac OS X is
a BSD-derived platform, hence makes the distinction between
SO_REUSEADDR and SO_REUSEPORT in socket options related socket
rebinding--a distinction that affects much server-oriented socket
code. So this patch should benefit any BSD-derived platform, not only
Mac OS X. Having said that, I cannot honestly say that I fully
understand what changes, particularly conditionalization, might be
necessary to ensure its proper use on all supported O'Caml platforms;
nor, of course, can I say whether making that determination with your
available staff, hardware, OS, and time resources is realistic at
all, let alone in the time remaining to deliver O'Caml 3.10.0. So I
appreciate your forbearance.
Many thanks and best regards,
Paul Snively
[-- Attachment #2: ocaml-3.08.3.the_patch.txt --]
[-- Type: text/plain, Size: 2831 bytes --]
diff -Naur ocaml-3.08.3.orig/otherlibs/threads/unix.ml ocaml-3.08.3.patched/otherlibs/threads/unix.ml
--- ocaml-3.08.3.orig/otherlibs/threads/unix.ml Sat Nov 6 11:14:58 2004
+++ ocaml-3.08.3.patched/otherlibs/threads/unix.ml Sun Jul 10 17:54:35 2005
@@ -544,6 +544,7 @@
SO_DEBUG
| SO_BROADCAST
| SO_REUSEADDR
+ | SO_REUSEPORT
| SO_KEEPALIVE
| SO_DONTROUTE
| SO_OOBINLINE
diff -Naur ocaml-3.08.3.orig/otherlibs/unix/sockopt.c ocaml-3.08.3.patched/otherlibs/unix/sockopt.c
--- ocaml-3.08.3.orig/otherlibs/unix/sockopt.c Mon Jan 17 19:10:36 2005
+++ ocaml-3.08.3.patched/otherlibs/unix/sockopt.c Sun Jul 10 17:56:34 2005
@@ -35,6 +35,9 @@
#ifndef SO_REUSEADDR
#define SO_REUSEADDR (-1)
#endif
+#ifndef SO_REUSEPORT
+#define SO_REUSEPORT (-1)
+#endif
#ifndef SO_KEEPALIVE
#define SO_KEEPALIVE (-1)
#endif
@@ -76,7 +79,7 @@
#endif
static int sockopt_bool[] = {
- SO_DEBUG, SO_BROADCAST, SO_REUSEADDR, SO_KEEPALIVE,
+ SO_DEBUG, SO_BROADCAST, SO_REUSEADDR, SO_REUSEPORT, SO_KEEPALIVE,
SO_DONTROUTE, SO_OOBINLINE, SO_ACCEPTCONN };
static int sockopt_int[] = {
diff -Naur ocaml-3.08.3.orig/otherlibs/unix/unix.ml ocaml-3.08.3.patched/otherlibs/unix/unix.ml
--- ocaml-3.08.3.orig/otherlibs/unix/unix.ml Sat Nov 6 11:14:58 2004
+++ ocaml-3.08.3.patched/otherlibs/unix/unix.ml Sun Jul 10 17:57:40 2005
@@ -436,6 +436,7 @@
SO_DEBUG
| SO_BROADCAST
| SO_REUSEADDR
+ | SO_REUSEPORT
| SO_KEEPALIVE
| SO_DONTROUTE
| SO_OOBINLINE
diff -Naur ocaml-3.08.3.orig/otherlibs/unix/unix.mli ocaml-3.08.3.patched/otherlibs/unix/unix.mli
--- ocaml-3.08.3.orig/otherlibs/unix/unix.mli Wed Dec 22 17:11:13 2004
+++ ocaml-3.08.3.patched/otherlibs/unix/unix.mli Sun Jul 10 18:05:16 2005
@@ -988,6 +988,7 @@
SO_DEBUG (** Record debugging information *)
| SO_BROADCAST (** Permit sending of broadcast messages *)
| SO_REUSEADDR (** Allow reuse of local addresses for bind *)
+ | SO_REUSEPORT
| SO_KEEPALIVE (** Keep connection active *)
| SO_DONTROUTE (** Bypass the standard routing algorithms *)
| SO_OOBINLINE (** Leave out-of-band data in line *)
diff -Naur ocaml-3.08.3.orig/otherlibs/unix/unixLabels.mli ocaml-3.08.3.patched/otherlibs/unix/unixLabels.mli
--- ocaml-3.08.3.orig/otherlibs/unix/unixLabels.mli Fri Jul 2 11:37:17 2004
+++ ocaml-3.08.3.patched/otherlibs/unix/unixLabels.mli Sun Jul 10 17:58:36 2005
@@ -1003,6 +1003,7 @@
SO_DEBUG (** Record debugging information *)
| SO_BROADCAST (** Permit sending of broadcast messages *)
| SO_REUSEADDR (** Allow reuse of local addresses for bind *)
+ | SO_REUSEPORT
| SO_KEEPALIVE (** Keep connection active *)
| SO_DONTROUTE (** Bypass the standard routing algorithms *)
| SO_OOBINLINE (** Leave out-of-band data in line *)
[-- Attachment #3: Type: text/plain, Size: 4787 bytes --]
On Mar 7, 2007, at 5:10 AM, Xavier Leroy wrote:
> Hello,
>
> The long-awaited release 3.10 of Objective Caml is making good
> progress and is now ready for beta-testing. A source-only
> beta distribution can be downloaded from
>
> http://caml.inria.fr/pub/distrib/ocaml-3.10/ocaml-3.10.0
> +beta.tar.gz
>
> We would be grateful if some of you could compile it, give it a
> good workout on your favorite Caml programs, and report any problems
> you might encounter via the Caml bug tracker.
>
> The main novelties in 3.10 are:
>
> - A new tool: ocamlbuild, a compilation manager for OCaml projects.
> - Much work on Camlp4, including a new API.
> - A long-awaited feature: stack backtraces on uncaught exceptions
> that work for native-code as well as for bytecode.
> - Two new 64-bit ports: to Windows 64/AMD64 and MacOS X/PowerPC 64.
>
> Other changes are listed below.
>
> The documentation is not up to date yet, but some preliminary
> documentation on ocamlbuild and the new Camlp4 can be found on
> Nicolas Pouillard's Web page, http://gallium.inria.fr/~pouillar/
>
> Enjoy,
>
> - Xavier Leroy, for the Caml development team
>
> ----------------------------------------------------------------------
>
> Objective Caml 3.10.0:
> ----------------------
>
> (Changes that can break existing programs are marked with a "*" )
>
> Language features:
> - Added virtual instance variables in classes "val virtual v : t"
> * Changed the behaviour of instance variable overriding; the new
> definition replaces the old one, rather than creating a new
> variable.
>
> New tools:
> - ocamlbuild: compilation manager for OCaml applications and
> libraries.
> See draft documentation at http://gallium.inria.fr/~pouillar/
> * Camlp4: heavily revised implementation, new API.
>
> New ports:
> - MacOS X PowerPC 64 bits.
> - MS Windows 64 bits (x64) using the Microsoft PSDK toolchain.
> - MS Windows 32 bits using the Visual Studio 2005 toolchain.
>
> Compilers:
> - Faster type-checking of functor applications.
> - Referencing an interface compiled with -rectypes from a module
> not compiled with -rectypes is now an error.
> - Revised the "fragile matching" warning.
>
> Native-code compiler:
> - Print a stack backtrace on an uncaught exception.
> (Compile and link with ocamlopt -g; execute with OCAMLRUNPARAM=b.)
> Supported on Intel/AMD in 32 and 64 bits, PPC in 32 and 64 bits.
> - Stack overflow detection on MS Windows 32 bits (courtesy O.
> Andrieu).
> - Stack overflow detection on MacOS X PPC and Intel.
> - Intel/AMD 64 bits: generate position-independent code by default.
> - Fixed bug involving -for-pack and missing .cmx files (PR#4124).
> - Fixed bug causing duplication of literals (PR#4152).
>
> Run-time system:
> - C/Caml interface functions take "char const *" arguments
> instead of "char *" when appropriate.
> - Faster string comparisons (fast case if strings are ==).
>
> Standard library:
> - Refined typing of format strings (type format6).
> - Printf, Format: new function ifprintf that consumes its arguments
> and prints nothing (useful to print conditionally).
> - Scanf:
> new function format_from_string to convert a string to a format
> string;
> new %r conversion to accomodate user defined scanners.
> - Filename: improved Win32 implementation of Filename.quote.
> - List: List.nth now tail-recursive.
> - Sys: added Sys.is_directory. Some functions (e.g. Sys.command) that
> could incorrectly raise Sys_io_blocked now raise Sys_error as
> intended.
>
> Other libraries:
> - Bigarray: mmap_file takes an optional argument specifying
> the start position of the data in the mapped file.
> - Dynlink: now defines only two modules, Dynlink and Dynlinkaux
> (internal),
> reducing risks of name conflicts with user modules.
> - Labltk under Win32: now uses Tcl/Tk 8.4 instead of 8.3 by default.
> - VM threads: improved performance of I/O operations (less polling).
> - Unix: new function Unix.isatty.
> - Unix emulation under Win32:
> fixed incorrect error reporting in several functions (PR#4097);
> better handling of channels opened on sockets (PR#4098);
> fixed GC bug in Unix.system (PR#4112).
>
> Documentation generator (OCamldoc):
> - correctly handle '?' in value names (PR#4215)
> - new option -hide-warnings not to print ocamldoc warnings
>
> Lexer generator (ocamllex): improved error reporting.
>
> License: fixed a typo in the "special exception" to the LGPL.
>
> _______________________________________________
> Caml-list mailing list. Subscription management:
> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> Archives: http://caml.inria.fr
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
next prev parent reply other threads:[~2007-03-10 21:24 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-07 13:10 Xavier Leroy
2007-03-07 14:08 ` [Caml-list] " micha
2007-03-07 14:12 ` Joel Reymont
2007-03-07 14:54 ` micha
2007-03-07 15:00 ` Nicolas Pouillard
2007-03-07 15:01 ` Nicolas Pouillard
2007-03-07 15:17 ` Joel Reymont
2007-03-07 15:39 ` Vu Ngoc San
2007-03-07 15:47 ` Nicolas Pouillard
2007-03-10 21:24 ` Paul Snively [this message]
2007-03-12 11:17 ` Sven Luther
2007-03-16 8:54 ` Mike Lin
2007-03-16 8:58 ` Nicolas Pouillard
2007-03-16 9:06 ` Gabriel Kerneis
2007-03-16 9:19 ` Olivier Andrieu
2007-03-17 17:46 ` Peter Halacsy
2007-03-17 17:54 ` Nicolas Pouillard
2007-03-18 7:57 ` ocamlbuild and ocamlfind / was: " Peter Halacsy
2007-03-18 10:04 ` Nicolas Pouillard
2007-03-20 20:00 ` Oliver Bandel
2007-03-07 15:53 ocamlbuild is VERY nifty Joel Reymont
2007-03-07 20:55 ` [Caml-list] beta-test of OCaml 3.10.0 Jon Harrop
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=B9193F9E-4EEE-411E-BB81-8973E685E5B4@mac.com \
--to=psnively@mac.com \
--cc=Xavier.Leroy@inria.fr \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox