ahrefs / atd

Static types for JSON APIs
Other
308 stars 53 forks source link

Migrate from Bucklescript to Melange #375

Closed jchavarri closed 7 months ago

jchavarri commented 8 months ago

BuckleScript is no more. Its legacy lives through either ReScript or Melange.

This PR migrates all related code to Melange, as that is the compiler we continue using at Ahrefs. This involves:

Additionally, I included myself as maintainer of this part of the code.

PR checklist

Khady commented 8 months ago

LGTM. It is going to break some backward compatibility, but that's probably fine?

jchavarri commented 8 months ago

True, it is a breaking change, I updated the changelog entry to reflect it. I wouldn't bump a major version.

@mjambon do you have any thoughts on the above and/or see any blockers before this PR can be merged?

jchavarri commented 7 months ago

If no one disagrees, as @Khady already approved, I will merge this tomorrow.

TheSpyder commented 2 months ago

I might be the only one seriously using the old bucklescript support with rescript 😅

I don't mind capping at version 2.15.0, my needs are fairly basic. Version 2.2.1 has still been working for me, although I'm about to fork the runtime to get it working on rescript 11 and thought I might as well upgrade atdgen at the same time. Good to know 2.15 is the last version I'll be able to use 🙂

Khady commented 2 months ago

it looks like this PR is only doing some renaming, so maybe it's still possible to support both melange and rescript at the same time?

Btw I don't think there's an opposition to the support of rescript in atd. It's just that ahrefs isn't using rescript so there was no need to keep that feature alive. If someone bothers opening a PR to add the support again I guess that it could get merged? I don't know how useful atd would be for the rescript community.

TheSpyder commented 2 months ago

I don't know how useful it would be to the wider community either. If it's just me I wouldn't worry too much.

Once I get the runtime and binary releases done for rescript, I'll post about it on the forum and see if there is any interest 🤔

TheSpyder commented 2 months ago

It turns out the API border between atdgen and the runtime API is fundamentally incompatible with ReScript 11. They're pushing the new "uncurried" mode fairly hard, and while I managed to convert the API project fairly easily the generated code fails to compile because it makes use of curried functions.

I can and will continue; I was already planning to disable "uncurried" in my project. But it means community adoption is likely to be difficult unless I contribute a rescript-specific code generator path to atdgen. Whether that's worth it for my team is something we'll evaluate when (and if) we look at switching the project to "uncurried" mode.

Happy to chat more over email if you want, rather than continue in this old closed PR thread 🙂

jchavarri commented 2 months ago

Happy to chat more over email if you want, rather than continue in this old closed PR thread

I think there are upsides to keep the conversation public. Feel free to open a new issue in this repo to track and discuss the details of this addition.