From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 64ECC7FAD2 for ; Fri, 24 Oct 2014 16:32:29 +0200 (CEST) Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of michipili@gmail.com) identity=pra; client-ip=209.85.212.177; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="michipili@gmail.com"; x-sender="michipili@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of michipili@gmail.com designates 209.85.212.177 as permitted sender) identity=mailfrom; client-ip=209.85.212.177; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="michipili@gmail.com"; x-sender="michipili@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-wi0-f177.google.com) identity=helo; client-ip=209.85.212.177; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="michipili@gmail.com"; x-sender="postmaster@mail-wi0-f177.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqsDADhiSlTRVdSxm2dsb2JhbABcg2JYgwa2MAsGk2aIVhYBEQEBAQEBBgsLCRQuhBsRBAsBDQEbHAIDEhAPAgUWCwILAwIBAgEREQEFAS8IAh6ICQEDEgQBCKUQgyFuizOBcoMRiGsKGScNZ4VRDAEZAQUOgR6EeY0xgVQFlkuHEoExPIV6BYpAggxBhS1qAYJKAQEB X-IPAS-Result: AqsDADhiSlTRVdSxm2dsb2JhbABcg2JYgwa2MAsGk2aIVhYBEQEBAQEBBgsLCRQuhBsRBAsBDQEbHAIDEhAPAgUWCwILAwIBAgEREQEFAS8IAh6ICQEDEgQBCKUQgyFuizOBcoMRiGsKGScNZ4VRDAEZAQUOgR6EeY0xgVQFlkuHEoExPIV6BYpAggxBhS1qAYJKAQEB X-IronPort-AV: E=Sophos;i="5.04,780,1406584800"; d="scan'208";a="84544945" Received: from mail-wi0-f177.google.com ([209.85.212.177]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-SHA; 24 Oct 2014 16:32:28 +0200 Received: by mail-wi0-f177.google.com with SMTP id ex7so1423427wid.10 for ; Fri, 24 Oct 2014 07:32:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject :content-type:content-transfer-encoding; bh=Rm1KIcBro5pxWZWpsdPWINgzSqE7sNZE76DSctSWa9I=; b=umfarfs6kYwECD2m0HQ1LhNYzAoTEro8wmlDUAFOvf75uwEOLr6w2z2/w0oOJRrc8H T9gxS++G+U5NrEjhBfGdFucNkuIbq/iBV8ghloGmGLleVUzHHa+795nFSEd71VwMWpMi qA9SZaHDZSW3Fhq6eGe1ww5mFBbXiv6txVnkGUhZJYHDFKz7j/8YByIo3SP7ciHX3ylV waYrhD273uV8ycZaQNh2eQnD8nG//S/zm7sqM58b9PpdzPhdGP6mBk4y9y45Bikllgep Zj+jJ733pz2HliLaY1YwQH+bhYKpTOmWn2LcvdakmvGQAwx/I0QhJzIG+JfI+ngGa9f8 Dirw== X-Received: by 10.180.21.163 with SMTP id w3mr4571427wie.48.1414161148140; Fri, 24 Oct 2014 07:32:28 -0700 (PDT) Received: from [192.168.0.63] (xdsl-89-0-78-188.netcologne.de. [89.0.78.188]) by mx.google.com with ESMTPSA id dq7sm2208153wid.12.2014.10.24.07.32.26 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Oct 2014 07:32:27 -0700 (PDT) Message-ID: <544A62FA.2000201@gmail.com> Date: Fri, 24 Oct 2014 16:32:26 +0200 From: =?UTF-8?Q?Michael_Gr=c3=bcnewald?= User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:32.0) Gecko/20100101 Firefox/32.0 SeaMonkey/2.29.1 MIME-Version: 1.0 To: caml-list@inria.fr Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [Caml-list] =?UTF-8?Q?ANN=3A_gasoline_0=2E1_=E2=80=94_Applicative?= =?UTF-8?Q?_framework_for_OCaml?= The Gasoline project aims at implementing a Unix-ish application development framework for OCaml. The framework will provide application templates factoring application components bootstrapping, configuration analyse and offering homogeneous diagnostic facilities. It can be installed with opam, see below. It is written by Michael Grünewald and is distributed under the CeCILL-B license agreement. Users of Gasoline should be enabled to: - Rapidly develop applications by using application patterns such as “Unix filter”, “tabular data processor” or “compiler”. - Write large software suites whose elements offer homogeneous interfaces. - Easily pass configuration parameters to an application - Use standardised diagnostic facilities supporting internationalisation. - Cleanly distinguish between application components and lower-level software engineering artifacts. - Easily bootstrap and shutdown applications consisting of many modules. - Use common file formats such as CSV or JSON in their applications. Github: https://github.com/michipili/gasoline Wiki: https://github.com/michipili/gasoline/wiki OCamldoc reference: http://michipili.github.io/gasoline/reference/index.html 0 EXAMPLES There is three examples of applications using Gasoline in the example tree. These are: * punishment, a simple program claiming “It shall not talk in class” and illustrating the use of configuration parameters and configuration sources. * wordcount, an over-engineered version of wc illustrating the use of application components. * wordgen, a random name generator (as found in Angband for instance) also illustrating the use of application components. 1 WHAT ARE APPLICATION PATTERNS Developing a Unix filter — for instance — should require little more than writing a function parameter -> in_channel -> out_channel -> unit where parameter is a fictional type representing filter parameters. A goal of Gasoline is to define application templates taking care of all the house-keeping required by the bootstrapping of an application. This should increase development speed of applications and ease the preparation of large software suite presenting a consistent interface. Some application patterns are scheduled for v0.3, see the issue tracker. 2 WHAT THE LIBRARY ALREADY DO It implements a poweful configuration parameter framework, see the wiki page Configuration. It implements a generic diagnostic facility, allowing fine-grained control of application diagnostics (like what xdvi does), see the wiki page GenericDiagnostic. It implements basic software component management, see the wiki page Component. 3 HOW TO INSTALL There is detailed build instructions in the README. There is also an experimental OPAM package in my opam-repository clone, it works on FreeBSD, Debian and MacPorts. https://github.com/michipili/opam-repository/tree/port/gasoline 4 CLOSINGS I am looking forward hearing your comments and suggestions about Gasoline. This is still experimental software and many areas should be refactored. -- Michael