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

vector Jan 2020 RC #266

Closed
cartazio opened this issue Jan 7, 2020 · 51 comments
Closed

vector Jan 2020 RC #266

cartazio opened this issue Jan 7, 2020 · 51 comments

Comments

@cartazio
Copy link
Contributor

cartazio commented Jan 7, 2020

@gwils @Boarders @fumieval @RyanGlScott @chessai @hvr @andrewthad
i'm thinking https://travis-ci.org/haskell/vector/builds/633862783 (current master) should work as a minor release bump on the 0.12 series, or a reasonably stable 0.13 series,

please provide feedback on if thers any outstanding tickets or PRS you'd like me to make sure to include (ideally with GH flavored markdown checkboxes for the things you want so i can keep track and get it over with today :) )

@andrewthad
Copy link
Contributor

andrewthad commented Jan 7, 2020

These are both pretty straightforward PRs that I would like to see merged:

@fumieval
Copy link
Contributor

fumieval commented Jan 8, 2020

As long as Y or Z in version X.Y.Z is bumped, I'm fine either way.

@cartazio
Copy link
Contributor Author

cartazio commented Jan 8, 2020 via email

@cartazio
Copy link
Contributor Author

cartazio commented Jan 8, 2020 via email

@sjakobi
Copy link
Member

sjakobi commented Jan 9, 2020

It would be nice if this optimization could be included, but it shouldn't block a release:

@lehins
Copy link
Contributor

lehins commented Jan 10, 2020

Per request from @cartazio: issues related to current RC that need to been addressed:

@cartazio
Copy link
Contributor Author

@lehins I think master should build now with primitive 0.7 :), i cherry picked the commit needed

@cartazio
Copy link
Contributor Author

also i think that v0.12.0.3 is live

@cartazio
Copy link
Contributor Author

i'm going to wait a few days to do anything more intricate till after i'm done with my fever,

@enobayram
Copy link

enobayram commented Jan 15, 2020

