"width"
issue during print if getOption("width")
is too narrow. Thanks @realzhang (#115).following CRAN suggestion, the fastverse.Rd
page is renamed to fastverse-package.Rd
, with a 'fastverse'
alias.
fastverse_deps()
(and fastverse_update()
, fastverse_sitrep()
) ignore dependencies not available on CRAN (issuing a warning).
collapse::fduplicated()
and kit::fduplicated()
. The conflict is solved in favor of the new collapse version, which is faster and can also indicate all occurrences of duplicated values. kit::fduplicated()
on the other hand can determine duplicates starting from the last value, and also supports matrices.Packages matrixStats and fst are removed from the core set of packages following a poll on Twitter in which more than 50% of respondents voted in favor. This makes the fastverse package lighter and focused on core data manipulation tasks. Users have many options to keep the original extent of the fastverse, such as (1) calling fastverse_extend(matrixStats, fst, permanent = TRUE)
once following the update, (2) calling fastverse_extend(matrixStats, fst)
right after library(fastverse)
, (3) placing a .fastverse
configuration file with matrixStats, fst
in the project directory, or (4) setting options(fastverse.extend = c("matrixStats", "fst"))
in an .Rprofile
file. See the vignette for details. The GitHub and R-universe versions of fastverse retain their capability to correct some functions in matrixStats to make them preserve dimension names by default, whenever matrixStats is added as an extension. The CRAN version does not allow this feature.
A global variable .fastverse_repos
was added containing the repository URLs of the fastverse r-universe, alongside additional repos
arguments to functions fastverse_deps()
, fastverse_extend()
, fastverse_install()
, fastverse_update()
and fastverse_sitrep()
. This allows users to easily install binaries of the development versions (or early GitHub releases) of fastverse packages (both core and suggested extensions) using e.g. fastverse_update(repos = .fastverse_repos)
.
An internal clash arising between a new fdroplevels()
function introduced in data.table 1.14.5 and the existing function fdroplevels()
introduced in collapse 1.4.0 (November 2020) is resolved in favor of the latter, which was tested to be faster, and supports both factors and arbitrary list-based objects (including data.table's). data.table::fdroplevels()
is only for factors, as data.table introduced a method droplevels.data.table
to handle data.table's. Both the function and the method however have additional arguments allowing the user to exclude certain unused levels from being dropped (in line with base R), which are missing in the collapse versions. Thus nothing changes for fastverse users which have been using collapse::fdroplevels()
thus far, and droplevels.data.table
will continue to work.
Function fastvverse_install()
prints a message "All fastverse packages installed"
if all fastverse packages are installed, unless options(fastverse.quiet = TRUE)
is set. There is also the option to set _opt_fastverse.install = TRUE
in a .fastverse
configuration file, or options(fastverse.install = TRUE)
in an .Rprofile
file, such that calling library(fastverse)
will install any missing packages by calling fastvverse_install()
before attempting to load packages. This however also displayed the message "All fastverse packages installed"
, which is undesirable. So whenever options(fastverse.install = TRUE)
is set, a call to fastvverse_install()
will not print anything if all packages are available.
New packages and 2 new topics: 'Compiling R' and 'R Bindings to Faster Languages' were added to Suggested Extensions list. In lieu of this the topics
argument to fastverse_extend()
was depreciated, as hard coding many suggested packages in the package source code itself is impractical. Please feel free to suggest further packages for the list, so that it becomes a valuable resource for everyone interested in high-performance in R.
Binaries of core fastverse packages (and a few others, including the fastverse package itself) can now be installed from a newly created fastverse r-universe. This ensures that Windows and Mac binaries of the development versions of these packages are always available, independent of their CRAN status. These binaries can be installed using install.packages("fastverse", repos = "https://fastverse.r-universe.dev/")
.
Adding geos and dqrng, fastmap and fastmatch to suggested list (thanks also to Grant McDermott and Alexander Fisher for suggesting).
options(fastverse.install = TRUE)
which can be set before library(fastverse)
, triggering an internal call to fastverse_install()
- to make sure any missing packages are installed before loading them. In a .fastverse
configuration file placed inside a project directory, you can also place _opt_fastverse.install = TRUE
before the packages list.Added possibility to set global options and environment variables in project configuration files. See Vignette for details.
Added new packages to suggested packages list: rrapply, MatrixExtra and rsparse.
Package does not import any helper functions from collapse anymore, so that hard detaching with fastverse_detach(unload = TRUE)
is possible for collapse as well.
Making sure no files are written to disc on CRAN servers.
fastverse_update()
has an additional argument install
. The default is install = FALSE
, which will just print the installation command as before, asking you to run it in a clean R session, whereas install = TRUE
will instead execute the command.
Added a function fastverse_install()
to check package availability and install any missing fastverse packages before calling library(fastverse)
. Useful especially for custom fastverse configurations (inside projects) to safeguard the availability of packages.
Added a function fastverse_child()
(following a request), which allows users to create a wholly different package-verse like the fastverse - under a different name and with different core packages. Such fastverse children inherit 90% of the functionality of the fastverse package (e.g. they are not permanently globally extensible, but can be configured for projects and extended in the session). Childbearing requires an internet connection but no additional packages (like devtools
).
Export utility functions is_installed
and is_attached
to check if packages are installed / attached.
Several additions to suggested extensions list: qs
, arrow
, stringdist
, stringfish
, nanotime
.
CRAN required me to place return values on fastverse_extend()
and fastverse_detach()
- which do not return anything.
Implementing various CRAN comments on 0.1.6 (small things), and setting up synchronous development of CRAN and GitHub version through a 'development' branch which can be merged into both. Pull requests should be sent to the 'development' branch.
CRAN rejected 0.1.5, which made sure matrixStats handles attributes consistently whenever the fastverse is attached, because CRAN packages are not allowed to modify the namespace of other packages. Thus 0.1.6 comes in two versions: A CRAN version which takes matrixStats as it is, and a GitHub version which is the original 0.1.5. User who value a consistent matrixStats that preserves dimension names in all functions are recommended the GitHub version.
First fastverse CRAN submission on 7th August 2021. Development started in Spring 2021.