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=1.5 required=5.0 tests=AWL,DNS_FROM_RFC_POST 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 45D27BC37 for ; Wed, 10 Jun 2009 21:20:12 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AscBAMyjL0qArgVglGdsb2JhbACYNAEBAQEJCwgJEgS4HQiCPIFJBQ X-IronPort-AV: E=Sophos;i="4.42,197,1243807200"; d="scan'208";a="27784602" Received: from expredir5.cites.uiuc.edu ([128.174.5.96]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 10 Jun 2009 21:20:11 +0200 Received: from axyr (aryx.cs.uiuc.edu [128.174.236.106]) by expredir5.cites.uiuc.edu (8.14.2/8.14.2) with ESMTP id n5AJK9Xb026375; Wed, 10 Jun 2009 14:20:09 -0500 (CDT) To: caml-list@inria.fr Subject: [ANN] syncweb, literate programming meets unison From: Yoann Padioleau Date: Wed, 10 Jun 2009 14:21:06 -0500 Message-ID: <874ounuc7x.fsf@aryx.cs.uiuc.edu> User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Spam: no; 0.00; literate:01 literate:01 noweb:01 chunks:01 ocamlweb:01 noweb:01 high-level:01 ocaml:01 mli:01 copy-paste:01 wikipedia:01 wiki:01 bcpierce:01 upenn:01 data:02 Dear list, I am pleased to announce the first public release of syncweb. >>From the introduction in the readme.txt: syncweb is a command line tool enabling programmers to use the literate programming[1] development methodology, using the noweb[2] tool, while still being able to modify the generated files from the literate document. syncweb provides a way to "synchronize" the possibly modified original document with its possibly modified views with an interface similar to unison[3]. In addition, syncweb synchronizes data at a fine grained level by computing and storing md5sum of the different chunks. Note that literate programming is different from using javadoc, or doxygen, or ocamlweb. Noweb, and syncweb, do not provide the same kind of services. Literate programming allows programmers to explain their code in the order they think the code will be better understood, and allows among other things to explain code piece by piece with the possiblity to present a high-level view first of the code. Moreover, because noweb is essentially a macro-processing language, one can also "program" at the noweb level, which can sometimes overcome some of the limitations or the language of the documented program. For instance, for OCaml programs, using noweb frees the programmer to declare the types both in the .mli and .ml file, avoiding tedious copy-paste and maintenance problems. One can also do some forms of Aspect-oriented Programming at the noweb level. The code is available here: http://aryx.kicks-ass.org/~pad/software/project-syncweb/syncweb-0.2.tgz The documentation here: http://aryx.kicks-ass.org/~pad/software/project-syncweb/readme.txt One can also see a demo of what it looks like to edit a noweb/syncweb file and what kind of output noweb and syncweb produces: The literate document: http://aryx.kicks-ass.org/~pad/software/project-syncweb/demo/distribution.ml.nw.html The generated but "synchronizable" ml code: http://aryx.kicks-ass.org/~pad/software/project-syncweb/demo/distribution.ml.html The generated pdf: http://aryx.kicks-ass.org/~pad/software/project-syncweb/demo/distribution.pdf [1] http://en.wikipedia.org/wiki/Literate_programming [2] http://www.cs.tufts.edu/~nr/noweb/ [3] http://www.seas.upenn.edu/~bcpierce/unison/