Skip to content

Bump OrderedCollections compat to include v2#973

Open
asinghvi17 wants to merge 2 commits into
JuliaCollections:masterfrom
asinghvi17:patch-3
Open

Bump OrderedCollections compat to include v2#973
asinghvi17 wants to merge 2 commits into
JuliaCollections:masterfrom
asinghvi17:patch-3

Conversation

@asinghvi17

Copy link
Copy Markdown
Contributor

No description provided.

@oxinabox

oxinabox commented Jun 3, 2026

Copy link
Copy Markdown
Member

Hmm because we reexport OrderedCollections.
a breaking change there is probably also a breaking change here.
I failed to think this through or I would have synconized the OrderdCollections 2.0 release with the DataStructures 0.19 release.

Have to think what do do here.
@timholy do you have thoughts?

@bluesmoon

Copy link
Copy Markdown

In terms of breaking changes, can I just note that the code that was removed in OrderedCollections 2.0.0 has been deprecated since the release of OrderedCollections 1.0.0 which was 8 years ago. This was also the second release of OrderedCollections, and was built for Julia 0.7.
Version 1.8.0+ of OrderedCollections requires Julia 1.7.1, so chances are that anyone using a modern version of OrderedCollections will not be using the deprecated code blocks that have been removed in 2.0.0.

@bluesmoon

Copy link
Copy Markdown

I've also looked through the list of exports in DataStructures, and it does not appear that you export anything that was previously deprecated and now removed, so your API is still unchanged.

@oxinabox

Copy link
Copy Markdown
Member

Its not about directly exporting things that are deprecated.
But rather it is about exporting things that have had methods e.g. from Base
that have been deprecated changed.

So if you knew nothing about OrderedCollections.
And had just been happily doing using DataStructures: OrderedSet
and you had code like assert OrderedSet([10, 20, 30])[2] == 20
that code would now break.

So our API has changed.
Because we implictly are exposed to basically 100% of API changes in OrderedCollections.
Due to reexporting it's types.

@fredrikekre

Copy link
Copy Markdown
Member

Perhaps drop the re-exporting and release DataStructures v1.0.0?

@timholy

timholy commented Jun 24, 2026

Copy link
Copy Markdown
Member

@fredrikekre's plan is pretty good. I haven't followed this repo, though, to know if a bunch more work needs to be done.

@oxinabox

oxinabox commented Jun 26, 2026

Copy link
Copy Markdown
Member

Status on being 1.0 ready is: #479 (comment)

@timholy

timholy commented Jun 26, 2026

Copy link
Copy Markdown
Member

My /freshen-package skill does quite a lot of that, particularly through the three review skills. I'm happy to feed DataStructures to it or help someone else use it if they have any questions. It tends to result in quite a few PRs, or a couple of big ones that collect a dozen-or-so smaller commits. LMK what you think; I'd need some certainty that a core DS maintainer would be willing to review the PRs, or just give me the green light, to invest the time if I were to do it myself.

@fredrikekre

Copy link
Copy Markdown
Member

IMO we can't wait for that since this is holding back a lot of things. If this PR is deemed breaking for DataStructures, then something like #479 would have to become "path to 2.0" instead.

@oxinabox

oxinabox commented Jun 29, 2026

Copy link
Copy Markdown
Member

IMO we can't wait for that since this is holding back a lot of things. If this PR is deemed breaking for DataStructures, then something like #479 would have to become "path to 2.0" instead.

I mean we can just tag 0.20.

I'd need some certainty that a core DS maintainer would be willing to review the PRs, or just give me the green light, to invest the time if I were to do it myself.

I have some availability to help review this week, but not next week or the week after that,
but then i am available again after that.

@KristofferC

Copy link
Copy Markdown
Collaborator

Can we run a PkgEval on this and see if it is breaking in practice?

@KristofferC

KristofferC commented Jun 29, 2026

Copy link
Copy Markdown
Collaborator

(although I need admin to set it up on this repo)

@KristofferC

Copy link
Copy Markdown
Collaborator

@nanosoldier runtests()

@nanosoldier

Copy link
Copy Markdown

Update on PkgEvalJob asinghvi17/DataStructures.jl@c9ce69a vs. dd699fe: Accepted

@nanosoldier

