Changes in version 0.13.12 - New method $time_type() to determine of a model uses discrete time (discrete) or continuous time (continuous). Changes in version 0.13.10 - Avoid integer overflow in binomial(); previously n of greater than 2^31 - 1 (.Machine$integer.max) would overflow and error (mrc-4046, reported by Jørgen Eriksson Midtbø). Changes in version 0.13.8 - Support for solving ODE models (based on a prototype implementation in mode; full documentation forthcoming. Changes in version 0.12.5 - Allow control over the C++ specification using the argument cpp_std, and including other packages' headers using the argument linking_to in dust::dust() Changes in version 0.12.1 - The update_state() method gains an index argument for setting just some variables in an update. Changes in version 0.12.0 - Breaking change, with step (and so on with step_end) changing to time everywhere, in order to smooth the inclusion of continuous time models. This affects quite a few methods: - step() and set_step() become time() and set_time() - update_state()'s argument changes from step to time Changes in version 0.11.24 - Add min_log_likelihood support to $filter() (#361) Changes in version 0.11.23 - Allow use of $filter() with deterministic models (that support it) - Allow partial running of the filter from the current step up to some step part way through the data (#177) Changes in version 0.11.22 - Allow model names with underscores (#358, see also odin.dust#98) Changes in version 0.11.21 - Remove the functionality that allowed a vector of start times to be provided, as we were never using it and it simplifes things to remove it (#310) Changes in version 0.11.17 - Remove dust::dust_rng_state_long_jump now that we have proper distributed RNG state support (#343) Changes in version 0.11.15 - New support for setting up distributed parallel random seeds (dust::dust_rng_distributed_state and dust::dust_rng_distributed_pointer), and documentation to guide their use (vignette("rng_distributed")) (#297) Changes in version 0.11.11 - Removed methods $set_state, $reset and $set_pars which were deprecated in favour of $update_state in 0.9.21 (#273) Changes in version 0.11.10 - The names of different generator internal states has been simplified to lose the trailing state, e.g. xoshiro256star_state becomes xoshiro256star (#332) Changes in version 0.11.8 - Improved the interface for using dust's random number support from other packages (#329) Changes in version 0.11.7 - New polar algorithm for normally distributed random numbers; faster than Box-Muller but slower than Ziggurat - Tweaked algorithm for Ziggurat so now ~10% faster by avoiding drawing a second random number when working with 64 bit integers - Added a new vignette describing the internals of the normal sampling algorithms (#325) Changes in version 0.11.6 - Added support for drawing normally distributed random numbers using the ziggurat method. Currently this is only efficient on a CPU, though supported on a GPU (#308) Changes in version 0.11.5 - Major header reorganisation, the dust::cuda namespace is now dust::gpu, most user-facing uses of cuda and device now replaced with gpu (#298, #317) - New (static) method real_size on every dust class for accessing the size of real_type, in bits (#301) Changes in version 0.11.1 - Support for the multinomial distribution. This differs from most other random number support because it returns a vector of values not a single number (#307) Changes in version 0.11.0 - Rationalised the GPU interface, now once created models can only be used on either the GPU or CPU which simplifies the internal bookkeeping (#292, #302) Changes in version 0.10.0 - Improved and generalised RNG interface, with more algorithms and more control - Expand set of included generators to 12 with different storage types, period and precision (#281) - Faster random number generation with single precision, using xoshiro128plus (#282) - Slightly faster real number generation for all generators by avoiding division (#280) - The dust_rng object has been refactored with methods changing names, a new behaviour when using multiple generators, and parallelisation (#279) - Type names have been standardised and we now avoid _t in favour of _type in line with the POSIX standard; this impacts all existing dust-using code (#278) - Density function names have changed from dust::dbinom to dust::density::binomial (and so on, #291) Changes in version 0.9.21 - Deprecate the previous state update methods ($reset(), $set_pars() and $set_state()) in favour of a single method that can update any or all of parameters, model state and time, $update_state() (#180) - Model determinism is now fixed at creation, rather than being settable via run and simulate, with deterministic now an argument to the constructor (#270) Changes in version 0.9.20 - Change to the dust::densities::dnbinom() to offer both of the same parameterisations as R's dnbinom, explicitly as dust::densities::dnbinom_mu() and dust::densities::dnbinom_prob() (#171) Changes in version 0.9.18 - New function dust::dust_generate for creating a mini-package from a dust model for inspection or later loading (#204) - New option to dust::dust to skip the model cache, which may be useful when compiling with (say) different GPU options (#248) Changes in version 0.9.14 - Add two new vignettes covering model/data comparison and use on GPUs; see vignette("data") and vignette("cuda") (#183, #229) Changes in version 0.9.10 - Finer control over GPU settings, with the block size of run() now (optionally) exposed - On the GPU integers are kept in shared memory even where reals will no longer fit (#245) Changes in version 0.9.8 - Fix infinite loop with rbinom using floats Changes in version 0.9.7 - Synchronise possible divergences in the density functions (CUDA only) (#243) Changes in version 0.9.6 - Fix a possible issue with dnbinom in float mode with a small mean (#240) Changes in version 0.9.5 - Fix a bug when running the systematic resample in the particle filter in float mode (#238) Changes in version 0.9.4 - Fix a bug when running the CUDA version of the particle filter without history/trajectories. Changes in version 0.9.3 - Change real_t at compilation, and return information about the size of real_t from model objects (#233) Changes in version 0.9.2 - Add a CUDA version of the simulate method. Changes in version 0.9.1 - Move history and snapshot saving out of VRAM, and make it asynchronous. Changes in version 0.9.0 - Added CUDA version of the particle filter, run with model$filter(device = TRUE) (#224) Changes in version 0.8.15 - Removed functions dust::dust_simulate and dust::dust_iterate, which were deprecated in 0.7.9 (#215) Changes in version 0.8.7 - Invalid inputs in rbinom are converted into exceptions which are safely thrown even from parallel code (#190) Changes in version 0.8.5 - The filter method can save snapshots at points along a run (#176) Changes in version 0.8.4 - Reduce host and memcpy usage in device reorder by computing scatter index within the kernel (#198) Changes in version 0.8.3 - Fix issue with rnorm() running on a GPU (device code). - Fix issue with unaligned shared copy in CUDA code. Changes in version 0.8.2 - Don't rewrite files with identical content during generation; this avoids recompilation of code across sessions when the argument workdir is used with dust::dust (#195) Changes in version 0.8.0 - Add GPU support (#73) Changes in version 0.7.15 - Add new design vignette - see vignette("design") (#161) Changes in version 0.7.13 - Improved handling of multi-parameter models, allowing parameter sets to be structured and handling of the special case of one particle per parameter set, outlined in vignette("multi") (#169) Changes in version 0.7.9 - Deprecate dust::dust_simulate and dust::dust_iterate which are replaced with a new method $simulate on the object which retains state and makes this more powerful (#100, #119, #121) Changes in version 0.7.8 - Allow set_pars method to be used with multiparameter dust objects (#125) - Enforce rule that once created a dust object may not change state size (i.e., the number of particles, state elements and number of parameter sets may not change). This was already assumed by mcstate Changes in version 0.7.5 - Beginnings of particle filter support, with a new $filter() method (only works for models with a compiled "compare" method) (#155) Changes in version 0.7.4 - More complete handling of $compare_data() with multiple parameters, with the dust::dust_data function now expanded to support this (#152) Changes in version 0.7.3 - Added new method $resample() which implements the resampling algorithm used by the mcstate particle filter (#137) - The $compare_data() method is better behaved with multi-parameter dust objects, returning a matrix (#136) Changes in version 0.7.2 - Added new methods $n_particles() and $n_state() to every dust model which can be used to query the size of the state (#149) Changes in version 0.7.0 - Dust models must now specify two internal types, internal_t and shared_t. The latter is a pointer to constant data shared across all particles within a parameter set (#143) Changes in version 0.6.2 - Support for some basic density functions within the header . Supported distributions include dbinom, dnbinom, dbetabinom and dpois. These are included for use within comparison functions (#134) Changes in version 0.6.1 - Compiled "comparison" functions are supported, designed to compute likelihoods for mcstate; this interface will be expanded and documented in a future release (#129) Changes in version 0.6.0 - The data argument (and along with it things like set_data) have moved to become pars as that is how we're using it, and to make space for a future data element (#130) Changes in version 0.5.10 - Add support for rexp from dust model, just using inversion for now (#127) Changes in version 0.5.9 - Start of support for running dust objects with multiple data/parameter sets at once (#92) Changes in version 0.5.7 - New method set_n_threads() for changing the number of OpenMP threads after initialisation (#122) Changes in version 0.5.6 - dust::dust_simulate() can return the entire model end state (#119) Changes in version 0.5.4 - New $set_data() method, similar to reset but changing only the data/parameters mid-model run, holding state and everything else identical (#114) Changes in version 0.5.3 - Add support for configuring dust generation using C++ pseudo-attributes. Changes in version 0.5.2 - Back out the interleaved rng state from 0.5.0, which is causing a performance regression Changes in version 0.5.1 - Remove prototype GPU interface, in preparation for a new version (#109) Changes in version 0.5.0 - The rng objects (dust_rng) also get a $set_state() method (primarily of debugging interest) Changes in version 0.4.12 - New $set_rng_state() method, the inverse to $rng_state() for taking a previously saved state and setting it into a model (#??) Changes in version 0.4.11 - dust::dust_iterate now copies names from the index as rownames (#101) Changes in version 0.4.9 - The "low n * p" branch of the binomial distribution now uses a slightly faster algorithm (#91) Changes in version 0.4.8 - dust::dust_openmp_support(), dust::dust_openmp_threads() and a method $has_openmp() on dust objects to make determining OpenMP support easier (#97) Changes in version 0.4.7 - dust::dust_package() validates that the package contains a suitable src/Makevars for use with openmp, or creates one if missing (#95) Changes in version 0.4.6 - Some examples are now compiled into the package and available via dust::dust_example(), reducing the need for a compiler for exploration and making examples and testing faster (#89) Changes in version 0.4.5 - Change of behaviour for seed, which now seeds from R's random number if given the default value of NULL (#85, #87) - The rng_state method can optionally advance the random number stream, making it more suitable for use with dust::dust_simulate - A new utility dust::dust_rng_long_jump which can advance the saved state of a dust RNG, suitable for creating independent streams from one saved state. Changes in version 0.4.4 - Helper function dust::dust_simulate is renamed to dust::dust_iterate - New function dust::dust_simulate which simulates many parameter sets and starting points at once, possibly in parallel (#84) Changes in version 0.4.3 - If $set_index() uses a named index vector, then those names are copied back as rownames on the returned matrix. Similarly, if $state() is used with a named index then those names are used as rownames (#81) Changes in version 0.4.0 - Can now generate dust objects that run on the GPU (#69) Changes in version 0.3.0 - Overhaul of the RNG interface, where we now pass state and use free functions; this is needed to support future development work (#60) Changes in version 0.2.2 - New $rng_state() method for getting the RNG state as a raw vector Changes in version 0.2.0 - Use cpp11 as the backend (#22) Changes in version 0.1.5 - Simpler RNG interface; we now always use as many RNG streams as there are particles (#51) Changes in version 0.1.4 - New function dust::dust_simulate which provides a helper for running a simulation while collecting output (#7) Changes in version 0.1.3 - Allow $set_state() to accept an initial state of NULL, in which case only the time is set (#48) Changes in version 0.1.2 - Allow $set_state() to accept an initial step too. This can be a vector if particles start at different initial steps, in which case all particles are run up to the latest step (#45) Changes in version 0.1.1 - Allow $set_state() to accept a matrix in order to start particles with different starting values (#43)