From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 9D0047FA1F for ; Fri, 11 Jul 2014 17:27:20 +0200 (CEST) Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of anil@recoil.org) identity=pra; client-ip=89.16.177.154; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="anil@recoil.org"; x-sender="anil@recoil.org"; x-conformance=sidf_compatible Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of anil@recoil.org) identity=mailfrom; client-ip=89.16.177.154; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="anil@recoil.org"; x-sender="anil@recoil.org"; x-conformance=sidf_compatible Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@dark.recoil.org) identity=helo; client-ip=89.16.177.154; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="anil@recoil.org"; x-sender="postmaster@dark.recoil.org"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AiUFAO0AwFNZELGal2dsb2JhbABZg2CtZpNqh0YBgSEPAQEBAQEIFgc8hAMBAQU6PxALDgouVwYTiEbGPhePSQeDLYEWBZsFgUqWFzw X-IPAS-Result: AiUFAO0AwFNZELGal2dsb2JhbABZg2CtZpNqh0YBgSEPAQEBAQEIFgc8hAMBAQU6PxALDgouVwYTiEbGPhePSQeDLYEWBZsFgUqWFzw X-IronPort-AV: E=Sophos;i="5.01,644,1400018400"; d="scan'208";a="71109406" Received: from recoil.dh.bytemark.co.uk (HELO dark.recoil.org) ([89.16.177.154]) by mail3-smtp-sop.national.inria.fr with SMTP; 11 Jul 2014 17:27:19 +0200 Received: (qmail 18436 invoked by uid 634); 11 Jul 2014 15:27:17 -0000 X-Spam-Level: * X-Spam-Check-By: dark.recoil.org Received: from cpc7-cmbg14-2-0-cust238.5-4.cable.virginm.net (HELO [192.168.1.113]) (86.30.244.239) (smtp-auth username remote@recoil.org, mechanism cram-md5) by dark.recoil.org (qpsmtpd/0.84) with ESMTPA; Fri, 11 Jul 2014 16:27:17 +0100 Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.2\)) From: Anil Madhavapeddy In-Reply-To: <69c5d809b89ebdc663eb45a2b422718c@whitequark.org> Date: Fri, 11 Jul 2014 16:27:15 +0100 Cc: =?iso-8859-1?Q?Daniel_B=FCnzli?= , Benjamin Canou , caml-list@inria.fr Content-Transfer-Encoding: 7bit Message-Id: References: <53BFE73E.6060106@gmail.com> <1F6CA9F698BB4509800C3FD280CE0ACB@erratique.ch> <69c5d809b89ebdc663eb45a2b422718c@whitequark.org> To: Peter Zotov X-Mailer: Apple Mail (2.1878.2) X-Virus-Checked: Checked by ClamAV on dark.recoil.org Subject: Re: [Caml-list] proposal for finding, loading and composing ppx preprocessors On 11 Jul 2014, at 15:36, Peter Zotov wrote: > > I wonder if we should just get rid of a Unix-like build pipeline entirely, > and just make a hybrid frontend-buildsystem that would use compiler-libs > and never execute an external OCaml process. This would make builds even > faster and it's the logical conclusion of Alain's suggestion. I prototyped one of these a couple of years ago while trying to speed up the Mirage build system, but required some extensive patching of the compiler sources and was definitely not suitable for upstreaming. These days, much of the required functionality is exposed via the compiler-libs package, so it should be possible to have a go at this much more easily. Personally, I'd love to see the use of Sys replaced with the Irmin Git library database (http://github.com/mirage/irmin). This would allow a model where the ML sources are imported into a Git DAG, passed through to the compiler-libs as an in-memory structure, and the intermediate results recorded in the DAG, still all in-memory. When the build has completed, the Irmin DAG could be dumped to disk in the Git file format, permitting the entire build process to be inspected if necessary (or GCed if not). All the Git bits are currently supported by Irmin, so this project just requires an intrepid hacker to connect compiler-libs, Irmin, and some coordination glue. -anil