<div dir="ltr"><div class="markdown-here-wrapper" style><p style="margin:1.2em 0px!important">On 18 October 2014 22:36, Herbert Valerio Riedel <<a href="mailto:hvriedel@gmail.com" target="_blank">hvriedel@gmail.com</a>> wrote:</p>
<p style="margin:1.2em 0px!important"></p><div class="markdown-here-exclude"><p></p><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Yeah, it's quite convenient to hack on GHCi that way as it's just an<br>
ordinary Cabal package (so it doesn't require to setup a GHC source-tree<br>
and wrangle with the GHC build-system), if you're lucky enough (which is<br>
most of the time) that the parts you want to tweak don't require<br>
changing the GHC API.<br></blockquote><p></p></div><p style="margin:1.2em 0px!important"></p>
<p style="margin:1.2em 0px!important">Right, so far my work on ghc-server has all been doable as far back as GHC 7.2.</p>
<p style="margin:1.2em 0px!important"></p><div class="markdown-here-exclude"><p></p><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Iirc all of the deltas in ghci-ng-7.6 relative to GHC 7.6.3 landed in<br>
GHC 7.8.1, so extracting the latest GHCi frontend code would be probably<br>
better.<br></blockquote><p></p></div><p style="margin:1.2em 0px!important"></p>
<p style="margin:1.2em 0px!important">Okies!</p>
<p style="margin:1.2em 0px!important"></p><div class="markdown-here-exclude"><p></p><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Supporting multiple major-versions of the GHC API simultanously in the<br></blockquote><p></p></div><p style="margin:1.2em 0px!important"></p>
<p style="margin:1.2em 0px!important"></p><div class="markdown-here-exclude"><p></p><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
same code-base could prove to be rather tedious (and make it more<br>
difficult to extract clean patches to merge back into GHC HEAD). But<br>
this is only speculation on my part, so your mileage may vary....<br></blockquote><p></p></div><p style="margin:1.2em 0px!important"></p>
<p style="margin:1.2em 0px!important">It hasn’t been too tedious to support old versions at least on ghc-server — I went back as far as 7.2, but GHC 7.6 for example is very similar to 7.8 so kind of comes “for free”. Makes sense, really. One major version bump to another is rather passable, it’s when going a few versions back that it becomes tedious. At least in my experience. I’ll see anyway.</p>
<p style="margin:1.2em 0px!important"></p><div class="markdown-here-exclude"><p></p><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">You may want to be careful with the build-deps though; e.g. if you use<br>
JSON and want this to be merged back into GHC HEAD at some point, we may<br>
need something lighter than the usual go-to JSON implementation `aeson`<br>
in terms of build-deps...<br></blockquote><p></p></div><p style="margin:1.2em 0px!important"></p>
<p style="margin:1.2em 0px!important">Indeed, I was considering extracting and embedding a simple parser/printer from the old <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;display:inline">json</code> package (remember that?). Served me well for years before aeson usurped it. :-) I think it can be reduced down to one module that operators on <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;display:inline">Strings</code>.</p>
<p style="margin:1.2em 0px!important"></p><div class="markdown-here-exclude"><p></p><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">PS: I've added you to<br>
    <a href="http://hackage.haskell.org/package/ghci-ng/maintainers/" target="_blank">http://hackage.haskell.org/package/ghci-ng/maintainers/</a>, just in case...<br></blockquote><p></p></div><p style="margin:1.2em 0px!important"></p>
