Changes from the Dark rewrite

IF YOU USE DARK IN PRODUCTION, PLEASE READ THIS POST!

We are approaching the end of the Dark backend rewrite (see previous posts: motivation, plan, progress), which we are now tracking on GitHub. While there are still many tasks to be done, we're making good progress and the end is in sight. My goal is to finish in September, though there's a reasonable chance it will slip to October.

[ACTION ITEM] If you have code running in Dark that matters to you, read through the Changelog, and possibly make corrective changes to your programs to based on the upcoming changes. If you have any issues, please pop into our Slack to discuss them. [/ACTION ITEM]

We've tried to be extremely diligent about having no difference between the old version of Dark and the new version. However, we are of course reusing existing toolchains such as web servers, JSON parsers, and HTTP clients. And inevitably, toolchains differ even when based on a standard, and we've noticed some small differences when switching from the OCaml webservers, JSON parsers, libraries, etc, to the .NET ones.

Though Dark was designed to avoid changes to existing functionality, allowing for new versions of the language and standard library to be opted-in, we have not built that part of the product, and given the relatively low usage of Dark we felt the tradeoff was not worth it yet. We don't think these changes will break functionality for people except in unusual cases.

The changes are listed in the Changelog. We'll add more as we discover them, but we're close enough to the end that it feels unlikely we'll have too many more. If any of these changes affects you, please try to change your programs in the next few weeks.  If you have any problems, chat with us in our Slack – we're very motivated to make this upgrade a good experience, and open to fixing any issues that come up.