Skip to content

Commit a6f2c9d

Browse files
committed
Merge branch 'main' into breaking
2 parents c700ddc + add8870 commit a6f2c9d

21 files changed

+404
-186
lines changed

.JuliaFormatter.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
style="blue"
22
format_markdown = true
33
import_to_using = false
4+
ignore = ["README.md"]

CITATION.bib

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,27 @@
1-
@inproceedings{ge2018t,
2-
author = {Hong Ge and
3-
Kai Xu and
4-
Zoubin Ghahramani},
5-
title = {Turing: a language for flexible probabilistic inference},
6-
booktitle = {International Conference on Artificial Intelligence and Statistics,
7-
{AISTATS} 2018, 9-11 April 2018, Playa Blanca, Lanzarote, Canary Islands,
8-
Spain},
9-
pages = {1682--1690},
10-
year = {2018},
11-
url = {http://proceedings.mlr.press/v84/ge18b.html},
12-
biburl = {https://dblp.org/rec/bib/conf/aistats/GeXG18},
1+
@article{10.1145/3711897,
2+
author = {Fjelde, Tor Erlend and Xu, Kai and Widmann, David and Tarek, Mohamed and Pfiffer, Cameron and Trapp, Martin and Axen, Seth D. and Sun, Xianda and Hauru, Markus and Yong, Penelope and Tebbutt, Will and Ghahramani, Zoubin and Ge, Hong},
3+
title = {Turing.jl: a general-purpose probabilistic programming language},
4+
year = {2025},
5+
publisher = {Association for Computing Machinery},
6+
address = {New York, NY, USA},
7+
url = {https://doi.org/10.1145/3711897},
8+
doi = {10.1145/3711897},
9+
note = {Just Accepted},
10+
journal = {ACM Trans. Probab. Mach. Learn.},
11+
month = feb,
12+
}
13+
14+
@InProceedings{pmlr-v84-ge18b,
15+
title = {Turing: A Language for Flexible Probabilistic Inference},
16+
author = {Ge, Hong and Xu, Kai and Ghahramani, Zoubin},
17+
booktitle = {Proceedings of the Twenty-First International Conference on Artificial Intelligence and Statistics},
18+
pages = {1682--1690},
19+
year = {2018},
20+
editor = {Storkey, Amos and Perez-Cruz, Fernando},
21+
volume = {84},
22+
series = {Proceedings of Machine Learning Research},
23+
month = {09--11 Apr},
24+
publisher = {PMLR},
25+
pdf = {http://proceedings.mlr.press/v84/ge18b/ge18b.pdf},
26+
url = {https://proceedings.mlr.press/v84/ge18b.html},
1327
}

HISTORY.md

Lines changed: 45 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,31 @@
1-
# Release 0.40.0
1+
# 0.40.0
22

33
[...]
44

5-
# Release 0.39.1
5+
# 0.39.5
6+
7+
Fixed a bug where sampling with an `externalsampler` would not set the log probability density inside the resulting chain.
8+
Note that there are still potentially bugs with the log-Jacobian term not being correctly included.
9+
A fix is being worked on.
10+
11+
# 0.39.4
12+
13+
Bumped compatibility of AbstractPPL to include 0.12.
14+
15+
# 0.39.3
16+
17+
Improved the performance of `Turing.Inference.getparams` when called with an untyped VarInfo as the second argument, by first converting to a typed VarInfo.
18+
This makes, for example, the post-sampling Chains construction for `Prior()` run much faster.
19+
20+
# 0.39.2
21+
22+
Fixed a bug in the support of `OrderedLogistic` (by changing the minimum from 0 to 1).
23+
24+
# 0.39.1
625

726
No changes from 0.39.0 — this patch is released just to re-trigger a Documenter.jl run.
827

9-
# Release 0.39.0
28+
# 0.39.0
1029

1130
## Update to the AdvancedVI interface
1231

@@ -31,33 +50,33 @@ Anything exported from there can be imported from either `Turing` or `DynamicPPL
3150

3251
The `@addlogprob!` macro is now exported from Turing, making it officially part of the public interface.
3352

34-
# Release 0.38.6
53+
# 0.38.6
3554

3655
Added compatibility with AdvancedHMC 0.8.
3756

38-
# Release 0.38.5
57+
# 0.38.5
3958

4059
Added compatibility with ForwardDiff v1.
4160

42-
# Release 0.38.4
61+
# 0.38.4
4362

4463
The minimum Julia version was increased to 1.10.2 (from 1.10.0).
4564
On versions before 1.10.2, `sample()` took an excessively long time to run (probably due to compilation).
4665

47-
# Release 0.38.3
66+
# 0.38.3
4867

4968
`getparams(::Model, ::AbstractVarInfo)` now returns an empty `Float64[]` if the VarInfo contains no parameters.
5069

51-
# Release 0.38.2
70+
# 0.38.2
5271

5372
Bump compat for `MCMCChains` to `7`.
5473
By default, summary statistics and quantiles for chains are no longer printed; to access these you should use `describe(chain)`.
5574

56-
# Release 0.38.1
75+
# 0.38.1
5776

5877
The method `Bijectors.bijector(::DynamicPPL.Model)` was moved to DynamicPPL.jl.
5978

60-
# Release 0.38.0
79+
# 0.38.0
6180

6281
## DynamicPPL version
6382

@@ -97,12 +116,12 @@ Performance for the cases which used to previously work (i.e. `VarName`s like `x
97116
It is possible that `VarNames` with indexing (e.g. `x[1]`) may be slower (although this is still an improvement over not working at all!).
98117
If you find any cases where you think the performance is worse than it should be, please do file an issue.
99118

100-
# Release 0.37.1
119+
# 0.37.1
101120

102121
`maximum_a_posteriori` and `maximum_likelihood` now perform sanity checks on the model before running the optimisation.
103122
To disable this, set the keyword argument `check_model=false`.
104123

105-
# Release 0.37.0
124+
# 0.37.0
106125

107126
## Breaking changes
108127

@@ -143,7 +162,7 @@ On the other hand, we have added a few more exports:
143162
- `DynamicPPL.returned` and `DynamicPPL.prefix` are exported (for use with submodels).
144163
- `LinearAlgebra.I` is exported for convenience.
145164

146-
# Release 0.36.0
165+
# 0.36.0
147166

148167
## Breaking changes
149168

@@ -157,7 +176,7 @@ The old Gibbs constructor relied on being called with several subsamplers, and e
157176

158177
Likewise, the old constructor for calling one subsampler more often than another, `Gibbs((HMC(0.01, 4, :x), 2), (MH(:y), 1))` has been deprecated. The new way to do this is to use `RepeatSampler`, also introduced at this version: `Gibbs(@varname(x) => RepeatSampler(HMC(0.01, 4), 2), @varname(y) => MH())`.
159178

160-
# Release 0.35.0
179+
# 0.35.0
161180

162181
## Breaking changes
163182

@@ -168,7 +187,7 @@ You can use Mooncake.jl by passing `adbackend=AutoMooncake(; config=nothing)` to
168187

169188
Support for Tracker.jl as an AD backend has been removed.
170189

171-
# Release 0.33.0
190+
# 0.33.0
172191

173192
## Breaking changes
174193

@@ -185,21 +204,21 @@ The same functionality is now offered by the new exported functions
185204
- `maximum_likelihood`
186205
- `maximum_a_posteriori`
187206

188-
# Release 0.30.5
207+
# 0.30.5
189208

190209
- `essential/ad.jl` is removed, `ForwardDiff` and `ReverseDiff` integrations via `LogDensityProblemsAD` are moved to `DynamicPPL` and live in corresponding package extensions.
191210
- `LogDensityProblemsAD.ADgradient(ℓ::DynamicPPL.LogDensityFunction)` (i.e. the single argument method) is moved to `Inference` module. It will create `ADgradient` using the `adtype` information stored in `context` field of ``.
192211
- `getADbackend` function is renamed to `getADType`, the interface is preserved, but packages that previously used `getADbackend` should be updated to use `getADType`.
193212
- `TuringTag` for ForwardDiff is also removed, now `DynamicPPLTag` is defined in `DynamicPPL` package and should serve the same [purpose](https://www.stochasticlifestyle.com/improved-forwarddiff-jl-stacktraces-with-package-tags/).
194213

195-
# Release 0.30.0
214+
# 0.30.0
196215

197216
- [`ADTypes.jl`](https://github.com/SciML/ADTypes.jl) replaced Turing's global AD backend. Users should now specify the desired `ADType` directly in sampler constructors, e.g., `HMC(0.1, 10; adtype=AutoForwardDiff(; chunksize))`, or `HMC(0.1, 10; adtype=AutoReverseDiff(false))` (`false` indicates not to use compiled tape).
198217
- Interface functions such as `ADBackend`, `setadbackend`, `setadsafe`, `setchunksize`, and `setrdcache` are deprecated and will be removed in a future release.
199218
- Removed the outdated `verifygrad` function.
200219
- Updated to a newer version of `LogDensityProblemsAD` (v1.7).
201220

202-
# Release 0.12.0
221+
# 0.12.0
203222

204223
- The interface for defining new distributions with constrained support and making them compatible with `Turing` has changed. To make a custom distribution type `CustomDistribution` compatible with `Turing`, the user needs to define the method `bijector(d::CustomDistribution)` that returns an instance of type `Bijector` implementing the `Bijectors.Bijector` API.
205224
- `~` is now thread-safe when used for observations, but not assumptions (non-observed model parameters) yet.
@@ -212,7 +231,7 @@ The same functionality is now offered by the new exported functions
212231
- The macros `@varinfo`, `@logpdf`, and `@sampler` are removed. Instead, one can access the internal variables `_varinfo`, `_model`, `_sampler`, and `_context` in the `@model` definition.
213232
- Additional constructors for `SMC` and `PG` make it easier to choose the resampling method and threshold.
214233

215-
# Release 0.11.0
234+
# 0.11.0
216235

217236
- Removed some extraneous imports and dependencies ([#1182](https://github.com/TuringLang/Turing.jl/pull/1182))
218237
- Minor backend changes to `sample` and `psample`, which now use functions defined upstream in AbstractMCMC.jl ([#1187](https://github.com/TuringLang/Turing.jl/pull/1187))
@@ -224,11 +243,11 @@ The same functionality is now offered by the new exported functions
224243
- Updates to allow AdvancedHMC 0.2.23 ([#1218](https://github.com/TuringLang/Turing.jl/pull/1218))
225244
- Add more informative error messages for SMC ([#900](https://github.com/TuringLang/Turing.jl/pull/900))
226245

227-
# Release 0.10.1
246+
# 0.10.1
228247

229248
- Fix bug where arrays with mixed integers, floats, and missing values were not being passed to the `MCMCChains.Chains` constructor properly [#1180](https://github.com/TuringLang/Turing.jl/pull/1180).
230249

231-
# Release 0.10.0
250+
# 0.10.0
232251

233252
- Update elliptical slice sampling to use [EllipticalSliceSampling.jl](https://github.com/TuringLang/EllipticalSliceSampling.jl) on the backend. [#1145](https://github.com/TuringLang/Turing.jl/pull/1145). Nothing should change from a front-end perspective -- you can still call `sample(model, ESS(), 1000)`.
234253
- Added default progress loggers in [#1149](https://github.com/TuringLang/Turing.jl/pull/1149).
@@ -239,7 +258,7 @@ The same functionality is now offered by the new exported functions
239258
- Fix bug in VI where the bijectors where being inverted incorrectly [#1168](https://github.com/TuringLang/Turing.jl/pull/1168).
240259
- The Gibbs sampler handles state better by passing `Transition` structs to the local samplers ([#1169](https://github.com/TuringLang/Turing.jl/pull/1169) and [#1166](https://github.com/TuringLang/Turing.jl/pull/1166)).
241260

242-
# Release 0.4.0-alpha
261+
# 0.4.0-alpha
243262

244263
- Fix compatibility with Julia 0.6 [#341, #330, #293]
245264
- Support of Stan interface [#343, #326]
@@ -252,7 +271,7 @@ The same functionality is now offered by the new exported functions
252271
- Add type alias CSMC for PG [#333]
253272
- Fix progress meter [#317]
254273

255-
# Release 0.3
274+
# 0.3
256275

257276
- NUTS implementation #188
258277
- HMC: Transforms of ϵ for each variable #67 (replace with introducing mass matrix)
@@ -264,21 +283,21 @@ The same functionality is now offered by the new exported functions
264283
- Refactoring code: Unify VarInfo, Trace, TaskLocalStorage #96
265284
- Refactoring code: Better gradient interface #97
266285

267-
# Release 0.2
286+
# 0.2
268287

269288
- Gibbs sampler ([#73])
270289
- HMC for constrained variables ([#66]; no support for varying dimensions)
271290
- Added support for `Mamba.Chain` ([#90]): describe, plot etc.
272291
- New interface design ([#55]), ([#104])
273292
- Bugfixes and general improvements (e.g. `VarInfo` [#96])
274293

275-
# Release 0.1.0
294+
# 0.1.0
276295

277296
- Initial support for Hamiltonian Monte Carlo (no support for discrete/constrained variables)
278297
- Require Julia 0.5
279298
- Bugfixes and general improvements
280299

281-
# Release 0.0.1-0.0.4
300+
# 0.0.1-0.0.4
282301

283302
The initial releases of Turing.
284303

Project.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ version = "0.40.0"
55
[deps]
66
ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b"
77
AbstractMCMC = "80f14c24-f653-4e6a-9b94-39d6b0f70001"
8+
AbstractPPL = "7a57a42e-76ec-4ea3-a279-07e840d6d9cf"
89
Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697"
910
AdvancedHMC = "0bf59076-c3b1-5ca4-86bd-e02cd72cde3d"
1011
AdvancedMH = "5b7e9947-ddc0-4b3f-9b55-0d8042f74170"
@@ -49,6 +50,7 @@ TuringOptimExt = "Optim"
4950
[compat]
5051
ADTypes = "1.9"
5152
AbstractMCMC = "5.5"
53+
AbstractPPL = "0.11, 0.12"
5254
Accessors = "0.1"
5355
AdvancedHMC = "0.3.0, 0.4.0, 0.5.2, 0.6, 0.7, 0.8"
5456
AdvancedMH = "0.8"

0 commit comments

Comments
 (0)