Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Core library updates for 0.14 #3942

Closed
57 tasks done
hdgarrood opened this issue Oct 3, 2020 · 119 comments
Closed
57 tasks done

Core library updates for 0.14 #3942

hdgarrood opened this issue Oct 3, 2020 · 119 comments

Comments

@hdgarrood
Copy link
Contributor

hdgarrood commented Oct 3, 2020

Opening this issue to keep track of core library updates for 0.14. I've managed to get @garyb's purescript-dependency-helper running again (see https://github.com/hdgarrood/purescript-dependency-helper) so that I could produce this list. The list is topologically sorted so that if we update the libraries in this order, any library we start working on should already have had its dependencies updated.

I think the procedure for each library should be more or less this:

  • Update .travis.yml to grab the most recent RC (see eg purescript/purescript-prelude@268870d)
  • If there's already an 0.14 branch, merge that into master
  • Temporarily update bower.json to pull the master versions of all dependencies
  • Make sure psa in package.json is on v0.8.0 or newer (because of the stderr/stdout changes)
  • Merge any outstanding PRs with breaking changes
  • Look over the issues to see if there are any breaking changes we want to do now

Once we have v0.14.0 tagged, we should go back over all of these libraries in the same order and do the following for each:

  • Revert the changes to .travis.yml so that the most recent compiler version is pulled in
  • Update dependencies in bower.json to specify real version ranges, rather than master
  • Tag a version and update the package-sets repo
@garyb
Copy link
Member

garyb commented Oct 3, 2020

Oh nice! Glad you could figure out the dependency-helper, I think it was hacked together very haphazardly, probably should have done it in PS 😄.

@hdgarrood
Copy link
Contributor Author

The main issue was a breaking change in bower's API, so I'm not sure it would have made much difference to have it in PS in this case anyway.

@JordanMartinez
Copy link
Contributor

Strange... This was the list my package-graph program outputted:
purescriptLib.txt

It has quickcheck last because it depends on everything else.

@hdgarrood
Copy link
Contributor Author

Topological ordering of libraries like this generally aren’t unique; there are multiple valid ways of ordering them such that every library occurs after its dependencies. For example, if you have three libraries A, B, C, such that B and C both depend on A, then you can order them in two ways: ABC or ACB. For the above list, the quickcheck library doesn’t depend on any of functors, parallel, minibench, validation, or semirings, so it doesn’t have to come after them.

@afcondon
Copy link

afcondon commented Oct 3, 2020

which would be a good reason to see it as a graph/tree rather than a list...hope to help with that someday not-soon-but-medium-term-ish

@garyb
Copy link
Member

garyb commented Oct 3, 2020

Outputting a dot from that dependency updater script thing is easy enough, I had it doing that at one point. It's just not very useful to use a graphic when you want a list you can check things off in in GH 😄

@afcondon
Copy link

afcondon commented Oct 3, 2020

Fair point!

@garyb
Copy link
Member

garyb commented Oct 3, 2020

Actually, that might be a fun little project though - have a visual version of the hierarchy, could colour-code them for which are ready to be worked on, etc. and could link it back to a GH issue as a flat list since the names of the nodes in the graph will be unique. If you wanted to get fancy, could probably use the GH API to have checkboxes in the visual graph that would update the original issue too, rather than it just being a visualisation.

@thomashoneyman
Copy link
Member

thomashoneyman commented Oct 3, 2020

Especially because we need to do this for -contrib, too, and it would be really nice to see what libraries become unblocked once a particular library has been updated. Otherwise we have to go cross-reference dependencies across like 100 libraries every time we want to update something, which can get pretty annoying over time.

@afcondon
Copy link

afcondon commented Oct 3, 2020

i have three repos (little more than gists, but pointers to a vaguely unified solution in this space that exists only in my head) that are relevant to this...a DSL for D3, a half-baked port of the haskell parser for dot files and a little PureScript program that renders the existing purs graph output using D3's force-layout...not much but if it helps anyone working in that direction, so much the better.

There's a potential for very strong tooling with not-so-heroic effort for Purescript using those elements (plus parser for CoreFn output and graphing of same).

@JordanMartinez
Copy link
Contributor

JordanMartinez commented Oct 8, 2020

Harry updated effect to v0.14.0

I've submitted PRs to the following repos

  • unsafe-coerce (merged and no other work to do)
  • prelude (waiting to be merged)
  • invariant (waiting to be merged)
  • refs (waiting to be merged)
  • console (waiting to be merged)
  • newtype (waiting to be merged)
  • partial (waiting to be merged)
  • functions (waiting to be merged)

@csicar
Copy link

csicar commented Oct 8, 2020

I'll be working on:

  • typelevel-prelude

@JordanMartinez
Copy link
Contributor

Just a thought, but should PRs link back to this issue, so we know which repos have an open PR already?

@JordanMartinez
Copy link
Contributor

JordanMartinez commented Oct 11, 2020

See these meta-repo searches for the following things (for the most part):

@JordanMartinez
Copy link
Contributor

I'm taking maybe.

@JordanMartinez
Copy link
Contributor

I'm taking globals

@JordanMartinez
Copy link
Contributor

Taking foldable-traversable

@JordanMartinez
Copy link
Contributor

Taking either

@JordanMartinez
Copy link
Contributor

Taking identity

@JordanMartinez
Copy link
Contributor

Taking orders

@JordanMartinez
Copy link
Contributor

Taking integers

@thomashoneyman
Copy link
Member

thomashoneyman commented Dec 11, 2020

At this point we only have:

and then everything is up-to-date for 0.14 as far as syntax / role annotations / coercible / etc. goes. That's not necessarily including any breaking changes we still want to make, which can be tracked by this search:

https://github.com/issues?q=is%3Aopen+archived%3Afalse+user%3Apurescript-contrib+user%3Apurescript-web+user%3Apurescript-node+label%3A%22fix+before+0.14%22+is%3Aissue+

@thomashoneyman
Copy link
Member

Other than those, it looks like there are only blocking issues for us to resolve on these libraries:

Getting really close to the finish line!

@JordanMartinez
Copy link
Contributor

JordanMartinez commented Dec 16, 2020

In my PR updating the prepare-0.14 package sets to use v0.14.0-rc3, seem the following packages aren't in the package set:

[error] The following packages do not exist in your package set:
[error]   - precise
[error]   - web-dom-parser
[error]   - web-encoding
[error]   - web-fetch
[error]   - web-promise
[error]   - web-streams

Edit: These have all been added

@thomashoneyman
Copy link
Member

I've un-checked lists due to purescript/purescript-lists#178.

@kl0tl
Copy link
Member

kl0tl commented Dec 19, 2020

I’ve updated the list with all the issues and pull requests mentioning deprecations or breaking changes I could find.

@JordanMartinez
Copy link
Contributor

Thanks @kl0tl! That helps to see how much more we have.

@JordanMartinez
Copy link
Contributor

Here are PRs in core libraries that have been approved by at least one person: https://github.com/search?q=is%3Aopen+user%3Apurescript+is%3Apr+review%3Aapproved&type=Issues

@hdgarrood
Copy link
Contributor Author

@kl0tl Agreed on not trying to address those ones for 0.14.0. I'll remove them from the list for now; we can restore them if anyone objects.

@hdgarrood
Copy link
Contributor Author

I've removed all of those except for purescript/purescript-profunctor#23 as I would quite like to get that one in, and I don't think it's too complicated as it's just rearranging things.

@hdgarrood
Copy link
Contributor Author

I think we can leave purescript/purescript-arrays#192 and purescript/purescript-arrays#196 for later, so that we can mark arrays as done.

@hdgarrood
Copy link
Contributor Author

Actually never mind, I think we need to deal with the sort stability issue now: purescript/purescript-arrays#196

@JordanMartinez
Copy link
Contributor

While working on typelevel-equality, I came across this issue involving functional dependencies not propagating. I can't recall which issue it is in this PR, but I know we have one open for it.

@JordanMartinez
Copy link
Contributor

The bifunctor/profunctor change is the only last breaking change we have planned to make.

@JordanMartinez
Copy link
Contributor

All core library have been updated to v0.14.0. Should this issue be closed?

@hdgarrood
Copy link
Contributor Author

Fine by me! Really nice work, everyone 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants