Skip to content

Commit d332e60

Browse files
authored
Merge branch 'master' into fix-mutable-binheap-unions
2 parents a9ab17f + b67c498 commit d332e60

40 files changed

Lines changed: 648 additions & 189 deletions

.github/workflows/CI.yml

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,19 @@ on:
55
branches:
66
- master
77
tags: '*'
8+
9+
concurrency:
10+
# group by workflow and ref; the last slightly strange component ensures that for pull
11+
# requests, we limit to 1 concurrent job, but for the default repository branch we don't
12+
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.ref_name != github.event.repository.default_branch || github.run_number }}
13+
# Cancel intermediate builds, but only if it is a pull request build.
14+
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}
15+
16+
# needed to allow julia-actions/cache to delete old caches that it has created
17+
permissions:
18+
actions: write
19+
contents: read
20+
821
jobs:
922
test:
1023
name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }}
@@ -13,34 +26,46 @@ jobs:
1326
fail-fast: false
1427
matrix:
1528
version:
16-
- '1.0'
29+
- '1.6'
30+
- 'lts'
1731
- '1'
1832
# - 'nightly'
1933
os:
2034
- ubuntu-latest
21-
- macOS-latest
35+
- macos-latest
2236
- windows-latest
2337
arch:
24-
- x64
38+
- ''
39+
exclude:
40+
- os: macos-latest # Apple Silicon
41+
version: '1.6'
42+
arch: ''
43+
include:
44+
- os: macos-latest # Apple Silicon
45+
version: '1.6'
46+
# Install an x86_64 build of Julia, and run it under Rosetta 2 emulation
47+
arch: 'x64'
2548
steps:
26-
- uses: actions/checkout@v3
27-
- uses: julia-actions/setup-julia@v1
49+
- uses: actions/checkout@v6
50+
- uses: julia-actions/setup-julia@v2
2851
with:
2952
version: ${{ matrix.version }}
30-
arch: ${{ matrix.arch }}
31-
- uses: actions/cache@v3
32-
env:
33-
cache-name: cache-artifacts
34-
with:
35-
path: ~/.julia/artifacts
36-
key: ${{ runner.os }}-test-${{ env.cache-name }}-${{ hashFiles('**/Project.toml') }}
37-
restore-keys: |
38-
${{ runner.os }}-test-${{ env.cache-name }}-
39-
${{ runner.os }}-test-
40-
${{ runner.os }}-
53+
arch: ${{ (matrix.arch == '') && runner.arch || matrix.arch }}
54+
- uses: julia-actions/cache@v2
4155
- uses: julia-actions/julia-buildpkg@v1
4256
- uses: julia-actions/julia-runtest@v1
57+
- name: "Run doctests"
58+
if: ${{ matrix.version == 'lts' }} # only run in one Julia version due to fluctuations
59+
run: |
60+
julia --project=docs --color=yes --code-coverage -e '
61+
using Pkg
62+
Pkg.develop(PackageSpec(path=pwd()))
63+
Pkg.instantiate()
64+
using Documenter
65+
using DataStructures
66+
DocMeta.setdocmeta!(DataStructures, :DocTestSetup, :(using DataStructures); recursive=true)
67+
doctest(DataStructures)'
4368
- uses: julia-actions/julia-processcoverage@v1
44-
- uses: codecov/codecov-action@v3
69+
- uses: codecov/codecov-action@v5
4570
with:
46-
file: lcov.info
71+
token: ${{ secrets.CODECOV_TOKEN }}

.github/workflows/Documenter.yml

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,29 @@
11
name: Documenter
22
on:
3-
push:
4-
branches: [master]
5-
tags: [v*]
6-
pull_request:
3+
push:
4+
branches: [main, master]
5+
tags: ["v*"]
6+
pull_request:
7+
workflow_dispatch:
8+
9+
permissions:
10+
actions: write # needed to allow julia-actions/cache to delete old caches that it has created
11+
contents: write # needed to allow deploying docs
12+
statuses: write
713

814
jobs:
9-
Documenter:
10-
name: Documentation
11-
runs-on: ubuntu-latest
12-
steps:
13-
- uses: actions/checkout@v3
14-
- uses: julia-actions/julia-buildpkg@latest
15-
- uses: julia-actions/julia-docdeploy@latest
16-
env:
17-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
18-
DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }}
15+
Documenter:
16+
name: Documentation
17+
runs-on: ubuntu-latest
18+
steps:
19+
- uses: actions/checkout@v6
20+
- uses: julia-actions/setup-julia@v2
21+
with:
22+
version: '1' # replace this with whatever version you need
23+
show-versioninfo: true # this causes versioninfo to be printed to the action log
24+
- uses: julia-actions/cache@v2 # cache using https://github.com/julia-actions/cache
25+
- uses: julia-actions/julia-buildpkg@v1 # if package requires Pkg.build()
26+
- uses: julia-actions/julia-docdeploy@v1
27+
env:
28+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
29+
DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }}

