From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.1.3 Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by yquem.inria.fr (Postfix) with ESMTP id 69F98BBAF for ; Tue, 14 Oct 2008 01:36:01 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvoDALd480jAXQIniGdsb2JhbACBcpFqAQEBFSKpEoFs X-IronPort-AV: E=Sophos;i="4.33,405,1220220000"; d="scan'208";a="16035807" Received: from concorde.inria.fr ([192.93.2.39]) by mail2-smtp-roc.national.inria.fr with ESMTP; 14 Oct 2008 01:35:57 +0200 Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id m9DNZug4027789 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Tue, 14 Oct 2008 01:35:57 +0200 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgACAHt480hDWxLCbmdsb2JhbACBcpFqPqkMgWw X-IronPort-AV: E=Sophos;i="4.33,405,1220220000"; d="scan'208";a="30292033" Received: from ip67-91-18-194.z18-91-67.customer.algx.net (HELO server1.bertec.net) ([67.91.18.194]) by mail4-smtp-sop.national.inria.fr with ESMTP; 14 Oct 2008 01:35:55 +0200 Received: from kuba.bertec.net (kuba.bertec.net [192.168.2.16]) by server1.bertec.net (Postfix) with ESMTP id 2FE89105761 for ; Mon, 13 Oct 2008 19:35:54 -0400 (EDT) From: Kuba Ober To: caml-list@inria.fr Subject: Road to native windows OCaml... Date: Mon, 13 Oct 2008 19:35:52 -0400 User-Agent: KMail/1.9.10 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200810131935.53365.kuba@mareimbrium.org> X-Miltered: at concorde with ID 48F3DB5C.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; ocaml:01 ocaml:01 mingw:01 cygwin:01 compilation:01 hacked:01 mingw:01 masm:01 masm:01 unixes:01 gcc:01 slap:01 bytecode:01 debugger:01 compiler:01 I've looked briefly at what it'd take to have OCaml fully working natively (with mingw/VS), without any Cygwin needed for compilation. What I've surmised is this: 1. I need some "hacked up" make implementation, good enough just to let it build; this would be a-la web2c in concept. This "make" would implement bits and pieces of make, bash and sed -- just the bare minimum needed to get it going. The goal is for people to have bare mingw or VC and have OCaml build for them. The functionality needed is quite minimal, so requiring people to actually pull full sed, bash and make would not be necessary. I would prototype it in Qt (it's quicker that way), and then port it to "bare" C++ as time permits. 2. I need to get OCaml to use nasm instead of masm. I would go as far as completely pruning any masm references from OCaml -- there is just no need for masm when a good, free alternative exists. nasm is a single standalone executable -- you can't get much better than that. Heck, it works on unixes too, so it could be used on all platforms. gas is horrible too -- it's only raison-d'etre is to process output from gcc. Masm exists in "alternate reality" and the legality of its use is dubious. So-called masm9/masm10 (non-Microsoft products) have licenses which are a slap in the face and don't deserve a second look. 3. I need to look at the bytecode debugger and figure out why doesn't it work on non-Cygwin builds. 4. I need to get OCaml to generate C binding code using assembly, without a need for C compiler. It's easy enough and removes one big dependency from OCaml. I don't know if OCaml side of things is expressive enough (whether you can pass parameter/struct descriptions without use of C per se), but it should generally work just fine. Can anyone add to/elaborate on this list? Cheers, Kuba