Copy link
Copy Markdown

Update on PkgEvalJob asinghvi17/DataStructures.jl@c9ce69a vs. dd699fe: Running

@nanosoldier

Copy link
Copy Markdown

The package evaluation job you requested has completed - possible new issues were detected.
The full report is available.

Report summary

✖ Packages that failed

3 packages failed only on the current version.

  • Package has test failures: 1 packages
  • Package tests unexpectedly errored: 1 packages
  • Test duration exceeded the time limit: 1 packages

98 packages failed on the previous version too.

✔ Packages that passed tests

3 packages passed tests only on the current version.

  • Other: 3 packages

136 packages passed tests on the previous version too.

➖ Packages that were skipped altogether

13 packages were skipped on the previous version too.

@KristofferC

Copy link
Copy Markdown
Collaborator

This looks like the one actual failure:

InterTypes: Error During Test at /home/pkgeval/.julia/packages/ACSets/WnKdX/test/intertypes/InterTypes.jl:103
  Test threw exception
  Expression: testjson(md)
  ArgumentError: Cannot convert unordered `AbstractDict`s into `OrderedDicts`
  Stacktrace:
    [1] convert(::Type{OrderedCollections.OrderedDict{Symbol, String}}, d::Dict{Symbol, Any})
      @ OrderedCollections ~/.julia/packages/OrderedCollections/1sijc/src/ordered_dict.jl:105
    [2] ACSets.InterTypes.InterTypeSupport.Object{String}(fields::Dict{Symbol, Any})
      @ ACSets.InterTypes.InterTypeSupport ~/.julia/packages/ACSets/WnKdX/src/intertypes/InterTypes.jl:237
    [3] construct(T::Type{ACSets.InterTypes.InterTypeSupport.Object{String}}, args::Dict{Symbol, Any}; kw::@Kwargs{})
      @ StructTypes ~/.julia/packages/StructTypes/PaLwj/src/StructTypes.jl:328
    [4] #read#46
      @ ~/.julia/packages/JSON3/rT1w2/src/structs.jl:418 [inlined]
    [5] read
      @ ~/.julia/packages/JSON3/rT1w2/src/structs.jl:360 [inlined]
    [6] read
      @ ~/.julia/packages/JSON3/rT1w2/src/structs.jl:354 [inlined]
    [7] #_#52
      @ ~/.julia/packages/JSON3/rT1w2/src/structs.jl:562 [inlined]
    [8] StructClosure
      @ ~/.julia/packages/JSON3/rT1w2/src/structs.jl:560 [inlined]
    [9] applyfield
      @ ~/.julia/packages/StructTypes/PaLwj/src/StructTypes.jl:875 [inlined]
   [10] read(::StructTypes.UnorderedStruct, buf::Base.CodeUnits{UInt8, String}, pos::Int64, len::Int64, b::UInt8, ::Type{Main.TestInterTypes.objects.Metadata}; ignore_extra_fields::Bool, kw::@Kwargs{})
      @ JSON3 ~/.julia/packages/JSON3/rT1w2/src/structs.jl:619
   [11] read
      @ ~/.julia/packages/JSON3/rT1w2/src/structs.jl:568 [inlined]
   [12] #parse#17
      @ ~/.julia/packages/JSON3/rT1w2/src/structs.jl:40 [inlined]
   [13] parse
      @ ~/.julia/packages/JSON3/rT1w2/src/structs.jl:32 [inlined]
   [14] read(str::String, ::Type{Main.TestInterTypes.objects.Metadata}; jsonlines::Bool, kw::@Kwargs{})
      @ JSON3 ~/.julia/packages/JSON3/rT1w2/src/structs.jl:46
   [15] read
      @ ~/.julia/packages/JSON3/rT1w2/src/structs.jl:45 [inlined]
   [16] testjson(x::Main.TestInterTypes.objects.Metadata)
      @ Main.TestInterTypes ~/.julia/packages/ACSets/WnKdX/test/intertypes/InterTypes.jl:14
   [17] top-level scope
      @ ~/.julia/packages/ACSets/WnKdX/test/intertypes/InterTypes.jl:103
   [18] macro expansion
      @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined]
   [19] macro expansion

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

Successfully merging this pull request may close these issues.

7 participants