Skip to content

Conversation

Copilot
Copy link

@Copilot Copilot AI commented Aug 28, 2025

This PR removes the historical arraydist and filldist functions along with their associated specialized types from DistributionsAD.jl. These functions predate Distributions.product_distribution and provide largely redundant functionality.

Background

Based on comprehensive benchmarks by @penelopeysm, Distributions.product_distribution provides equivalent or better performance in most cases compared to the existing arraydist and filldist implementations. The only exception was with vectors of Normal distributions, but this performance difference should be addressed upstream in Distributions.jl rather than maintained here.

Changes

  • Removed functions: arraydist() and filldist() are no longer exported
  • Removed specialized types: MatrixOfUnivariate, VectorOfMultivariate, FillVectorOfUnivariate, FillMatrixOfUnivariate, FillVectorOfMultivariate, and VectorOfUnivariate
  • Removed LazyArrays extension: The entire DistributionsADLazyArraysExt.jl was dependent on the removed types
  • Cleaned up autodiff rules: Removed Zygote rules for the specialized types
  • Updated tests and documentation: Removed tests and docs for the removed functionality

Migration

Users should migrate to using Distributions.product_distribution directly:

# Before (no longer available)
filldist(Normal(0, 1), 3, 4)
arraydist([Normal(0, 1), Normal(1, 2)])

# After (recommended)
using FillArrays
product_distribution(Fill(Normal(0, 1), 3, 4))
product_distribution([Normal(0, 1), Normal(1, 2)])

This change simplifies the API, reduces maintenance burden, and eliminates duplicate functionality while maintaining full backward compatibility for core DistributionsAD features.

