While we await the manual, can you explain what you mean by 'enabled at configure time'? Will a -flambda -O-something argument passed to the normal 4.03 compiler enable flambda optimizations? Flambda is clearly the star of the 4.03 release, so not enabling it using command line options seems counter-intuitive (if this is the case). -Yotam On Wed, Mar 9, 2016 at 7:59 PM, Markus Mottl wrote: > I've just tested Flambda, and it seems to already be doing a pretty > decent job on some non-trivial examples (e.g. inlining combinations of > functors and first class functions). I hope there will be a stable > 4.03 OPAM switch that enables it. I'm looking forward to being able > to write more elegant, abstract code that's still efficient. > > Regards, > Markus > > On Wed, Mar 9, 2016 at 2:14 AM, Mark Shinwell > wrote: > > It will not be enabled by default in 4.03. For the majority of > > programs, in the current state, it should improve performance (mainly > > by lowering allocation). It should never generate wrong code. > > However we know of examples that don't improve as much as we would > > like, which we will try to address for 4.04. > > > > There will be a draft version of the new Flambda manual chapter > > available shortly (hopefully this week). Amongst other things this > > documents what you found about the configure options and the flags' > > operation. > > > > Mark > > > > On 9 March 2016 at 03:55, Markus Mottl wrote: > >> Hi Alain, > >> > >> I see, thanks. It was a little confusing, because the command line > >> options for tuning flambda were still available even without Flambda > >> being enabled. > >> > >> Will Flambda be enabled by default in OCaml 4.03 or is it still > >> considered to be too experimental? It could turn out to become one of > >> the most impactful new features in terms of how I write code. > >> > >> Regards, > >> Markus > >> > >> On Tue, Mar 8, 2016 at 5:53 PM, Alain Frisch > wrote: > >>> Hi Markus, > >>> > >>> flambda needs to be enabled explicitly at configure time with the > "-flambda" > >>> flag. The new optimizer will then be used unconditionally, and you can > >>> tweak it using command-line parameters passed to ocamlopt (see > "ocamlopt > >>> -h"). > >>> > >>> > >>> Alain > >>> > >>> > >>> On 08/03/2016 23:10, Markus Mottl wrote: > >>>> > >>>> Hi, > >>>> > >>>> I'm trying out OCaml 4.03.0+beta1 right now and wanted to test Flambda > >>>> optimizations. But looking at the generated assembly, it doesn't seem > >>>> to be doing much if anything on the simple test examples that I > >>>> thought would benefit. > >>>> > >>>> To give an example of what I expected to see, lets consider this code: > >>>> > >>>> ----- > >>>> let map_pair f (x, y) = f x, f y > >>>> > >>>> let succ x = x + 1 > >>>> let map_pair_succ1 pair = map_pair succ pair > >>>> let map_pair_succ2 (x, y) = succ x, succ y > >>>> ----- > >>>> > >>>> I would have thought that the "succ" function would be inlined in > >>>> "map_pair_succ1" as the compiler would do for "map_pair_succ2". > >>>> But the generated code looks like this: > >>>> > >>>> ----- > >>>> L101: > >>>> movq %rax, %rdi > >>>> movq %rdi, 8(%rsp) > >>>> movq %rbx, (%rsp) > >>>> movq 8(%rbx), %rax > >>>> movq (%rdi), %rsi > >>>> movq %rdi, %rbx > >>>> call *%rsi > >>>> L102: > >>>> movq %rax, 16(%rsp) > >>>> movq (%rsp), %rax > >>>> movq (%rax), %rax > >>>> movq 8(%rsp), %rbx > >>>> movq (%rbx), %rdi > >>>> call *%rdi > >>>> ----- > >>>> > >>>> Is Flambda supposed to work out of the box with the current beta? > >>>> What flags or annotations should I use for testing? Any showcase > >>>> examples I should try out that are expected to be improved? > >>>> > >>>> Regards, > >>>> Markus > >>>> > >>> > >> > >> > >> > >> -- > >> Markus Mottl http://www.ocaml.info markus.mottl@gmail.com > >> > >> -- > >> Caml-list mailing list. Subscription management and archives: > >> https://sympa.inria.fr/sympa/arc/caml-list > >> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > >> Bug reports: http://caml.inria.fr/bin/caml-bugs > > > > -- > Markus Mottl http://www.ocaml.info markus.mottl@gmail.com > > -- > Caml-list mailing list. Subscription management and archives: > https://sympa.inria.fr/sympa/arc/caml-list > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs >