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 mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 6DB0D8239C for ; Sun, 14 Jan 2018 19:29:29 +0100 (CET) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=pierre.chambart@ocamlpro.com; spf=None smtp.mailfrom=pierre.chambart@ocamlpro.com; spf=Pass smtp.helo=postmaster@redisdead.crans.org Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of pierre.chambart@ocamlpro.com) identity=pra; client-ip=138.231.136.39; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="pierre.chambart@ocamlpro.com"; x-sender="pierre.chambart@ocamlpro.com"; x-conformance=sidf_compatible Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of pierre.chambart@ocamlpro.com) identity=mailfrom; client-ip=138.231.136.39; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="pierre.chambart@ocamlpro.com"; x-sender="pierre.chambart@ocamlpro.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of postmaster@redisdead.crans.org designates 138.231.136.39 as permitted sender) identity=helo; client-ip=138.231.136.39; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="pierre.chambart@ocamlpro.com"; x-sender="postmaster@redisdead.crans.org"; x-conformance=sidf_compatible; x-record-type="v=spf1" IronPort-PHdr: =?us-ascii?q?9a23=3AcaY0UxFB+kQl7FeCplLHqZ1GYnF86YWxBRYc798d?= =?us-ascii?q?s5kLTJ7zo8+wAkXT6L1XgUPTWs2DsrQY07OQ6/iocFdDyK7JiGoFfp1IWk1Nou?= =?us-ascii?q?QttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXdrXKo8DEdBAj0OxZr?= =?us-ascii?q?KeTpAI7SiNm82/yv95HJbAhEmCexbaluIBmqsA7cqtQYjYx+J6gr1xDHuGFIe+?= =?us-ascii?q?NYxWNpIVKcgRPx7dqu8ZBg7ipdpesv+9ZPXqvmcas4S6dYDCk9PGAu+MLrrxjD?= =?us-ascii?q?QhCR6XYaT24bjwBHAwnB7BH9Q5fxri73vfdz1SWGIcH7S60/VDK/5KlpVRDokj?= =?us-ascii?q?8KOSMn/mHZisJwi6FVrhyvqBNwwYHbfI6bOeFifqPEZ94WWXZNU8hTWiFHH4iy?= =?us-ascii?q?b5EPD+0EPetAtYf9pkUBrQGkBQayGeji1D9IiWXz3aIhyeshCx3G1xEnEtIWsX?= =?us-ascii?q?Tbss/1NL0MXuyv0KbIzS/Mb/ZN1jjn8ojIbgssofaQUr1qdMrRzVEvFxnCjlmK?= =?us-ascii?q?tYPlODaV2/0LvmOG7ORgTfqih3MppgxyuDSj2MkhhpTTio4IxF3J9D91zYgxKN?= =?us-ascii?q?GgVkJ3fcKoHIZVuiyVKod5X98uTmRmuCkm0bILupu2cScXxJg72xLSbvmKfoyU?= =?us-ascii?q?7h79UuuaPC12i2h/eL2lgha/6UigxfP4VsmzyFtKtDRKncTNtnAWyhPc9NKIRe?= =?us-ascii?q?Zn8ki9wzaAzQbT6vpeLUAzj6rbJIYtwr82lpUNrUTOBjL6lUv1gaOMaEkp9PWk?= =?us-ascii?q?5/76brjop5KQLYF5hwXmPqQrgMO/AOA4MgYUX2ic/OSxzKXj/UznT7VQlP05jL?= =?us-ascii?q?PVv4zaJcsBo662GBVa0pw/6xukCDepzM4XnXwDLFJdYhKHiJLlNE3JIPD9Ffu/?= =?us-ascii?q?mUijkC93x/DaOb3sGonCIWLGkLflZLp9709cyBEvzd1E/JJVCrQBIOrpVUPrtd?= =?us-ascii?q?zYCAU5Mw2uzOr9BtV9zNBWZWXaK6uUIK7D+XKH4fgoPaHYaYsYsyrnJvcN4//1?= =?us-ascii?q?kTkjhAlZNaKg2J9SbHGjArwyKEycZT/og8wdOWYMpAs3CuLw3g6sSzlWMk6zUr?= =?us-ascii?q?gm63kQCIujB47ZWsj5mL2Mxj22WJZWb2VMA0qQOXDjfoCAQ+0LLimVJ5kywXQ/?= =?us-ascii?q?SbG9Rtp5hlmVvwjgxu8/d7uGymgjrZvmkeNNyajWnBA2+yZzCp3BgWaGRmRwhn?= =?us-ascii?q?kPATQx2fIn+BAv+hK4yaF9xsdgO5lL/foQDlU9PpfZy/RgDJb5XQeTJo7UGmbj?= =?us-ascii?q?ec2vBHQKdvx0w9IKZBwkSc+vghHY0yejD/kejbWNH9oz6K2OhnU=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0C/AQD9oFtabSeI54pdGQEBAQEBAQEBA?= =?us-ascii?q?QEBAQcBAQEBAYJsVYFahDqZAYICFJkuCoU7AoRBQxQBAQEBAQEBAQEBEg0VB1e?= =?us-ascii?q?COCKCSgEFI2YLDgoCAiYCAlcGAQwIAQGKLwEEqWSCJ4ovDCaBD4VCgVeBaSmDB?= =?us-ascii?q?YUigxeCZQWjZIJBpxqXJYE8NoFyTCNSgiuCUxyBaI0eAQEB?= X-IPAS-Result: =?us-ascii?q?A0C/AQD9oFtabSeI54pdGQEBAQEBAQEBAQEBAQcBAQEBAYJ?= =?us-ascii?q?sVYFahDqZAYICFJkuCoU7AoRBQxQBAQEBAQEBAQEBEg0VB1eCOCKCSgEFI2YLD?= =?us-ascii?q?goCAiYCAlcGAQwIAQGKLwEEqWSCJ4ovDCaBD4VCgVeBaSmDBYUigxeCZQWjZIJ?= =?us-ascii?q?BpxqXJYE8NoFyTCNSgiuCUxyBaI0eAQEB?= X-IronPort-AV: E=Sophos;i="5.46,359,1511823600"; d="scan'208";a="251162557" Received: from redisdead.crans.org ([138.231.136.39]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Jan 2018 19:29:28 +0100 Received: from [IPv6:2001:41d0:fcb8:4100::902] (unknown [IPv6:2001:41d0:fcb8:4100::902]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by redisdead.crans.org (Postfix) with ESMTPSA id D82BC16BC; Sun, 14 Jan 2018 19:29:26 +0100 (CET) To: Alexey Egorov , caml-list References: <1515782196.604079108@f381.i.mail.ru> From: Pierre Chambart Organization: OcamlPro Message-ID: <937c674a-bf63-b2be-44eb-9ad331aa622f@ocamlpro.com> Date: Sun, 14 Jan 2018 19:29:26 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: <1515782196.604079108@f381.i.mail.ru> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Content-Language: en-US X-Validation-by: pierre.chambart@ocamlpro.com Subject: Re: [Caml-list] flambda for bytecode backend On 12/01/2018 19:36, Alexey Egorov wrote: > Hello, > > I'm curious why flambda doesn't supported in bytecode compiler? It > seems that js_of_ocaml can greatly benefit from such possibility. > It has been considered, and in fact Gr=C3=A9goire Henry did a version of the bytecode compiler after flambda. But it was discarded as it was not very useful. It couldn't work with js_of_ocaml, and there was no obvious way how to do it properly. The reason being that flambda takes place after closure conversion. Hence after flambda, functions takes an explicit environment value. But on the other hand, js_of_ocaml represents OCaml functions directly as javascript function since the closures are working correctly. The best we could do (without doing some magic) would look like: let f x =3D =C2=A0 let y =3D x + 1 in =C2=A0 let g z =3D z + y in =C2=A0 g compiled to: function f_code(x, env) { =C2=A0 let y =3D x + 1; =C2=A0 function g_code(y, env) { =C2=A0=C2=A0=C2=A0 return(z + env.y); =C2=A0 } =C2=A0 let g =3D { code : g_code, env : { y: y }; =C2=A0 return(g); } let f =3D { code : f_code, env : { } } This would probably be far slower than what js_of_ocaml currently does. --=20 Pierre