From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id NAA02827; Sun, 18 May 2003 13:13:06 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id NAA03003 for ; Sun, 18 May 2003 13:13:05 +0200 (MET DST) Received: from fort-point-station.mit.edu (FORT-POINT-STATION.MIT.EDU [18.7.7.76]) by nez-perce.inria.fr (8.11.1/8.11.1) with ESMTP id h4IBD4T13283 for ; Sun, 18 May 2003 13:13:04 +0200 (MET DST) Received: from central-city-carrier-station.mit.edu (CENTRAL-CITY-CARRIER-STATION.MIT.EDU [18.7.7.72]) by fort-point-station.mit.edu (8.12.4/8.9.2) with ESMTP id h4IBD2Th026833; Sun, 18 May 2003 07:13:02 -0400 (EDT) Received: from manawatu-mail-centre.mit.edu (MANAWATU-MAIL-CENTRE.MIT.EDU [18.7.7.71]) by central-city-carrier-station.mit.edu (8.12.4/8.9.2) with ESMTP id h4IBD1nd021924; Sun, 18 May 2003 07:13:02 -0400 (EDT) Received: from nerd-xing.mit.edu (NERD-XING.MIT.EDU [18.7.16.74]) ) by manawatu-mail-centre.mit.edu (8.12.4/8.12.4) with ESMTP id h4IBD1FJ019532; Sun, 18 May 2003 07:13:01 -0400 (EDT) Received: (from jfc@localhost) by nerd-xing.mit.edu (8.9.3p2) id HAA11919; Sun, 18 May 2003 07:13:01 -0400 (EDT) Message-Id: <200305181113.HAA11919@nerd-xing.mit.edu> To: Chris Hecker cc: Subject: Re: [Caml-list] ocaml and large development projects In-Reply-To: Your message of "Sat, 17 May 2003 23:10:03 PDT." <4.3.2.7.2.20030517225010.04b748a0@localhost> Date: Sun, 18 May 2003 07:13:01 -0400 From: John Carr X-Spam: no; 0.00; jfc:01 caml-list:01 recompiles:01 fifteen:99 inlining:01 checksums:01 ocamldep:01 cmx:01 mli:01 ocamlopt:01 ocaml:01 recompile:01 compile:02 identical:03 rebuild:03 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk > Don't people consider separate compilation and the ability to change > implementation without complete project recompiles a fundamental > requirement of non-toy languages? Ten or fifteen years ago (when building a large project took a day of compile time, and building the complete OS took several days) I would have answered "yes". Now it is an important feature but not an essential feature. > If this can't be fixed, there needs to be a way to disable cross-file > inlining so that it can be worked around (and the checksums should reflect > this, and ocamldep should do the right thing, etc.), and then when you want > to "globally optimize" you can recompile the world. At least two possibilities come to mind: 1. An inining threshold that affects generation of .cmx files instead of their use. -gen-inline 0 means don't generate any inlining information, -gen-inline 1 means put small functions in the .cmx file, etc. 2. Only put functions defined in the .mli file in the .cmx file Either way you have to avoid letting regeneration of an identical .cmx file trigger a rebuild of the whole project. Two solutions: 1. Make ocamlopt leave an existing .cmx file if the new contents would be identical. 2. Use scons, a python-based make replacement that uses file contents instead of modification time. It is designed for large projects. I'll have to try it out with ocaml some day. The startup cost is high because it works not at all like make. ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners