<div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Hi Andrey,</div><div><br></div><div>I'm looking at <a href="https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/README.md">https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/README.md</a> and <a href="https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/doc/windows.md">https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/doc/windows.md</a><br></div><div>wondering why the default instructions for Windows are using stack, this isn't currently the case.<br></div><br><div>In order for ./boot and configure to work already you need to be in an msys2 environment. So having stack install its own, un-updated msys2 is not a workflow I would recommend.</div><div><br></div><div>There's a dubious claim there that using stack is "more robust", what is this claim based on?</div><div> 
I'm just confused when it was decided to switch the defaults, and why, without any consultation. <br></div><div><br></div><div>Regards,</div><div>Tamar<br></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jan 25, 2019 at 2:27 AM Andrey Mokhov <<a href="mailto:andrey.mokhov@newcastle.ac.uk">andrey.mokhov@newcastle.ac.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div lang="EN-GB">
<div class="gmail-m_-2257293022817741533WordSection1">
<p class="MsoNormal">Dear GHC developers,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Summary: You should try to use Hadrian as the GHC build system, because it will (hopefully!) become the default around GHC 8.8.
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">What is Hadrian and how can I try it?<u></u><u></u></p>
<p class="MsoNormal">=====================================<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Hadrian is a new build system for GHC written in Haskell. It lives in the directory “hadrian” in the GHC tree, and we have been actively developing it in the past year to reach feature and correctness parity with the existing Make-based
 build system. While we haven't quite reached this goal (more on this below), Hadrian is already working well and we run Hadrian jobs alongside the Make ones in our CI pipelines since the recent move to GitLab.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">At this point, we would like to encourage everyone to try using Hadrian for their usual GHC development tasks. Hadrian's documentation resides in GHC's source tree, and below are the documents you will be most interested in:<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="gmail-m_-2257293022817741533MsoListParagraph"><u></u><span style="font-family:Symbol"><span>·<span style="font:7pt "Times New Roman"">       
</span></span></span><u></u><a href="https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/README.md" target="_blank">https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/README.md</a>: The root of Hadrian's documentation. It explains the basics and points to more specific
 documents where appropriate.<u></u><u></u></p>
<p class="gmail-m_-2257293022817741533MsoListParagraph"><u></u> <u></u></p>
<p class="gmail-m_-2257293022817741533MsoListParagraph"><u></u><span style="font-family:Symbol"><span>·<span style="font:7pt "Times New Roman"">       
</span></span></span><u></u><a href="https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/doc/make.md" target="_blank">https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/doc/make.md</a>: A cheatsheet-style document for GHC developers used to the Make build system
 (that is, most/all of you), showing equivalent Make/Hadrian commands for many tasks.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="gmail-m_-2257293022817741533MsoListParagraph"><u></u><span style="font-family:Symbol"><span>·<span style="font:7pt "Times New Roman"">       
</span></span></span><u></u><a href="https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/doc/user-settings.md" target="_blank">https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/doc/user-settings.md</a>: A description of the “user settings” mechanism in Hadrian,
 which is where you can customise the build flavour, choose the packages to build, add file/package/platform-specific command line flags, etc.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="gmail-m_-2257293022817741533MsoListParagraph"><u></u><span style="font-family:Symbol"><span>·<span style="font:7pt "Times New Roman"">       
</span></span></span><u></u><a href="https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/doc/testsuite.md" target="_blank">https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/doc/testsuite.md</a>: A description of the “test” rule and all the options it supports.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">The documentation can surely be improved, so please do not hesitate to send us feedback and suggestions here, or even better on Trac: make sure you choose the component "Build System (Hadrian)" when creating a new ticket.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">You need Hadrian<u></u><u></u></p>
<p class="MsoNormal">================<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Hadrian is new, requires time to learn, and still has rough edges, but it has been developed to make your lives better. Here are a few advantages of Hadrian over the Make-based build system:<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">1) Hadrian is more reliable.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Hadrian can capture build dependencies more accurately, which means you rarely (if ever) need to do a clean rebuild.
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">2) Hadrian is faster.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Hadrian is faster for two reasons: (i) more accurate build dependencies, (ii) tracking of file contents instead of file modification times. Both allow you to avoid a lot of unnecessary rebuilds. Building Hadrian itself may take a while
 but needs to be done only once.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">3) Hadrian is easier to understand and modify.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">You no longer need to deal with Make's global namespace of mutable string variables. Hadrian is written in the language you love; it has modules, types and pure functions.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">If you come across a situation where Hadrian is worse than the Make build system in any of the above aspects, this is a bug and you should report it.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Helping Hadrian<u></u><u></u></p>