Per request from @cartazio: It seems like people are occasionally getting bitten by the cryptic boxed Vector + compaction issue (#220), spending a lot of time debugging (I'm one of the victims). This PR adds a hint to the ensuing error message:

@cartazio
Copy link
Contributor Author

#268 is gonna take priority! :)

@cartazio
Copy link
Contributor Author

i'm probably gonna have to backport the fix to previous minor/major versions too

@cartazio
Copy link
Contributor Author

cartazio commented Jan 21, 2020

probably also should figure out how to use #229 and also make sure current master is green on full build matrix of ghc versions at O2/O1

@RyanGlScott
Copy link
Member

RyanGlScott commented Jan 28, 2020

I'd like to see commits 3d742ab and 4b1ba83—which bump the upper version bounds on base and ghc-prim to <4.15 and <0.7, respectively—on Hackage soon, given that GHC 8.10.1-rc1 is out (8.10.1-rc1 bundles base-4.14.0.0 and ghc-prim-0.6.1). I'm not picky about whether this is done via a Hackage revision or a new release.

@cartazio
Copy link
Contributor Author

cartazio commented Jan 28, 2020 via email

@cartazio
Copy link
Contributor Author

@RyanGlScott can 0.12.0.3 have its bounds relaxed safely?

@RyanGlScott
Copy link
Member

@cartazio, indeed. I've verified that vector-0.12.0.3 builds without issue using base-4.14.0.0 and ghc-prim-0.6.1.

@cartazio
Copy link
Contributor Author

cartazio commented Jan 30, 2020

ok, action items left (condensed)

both of these lack even a unit test, and given how pernicious and tricky vector bugs have been historically , i'm loath to merge sans test (and my brain is too fried this week to feel confident about juggling that among my other hackery)

on the current bugs side of things around slices and overflow bugs we have

and the question of whats a good for the next release vs whats a good long term choice in semantics

@lehins
Copy link
Contributor

lehins commented Jan 30, 2020

I'll get a fix with a test case submitted for #257 later on tonight.

@cartazio
Copy link
Contributor Author

also

  • possibly revert the roles patch unless folks think the roles change in question isn't a mjor version bump (cc @ekmett @RyanGlScott ). i'm not sure ?
  • At the very least, i'm not sure if the Vector Primitive Roles are correct unless take the primitive maintainer hat on and say "users REALLY should never write their own instances that aren't a new type of a provided one"

@RyanGlScott
Copy link
Member

The changes in #235 arguably deserve a major version bump, since there is code that one could write today that will no longer typecheck after applying those changes. I'd certainly be OK with reverting it if it would make the next release process smoother.

@cartazio
Copy link
Contributor Author

@RyanGlScott also i'm pretty sure the predecessor patch by dominic was wrong too, but i'm not sure

@cartazio
Copy link
Contributor Author

cartazio commented Jan 31, 2020

also

  • make sure changelog reflects everything

@cartazio cartazio pinned this issue Jan 31, 2020
@cartazio
Copy link
Contributor Author

ok that leaves #188 (and the main question i have is whether the commit language as it is currently is wrong and does it handle both )

plus tests to gate inclusion of mapconcatmaybe+fromlist

@lehins
Copy link
Contributor

lehins commented Jan 31, 2020

@cartazio
Copy link
Contributor Author

yay! (i'm gonna wind down for the rest of the day before circling back on this stuff)

also thinking maybe the changelog notes should (ideally?! mention ticket # and or pr # when applicable, or commit id? idk. any improvment is an improvement)

@lehins
Copy link
Contributor

lehins commented Jan 31, 2020

Ideally I think we could also switch changelog to changelog.md and add links to issues, not just their #

@cartazio
Copy link
Contributor Author

cartazio commented Jan 31, 2020 via email

@cartazio
Copy link
Contributor Author

@lehins i changed the changelog to changelog.md so we can make it pretty

@cartazio
Copy link
Contributor Author

ok, action items left afaik (if we hew to this being a minor version bump)

  • (after making a 0.12.1.X branch) revert the roles annotations (i think some of the roles are annotated wrong atm)

if we want fromArray and mapMaybe

  • merge them into a branch, add tests, apply to master

irrespective of which path in the choose our adventure

  • make sure changelog is correct

@Shimuuar
Copy link
Contributor

Since we're planning to do a release I decided to go thorough master branch and check how many change that require major version bump it contains. It turns out: a lot, really lot. More than half probably if we discount documentation fixes and fiddling with travis. Mostly it's about adding more instances:

Require major bump

Don't require major bump

All in all it looks like easiest option is to just make 0.13.0.0 release. With almost three years worth of changes it almost inevitable. And if we do want to release 0.12.1 it would be easier to cherry pick bug fixes to v0.12 branch

@cartazio
Copy link
Contributor Author

Adding new type class instances is a minor version bump per PVP https://pvp.haskell.org/
(so adding storable/monadfail/unbox/nfdata* instances are minor bumps)

maximumBy change would be major bump

Role changes (some of which are wrong atm, i suspect that everything but Boxed vectors needs nominal roles, but I need to think about what the vector internal contract on those classes is atm!) would def be a major bump

as for injective type families, in hindsight, perhaps a minor change, though they are in the 0.12.0.X, for x>= 2 releases. At the time my reasoning (perhaps correctly, perhaps not) was that making it injective would only improve type inference. One package did break, to my dismay (though their pure and mutable instances conflated the Mutable state token and a common reified "rts context" handle token that was shared in both settings. Though its now fixed)

by this path dependent history, and that the preceding releases having the injective type families,
I think as long as i revert the current roles and the maxby pieces, this can be a minor bump.

@cartazio
Copy link
Contributor Author

to be clear: this reasoning is history/path-dependent and not what normal versioning should be based upon! :)

@cartazio
Copy link
Contributor Author

"aka, because its in the previous family of releases, that inclusion does not trigger a major bump relative to the previous release"

@Shimuuar
Copy link
Contributor

Problem with reverting breaking changes is it could be difficult to find all breaking changes. Roles for example were changed more than one time. I could have missed something. We have almost 3 years of patches and no one remember everything. Major bump is more conservative in that sense if release do break stuff well that was major bump. We could backport bugfixes to v0.12 brang and made 0.12.04 release which at least fixes worst stuff

WRT roles. Unboxed clearly should be nominal since newtype can have completely different data instance when compared to underlying type. And I think same arguments could be made for primittive as for storable.

@cartazio
Copy link
Contributor Author

i understand and agree with your worries,
my approach for the roles code would be shift command f "role" on the project, rather than by hand cleanup reverting the two roles patches

@lehins
Copy link
Contributor

lehins commented Jan 31, 2020

@Shimuuar I think you mean backport bugfixes to v0.12 branch and make a 0.12.1 release, right?

We could backport bugfixes to v0.12 brang and made 0.12.04 release

@cartazio
Copy link
Contributor Author

the only breaking changes (relative to 0.12.0.2/3) we'd need to pull out for a 0.12.1.X release would be Roles and the MaximiumBy right?

@cartazio
Copy link
Contributor Author

to be clear: no current release of vector has roles annotations, so the revert there is simply to delete them in that branch

@cartazio
Copy link
Contributor Author

cartazio commented Feb 1, 2020

wip/release/v0.12.1.X branch has the tentative release candidate, its available as a hackage candidate https://hackage.haskell.org/package/vector-0.12.1.0/candidate

please test that the codes you like work with it :)

@cartazio
Copy link
Contributor Author

cartazio commented Feb 1, 2020

@cartazio
Copy link
Contributor Author

cartazio commented Feb 1, 2020

@cartazio
Copy link
Contributor Author

cartazio commented Feb 1, 2020

cabal install https://hackage.haskell.org/package/vector-0.12.1.0/candidate/vector-0.12.1.0.tar.gz #  :) 

cc anyone who wants to check things work with it

@cartazio
Copy link
Contributor Author

cartazio commented Feb 1, 2020

huh, that trick only works with cabal v1-install :(

@cartazio
Copy link
Contributor Author

cartazio commented Feb 1, 2020

fuck, forgot to double check CI

@cartazio
Copy link
Contributor Author

cartazio commented Feb 1, 2020

(though i guess tests not being buildable isn't the worst, will do a .1 bug fix and marking the .0 release unbuldable via adding a <0 constraint to base)

@cartazio
Copy link
Contributor Author

cartazio commented Feb 1, 2020

taged, bagged, shipped!

https://hackage.haskell.org/package/vector-0.12.1.1

@cartazio cartazio closed this as completed Feb 1, 2020
@cartazio cartazio unpinned this issue Feb 1, 2020
@cartazio
Copy link
Contributor Author

cartazio commented Feb 1, 2020

theres a few good things that we didni't include, but the next release will be the 0.13 family and we can get that ready with some good baking over the next few weeks/months/quarter

@Shimuuar
Copy link
Contributor

Shimuuar commented Feb 1, 2020 via email

@cartazio
Copy link
Contributor Author

cartazio commented Feb 1, 2020 via email

@lehins
Copy link
Contributor

lehins commented Feb 1, 2020

@cartazio Thank you for getting this release done! Great work! And thanks to all those that have helped!

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

8 participants