From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by sympa.inria.fr (Postfix) with ESMTPS id 52FDD7EDD9 for ; Fri, 5 Oct 2012 17:27:34 +0200 (CEST) Received-SPF: None (mail1-smtp-roc.national.inria.fr: no sender authenticity information available from domain of gabriel.scherer@gmail.com) identity=pra; client-ip=209.85.223.180; receiver=mail1-smtp-roc.national.inria.fr; envelope-from="gabriel.scherer@gmail.com"; x-sender="gabriel.scherer@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail1-smtp-roc.national.inria.fr: domain of gabriel.scherer@gmail.com designates 209.85.223.180 as permitted sender) identity=mailfrom; client-ip=209.85.223.180; receiver=mail1-smtp-roc.national.inria.fr; envelope-from="gabriel.scherer@gmail.com"; x-sender="gabriel.scherer@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail1-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-ie0-f180.google.com) identity=helo; client-ip=209.85.223.180; receiver=mail1-smtp-roc.national.inria.fr; envelope-from="gabriel.scherer@gmail.com"; x-sender="postmaster@mail-ie0-f180.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjYCAOv6blDRVd+0m2dsb2JhbAArGr8YCCMBAQEBAQgJCwkUJ4IzBgIsARseAxIQXQERAQUBV4dQAQMPCyyWWIJhCQOMJYJ1hQkKGScNWYh1AQUMhWKIOIMhA5VrgRWNOhYphA8 X-IronPort-AV: E=Sophos;i="4.80,541,1344204000"; d="scan'208";a="176014853" Received: from mail-ie0-f180.google.com ([209.85.223.180]) by mail1-smtp-roc.national.inria.fr with ESMTP/TLS/RC4-SHA; 05 Oct 2012 17:27:33 +0200 Received: by mail-ie0-f180.google.com with SMTP id e10so5767883iej.39 for ; Fri, 05 Oct 2012 08:27:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to:content-type :content-transfer-encoding; bh=PtZCMoDxX/qdHOa783BdzfDeDy2Q2LlUxwcrqD5aA5k=; b=miNqDscvCyFEeKIEdiAl845ARQQ2Vi76fwgKwTuv3SDX2OSMr8HX5GejY2ptJEPwx9 FtOyBJ7W1geD+C33AuzCdLnZiDgfD2VSaEiq4+AEgqO7h8FlFo9mnJtKLMf0KSd0zR5y JGf2lQU8iXFPYuqCztcSLBrHwhCWRLgos0T69+LO2w/VLjGzVw34tCvcKNklk/9v1aiB e4qm5AZ+yywEegbHXXXu4bLMYVYOljmr8g/9yLkCNgsywwm79Q2VwNVEOt7tbdTrYABP 5uRNcTzX6xvGJbLqY90mhlhxYWkwBWOmgyLjFSHUzGxExlvgtAIdZFSWhNlF6C17ZljK HVuA== Received: by 10.50.41.129 with SMTP id f1mr1451544igl.57.1349450852205; Fri, 05 Oct 2012 08:27:32 -0700 (PDT) MIME-Version: 1.0 Received: by 10.50.194.202 with HTTP; Fri, 5 Oct 2012 08:26:51 -0700 (PDT) From: Gabriel Scherer Date: Fri, 5 Oct 2012 17:26:51 +0200 Message-ID: To: caml-list@yquem.inria.fr Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Subject: [Caml-list] [ANN] Macaque 0.6 Macaque is the result of a student project aiming to develop a type-safe and composable way to interact with SQL databases from OCaml. We propose a form of "comprehension syntax" that allow to modularily create queries in a strongly-typed and relatively principled way. ## Release 0.6 After a few years of mild continuous development, people have requested at several occasions that release be made. I therefore tag the current state of Macaque as "0.6". You can get an archive from the forge: https://forge.ocamlcore.org/frs/download.php/1027/macaque-0.6.tar.gz You can also get the new version from darcs: darcs get --tag 0.6 http://forge.ocamlcore.org/anonscm/darcs/macaque/maca= que Thanks to everyone I have interacted with during this development; thanks to Vincent Balat and Anastasia Gornostaeva for their feedback. Thanks in particular to Jacques-Pascal Deplaix for his frequent feedback and occasional suggestions and contributions. ## More Details Macaque was initially developed at the PPS lab in Paris, under the supervision of J=E9r=F4me Vouillon. The current development mode could be described as "coinductive": things get done in reaction to user requests or needs. The technical limitations of Macaque are the following: - It only support PostGreSQL (from lack of time to develop other backends). - Each feature of the SQL language must be considered and added separately, with the right typing; this aspect makes it structurally less complete than direct (but less composable) embedding of full SQL queries like the parent project PG'OCaml does, so the subset of SQL supported by Macaque is smaller -- but you can help extending it! http://pgocaml.forge.ocamlcore.org/ - You have to learn the comprehension-like syntax used by Macaque (it should be possible to write a frontend using the SQL syntax, but this hasn't been done yet). - The documentation *does* exist, but is not very good. It's the README that you can see at http://darcs.ocamlcore.org/repos/macaque/README and patches to improve it are welcome The version number below 1.0 highlights that Macaque is still an evolving project with no strong production-readiness guarantees, yet a number substantially higher than 0.1 indicates that it has seen several users and probably fixed the most glaring issues with the current feature set. (I would have initially chosen 0.3 or 0.7 as a version number. Like most people. '6' is an oft-overlooked number, a factorial and the product of the two first prime numbers. Go 6 and 8!)