I’m going to use this thread to update the community on the upcoming v0.15.0
PureScript release. Specifically, announcing various milestones we hit. I’m writing it for those who are new to the community and for those who were with us in the v0.14.0
update.
No estimate being given for when will v0.15.0
be released
First, I’m not going to give an estimate as to when this is ready. During the v0.14.0
update, I made statements like, “We’re really close!”, and “it’ll be ready soon!”. Well, 3 months later, it still wasn’t ready. Not exactly “close” or “soon” now is it? While I don’t anticipate this release taking as long as the previous one, I’m still going to apply that lesson and not provide an estimate.
Current Status
Second, I want to provide a “current status” as to where we’re at. Below I’m providing two snapshots. The first one is the original one I created when we got started on the release. The second is where we are today.
I’m providing both to prevent a misinterpretation of the current snapshot: the current snapshot is not exhaustive. As we’ve made progress, various issues arose, I realized additional tasks needed to be done, and I reformulated a few steps to show more detail. In other words, there may be more tasks we need to do than what is currently shown. Moreover, some boxes serve as things to keep in mind, not necessarily tasks to do or tasks that we’ve agreed to do.
First snapshot
Current snapshot
What are core
, contrib
, node
, and web
libraries?
Third, you might be wondering, "What are the core
, contrib
, node
, and web
libraries?
-
core
libraries refer to the 60 libraries under thepurescript
GitHub organization. It has the policy that PRs can only be merged if CI builds and 1) two core team members approve the PR if it’s submitted by a non-core-team contributor or 2) another core team member approves it if the contributor is on the core team. -
contrib
libraries refer to the 48 libraries under thepurescript-contrib
GitHub organization. It follows a similar PR policy, except approvers must be on thecontrib
team. -
node
andweb
correspond to thepurescript-node
andpurescript-web
GitHub organizations.
Why couldn’t I help earlier?
Once most of the breaking changes are done to the compiler, we can start updating the ecosystem. Updating the ecosystem is a very linear process. Since core
libraries use bower
, we have to update each library’s bower.json
to refer to the master
branch before any of its dependents will build in CI. Once we get to contrib
libraries, we have to depend on a package set, and that complicates things. Moreover, some libraries in web
and node
depends on libraries in contrib
and vice versa.
However, the biggest bottleneck is getting an approval for the PR, not submitting the PR itself. So, this task is really a two-person job for core
libraries, and can expand to a 2-4 person job for contrib
, web
, and node
libraries.
Due to the efforts of myself, @thomashoneyman and @sigma-andex, core
, contrib
, node
, and web
libraries (excluding purescript-affjax
) have been migrated to ES modules. These migrations exist only on those repos’ default branches, not as an official release yet as we may still make breaking changes.
How do I help?
In this section, I’m specifically talking to library authors. As for how to help, you could start updating your libraries, but you might want to wait before doing that.
First, all core
, contrib
, web
, and node
libraries are currently “unstable”. If you updated your library and added it to the package-set
repo’s prepare-0.15
branch, your library may break if we merge other breaking changes (e.g. in the compiler itself or in one of those libraries). Thus, you might have to do additional work later.
Second, your library may depend on another package that hasn’t yet been updated. Until that package compiles, you can’t update yours. The latest released package set has 419 packages whereas the prepare-0.15
branch only has 229. See libDeps.txt to determine whether your package can be updated now or not. Lines starting with ‘0’ have 0 dependencies blocking their update, but this calculation might be incorrect at times.
Third, I use the package set to see how breaking changes propagate throughout the ecosystem. If you added your package and it stops compiling after a breaking change is made, I’ll temporarily drop your package from the set. This creates extra work for me.
The ES modules working group will be discussing where we’re at and what we need to do next in weekly Discord call tomorrow.
List of possible breaking changes
The issues and PRs below are labeled with type: breaking change
and purs-0.15
. The breaking change label simply means that implementing the change would be a breaking one. It doesn’t necessarily mean we think it should be done, or that we will do it in this release.