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 mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 32E7580211 for ; Fri, 20 Oct 2017 18:24:05 +0200 (CEST) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=josh@berdine.net; spf=Pass smtp.mailfrom=josh@berdine.net; spf=None smtp.helo=postmaster@out4-smtp.messagingengine.com Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of josh@berdine.net) identity=pra; client-ip=66.111.4.28; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="josh@berdine.net"; x-sender="josh@berdine.net"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of josh@berdine.net designates 66.111.4.28 as permitted sender) identity=mailfrom; client-ip=66.111.4.28; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="josh@berdine.net"; x-sender="josh@berdine.net"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@out4-smtp.messagingengine.com) identity=helo; client-ip=66.111.4.28; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="josh@berdine.net"; x-sender="postmaster@out4-smtp.messagingengine.com"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3A3m3chBM2tSIsThtFbS0l6mtUPXoX/o7sNwtQ0KIM?= =?us-ascii?q?zox0K/r9rarrMEGX3/hxlliBBdydsK0UzbeO+4nbGkU+or+5+EgYd5JNUxJXwe?= =?us-ascii?q?43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6a8TWO6msZExD7fRdu?= =?us-ascii?q?K/7uUtrZhsGzkuSz4IH7YgNShTP7b6kkfzusqgCElM4NgcNIJ7w9yx3E6i9KfP?= =?us-ascii?q?9W7WllP16SmRu64Mqsqs0wux9Msu4sopYTGZ7xeL41GORV?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0B+AQCmIupZhhwEb0JcHAEBBAEBCgEBF?= =?us-ascii?q?wEBBAEBCgEBhBgDayePDY5KmkIKI4lVQxQBAQEBAQEBAQEBARIBAQEICwsIKC+?= =?us-ascii?q?COCKDBAYBATiBPYozEKlzgxKDCAEBBYgQCwEBAQEBARkIgy6CB4NihgKFR4Iyi?= =?us-ascii?q?DqZKoZpeo4BgX+IZROHMwJEkXyDOoE5NoF8NCEIKAp2AYI2CUCCBB+BdHWKYAE?= =?us-ascii?q?BAQ?= X-IPAS-Result: =?us-ascii?q?A0B+AQCmIupZhhwEb0JcHAEBBAEBCgEBFwEBBAEBCgEBhBg?= =?us-ascii?q?DayePDY5KmkIKI4lVQxQBAQEBAQEBAQEBARIBAQEICwsIKC+COCKDBAYBATiBP?= =?us-ascii?q?YozEKlzgxKDCAEBBYgQCwEBAQEBARkIgy6CB4NihgKFR4IyiDqZKoZpeo4BgX+?= =?us-ascii?q?IZROHMwJEkXyDOoE5NoF8NCEIKAp2AYI2CUCCBB+BdHWKYAEBAQ?= X-IronPort-AV: E=Sophos;i="5.43,405,1503352800"; d="scan'208";a="297207375" Received: from out4-smtp.messagingengine.com ([66.111.4.28]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Oct 2017 18:24:04 +0200 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id D0AFC20BD6; Fri, 20 Oct 2017 12:24:02 -0400 (EDT) Received: from frontend2 ([10.202.2.161]) by compute1.internal (MEProxy); Fri, 20 Oct 2017 12:24:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=berdine.net; h= content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; bh=oatmKbyLwqdeg3tFwGUaSP1bZKrmAEXzQDqr4br3HZ4=; b=IbBrBcdc IkcTVAJ0IXyUyZ7BWzeTf7ezCIOywI5fq9Dy50j6X6RiWZPEep97TsYCXUOSv6ck Zp7j25AuOd48uwSV2eMqoFZ0sHbnfyFVe+tqW96ec8F4AWo3/CYh/65dckvG6+Sq fXPdBNJDRPN1bjn3F7dFtcunFD0XOObBxk2EHirrHHVfzjQmH+vvNK1D/3ueRq+V pfWxcL5VAQHmVpLo6jlUxCRTCeeusDE7AECTmWx6hahN/T/1VNWvk59kVCPcFBG0 Ml7ItUOkDciRvAKMYrNYZoeuGBQ3SWz7te9PCyHsk1JetzPIbmjrdOahqEj005w1 SJ5trjmAuVjO1g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:message-id:mime-version:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; bh=oatmKbyLwqdeg3tFwGUaSP1bZKrmA EXzQDqr4br3HZ4=; b=i/O3buJJ+wnH7gk42r3eGzk8Z9qURAYL9yyuBpF1tWJhW YvHAwc5KEMClGHhM7a8GAdKCpNNi7xCYYTfYAwb/InLF48BSJUWOMy4GCC1UQNnJ zT8zd/IwMrcdkyc2NLI534is6Z5hAaKbo7r4Iyl221QIePeREFnimct8+otd255c +pqOR+1tNp6SH+Z5W7AZFN9ZGtZRBYCLDbRF3gGGtHwSlD3EbKzXJW+A/dtGUXEt uAQWZXzibMkJLq/9tNWxx43PFEOp29mIS7J5Vjl/T8PfGRYH9FGC7c7DxtfSkSN7 KylFOFrl03pygUtLKAlJ7HupBwc9VnBMvulCnSKYA== X-ME-Sender: Received: from [172.17.178.25] (unknown [199.201.66.0]) by mail.messagingengine.com (Postfix) with ESMTPA id 7DFE024A27 for ; Fri, 20 Oct 2017 12:24:02 -0400 (EDT) From: Josh Berdine Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Message-Id: <5D4E4BAB-56A2-45E0-B1A7-8C1CA42C207D@berdine.net> Date: Fri, 20 Oct 2017 17:24:01 +0100 To: caml users X-Mailer: Apple Mail (2.3273) Subject: [Caml-list] [ANN] OCamlFormat I'm pleased to announce the first release of OCamlFormat. [1] OCamlFormat is a tool to automatically format OCaml code. It follows the sa= me basic design as refmt for Reason code, but for OCaml. In particular, it = works by parsing source code using the OCaml compiler's standard parser, de= ciding where to place comments in the parsetree, and printing the parsetree= and comments in a consistent style. We currently use this for the OCaml code of Infer [2] to enable developers = to stop thinking about line breaking, indentation, parenthesization, etc., = to minimize stylistic nit-picking during code review, and to make it as vis= ually obvious as possible when the parser's interpretation of code does not= match the programmer's. We use this both with integration with editors as = well as a pre-commit hook. Development is taking place at github.com/ocaml-ppx/ocamlformat. License is MIT. See the github page for more info on installation, documentation, contribut= ing, etc. An opam package will be available soon. - Josh Berdine [1] http://fbinfer.com/blog/2017/10/20/ocamlformat-released.html [2] https://github.com/facebook/infer=