Changes in version 0.22.0 - feat: as_short_string() now prints factor values (#173). - fix: Dictionary's remove() now shows the correct key in the "did you mean" suggestion of its error message (#171). - fix: encapsulate() now short-circuits when .timeout = 0 and returns an immediate Mlr3ErrorTimeout log entry instead of silently disabling timeout enforcement. - fix: keep_in_bounds() now has a consistent integer return type in its C call (#172). - perf: rcbind() uses %in% instead of intersect() for its name check (#175). - fix: register_namespace_callback() now wraps the user callback so it can be invoked by hook callers that pass package and lib_path arguments (e.g. pkgload::load_all()), which previously caused "unused arguments" errors (#180). - perf: topo_sort() uses set() for faster updates (#174). - perf: unnest() caches the lengths() call (#178). Changes in version 0.21.0 (2026-02-26) - docs: Clarify the behavior of encapsulate() regarding stored conditions and output. - fix: encapsulate() with "evaluate" now respects .seed and .opts. - refactor: encapsulate() with "evaluate" no longer stores output, consistent with other encapsulation methods. - refactor: Messages in encapsulate() logs are now stored as condition objects instead of character. - feat: Mlr3Error objects now support storing parent conditions. Changes in version 0.20.0 (2026-02-20) - fix: unnest() now works with vector-valued elements. - feat: Add warn_deprecated(). - BREAKING CHANGE: Remove "msg" column from encapsulate logs. - fix: discard() no longer removes attributes. - perf: Use data.table::fifelse() instead of ifelse(). Changes in version 0.19.0 (2025-09-12) - feat: Added various new functions for improved error handling. - feat: encapsulate() now returns the specific condition objects along the logs, allowing for improved error handling on the caller side. Changes in version 0.18.0 (2025-05-26) - feat: Added "mirai" as encapsulation method to encapsulate(). Changes in version 0.17.0 (2025-05-12) - feat: as_callbacks() returns a list named by the callback ids now. - feat: Added logical operators %check&&% and %check||% for check_*-functions from checkmate (moved here from mlr3pipelines). - feat: Added helper cat_cli(). - fix: Default dicts_suggest = NULL for dictionary_get_item() and dictionary_retrieve_item() for backward compatibility. - fix: Wrong assert in dictionary_sugar_inc_get. - feat: Functions warningf() and stopf() now have a class argument and also add the additional class mlr3warning and mlr3error, respectively. The condition object now also includes the call. Changes in version 0.16.0 (2024-11-28) - fix: crate() is using the correct 'topenv' environment now. - BREAKING CHANGE: Remove the unused 'safe' variants of dictionary getters. - feat: dictionary_sugar_get() and corresponding functions now take a list of dictionaries as optional argument .dicts_suggest to look for suggestions if .key is not part of the dictionary. Changes in version 0.15.1 (2024-06-24) - refactor: Update as_callback() functions. Changes in version 0.15.0 (2024-04-10) - Feat: Added strip_srcrefs S3 generic, which removes source references from objects - The RNG state is now copied to the callr session when using encapsulate(). Changes in version 0.14.0 (2024-02-01) - Added argument .compile to function crate() because R disables byte-code compilation of functions when changing their enclosing environment - Added the possibility to include prototype arguments when adding elements to a Dictionary - Removed unused argument required_args from Dictionary class - Disable leanification when ROXYGEN_PKG environment variable is set Changes in version 0.13.0 (2023-09-20) - Updated default environment for crate() to topenv() (#86). - Added safe methods for dictionary retrieval (#83) - fix: Fixed an important bug that caused serialized objects to be overly large when installing mlr3 with --with-keep.source (#88) Changes in version 0.12.0 (2023-05-12) - Added new encapsulation mode "try". - Added functions dictionary_sugar_inc_get and dictionary_sugar_inc_mget which allow to conveniently add suffixes to dictionary ids when retrieving objects. Changes in version 0.11.0 (2022-09-22) - Added initial support for a callback mechanism, see as_callback(). - Added helper catn(). - Added helper set_params(). - Added assign method for get_private(). - Elements of a dictionary via dictionary_sugar_mget() are now returned named. Changes in version 0.10.0 (2022-01-11) - Added helper get_private(). - Added helper map_br() and map_bc(). - Added helper recycle_vectors(). - Added helpers walk(), iwalk() and pwalk(). Changes in version 0.9.5 (2021-11-16) - Added helper deframe(). Changes in version 0.9.4 (2021-09-08) - Added helper capitalize(). - Added helper to_decimal(). - Fixed cleanup in register_namespace_callback(). Changes in version 0.9.3 (2021-07-14) - New (internal) helper functions: calculate_hash() and assert_ro_binding() Changes in version 0.9.2 (2021-06-29) - R6 objects retrieved from the dictionary are now properly cloned. Changes in version 0.9.1 (2021-04-28) - Fixed compilation for R versions older than 3.5.0 (#59). Changes in version 0.9.0 (2021-04-12) - Changed return type of reorder_vector(). - Added assertions in pmap() to avoid a segfault (#56). - Added count_missing(). Changes in version 0.8.0 (2021-03-19) - New function reorder_vector(). - formulate() can now quote all terms, defaulting to quote all terms on the right hand side. Changes in version 0.7.0 (2021-01-05) - Make more map functions work nicely with data frames and data tables. - formulate() now supports multiple LHS terms. - Added format_bib() and cite_bib() helpers for working with bibentries and roxygen2. Changes in version 0.6.0 (2020-11-17) - New argument .timeout for invoke(). - New argument .timeout for encapsulate(). - Removed cite_bib() and Rd macro \cite{} and removed orphaned package bibtex from suggests. - New argument quietly for require_namespaces(). - New function crate() to cleanly separate a function from its environment. - New function register_namespace_callback(). Changes in version 0.5.0 (2020-08-13) - Added compose() function for function composition. - Added method leanify_package() that shrinks the size of serialized R6 objects. Changes in version 0.4.0 (2020-07-17) - Added helper functions to assist in generating Rd documentation for 'mlr3' objects. Changes in version 0.3.0 (2020-06-03) - Introduced a placeholder for column name prefixes in unnest(). Changes in version 0.2.0 (2020-04-15) - Fixed an issue with rcbind() for columns of x named y (#42). - Fixed broken on.exit() in invoke() if both a seed and a list of options were provided. Changes in version 0.1.8 (2020-02-21) - New function check_packages_installed(). - New function open_help(). Changes in version 0.1.7 (2020-01-28) - map_dtr(), imap_dtr() and pmap_dtr() now pass .idcol down to argument idcol of data.table::rbindlist(). - cite_bib() can now handle packages with multiple citation entries. - Added argument wrap to catf(), messagef(), warningf() and stopf() to wrap the respective messages to a customizable width. - Added with_package() helper, similar to the one in package withr. Changes in version 0.1.6 (2019-12-12) - cite_bib() or Rd macro \cite{} can now return the citation information of the package if key is set to "pkg::citation". - Updated dictionary helpers. Changes in version 0.1.5 (2019-09-28) - Fixed error in C code discovered by UBSAN checks on CRAN. - Added dictionary_sugar_mget(). - Renamed dictionary_sugar() to dictionary_sugar_get(). - Added function cite_bib() and Rd macro \cite{} to insert entries from bibtex files into roxygen documentation. - unnest() now creates list columns for non atomic list elements. Changes in version 0.1.4 (2019-09-17) - Added argument na_rm to which_max() and which_min(). - Fixed a bug in as_short_string() for empty atomic vectors. Changes in version 0.1.3 (2019-08-22) - New function detect(). - New function dictionary_sugar(). - It is now asserted that the return value of Dictionary$get() is an R6 object. - Fix some assertions in Dictionary Changes in version 0.1.2 (2019-08-07) - New function named_vector(). - New function keep_in_bounds(). - New function set_col_names(). - New function distinct_values(). - Added argument .key to rowwise_table(). - Additional arguments passed to Dictionary$get() and Dictionary$mget() must now be named. Changes in version 0.1.1 (2019-07-23) - New function encapsulate() to call functions while recording a log. - invoke(): New arguments .opts and .seed to temporarily set options or random seeds, respectively. - Fixed warnings about partial argument matching. Changes in version 0.1.0 (2019-07-10) - Initial release.