.github/workflows/Invalidations.yml

Lines changed: 0 additions & 40 deletions
This file was deleted.

.github/workflows/TagBot.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,22 @@ on:
44
types:
55
- created
66
workflow_dispatch:
7+
inputs:
8+
lookback:
9+
default: 3
10+
# permissions:
11+
# actions: read
12+
# checks: read
13+
# contents: write
14+
# deployments: read
15+
# issues: read
16+
# discussions: read
17+
# packages: read
18+
# pages: read
19+
# pull-requests: read
20+
# repository-projects: read
21+
# security-events: read
22+
# statuses: read
723
jobs:
824
TagBot:
925
if: github.event_name == 'workflow_dispatch' || github.actor == 'JuliaTagBot'

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ docs/site/
44
docs/Manifest.toml
55
Manifest.toml
66
benchmark/*.json
7+
.vscode

Changelog.md renamed to CHANGELOG.md

Lines changed: 89 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,95 @@
11
Changelog is now in the [Github Release Notes](https://github.com/JuliaCollections/DataStructures.jl/releases).
22

3+
Starting from version 0.19.0, CHANGELOG.md is managed in a format that follows <https://keepachangelog.com/en/1.1.0/>.
4+
5+
<!-- links start -->
6+
[Unreleased]: https://github.com/JuliaCollections/DataStructures.jl/compare/v0.19.0...HEAD
7+
[0.19.0]: https://github.com/JuliaCollections/DataStructures.jl/compare/v0.18.22...v0.19.0
8+
[0.19.1]: https://github.com/JuliaCollections/DataStructures.jl/compare/v0.19.0...v0.19.1
9+
[0.19.2]: https://github.com/JuliaCollections/DataStructures.jl/compare/v0.19.1...v0.19.2
10+
<!-- links end -->
11+
12+
[0.19.3]
13+
=====================
14+
15+
## Fixed
16+
17+
- Reintroduce a method for `percolate_up!` `percolate_down!` that doesn't require the element to be passed, which was unintentionally removed in 0.19.2 (JuliaCollections/DataStructures.jl#960).
18+
19+
[0.19.2]
20+
=====================
21+
22+
## Added
23+
24+
- `percolate_up!`, `percolate_down!` now use `@propagate_inbounds` to control bounds checking (JuliaCollections/DataStructures.jl#954)
25+
26+
[0.19.1] - 2025-08-26
27+
=====================
28+
29+
## Fixed
30+
31+
- Add `newsz::Integer` type annotation to `sizehint!` overloads (JuliaCollections/DataStructures.jl#945)
32+
- Fix `pop!` with default for `OrderedRobinDict` (JuliaCollections/DataStructures.jl#950)
33+
- Fix deprecation of `DisjointSets(xs...)` to avoid warning on package load (JuliaCollections/DataStructures.jl#951)
34+
35+
## Other
36+
37+
- link to where missing change notes are (JuliaCollections/DataStructures.jl#944)
38+
- Bump `actions/checkout` from 4 to 5 (JuliaCollections/DataStructures.jl#947)
39+
- Add docstrings to `DefaultDict` (JuliaCollections/DataStructures.jl#948)
40+
41+
[0.19.0] - 2025-07-31
42+
=====================
43+
44+
## Added
45+
- New `Queue` and `Stack` as separate types with enhanced documentation
46+
- Add `empty!` method for heaps (JuliaCollections/DataStructures.jl#932)
47+
- Support for recursive `DefaultDict` creation
48+
- Add `find_prefixes` method to `Trie` for finding all keys that are prefixes of a given string (JuliaCollections/DataStructures.jl#933)
49+
- Improved constructors for `CircularBuffer` allowing initialization with an iterable and capacity
50+
- Add `resize!` method for `CircularBuffer`
51+
- Enhanced documentation with doctests and improved examples throughout (JuliaCollections/DataStructures.jl#931)
52+
53+
## Changed
54+
- Minimum Julia version requirement raised to 1.6 (JuliaCollections/DataStructures.jl#874)
55+
- `DisjointSets` renamed to `DisjointSet` (singular form) (JuliaCollections/DataStructures.jl#700)
56+
- `IntDisjointSets` renamed to `IntDisjointSet` (singular form) (JuliaCollections/DataStructures.jl#700)
57+
- PriorityQueue API updated to use standard Julia interfaces:
58+
- `enqueue!``push!`
59+
- `dequeue!``popfirst!`
60+
- `dequeue_pair!``popfirst!`
61+
- `peek``first`
62+
- Renamed methods in sorted containers:
63+
- `startof``firstindex`
64+
- `endof``lastindex`
65+
- `insert!``push_return_semitoken!`
66+
- `Accumulator` constructor behavior changed to properly accumulate values when initialized with pairs
67+
- Documentation significantly expanded and reorganized
68+
- Performance improvements in heaps and various other data structures (JuliaCollections/DataStructures.jl#907)
69+
70+
## Deprecated
71+
- `enqueue!` and `dequeue!` methods (use `push!` and `popfirst!` instead)
72+
- `peek` for PriorityQueue (use `first` instead)
73+
- `DisjointSets` (use `DisjointSet` instead) (JuliaCollections/DataStructures.jl#700)
74+
- `IntDisjointSets` (use `IntDisjointSet` instead) (JuliaCollections/DataStructures.jl#700)
75+
- `startof` and `endof` (use `firstindex` and `lastindex` instead)
76+
77+
## Fixed
78+
- Memory management improvements using `Base._unsetindex!` in several data structures (JuliaCollections/DataStructures.jl#884)
79+
- Fixed `append!` behavior in `MutableLinkedList` to properly handle multiple arguments
80+
- Various bug fixes and correctness improvements
81+
82+
## Removed
83+
- Dependency on Compat.jl
84+
- Dependency on InteractiveUtils.jl
85+
- Support for Julia versions < 1.6 (JuliaCollections/DataStructures.jl#874)
86+
87+
0.8 – 0.18
88+
===========
89+
Changelogs for 0.8 to 0.18.x are listed only on the [Github release pages](https://github.com/JuliaCollections/DataStructures.jl/releases):
90+
e.g.: [v0.18.22](https://github.com/JuliaCollections/DataStructures.jl/releases/tag/v0.18.22)
91+
392

4-
## Old Changelong (pre-2018)
593

694
0.7.0 / 2017-09-02
795
==================

Project.toml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
name = "DataStructures"
22
uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
3-
version = "0.19.0-DEV"
3+
version = "0.19.3"
44

55
[deps]
6-
Compat = "34da2185-b29b-5c13-b0c7-acf172513d20"
7-
InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
86
OrderedCollections = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
97

108
[compat]
11-
Compat = "3.0.0, 4"
129
OrderedCollections = "1.1.0"
13-
julia = "1"
10+
julia = "1.6"
1411

1512
[extras]
1613
Primes = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae"

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
[![Travis Build Status](https://travis-ci.org/JuliaCollections/DataStructures.jl.svg?branch=master)](https://travis-ci.org/JuliaCollections/DataStructures.jl)
2-
[![Appveyor Build Status](https://ci.appveyor.com/api/projects/status/5gw9xok4e58aixsv?svg=true)](https://ci.appveyor.com/project/kmsquire/datastructures-jl)
1+
[![CI](https://github.com/JuliaCollections/LRUCache.jl/actions/workflows/ci.yml/badge.svg)](https://github.com/JuliaCollections/LRUCache.jl/actions/workflows/ci.yml)
32
[![Test Coverage](https://coveralls.io/repos/github/JuliaCollections/DataStructures.jl/badge.svg?branch=master)](https://coveralls.io/github/JuliaCollections/DataStructures.jl?branch=master)
43
[![Test Coverage](https://codecov.io/github/JuliaCollections/DataStructures.jl/coverage.svg?branch=master)](https://codecov.io/github/JuliaCollections/DataStructures.jl?branch=master)
54
[![Stable Documentation](https://img.shields.io/badge/docs-stable-blue.svg)](https://juliacollections.github.io/DataStructures.jl/stable)

docs/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
44
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
55

66
[compat]
7-
Documenter = "0.27"
7+
Documenter = "1"

docs/make.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ DocMeta.setdocmeta!(DataStructures, :DocTestSetup, :(using DataStructures); recu
55

66
makedocs(
77
sitename = "DataStructures.jl",
8+
warnonly = true, # FIXME: address all warnings and resolve them
9+
doctest = true,
810
pages = [
911
"index.md",
1012
"deque.md",

0 commit comments

Comments
 (0)