From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by yquem.inria.fr (Postfix) with ESMTP id D7583BBA7 for ; Wed, 8 Feb 2006 14:37:47 +0100 (CET) Received: from mail.barettadeit.com (h213-255-109-130.albacom.net [213.255.109.130] (may be forged)) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id k18DblM6004644 for ; Wed, 8 Feb 2006 14:37:47 +0100 Received: from [10.0.0.10] (alex.barettalocal.com [10.0.0.10]) by mail.barettadeit.com (Postfix) with ESMTP id B2A9A1250E; Wed, 8 Feb 2006 14:39:12 +0100 (CET) Message-ID: <43E9F1EE.1070502@barettadeit.com> Date: Wed, 08 Feb 2006 14:28:14 +0100 From: Alessandro Baretta User-Agent: Debian Thunderbird 1.0.7 (X11/20051017) X-Accept-Language: en-us, en MIME-Version: 1.0 To: OCaml Cc: metaocaml-hackers-l@cs.rice.edu Subject: Namespace clash Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-Miltered: at nez-perce with ID 43E9F42B.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; baretta:01 baretta:01 barettadeit:01 clashes:01 clashing:01 cmxa:01 metaocaml:01 xcaml:01 compiler:01 metaocaml:01 unreasonable:01 xavier's:01 -pack:01 ocaml:01 lacks:01 X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.1 required=5.0 tests=FORGED_RCVD_HELO autolearn=disabled version=3.0.3 Gentlemen--most specifically Xavier, Every other year I have mentioned on this list that I have encountered a module name clash problem, rendering some bit of code unusable and my life very miserable. It happened again today. Hence, this post, to help me relieve my frustration. Luckily, today I control one of the two modules whose names collide, so I can easily overcome the problem by renaming one file and changing all relevant references to it in a relativeley self-contained sub-project of my full source tree. Were it otherwise, I'd be in trouble. Let me state that I am currently managing a source tree comprising approximately ten man years of work and 236klocs as of today, including generated code. When a project grows to this size, it is relatively easy to produce such name clashes. The clashing modules are Liveness in the metanative.cmxa library of the MetaOcaml project and a Liveness module in a PLC application based on my AS/Xcaml. I realize that "liveness" is a meaningful word to a compiler author, but it also is to a automation engineer. It is doubtful that either the MetaOcaml team or I have a greater right to this name, and it is unreasonable to renounce many useful words just because they might be of common interest. Xavier's official position until now has been the following: "You guys have the -pack option; use it." This is probably the best solution overall, but it is hardly reconcilable with the fact that out there in the wild--and in my own repository--there are truckloads and truckloads of code that don't use it and that would need to be modified to use it, because of the need to explicity open in the projects source files all referenced libraries. Hence, it is impossibile for the build system to automatically manage namespacing issues. Probably, all that ocaml lacks to properly handle namespacing is a -open directive, telling the compiler to imply a "open Xxxx" at the beginning of all .ml and .mli files on the command line. Given this compiler flag, the build system could take care of everything. I'm sure there are other ways to solve this issue, and I'm non really trying to sell anyone my idea. As I stated, I'm just writing to relieve my frustration. Alex -- ********************************************************************* Ing. Alessandro Baretta Studio Baretta http://studio.baretta.com/ Consulenza Tecnologica e Ingegneria Industriale Technological Consulting and Industrial Engineering tel. +39 02 370 111 55 fax. +39 02 370 111 54