<p style="margin:1.2em 0px!important">Thanks! </p>
<div title="MDH:PGRpdiBjbGFzcz0iZ21haWxfZXh0cmEiPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5PbiAxOCBP
Y3RvYmVyIDIwMTQgMjI6MzYsIEhlcmJlcnQgVmFsZXJpbyBSaWVkZWwgPHNwYW4gZGlyPSJsdHIi
PiZsdDs8YSBocmVmPSJtYWlsdG86aHZyaWVkZWxAZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+
aHZyaWVkZWxAZ21haWwuY29tPC9hPiZndDs8L3NwYW4+IHdyb3RlOjxicj48YmxvY2txdW90ZSBj
bGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDox
cHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij5ZZWFoLCBpdCdzIHF1aXRlIGNvbnZlbmll
bnQgdG8gaGFjayBvbiBHSENpIHRoYXQgd2F5IGFzIGl0J3MganVzdCBhbjxicj4Kb3JkaW5hcnkg
Q2FiYWwgcGFja2FnZSAoc28gaXQgZG9lc24ndCByZXF1aXJlIHRvIHNldHVwIGEgR0hDIHNvdXJj
ZS10cmVlPGJyPgphbmQgd3JhbmdsZSB3aXRoIHRoZSBHSEMgYnVpbGQtc3lzdGVtKSwgaWYgeW91
J3JlIGx1Y2t5IGVub3VnaCAod2hpY2ggaXM8YnI+Cm1vc3Qgb2YgdGhlIHRpbWUpIHRoYXQgdGhl
IHBhcnRzIHlvdSB3YW50IHRvIHR3ZWFrIGRvbid0IHJlcXVpcmU8YnI+CmNoYW5naW5nIHRoZSBH
SEMgQVBJLjxicj48L2Jsb2NrcXVvdGU+PGRpdj48YnI+PC9kaXY+PGRpdj5SaWdodCwgc28gZmFy
IG15IHdvcmsgb24gZ2hjLXNlcnZlciBoYXMgYWxsIGJlZW4gZG9hYmxlIGFzIGZhciBiYWNrIGFz
IEdIQyA3LjIuPC9kaXY+PGRpdj4mbmJzcDs8L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxf
cXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xp
ZDtwYWRkaW5nLWxlZnQ6MWV4Ij5JaXJjIGFsbCBvZiB0aGUgZGVsdGFzIGluIGdoY2ktbmctNy42
IHJlbGF0aXZlIHRvIEdIQyA3LjYuMyBsYW5kZWQgaW48YnI+CkdIQyA3LjguMSwgc28gZXh0cmFj
dGluZyB0aGUgbGF0ZXN0IEdIQ2kgZnJvbnRlbmQgY29kZSB3b3VsZCBiZSBwcm9iYWJseTxicj4K
YmV0dGVyLjxicj48L2Jsb2NrcXVvdGU+PGRpdj48YnI+PC9kaXY+PGRpdj5Pa2llcyE8L2Rpdj48
ZGl2PiZuYnNwOzwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1h
cmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDox
ZXgiPlN1cHBvcnRpbmcgbXVsdGlwbGUgbWFqb3ItdmVyc2lvbnMgb2YgdGhlIEdIQyBBUEkgc2lt
dWx0YW5vdXNseSBpbiB0aGU8YnI+PC9ibG9ja3F1b3RlPjxibG9ja3F1b3RlIGNsYXNzPSJnbWFp
bF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNv
bGlkO3BhZGRpbmctbGVmdDoxZXgiPgpzYW1lIGNvZGUtYmFzZSBjb3VsZCBwcm92ZSB0byBiZSBy
YXRoZXIgdGVkaW91cyAoYW5kIG1ha2UgaXQgbW9yZTxicj4KZGlmZmljdWx0IHRvIGV4dHJhY3Qg
Y2xlYW4gcGF0Y2hlcyB0byBtZXJnZSBiYWNrIGludG8gR0hDIEhFQUQpLiBCdXQ8YnI+CnRoaXMg
aXMgb25seSBzcGVjdWxhdGlvbiBvbiBteSBwYXJ0LCBzbyB5b3VyIG1pbGVhZ2UgbWF5IHZhcnku
Li4uPGJyPjwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48ZGl2Pkl0IGhhc24ndCBiZWVuIHRv
byB0ZWRpb3VzIHRvIHN1cHBvcnQgb2xkIHZlcnNpb25zIGF0IGxlYXN0IG9uIGdoYy1zZXJ2ZXIg
LS0gSSB3ZW50IGJhY2sgYXMgZmFyIGFzIDcuMiwgYnV0IEdIQyA3LjYgZm9yIGV4YW1wbGUgaXMg
dmVyeSBzaW1pbGFyIHRvIDcuOCBzbyBraW5kIG9mIGNvbWVzICJmb3IgZnJlZSIuIE1ha2VzIHNl
bnNlLCByZWFsbHkuIE9uZSBtYWpvciB2ZXJzaW9uIGJ1bXAgdG8gYW5vdGhlciBpcyByYXRoZXIg
cGFzc2FibGUsIGl0J3Mgd2hlbiBnb2luZyBhIGZldyB2ZXJzaW9ucyBiYWNrIHRoYXQgaXQgYmVj
b21lcyB0ZWRpb3VzLiBBdCBsZWFzdCBpbiBteSBleHBlcmllbmNlLiBJJ2xsIHNlZSBhbnl3YXku
PC9kaXY+PGRpdj4mbmJzcDs8L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0
eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5n
LWxlZnQ6MWV4Ij5Zb3UgbWF5IHdhbnQgdG8gYmUgY2FyZWZ1bCB3aXRoIHRoZSBidWlsZC1kZXBz
IHRob3VnaDsgZS5nLiBpZiB5b3UgdXNlPGJyPgpKU09OIGFuZCB3YW50IHRoaXMgdG8gYmUgbWVy
Z2VkIGJhY2sgaW50byBHSEMgSEVBRCBhdCBzb21lIHBvaW50LCB3ZSBtYXk8YnI+Cm5lZWQgc29t
ZXRoaW5nIGxpZ2h0ZXIgdGhhbiB0aGUgdXN1YWwgZ28tdG8gSlNPTiBpbXBsZW1lbnRhdGlvbiBg
YWVzb25gPGJyPgppbiB0ZXJtcyBvZiBidWlsZC1kZXBzLi4uPGJyPjwvYmxvY2txdW90ZT48ZGl2
Pjxicj48L2Rpdj48ZGl2PkluZGVlZCwgSSB3YXMgY29uc2lkZXJpbmcgZXh0cmFjdGluZyBhbmQg
ZW1iZWRkaW5nIGEgc2ltcGxlIHBhcnNlci9wcmludGVyIGZyb20gdGhlIG9sZCBganNvbmAgcGFj
a2FnZSAocmVtZW1iZXIgdGhhdD8pLiBTZXJ2ZWQgbWUgd2VsbCBmb3IgeWVhcnMgYmVmb3JlIGFl
c29uIHVzdXJwZWQgaXQuIDotKSBJIHRoaW5rIGl0IGNhbiBiZSByZWR1Y2VkIGRvd24gdG8gb25l
IG1vZHVsZSB0aGF0IG9wZXJhdG9ycyBvbiBgU3RyaW5nc2AuPC9kaXY+PGRpdj4mbmJzcDs8L2Rp
dj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhl
eDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij5QUzogSSd2ZSBh
ZGRlZCB5b3UgdG88YnI+CiZuYnNwOyAmbmJzcDsgPGEgaHJlZj0iaHR0cDovL2hhY2thZ2UuaGFz
a2VsbC5vcmcvcGFja2FnZS9naGNpLW5nL21haW50YWluZXJzLyIgdGFyZ2V0PSJfYmxhbmsiPmh0
dHA6Ly9oYWNrYWdlLmhhc2tlbGwub3JnLzx3YnI+cGFja2FnZS9naGNpLW5nL21haW50YWluZXJz
LzwvYT4sIGp1c3QgaW4gY2FzZS4uLjxicj48L2Jsb2NrcXVvdGU+PGRpdj48YnI+PC9kaXY+PGRp
dj5UaGFua3MhJm5ic3A7PC9kaXY+PC9kaXY+PC9kaXY+" style="height:0;font-size:0em;padding:0;margin:0">​</div></div></div>