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 E4D6A7FAD2 for ; Thu, 23 Oct 2014 16:04:49 +0200 (CEST) Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of whitequark@whitequark.org) identity=pra; client-ip=176.58.103.125; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="whitequark@whitequark.org"; x-sender="whitequark@whitequark.org"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of whitequark@whitequark.org designates 176.58.103.125 as permitted sender) identity=mailfrom; client-ip=176.58.103.125; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="whitequark@whitequark.org"; x-sender="whitequark@whitequark.org"; 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.whitequark.org) identity=helo; client-ip=176.58.103.125; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="whitequark@whitequark.org"; x-sender="postmaster@mail.whitequark.org"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArrJAJwKSVSwOmd9/2dsb2JhbABcjW6vYwaBQ5gxgmgBfYRBAlN5TIg9o2KkRIYlhBOFEoErhDUFhi2FMI0xhgCLN4IlhyCBRwELAYIpOIJ6AQEB X-IPAS-Result: ArrJAJwKSVSwOmd9/2dsb2JhbABcjW6vYwaBQ5gxgmgBfYRBAlN5TIg9o2KkRIYlhBOFEoErhDUFhi2FMI0xhgCLN4IlhyCBRwELAYIpOIJ6AQEB X-Spam-Status: Yes X-IronPort-AV: E=Sophos;i="5.04,775,1406584800"; d="scan'208";a="84371507" Received: from fehu.whitequark.org (HELO mail.whitequark.org) ([176.58.103.125]) by mail3-smtp-sop.national.inria.fr with ESMTP; 23 Oct 2014 16:04:33 +0200 Received: by mail.whitequark.org (Postfix, from userid 33) id 74F9410BE53; Thu, 23 Oct 2014 14:04:32 +0000 (UTC) To: caml-list@inria.fr X-PHP-Originating-Script: 1000:rcube.php MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Thu, 23 Oct 2014 18:04:32 +0400 From: Peter Zotov Message-ID: <5dc39ae7850ad5dbc7dd51387fe68ee8@whitequark.org> X-Sender: whitequark@whitequark.org User-Agent: Roundcube Webmail/1.0.1 Subject: [Caml-list] [ANN] ppx_deriving 1.0, ppx_deriving_yojson 2.0, ppx_deriving_protobuf 2.0 Hello, I'm glad to announce the release of ppx_deriving and several deriving plugins that I maintain. This release includes several breaking changes; however, the interface can now be considered stable and I do not expect it to change significantly. The OPAM packages will be available shortly. The two most important changes are: * The deriver names are now lowercase. I.e. you should replace all instances of [@@deriving Foo] with [@@deriving foo]. * ppx_deriving now integrates better with ocamlfind. Specifically, it does not automatically discover the deriver plugins based on their names; rather, it now expects you to explicitly require the corresponding plugin. In order to write code that uses [@@deriving yojson], it is now enough to add -package ppx_deriving_yojson to the ocamlfind ocamlc command line, or package(ppx_deriving_yojson) to the _tags file. This will also automatically include any runtime component that a deriving plugin may need. The package ppx_deriving.std depends on all deriver plugins that come with ppx_deriving itself. The changes were made in order to bring ppx_deriving closer to type_conv and ease migration. Some of the less important but interesting changes: * The [%derive.foo:] can now be shortened to [%foo:], given that deriving plugin foo is registered. For example, the following code will print a list of number pairs: print_endline ([%show: (int*float) list] pairs) * It is possible to combine several deriving plugins into a single executable, e.g. for cross-compiling: ocamlfind opt -predicates ppx_driver \ -package ppx_deriving_foo -package ppx_deriving_bar \ -package ppx_deriving.main -linkpkg -linkall \ -o ppx_driver Full changelogs: ppx_deriving 1.0 ---------------- * Make deriver names lowercase. * Remove Findlib+dynlink integration. All derivers must now be explicitly required. * Allow shortening [%derive.x:] to [%x:] when deriver x exists. * Make Ppx_deriving.core_type field optional to allow ignoring unsupported [%x:] shorthands. * Add support for [@@deriving foo { optional = true }] that does not error out if foo is missing, useful for optional dependencies. * Rename ~name and ~prefix of Ppx_deriving.attr and Ppx_deriving.Arg.payload to ~deriver. * Renamed Ppx_deriving.Arg.payload to get_attr. * Add Ppx_deriving.Arg.get_expr and get_flag. ppx_deriving_yojson 2.0 ----------------------- * Update to accomodate syntactic changes in _deriving_ 1.0. * Common helper functions have been extracted into ppx_deriving_yojson.runtime, reducing code size. * Add support for `[@@deriving to_yojson, of_yojson]` and `[%to_yojson:]`, `[%of_yojson:]` shortcuts. * Add support for `[@@deriving yojson { strict = false }]`. ppx_deriving_protobuf 2.0 ------------------------- * Update to accomodate syntactic changes in _deriving_ 1.0. -- Peter Zotov