Remove arraydist and filldist functions and specialized types
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()andfilldist()are no longer exported -
Removed specialized types:
MatrixOfUnivariate,VectorOfMultivariate,FillVectorOfUnivariate,FillMatrixOfUnivariate,FillVectorOfMultivariate, andVectorOfUnivariate -
Removed LazyArrays extension: The entire
DistributionsADLazyArraysExt.jlwas 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:
- Configure Actions setup steps to set up my environment, which run before the firewall is enabled
- Add the appropriate URLs or hosts to the custom allowlist in this repository's Copilot coding agent settings (admins only)
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.