Fixes #274.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/repos/ElOceanografo/SparseInverseSubset.jl/tarball/52962839426b75b3021296f7df242e40ecfc0852
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/FluxML/Functors.jl/tarball/60a0339f28a233601cb74468032b5c302d5067de
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/FluxML/IRTools.jl/tarball/57e9ce6cf68d0abf5cb6b3b4abf9bedf05c939c0
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/FluxML/MacroTools.jl/tarball/1e0228a030642014fe5cfe68c2c0a818f9e3f522
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/FluxML/NNlib.jl/tarball/eb6eb10b675236cee09a81da369f94f16d77dc2f
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/FluxML/Optimisers.jl/tarball/131dc319e7c58317e8c6d5170440f6bdaee0a959
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/FluxML/Tracker.jl/tarball/83697ba2237663355de8fb0a800144cda44848a0
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/FluxML/Zygote.jl/tarball/a29cbf3968d36022198bcc6f23fdfd70f7caf737
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/FluxML/ZygoteRules.jl/tarball/434b3de333c75fc446aa0d19fc394edafd07ab08
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/GunnarFarneback/RegistryInstances.jl/tarball/ffd19052caf598b8653b99404058fce14828be51
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaArrays/FillArrays.jl/tarball/6a70198746448456524cb442b8af316927ff3e1a
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaArrays/LazyArrays.jl/tarball/76627adb8c542c6b73f68d4bfd0aa71c9893a079
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaArrays/StaticArrays.jl/tarball/cbea8a6bd7bed51b1619658dec70035e07b8502f
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaArrays/StaticArraysCore.jl/tarball/192954ef1208c7019899fbf8049e717f92959682
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaArrays/StructArrays.jl/tarball/8ad2e38cbb812e29348719cc63580ec1dfeb9de4
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Expat_jll.jl/tarball/7bb1361afdb33c7f2b085aa49ea8fe1b0fb14e58
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Git_LFS_jll.jl/tarball/bb8471f313ed941f299aa53d32a94ab3bee08844
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Git_jll.jl/tarball/cd06e503111a7c5ef1d4a339de6ccf5bd7437b32
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Libiconv_jll.jl/tarball/be484f5c92fad0bd8acfef35fe017900b0b73809
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/OpenSSH_jll.jl/tarball/cb7acd5d10aff809b4d0191dfe1956c2edf35800
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/OpenSSL_jll.jl/tarball/2ae7d4ddec2e13ad3bddf5c0796f7547cf682391
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/OpenSpecFun_jll.jl/tarball/1346c9208249809840c91b26703912dff463d335
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaBinaryWrappers/Rmath_jll.jl/tarball/58cdd8fb2201a6267e1db87ff148dd6c1dbd8ad8
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaCollections/AbstractTrees.jl/tarball/2d9c9a55f9c93e8887ad391fbae72f8ef55e1177
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaCollections/DataStructures.jl/tarball/6c72198e6a101cccdd4c9731d3985e904ba26037
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaCollections/OrderedCollections.jl/tarball/05868e21324cede2207c6f0f466b4bfef6d5e7ee
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaCollections/SortingAlgorithms.jl/tarball/64d974c2e6fdf07f8155b5b2ca2ffa9069b608d9
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaConcurrent/Atomix.jl/tarball/29bb0eb6f578a587a49da16564705968667f5fa8
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaConcurrent/UnsafeAtomics.jl/tarball/b13c4edda90890e5b04ba24e20a310fbe6f249ff
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaData/DataAPI.jl/tarball/abe83f3a2f1b857aac70ef8b269080af17764bbe
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaData/Missings.jl/tarball/ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaData/Parsers.jl/tarball/7d2f8f21da5db6a806faf7b9b292296da42b2810
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaData/Tables.jl/tarball/f2c1efbc8f3a609aadf318094f8fc5204bdaf344
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaDiff/ChainRules.jl/tarball/224f9dc510986549c8139def08e06f78c562514d
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaDiff/ChainRulesCore.jl/tarball/e4c6a16e77171a5f5e25e9646617ab1c276c5607
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaDiff/ChainRulesTestUtils.jl/tarball/cffe963ae0879e455d74ffd8243348293d72988a
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaDiff/DiffResults.jl/tarball/782dd5f4561f5d267313f23853baaaa4c52ea621
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaDiff/DiffRules.jl/tarball/23163d55f885173722d1e4cf0f6110cdbaf7e272
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaDiff/FiniteDifferences.jl/tarball/06d76c780d657729cf20821fb5832c6cc4dfd0b5
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaDiff/ForwardDiff.jl/tarball/ce15956960057e9ff7f1f535400ffa14c92429a4
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaDiff/ReverseDiff.jl/tarball/3ab8eee3620451b09f0272c271875b4bc02146d9
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaDocs/ANSIColoredPrinters.jl/tarball/574baf8110975760d391c710b6341da1afa48d8c
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaDocs/DocStringExtensions.jl/tarball/7442a5dfe1ebb773c29cc2962a8980f47221d76c
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaDocs/Documenter.jl/tarball/47ffb8f27ffc01e2e57e7ae5365ae5ceef87b03d
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaDocs/IOCapture.jl/tarball/b6d6bfdd7ce25b0f9b2f6b3dd56b2673a66c8770
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaDocs/MarkdownAST.jl/tarball/465a70f0fc7d443a00dcdc3267a497397b8a3899
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaGPU/Adapt.jl/tarball/f7817e2e585aa6d924fd714df1e2a84be7896c60
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaGPU/GPUArrays.jl/tarball/83cf05ab16a73219e5f6bd1bdfa9848fa24ac627
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaGPU/KernelAbstractions.jl/tarball/83c617e9e9b02306a7acab79e05ec10253db7c87
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaIO/CodecZlib.jl/tarball/962834c22b66e32aa10f7611c08c8ca4e20749a9
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaIO/JSON.jl/tarball/31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaIO/Suppressor.jl/tarball/6dbb5b635c5437c68c28c2ac9e39b87138f37c0a
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaIO/TranscodingStreams.jl/tarball/0c45878dcfdcfa8480052b6ab162cdd138781742
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaLang/Compat.jl/tarball/0037835448781bb46feb39866934e243886d756a
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaLang/FunctionWrappers.jl/tarball/d62485945ce5ae9c0c48f124a84998d755bae00e
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaLang/PrecompileTools.jl/tarball/5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaLinearAlgebra/ArrayLayouts.jl/tarball/120e392af69350960b1d3b89d41dcc1d66543858
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaMath/AbstractFFTs.jl/tarball/d92ad398961a3ed262d8bf04a1a2b8340f915fef
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaMath/Combinatorics.jl/tarball/8010b6bb3388abe68d95743dcbea77650bb2eddf
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaMath/HypergeometricFunctions.jl/tarball/68c173f4f449de5b438ee67ed0c9c748dc31a2ec
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaMath/IrrationalConstants.jl/tarball/e2222959fbc6c19554dc15174c81bf7bf3aa691c
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaMath/NaNMath.jl/tarball/9b8215b1ee9e78a293f99797cd31375471b2bcae
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaMath/QuadGK.jl/tarball/9da16da70037ba9d701192e27befedefb91ec284
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaMath/RealDot.jl/tarball/9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaMath/Richardson.jl/tarball/48f038bfd83344065434089c2a79417f38715c41
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/JuliaMath/SpecialFunctions.jl/tarball/41852b8679f78c8d8961eeadc8f62cef861a52e3
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaObjects/ConstructionBase.jl/tarball/b4b092499347b18a015186eae3042f72267106cb
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaPackaging/JLLWrappers.jl/tarball/0533e564aae234aff59ab625543145446d8b6ec2
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaPackaging/Preferences.jl/tarball/0f27480397253da18fe2c12a4ba4eb9eb208bf3d
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaPackaging/Requires.jl/tarball/62389eeff14780bfe55195b7204c0d8738436d64
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaStats/Distributions.jl/tarball/3e6d038b77f22791b8e3472b7c633acea1ecac06
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaStats/LogExpFunctions.jl/tarball/13ca9e2586b89836fd20cccf56e57e2b9ae7f38f
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaStats/PDMats.jl/tarball/f07c06228a1c670ae4c87d1276b92c7c597fdda0
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaStats/Rmath.jl/tarball/852bd0f55565a9e973fcfee83a84413270224dc4
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaStats/Statistics.jl/tarball/ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaStats/StatsAPI.jl/tarball/9d72a13a3f4dd3795a195ac5a44d7d6ff5f552ff
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaStats/StatsBase.jl/tarball/2c962245732371acd51700dbb268af311bddd719
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaStats/StatsFuns.jl/tarball/8e45cecc66f3b42633b8ce14d431e8e57a3e242e
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/JuliaVersionControl/Git.jl/tarball/824a1890086880696fc908fe12a17bcf61738bd8
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/KristofferC/LazilyInitializedFields.jl/tarball/0f2da712350b020bc3957f269c9caad516383ee0
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/LilithHafner/AliasTables.jl/tarball/9876e1e164b144ca45e9e3198d0b689cadfed9ff
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/LilithHafner/PtrArrays.jl/tarball/1d36ef11a9aaf1e8b74dacc6a731dd1de8fd493d
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/queryverse/DataValueInterfaces.jl/tarball/bfc1187b79289637fa0ef6d4436ebdfe6905cbd6
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/queryverse/IteratorInterfaceExtensions.jl/tarball/a3f24677c21f5bbe9d2a714f95dcd58337fb2856
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/queryverse/TableTraits.jl/tarball/c06b2f539df1c6efa794486abfb6ed2022561a39
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/rdeits/CommonSubexpressions.jl/tarball/cda2cfaebb4be89c9084adaca7dd7333369715c5
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/simonster/Reexport.jl/tarball/45e428421666073eab6f2da5c9d310d99bb12f9b
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (http block)
  • https://api.github.com/repos/vchuravy/HashArrayMappedTries.jl/tarball/2eaa69a7cab70a52b9687c8bf950a5a93ec895ae
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • https://api.github.com/repos/vchuravy/ScopedValues.jl/tarball/c3b2323466378a2ba15bea4b2f73b081e022f473
    • Triggering command: julia --project -e using Pkg; Pkg.test() (http block)
  • pkg.julialang.org
    • Triggering command: julia --project -e using Pkg; Pkg.instantiate() (dns block)
    • Triggering command: julia --project -e using Pkg; Pkg.test() (dns block)

If you need me to access, download, or install something from one of these locations, you can either:


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

@Copilot Copilot AI changed the title [WIP] Removing arraydist and filldist Remove arraydist and filldist functions and specialized types Aug 28, 2025
@Copilot Copilot AI requested a review from yebai August 28, 2025 01:47
Copilot finished work on behalf of yebai August 28, 2025 01:47
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.

Removing arraydist and filldist
2 participants