<p class="MsoNormal">===============<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">The best way to help is to try Hadrian, and let us know how it goes, what doesn't work, what's missing for you, what you think should be easier, and so on. Below is a list of known issues that we are in the process of fixing or that we
 will be tackling soon:<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="gmail-m_-2257293022817741533MsoListParagraph"><u></u><span style="font-family:Symbol"><span>·<span style="font:7pt "Times New Roman"">       
</span></span></span><u></u>Stage 2 GHC should be dynamically linked most of the time, but it never is, currently. See
<a href="https://ghc.haskell.org/trac/ghc/ticket/15837" target="_blank">https://ghc.haskell.org/trac/ghc/ticket/15837</a>
<u></u><u></u></p>
<p class="gmail-m_-2257293022817741533MsoListParagraph"><u></u><span style="font-family:Symbol"><span>·<span style="font:7pt "Times New Roman"">       
</span></span></span><u></u>There are about a dozen of failing tests in the GHC testsuite, some related to #15837.<u></u><u></u></p>
<p class="gmail-m_-2257293022817741533MsoListParagraph"><u></u><span style="font-family:Symbol"><span>·<span style="font:7pt "Times New Roman"">       
</span></span></span><u></u>Binary distributions haven't been thoroughly tested on many platforms (only some Linux flavours). There will definitely be some issues here. For example, the binary distribution rule currently fails on Windows:
<a href="https://ghc.haskell.org/trac/ghc/ticket/16073" target="_blank">https://ghc.haskell.org/trac/ghc/ticket/16073</a>.<u></u><u></u></p>
<p class="gmail-m_-2257293022817741533MsoListParagraph"><u></u><span style="font-family:Symbol"><span>·<span style="font:7pt "Times New Roman"">       
</span></span></span><u></u>There is no “validate” rule yet, only “test”, but we have all the pieces to make this happen and it has a very high priority.<u></u><u></u></p>
<p class="gmail-m_-2257293022817741533MsoListParagraph"><u></u><span style="font-family:Symbol"><span>·<span style="font:7pt "Times New Roman"">       
</span></span></span><u></u>There are issues with building cross compilers: see
<a href="https://ghc.haskell.org/trac/ghc/ticket/16051" target="_blank">https://ghc.haskell.org/trac/ghc/ticket/16051</a>.
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">We are likely missing some features compared to the Make build system, but none of them should take a lot of time to implement at this point. If you spot one, let us know! We'll do our best to implement it (or help you do it) as soon as
 we can. It is useful to look at the existing Hadrian tickets before submitting new ones, to make sure that the issue or idea that you would like to talk about hasn't been brought up yet:
<a href="https://ghc.haskell.org/trac/ghc/query?status=!closed&component=Build+System+(Hadrian)" target="_blank">
https://ghc.haskell.org/trac/ghc/query?status=!closed&component=Build+System+(Hadrian)</a>.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Of course, we welcome your code contributions too! Several GHC developers have a good understanding of Hadrian codebase and will be able to help you. To find their names, have a look at the list of recent Hadrian commits:
<a href="https://gitlab.haskell.org/ghc/ghc/commits/master/hadrian" target="_blank">https://gitlab.haskell.org/ghc/ghc/commits/master/hadrian</a>. As you can see, Hadrian is actively developed by many people, and we hope you will join too.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Cheers,<u></u><u></u></p>
<p class="MsoNormal">Andrey<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>

_______________________________________________<br>
ghc-devs mailing list<br>
<a href="mailto:ghc-devs@haskell.org" target="_blank">ghc-devs@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br>
</blockquote></div>