Skip to content

Release plan for 0.13 #357

Description

@Shimuuar

Here is list of issues that need to be fixed before 0.13 release. I only list breaking changes and omit things that could be added to 0.13.1, etc.

Activity

  1. lehins commented on Jan 17, 2021

    @lehins
    Contributor

    We'll hold off on #269 it might be useful to keep sVector afterall.

  2. lehins commented on Jan 17, 2021

    @lehins
    Contributor

    I'd like to communicate who's going to be working on which tickets so we don't start stomping on each other's feet.

    I'll can tackle the #36 now, since I recently had to deal with those semantics.

    I already mentioned it on a ticket, but I'll be happy to do the split described in #355

    With regards to #276 I could take care of it too, since I was involved in that discussion and also fixed the original issue with slice in #257, however it would be great to get another pair of eye on the issue, so maybe someone else can pick it out.

    #306 I suggested a solution: #301 (comment) which is the approach I've taken in massiv, so if someone would like to implement and document it, that'd be great.

    With regards to exporting constructors, I'd go for adding these modules:

    module Data.Vector.Internal
    module Data.Vector.Primitive.Internal
    module Data.Vector.Storable.Internal
    module Data.Vector.Unboxed.Internal

    that have {-# OPTIONS_HADDOCK hide, not-home #-}

    An easy way would be to simply re-export constructors from there or the hard way of moving constructors with all the instances into those module in order to avoid orphans. Former seems a bit less intrusive. This one is also up for the taking.

  3. lehins commented on Jan 17, 2021

    @lehins
    Contributor

    On a second thought it might be a good idea to move all of the unsafe functions into their own modules, which would also include constructors.

    module Data.Vector.Unsafe
    module Data.Vector.Primitive.Unsafe
    module Data.Vector.Storable.Unsafe
    module Data.Vector.Unboxed.Unsafe

    I do think that it would be a good way to promote distinction between safe and unsafe function usage. I never liked that functions like unsafeIndex are in scope by default. We could even use the Safe/Unsafe/Trustworthy Haskell extensions ;)

    However, this would be a serious breaking change, so we would have to do it over multiple major releases. @Shimuuar and @Bodigrim if that is something you think is worthwhile to discuss we could start a separate issue and possibly kickoff a discussion on libraries?

  4. Bodigrim commented on Jan 17, 2021

    @Bodigrim
    Contributor

    We could even use the Safe/Unsafe/Trustworthy Haskell extensions ;)

    Please no %)

    if that is something you think is worthwhile to discuss we could start a separate issue and possibly kickoff a discussion on libraries?

    Yes, such change deserves a discussion on libraries and CLC.

  5. Shimuuar commented on Jan 18, 2021

    @Shimuuar
    ContributorAuthor

    I like idea of Unsafe modules. Adding them is not a bit problem, deprecation and removal of unsafe functions is. Should we have one unsafe module for boxed/unboxed/storable/etc vectors? Or should we add two one for mutable and one for immutable API. I don't remember whether there're name clashes but usually mutable and pure vectors are imported in different namespaces. This is argument for two modules. I don't like clutter though. It's also possible to not bother with reexports for unsafe API and only export generic variants.

    Then there's question of finding all unsafe functions. Some seemingly benign functions will happily trash memory given incorrect inputs (see #118) as example

  6. lehins commented on Jan 18, 2021

    @lehins
    Contributor

    @Shimuuar I've started a new issue for this topic: #361

    Some seemingly benign functions will happily trash memory given incorrect inputs

    This means that the functions is unsafe and should be named with unsafe prefix, so it's a bug. We definitely should find all such functions. But that is a separate task, albeit a relevant one.

  7. lehins commented on May 21, 2022

    @lehins
    Contributor

    It has been over a year since we planned a major release, I think it is time we get it done. It is ok if we can't get all of those features we wanted in, a lot has been accomplished sine 0.12 version.

    I am setting a timeline two weeks from today to cut a release. @Shimuuar and @Bodigrim please speak up if you have any objections.

  8. Bodigrim commented on May 21, 2022

    @Bodigrim
    Contributor

    No objections from my side.

  9. Shimuuar commented on May 23, 2022

    @Shimuuar
    ContributorAuthor

    Strongly agree. 0.13 is long overdue

  10. lehins commented on Jun 19, 2022

    @lehins
    Contributor

    I've prepared a release here in #437

    One thing that was not checked in the release plan was the exporting of constructors. I think this problem is solved now:

    • Boxed and Storable vectors have conversion functions that allow going back and forth between internal representation
    • Primitive was always exported
    • Unboxe was also always exported, except from the hidden module Data.Vector.Unboxed.Base

    I think we are good for a release. If no one has any comments I'll merge the PR and make a release this week.

  11. lehins commented on Jun 19, 2022

    @lehins
    Contributor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions