From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: weis Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id SAA28935 for caml-redistribution@pauillac.inria.fr; Thu, 24 Feb 2000 18:43:47 +0100 (MET) Resent-Message-Id: <200002241743.SAA28935@pauillac.inria.fr> Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id UAA08563 for ; Mon, 21 Feb 2000 20:05:09 +0100 (MET) Received: from mail3.microsoft.com (mail3.microsoft.com [131.107.3.123]) by concorde.inria.fr (8.8.7/8.8.7) with SMTP id UAA09234 for ; Mon, 21 Feb 2000 20:05:09 +0100 (MET) Received: from 157.54.9.100 by mail3.microsoft.com (InterScan E-Mail VirusWall NT); Mon, 21 Feb 2000 11:05:05 -0800 (Pacific Standard Time) Received: by INET-IMC-03 with Internet Mail Service (5.5.2651.58) id ; Mon, 21 Feb 2000 11:02:25 -0800 Message-ID: <39ADCF833E74D111A2D700805F1951EF1801447F@RED-MSG-06> From: Don Syme To: "'caml-list@pauillac.inria.fr'" Subject: RE: Portability of applications written in OCAML Date: Mon, 21 Feb 2000 11:02:22 -0800 X-Mailer: Internet Mail Service (5.5.2651.58) Resent-From: weis@pauillac.inria.fr Resent-Date: Thu, 24 Feb 2000 18:43:47 +0100 Resent-To: caml-redistribution@pauillac.inria.fr Under Windows, I would ideally I'd like to package up binary distributions in the same way I would any other kind of application, e.g. using a "do it all for you" packager like InstallShield. Has anyone had experience of doing this with Caml applications? Thanks, Don -----Original Message----- From: Xavier Leroy [mailto:Xavier.Leroy@inria.fr] Sent: 21 February 2000 17:04 To: caml-redistribution@pauillac.inria.fr Subject: Re: Portability of applications written in OCAML Claude Marche asks: >One idea could be distributing bytecode: is it true the any bytecode >can be executed on any architecture and OS as soon as the right >ocamlrun is used? (Even under non unix OSs like Microsoft-Windows or >Mac-OS?) For MacOS, there are some problems with end-of-line being represented by different control characters in MacOS and in Unix and Windows. So, newlines in program output are broken. For MacOS and Windows, there is also the fact that file path names are represented differently. So, if your program manipulates file names, even though the Filename module, the bytecode may not work well under a different OS. I think the easiest way to distribute an OCaml application is as sources, plus binaries for a couple of popular architectures (typically, Linux/Intel and Windows). Novice users can pick the binaries, and experienced users should have no problems installing OCaml for compiling your application. Gerd Stolpmann wrote: > My suggestion: Every modern operating system can link libraries dynamically. > This is also possible for the parts of the OCaml libraries written in C > which need to be available in the runtime system. Right, I have been considering dynamic loading of C libraries as an alternative to -custom. This would allow, among other benefits, dynamic loading of Caml libraries that contain some C code. There are some portability issues with old or exotic versions of Unix, but I think it can be made to work under, say, Linux, Solaris, Digital/Tru64 Unix, and Windows. There are some issues still to be resolved, however, such as how to build shared C libraries in a portable fashion, perhaps by using the GNU libtool package. > - Only libraries needed for the application are loaded into memory; > the memory footprints become much smaller Yes and no, because static linking under C is able to remove members of the .a archive that are not referenced, while dynamic loading typically loads everything. But memory footprint of code is not much of an issue these days. - Xavier Leroy