R version 4.4.0 beta (2024-04-15 r86425 ucrt) -- "Puppy Cup" Copyright (C) 2024 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > source("incl/start.R") Loading required package: future [13:31:07.769] plan(): Setting new future strategy stack: [13:31:07.770] List of future strategies: [13:31:07.770] 1. mirai_multisession: [13:31:07.770] - args: function (expr, substitute = TRUE, envir = parent.frame(), ..., workers = availableCores()) [13:31:07.770] - tweaked: FALSE [13:31:07.770] - call: future::plan(future.mirai::mirai_multisession) [13:31:07.788] plan(): plan_init() of 'mirai_multisession', 'mirai_cluster', 'mirai', 'multiprocess', 'future', 'function' ... [13:31:07.788] < mirai | $data > [13:31:07.795] getGlobalsAndPackages() ... [13:31:07.795] Not searching for globals [13:31:07.796] - globals: [0] [13:31:07.796] getGlobalsAndPackages() ... DONE [13:31:07.797] getGlobalsAndPackages() ... [13:31:07.797] [13:31:07.797] - globals: [0] [13:31:07.797] getGlobalsAndPackages() ... DONE [13:31:08.079] Packages needed by the future expression (n = 0): [13:31:08.080] Packages needed by future strategies (n = 0): [13:31:08.081] { [13:31:08.081] { [13:31:08.081] { [13:31:08.081] ...future.startTime <- base::Sys.time() [13:31:08.081] { [13:31:08.081] { [13:31:08.081] { [13:31:08.081] base::local({ [13:31:08.081] has_future <- base::requireNamespace("future", [13:31:08.081] quietly = TRUE) [13:31:08.081] if (has_future) { [13:31:08.081] ns <- base::getNamespace("future") [13:31:08.081] version <- ns[[".package"]][["version"]] [13:31:08.081] if (is.null(version)) [13:31:08.081] version <- utils::packageVersion("future") [13:31:08.081] } [13:31:08.081] else { [13:31:08.081] version <- NULL [13:31:08.081] } [13:31:08.081] if (!has_future || version < "1.8.0") { [13:31:08.081] info <- base::c(r_version = base::gsub("R version ", [13:31:08.081] "", base::R.version$version.string), [13:31:08.081] platform = base::sprintf("%s (%s-bit)", [13:31:08.081] base::R.version$platform, 8 * base::.Machine$sizeof.pointer), [13:31:08.081] os = base::paste(base::Sys.info()[base::c("sysname", [13:31:08.081] "release", "version")], collapse = " "), [13:31:08.081] hostname = base::Sys.info()[["nodename"]]) [13:31:08.081] info <- base::sprintf("%s: %s", base::names(info), [13:31:08.081] info) [13:31:08.081] info <- base::paste(info, collapse = "; ") [13:31:08.081] if (!has_future) { [13:31:08.081] msg <- base::sprintf("Package 'future' is not installed on worker (%s)", [13:31:08.081] info) [13:31:08.081] } [13:31:08.081] else { [13:31:08.081] msg <- base::sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", [13:31:08.081] info, version) [13:31:08.081] } [13:31:08.081] base::stop(msg) [13:31:08.081] } [13:31:08.081] }) [13:31:08.081] } [13:31:08.081] ...future.strategy.old <- future::plan("list") [13:31:08.081] options(future.plan = NULL) [13:31:08.081] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.081] future::plan("default", .cleanup = FALSE, .init = FALSE) [13:31:08.081] } [13:31:08.081] ...future.workdir <- getwd() [13:31:08.081] } [13:31:08.081] ...future.oldOptions <- base::as.list(base::.Options) [13:31:08.081] ...future.oldEnvVars <- base::Sys.getenv() [13:31:08.081] } [13:31:08.081] base::options(future.startup.script = FALSE, future.globals.onMissing = NULL, [13:31:08.081] future.globals.maxSize = NULL, future.globals.method = NULL, [13:31:08.081] future.globals.onMissing = NULL, future.globals.onReference = NULL, [13:31:08.081] future.globals.resolve = NULL, future.resolve.recursive = NULL, [13:31:08.081] future.rng.onMisuse = NULL, future.rng.onMisuse.keepFuture = NULL, [13:31:08.081] future.stdout.windows.reencode = NULL, width = 80L) [13:31:08.081] ...future.futureOptionsAdded <- base::setdiff(base::names(base::.Options), [13:31:08.081] base::names(...future.oldOptions)) [13:31:08.081] } [13:31:08.081] if (FALSE) { [13:31:08.081] } [13:31:08.081] else { [13:31:08.081] if (TRUE) { [13:31:08.081] ...future.stdout <- base::rawConnection(base::raw(0L), [13:31:08.081] open = "w") [13:31:08.081] } [13:31:08.081] else { [13:31:08.081] ...future.stdout <- base::file(base::switch(.Platform$OS.type, [13:31:08.081] windows = "NUL", "/dev/null"), open = "w") [13:31:08.081] } [13:31:08.081] base::sink(...future.stdout, type = "output", split = FALSE) [13:31:08.081] base::on.exit(if (!base::is.null(...future.stdout)) { [13:31:08.081] base::sink(type = "output", split = FALSE) [13:31:08.081] base::close(...future.stdout) [13:31:08.081] }, add = TRUE) [13:31:08.081] } [13:31:08.081] ...future.frame <- base::sys.nframe() [13:31:08.081] ...future.conditions <- base::list() [13:31:08.081] ...future.rng <- base::globalenv()$.Random.seed [13:31:08.081] if (FALSE) { [13:31:08.081] ...future.globalenv.names <- c(base::names(base::.GlobalEnv), [13:31:08.081] "...future.value", "...future.globalenv.names", ".Random.seed") [13:31:08.081] } [13:31:08.081] ...future.result <- base::tryCatch({ [13:31:08.081] base::withCallingHandlers({ [13:31:08.081] ...future.value <- base::withVisible(base::local(NA)) [13:31:08.081] future::FutureResult(value = ...future.value$value, [13:31:08.081] visible = ...future.value$visible, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.081] ...future.rng), globalenv = if (FALSE) [13:31:08.081] list(added = base::setdiff(base::names(base::.GlobalEnv), [13:31:08.081] ...future.globalenv.names)) [13:31:08.081] else NULL, started = ...future.startTime, version = "1.8") [13:31:08.081] }, condition = base::local({ [13:31:08.081] c <- base::c [13:31:08.081] inherits <- base::inherits [13:31:08.081] invokeRestart <- base::invokeRestart [13:31:08.081] length <- base::length [13:31:08.081] list <- base::list [13:31:08.081] seq.int <- base::seq.int [13:31:08.081] signalCondition <- base::signalCondition [13:31:08.081] sys.calls <- base::sys.calls [13:31:08.081] `[[` <- base::`[[` [13:31:08.081] `+` <- base::`+` [13:31:08.081] `<<-` <- base::`<<-` [13:31:08.081] sysCalls <- function(calls = sys.calls(), from = 1L) { [13:31:08.081] calls[seq.int(from = from + 12L, to = length(calls) - [13:31:08.081] 3L)] [13:31:08.081] } [13:31:08.081] function(cond) { [13:31:08.081] is_error <- inherits(cond, "error") [13:31:08.081] ignore <- !is_error && !is.null(NULL) && inherits(cond, [13:31:08.081] NULL) [13:31:08.081] if (is_error) { [13:31:08.081] sessionInformation <- function() { [13:31:08.081] list(r = base::R.Version(), locale = base::Sys.getlocale(), [13:31:08.081] rngkind = base::RNGkind(), namespaces = base::loadedNamespaces(), [13:31:08.081] search = base::search(), system = base::Sys.info()) [13:31:08.081] } [13:31:08.081] ...future.conditions[[length(...future.conditions) + [13:31:08.081] 1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), [13:31:08.081] cond$call), session = sessionInformation(), [13:31:08.081] timestamp = base::Sys.time(), signaled = 0L) [13:31:08.081] signalCondition(cond) [13:31:08.081] } [13:31:08.081] else if (!ignore && TRUE && inherits(cond, "condition")) { [13:31:08.081] signal <- FALSE && inherits(cond, character(0)) [13:31:08.081] ...future.conditions[[length(...future.conditions) + [13:31:08.081] 1L]] <<- list(condition = cond, signaled = base::as.integer(signal)) [13:31:08.081] if (FALSE && !signal) { [13:31:08.081] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.081] { [13:31:08.081] inherits <- base::inherits [13:31:08.081] invokeRestart <- base::invokeRestart [13:31:08.081] is.null <- base::is.null [13:31:08.081] muffled <- FALSE [13:31:08.081] if (inherits(cond, "message")) { [13:31:08.081] muffled <- grepl(pattern, "muffleMessage") [13:31:08.081] if (muffled) [13:31:08.081] invokeRestart("muffleMessage") [13:31:08.081] } [13:31:08.081] else if (inherits(cond, "warning")) { [13:31:08.081] muffled <- grepl(pattern, "muffleWarning") [13:31:08.081] if (muffled) [13:31:08.081] invokeRestart("muffleWarning") [13:31:08.081] } [13:31:08.081] else if (inherits(cond, "condition")) { [13:31:08.081] if (!is.null(pattern)) { [13:31:08.081] computeRestarts <- base::computeRestarts [13:31:08.081] grepl <- base::grepl [13:31:08.081] restarts <- computeRestarts(cond) [13:31:08.081] for (restart in restarts) { [13:31:08.081] name <- restart$name [13:31:08.081] if (is.null(name)) [13:31:08.081] next [13:31:08.081] if (!grepl(pattern, name)) [13:31:08.081] next [13:31:08.081] invokeRestart(restart) [13:31:08.081] muffled <- TRUE [13:31:08.081] break [13:31:08.081] } [13:31:08.081] } [13:31:08.081] } [13:31:08.081] invisible(muffled) [13:31:08.081] } [13:31:08.081] muffleCondition(cond, pattern = "^muffle") [13:31:08.081] } [13:31:08.081] } [13:31:08.081] else { [13:31:08.081] if (TRUE) { [13:31:08.081] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.081] { [13:31:08.081] inherits <- base::inherits [13:31:08.081] invokeRestart <- base::invokeRestart [13:31:08.081] is.null <- base::is.null [13:31:08.081] muffled <- FALSE [13:31:08.081] if (inherits(cond, "message")) { [13:31:08.081] muffled <- grepl(pattern, "muffleMessage") [13:31:08.081] if (muffled) [13:31:08.081] invokeRestart("muffleMessage") [13:31:08.081] } [13:31:08.081] else if (inherits(cond, "warning")) { [13:31:08.081] muffled <- grepl(pattern, "muffleWarning") [13:31:08.081] if (muffled) [13:31:08.081] invokeRestart("muffleWarning") [13:31:08.081] } [13:31:08.081] else if (inherits(cond, "condition")) { [13:31:08.081] if (!is.null(pattern)) { [13:31:08.081] computeRestarts <- base::computeRestarts [13:31:08.081] grepl <- base::grepl [13:31:08.081] restarts <- computeRestarts(cond) [13:31:08.081] for (restart in restarts) { [13:31:08.081] name <- restart$name [13:31:08.081] if (is.null(name)) [13:31:08.081] next [13:31:08.081] if (!grepl(pattern, name)) [13:31:08.081] next [13:31:08.081] invokeRestart(restart) [13:31:08.081] muffled <- TRUE [13:31:08.081] break [13:31:08.081] } [13:31:08.081] } [13:31:08.081] } [13:31:08.081] invisible(muffled) [13:31:08.081] } [13:31:08.081] muffleCondition(cond, pattern = "^muffle") [13:31:08.081] } [13:31:08.081] } [13:31:08.081] } [13:31:08.081] })) [13:31:08.081] }, error = function(ex) { [13:31:08.081] base::structure(base::list(value = NULL, visible = NULL, [13:31:08.081] conditions = ...future.conditions, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.081] ...future.rng), started = ...future.startTime, [13:31:08.081] finished = Sys.time(), session_uuid = NA_character_, [13:31:08.081] version = "1.8"), class = "FutureResult") [13:31:08.081] }, finally = { [13:31:08.081] if (!identical(...future.workdir, getwd())) [13:31:08.081] setwd(...future.workdir) [13:31:08.081] { [13:31:08.081] if (identical(getOption("nwarnings"), ...future.oldOptions$nwarnings)) { [13:31:08.081] ...future.oldOptions$nwarnings <- NULL [13:31:08.081] } [13:31:08.081] base::options(...future.oldOptions) [13:31:08.081] if (.Platform$OS.type == "windows") { [13:31:08.081] old_names <- names(...future.oldEnvVars) [13:31:08.081] envs <- base::Sys.getenv() [13:31:08.081] names <- names(envs) [13:31:08.081] common <- intersect(names, old_names) [13:31:08.081] added <- setdiff(names, old_names) [13:31:08.081] removed <- setdiff(old_names, names) [13:31:08.081] changed <- common[...future.oldEnvVars[common] != [13:31:08.081] envs[common]] [13:31:08.081] NAMES <- toupper(changed) [13:31:08.081] args <- list() [13:31:08.081] for (kk in seq_along(NAMES)) { [13:31:08.081] name <- changed[[kk]] [13:31:08.081] NAME <- NAMES[[kk]] [13:31:08.081] if (name != NAME && is.element(NAME, old_names)) [13:31:08.081] next [13:31:08.081] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.081] } [13:31:08.081] NAMES <- toupper(added) [13:31:08.081] for (kk in seq_along(NAMES)) { [13:31:08.081] name <- added[[kk]] [13:31:08.081] NAME <- NAMES[[kk]] [13:31:08.081] if (name != NAME && is.element(NAME, old_names)) [13:31:08.081] next [13:31:08.081] args[[name]] <- "" [13:31:08.081] } [13:31:08.081] NAMES <- toupper(removed) [13:31:08.081] for (kk in seq_along(NAMES)) { [13:31:08.081] name <- removed[[kk]] [13:31:08.081] NAME <- NAMES[[kk]] [13:31:08.081] if (name != NAME && is.element(NAME, old_names)) [13:31:08.081] next [13:31:08.081] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.081] } [13:31:08.081] if (length(args) > 0) [13:31:08.081] base::do.call(base::Sys.setenv, args = args) [13:31:08.081] args <- names <- old_names <- NAMES <- envs <- common <- added <- removed <- NULL [13:31:08.081] } [13:31:08.081] else { [13:31:08.081] base::do.call(base::Sys.setenv, args = base::as.list(...future.oldEnvVars)) [13:31:08.081] } [13:31:08.081] { [13:31:08.081] if (base::length(...future.futureOptionsAdded) > [13:31:08.081] 0L) { [13:31:08.081] opts <- base::vector("list", length = base::length(...future.futureOptionsAdded)) [13:31:08.081] base::names(opts) <- ...future.futureOptionsAdded [13:31:08.081] base::options(opts) [13:31:08.081] } [13:31:08.081] { [13:31:08.081] NULL [13:31:08.081] options(future.plan = NULL) [13:31:08.081] if (is.na(NA_character_)) [13:31:08.081] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.081] else Sys.setenv(R_FUTURE_PLAN = NA_character_) [13:31:08.081] future::plan(...future.strategy.old, .cleanup = FALSE, [13:31:08.081] .init = FALSE) [13:31:08.081] } [13:31:08.081] } [13:31:08.081] } [13:31:08.081] }) [13:31:08.081] if (TRUE) { [13:31:08.081] base::sink(type = "output", split = FALSE) [13:31:08.081] if (TRUE) { [13:31:08.081] ...future.result$stdout <- base::rawToChar(base::rawConnectionValue(...future.stdout)) [13:31:08.081] } [13:31:08.081] else { [13:31:08.081] ...future.result["stdout"] <- base::list(NULL) [13:31:08.081] } [13:31:08.081] base::close(...future.stdout) [13:31:08.081] ...future.stdout <- NULL [13:31:08.081] } [13:31:08.081] ...future.result$conditions <- ...future.conditions [13:31:08.081] ...future.result$finished <- base::Sys.time() [13:31:08.081] ...future.result [13:31:08.081] } [13:31:08.183] plan(): plan_init() of 'mirai_multisession', 'mirai_cluster', 'mirai', 'multiprocess', 'future', 'function' ... DONE [13:31:08.184] plan(): nbrOfWorkers() = 2 > > plan(mirai_multisession) [13:31:08.185] plan(): Setting new future strategy stack: [13:31:08.185] List of future strategies: [13:31:08.185] 1. mirai_multisession: [13:31:08.185] - args: function (expr, substitute = TRUE, envir = parent.frame(), ..., workers = availableCores()) [13:31:08.185] - tweaked: FALSE [13:31:08.185] - call: plan(mirai_multisession) [13:31:08.198] plan(): plan_init() of 'mirai_multisession', 'mirai_cluster', 'mirai', 'multiprocess', 'future', 'function' ... [13:31:08.199] < mirai | $data > [13:31:08.201] getGlobalsAndPackages() ... [13:31:08.201] Not searching for globals [13:31:08.202] - globals: [0] [13:31:08.202] getGlobalsAndPackages() ... DONE [13:31:08.202] getGlobalsAndPackages() ... [13:31:08.202] [13:31:08.202] - globals: [0] [13:31:08.202] getGlobalsAndPackages() ... DONE [13:31:08.203] Packages needed by the future expression (n = 0): [13:31:08.203] Packages needed by future strategies (n = 0): [13:31:08.204] { [13:31:08.204] { [13:31:08.204] { [13:31:08.204] ...future.startTime <- base::Sys.time() [13:31:08.204] { [13:31:08.204] { [13:31:08.204] { [13:31:08.204] base::local({ [13:31:08.204] has_future <- base::requireNamespace("future", [13:31:08.204] quietly = TRUE) [13:31:08.204] if (has_future) { [13:31:08.204] ns <- base::getNamespace("future") [13:31:08.204] version <- ns[[".package"]][["version"]] [13:31:08.204] if (is.null(version)) [13:31:08.204] version <- utils::packageVersion("future") [13:31:08.204] } [13:31:08.204] else { [13:31:08.204] version <- NULL [13:31:08.204] } [13:31:08.204] if (!has_future || version < "1.8.0") { [13:31:08.204] info <- base::c(r_version = base::gsub("R version ", [13:31:08.204] "", base::R.version$version.string), [13:31:08.204] platform = base::sprintf("%s (%s-bit)", [13:31:08.204] base::R.version$platform, 8 * base::.Machine$sizeof.pointer), [13:31:08.204] os = base::paste(base::Sys.info()[base::c("sysname", [13:31:08.204] "release", "version")], collapse = " "), [13:31:08.204] hostname = base::Sys.info()[["nodename"]]) [13:31:08.204] info <- base::sprintf("%s: %s", base::names(info), [13:31:08.204] info) [13:31:08.204] info <- base::paste(info, collapse = "; ") [13:31:08.204] if (!has_future) { [13:31:08.204] msg <- base::sprintf("Package 'future' is not installed on worker (%s)", [13:31:08.204] info) [13:31:08.204] } [13:31:08.204] else { [13:31:08.204] msg <- base::sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", [13:31:08.204] info, version) [13:31:08.204] } [13:31:08.204] base::stop(msg) [13:31:08.204] } [13:31:08.204] }) [13:31:08.204] } [13:31:08.204] ...future.strategy.old <- future::plan("list") [13:31:08.204] options(future.plan = NULL) [13:31:08.204] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.204] future::plan("default", .cleanup = FALSE, .init = FALSE) [13:31:08.204] } [13:31:08.204] ...future.workdir <- getwd() [13:31:08.204] } [13:31:08.204] ...future.oldOptions <- base::as.list(base::.Options) [13:31:08.204] ...future.oldEnvVars <- base::Sys.getenv() [13:31:08.204] } [13:31:08.204] base::options(future.startup.script = FALSE, future.globals.onMissing = NULL, [13:31:08.204] future.globals.maxSize = NULL, future.globals.method = NULL, [13:31:08.204] future.globals.onMissing = NULL, future.globals.onReference = NULL, [13:31:08.204] future.globals.resolve = NULL, future.resolve.recursive = NULL, [13:31:08.204] future.rng.onMisuse = NULL, future.rng.onMisuse.keepFuture = NULL, [13:31:08.204] future.stdout.windows.reencode = NULL, width = 80L) [13:31:08.204] ...future.futureOptionsAdded <- base::setdiff(base::names(base::.Options), [13:31:08.204] base::names(...future.oldOptions)) [13:31:08.204] } [13:31:08.204] if (FALSE) { [13:31:08.204] } [13:31:08.204] else { [13:31:08.204] if (TRUE) { [13:31:08.204] ...future.stdout <- base::rawConnection(base::raw(0L), [13:31:08.204] open = "w") [13:31:08.204] } [13:31:08.204] else { [13:31:08.204] ...future.stdout <- base::file(base::switch(.Platform$OS.type, [13:31:08.204] windows = "NUL", "/dev/null"), open = "w") [13:31:08.204] } [13:31:08.204] base::sink(...future.stdout, type = "output", split = FALSE) [13:31:08.204] base::on.exit(if (!base::is.null(...future.stdout)) { [13:31:08.204] base::sink(type = "output", split = FALSE) [13:31:08.204] base::close(...future.stdout) [13:31:08.204] }, add = TRUE) [13:31:08.204] } [13:31:08.204] ...future.frame <- base::sys.nframe() [13:31:08.204] ...future.conditions <- base::list() [13:31:08.204] ...future.rng <- base::globalenv()$.Random.seed [13:31:08.204] if (FALSE) { [13:31:08.204] ...future.globalenv.names <- c(base::names(base::.GlobalEnv), [13:31:08.204] "...future.value", "...future.globalenv.names", ".Random.seed") [13:31:08.204] } [13:31:08.204] ...future.result <- base::tryCatch({ [13:31:08.204] base::withCallingHandlers({ [13:31:08.204] ...future.value <- base::withVisible(base::local(NA)) [13:31:08.204] future::FutureResult(value = ...future.value$value, [13:31:08.204] visible = ...future.value$visible, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.204] ...future.rng), globalenv = if (FALSE) [13:31:08.204] list(added = base::setdiff(base::names(base::.GlobalEnv), [13:31:08.204] ...future.globalenv.names)) [13:31:08.204] else NULL, started = ...future.startTime, version = "1.8") [13:31:08.204] }, condition = base::local({ [13:31:08.204] c <- base::c [13:31:08.204] inherits <- base::inherits [13:31:08.204] invokeRestart <- base::invokeRestart [13:31:08.204] length <- base::length [13:31:08.204] list <- base::list [13:31:08.204] seq.int <- base::seq.int [13:31:08.204] signalCondition <- base::signalCondition [13:31:08.204] sys.calls <- base::sys.calls [13:31:08.204] `[[` <- base::`[[` [13:31:08.204] `+` <- base::`+` [13:31:08.204] `<<-` <- base::`<<-` [13:31:08.204] sysCalls <- function(calls = sys.calls(), from = 1L) { [13:31:08.204] calls[seq.int(from = from + 12L, to = length(calls) - [13:31:08.204] 3L)] [13:31:08.204] } [13:31:08.204] function(cond) { [13:31:08.204] is_error <- inherits(cond, "error") [13:31:08.204] ignore <- !is_error && !is.null(NULL) && inherits(cond, [13:31:08.204] NULL) [13:31:08.204] if (is_error) { [13:31:08.204] sessionInformation <- function() { [13:31:08.204] list(r = base::R.Version(), locale = base::Sys.getlocale(), [13:31:08.204] rngkind = base::RNGkind(), namespaces = base::loadedNamespaces(), [13:31:08.204] search = base::search(), system = base::Sys.info()) [13:31:08.204] } [13:31:08.204] ...future.conditions[[length(...future.conditions) + [13:31:08.204] 1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), [13:31:08.204] cond$call), session = sessionInformation(), [13:31:08.204] timestamp = base::Sys.time(), signaled = 0L) [13:31:08.204] signalCondition(cond) [13:31:08.204] } [13:31:08.204] else if (!ignore && TRUE && inherits(cond, "condition")) { [13:31:08.204] signal <- FALSE && inherits(cond, character(0)) [13:31:08.204] ...future.conditions[[length(...future.conditions) + [13:31:08.204] 1L]] <<- list(condition = cond, signaled = base::as.integer(signal)) [13:31:08.204] if (FALSE && !signal) { [13:31:08.204] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.204] { [13:31:08.204] inherits <- base::inherits [13:31:08.204] invokeRestart <- base::invokeRestart [13:31:08.204] is.null <- base::is.null [13:31:08.204] muffled <- FALSE [13:31:08.204] if (inherits(cond, "message")) { [13:31:08.204] muffled <- grepl(pattern, "muffleMessage") [13:31:08.204] if (muffled) [13:31:08.204] invokeRestart("muffleMessage") [13:31:08.204] } [13:31:08.204] else if (inherits(cond, "warning")) { [13:31:08.204] muffled <- grepl(pattern, "muffleWarning") [13:31:08.204] if (muffled) [13:31:08.204] invokeRestart("muffleWarning") [13:31:08.204] } [13:31:08.204] else if (inherits(cond, "condition")) { [13:31:08.204] if (!is.null(pattern)) { [13:31:08.204] computeRestarts <- base::computeRestarts [13:31:08.204] grepl <- base::grepl [13:31:08.204] restarts <- computeRestarts(cond) [13:31:08.204] for (restart in restarts) { [13:31:08.204] name <- restart$name [13:31:08.204] if (is.null(name)) [13:31:08.204] next [13:31:08.204] if (!grepl(pattern, name)) [13:31:08.204] next [13:31:08.204] invokeRestart(restart) [13:31:08.204] muffled <- TRUE [13:31:08.204] break [13:31:08.204] } [13:31:08.204] } [13:31:08.204] } [13:31:08.204] invisible(muffled) [13:31:08.204] } [13:31:08.204] muffleCondition(cond, pattern = "^muffle") [13:31:08.204] } [13:31:08.204] } [13:31:08.204] else { [13:31:08.204] if (TRUE) { [13:31:08.204] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.204] { [13:31:08.204] inherits <- base::inherits [13:31:08.204] invokeRestart <- base::invokeRestart [13:31:08.204] is.null <- base::is.null [13:31:08.204] muffled <- FALSE [13:31:08.204] if (inherits(cond, "message")) { [13:31:08.204] muffled <- grepl(pattern, "muffleMessage") [13:31:08.204] if (muffled) [13:31:08.204] invokeRestart("muffleMessage") [13:31:08.204] } [13:31:08.204] else if (inherits(cond, "warning")) { [13:31:08.204] muffled <- grepl(pattern, "muffleWarning") [13:31:08.204] if (muffled) [13:31:08.204] invokeRestart("muffleWarning") [13:31:08.204] } [13:31:08.204] else if (inherits(cond, "condition")) { [13:31:08.204] if (!is.null(pattern)) { [13:31:08.204] computeRestarts <- base::computeRestarts [13:31:08.204] grepl <- base::grepl [13:31:08.204] restarts <- computeRestarts(cond) [13:31:08.204] for (restart in restarts) { [13:31:08.204] name <- restart$name [13:31:08.204] if (is.null(name)) [13:31:08.204] next [13:31:08.204] if (!grepl(pattern, name)) [13:31:08.204] next [13:31:08.204] invokeRestart(restart) [13:31:08.204] muffled <- TRUE [13:31:08.204] break [13:31:08.204] } [13:31:08.204] } [13:31:08.204] } [13:31:08.204] invisible(muffled) [13:31:08.204] } [13:31:08.204] muffleCondition(cond, pattern = "^muffle") [13:31:08.204] } [13:31:08.204] } [13:31:08.204] } [13:31:08.204] })) [13:31:08.204] }, error = function(ex) { [13:31:08.204] base::structure(base::list(value = NULL, visible = NULL, [13:31:08.204] conditions = ...future.conditions, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.204] ...future.rng), started = ...future.startTime, [13:31:08.204] finished = Sys.time(), session_uuid = NA_character_, [13:31:08.204] version = "1.8"), class = "FutureResult") [13:31:08.204] }, finally = { [13:31:08.204] if (!identical(...future.workdir, getwd())) [13:31:08.204] setwd(...future.workdir) [13:31:08.204] { [13:31:08.204] if (identical(getOption("nwarnings"), ...future.oldOptions$nwarnings)) { [13:31:08.204] ...future.oldOptions$nwarnings <- NULL [13:31:08.204] } [13:31:08.204] base::options(...future.oldOptions) [13:31:08.204] if (.Platform$OS.type == "windows") { [13:31:08.204] old_names <- names(...future.oldEnvVars) [13:31:08.204] envs <- base::Sys.getenv() [13:31:08.204] names <- names(envs) [13:31:08.204] common <- intersect(names, old_names) [13:31:08.204] added <- setdiff(names, old_names) [13:31:08.204] removed <- setdiff(old_names, names) [13:31:08.204] changed <- common[...future.oldEnvVars[common] != [13:31:08.204] envs[common]] [13:31:08.204] NAMES <- toupper(changed) [13:31:08.204] args <- list() [13:31:08.204] for (kk in seq_along(NAMES)) { [13:31:08.204] name <- changed[[kk]] [13:31:08.204] NAME <- NAMES[[kk]] [13:31:08.204] if (name != NAME && is.element(NAME, old_names)) [13:31:08.204] next [13:31:08.204] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.204] } [13:31:08.204] NAMES <- toupper(added) [13:31:08.204] for (kk in seq_along(NAMES)) { [13:31:08.204] name <- added[[kk]] [13:31:08.204] NAME <- NAMES[[kk]] [13:31:08.204] if (name != NAME && is.element(NAME, old_names)) [13:31:08.204] next [13:31:08.204] args[[name]] <- "" [13:31:08.204] } [13:31:08.204] NAMES <- toupper(removed) [13:31:08.204] for (kk in seq_along(NAMES)) { [13:31:08.204] name <- removed[[kk]] [13:31:08.204] NAME <- NAMES[[kk]] [13:31:08.204] if (name != NAME && is.element(NAME, old_names)) [13:31:08.204] next [13:31:08.204] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.204] } [13:31:08.204] if (length(args) > 0) [13:31:08.204] base::do.call(base::Sys.setenv, args = args) [13:31:08.204] args <- names <- old_names <- NAMES <- envs <- common <- added <- removed <- NULL [13:31:08.204] } [13:31:08.204] else { [13:31:08.204] base::do.call(base::Sys.setenv, args = base::as.list(...future.oldEnvVars)) [13:31:08.204] } [13:31:08.204] { [13:31:08.204] if (base::length(...future.futureOptionsAdded) > [13:31:08.204] 0L) { [13:31:08.204] opts <- base::vector("list", length = base::length(...future.futureOptionsAdded)) [13:31:08.204] base::names(opts) <- ...future.futureOptionsAdded [13:31:08.204] base::options(opts) [13:31:08.204] } [13:31:08.204] { [13:31:08.204] NULL [13:31:08.204] options(future.plan = NULL) [13:31:08.204] if (is.na(NA_character_)) [13:31:08.204] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.204] else Sys.setenv(R_FUTURE_PLAN = NA_character_) [13:31:08.204] future::plan(...future.strategy.old, .cleanup = FALSE, [13:31:08.204] .init = FALSE) [13:31:08.204] } [13:31:08.204] } [13:31:08.204] } [13:31:08.204] }) [13:31:08.204] if (TRUE) { [13:31:08.204] base::sink(type = "output", split = FALSE) [13:31:08.204] if (TRUE) { [13:31:08.204] ...future.result$stdout <- base::rawToChar(base::rawConnectionValue(...future.stdout)) [13:31:08.204] } [13:31:08.204] else { [13:31:08.204] ...future.result["stdout"] <- base::list(NULL) [13:31:08.204] } [13:31:08.204] base::close(...future.stdout) [13:31:08.204] ...future.stdout <- NULL [13:31:08.204] } [13:31:08.204] ...future.result$conditions <- ...future.conditions [13:31:08.204] ...future.result$finished <- base::Sys.time() [13:31:08.204] ...future.result [13:31:08.204] } [13:31:08.304] plan(): plan_init() of 'mirai_multisession', 'mirai_cluster', 'mirai', 'multiprocess', 'future', 'function' ... DONE [13:31:08.304] plan(): nbrOfWorkers() = 2 > > oopts <- c(oopts, options( + future.globals.resolve = TRUE, + future.globals.onMissing = "error" + )) > > > message("*** Globals - subassignments ...") *** Globals - subassignments ... > > message("*** Globals - subassignments w/ x$a <- value ...") *** Globals - subassignments w/ x$a <- value ... > > ## Truth: > x <- x0 <- list() > y0 <- list(a = 1) > str(list(x = x, y0 = y0)) List of 2 $ x : list() $ y0:List of 1 ..$ a: num 1 > > y <- local({ + x$a <- 1 + x + }) > stopifnot(identical(y, y0)) > > y <- local({ + x[["a"]] <- 1 + x + }) > stopifnot(identical(y, y0)) > > y <- local({ + x["a"] <- list(1) + x + }) > stopifnot(identical(y, y0)) > > stopifnot(identical(x, list())) > > ## Explicit future > x <- list() > f <- future({ + x$a <- 1 + x + }) Warning in getGlobalsAndPackages(expr, envir = envir, tweak = tweakExpression, : R option 'future.globals.resolve' may only be used for troubleshooting. It must not be used in production since it changes how futures are evaluated and there is a great risk that the results cannot be reproduced elsewhere: 'TRUE' [13:31:08.310] getGlobalsAndPackages() ... Warning in getGlobalsAndPackages(expr, envir = envir, tweak = tweakExpression, : R option 'future.globals.onMissing' may only be used for troubleshooting. It must not be used in production since it changes how futures are evaluated and there is a great risk that the results cannot be reproduced elsewhere: 'error' [13:31:08.310] Searching for globals... [13:31:08.321] - globals found: [5] '{', 'x', '<-', '$', '$<-' [13:31:08.322] Searching for globals ... DONE [13:31:08.322] Resolving globals: TRUE [13:31:08.322] Resolving any globals that are futures ... [13:31:08.322] - globals: [5] '{', 'x', '<-', '$', '$<-' [13:31:08.322] Resolving any globals that are futures ... DONE [13:31:08.323] Resolving futures part of globals (recursively) ... [13:31:08.324] resolve() on list ... [13:31:08.324] recursive: 99 [13:31:08.324] length: 1 [13:31:08.324] elements: 'x' [13:31:08.325] length: 0 (resolved future 1) [13:31:08.325] resolve() on list ... DONE [13:31:08.325] - globals: [1] 'x' [13:31:08.325] Resolving futures part of globals (recursively) ... DONE [13:31:08.326] The total size of the 1 globals is 0 bytes (0 bytes) [13:31:08.326] The total size of the 1 globals exported for future expression ('{; x$a <- 1; x; }') is 0 bytes.. This exceeds the maximum allowed size of 500.00 MiB (option 'future.globals.maxSize'). There is one global: 'x' (0 bytes of class 'list') [13:31:08.326] - globals: [1] 'x' [13:31:08.327] [13:31:08.327] getGlobalsAndPackages() ... DONE [13:31:08.327] run() for 'Future' ... [13:31:08.328] - state: 'created' [13:31:08.328] - Future backend: 'FutureStrategy', 'mirai_multisession', 'mirai_cluster', 'mirai', 'multiprocess', 'future', 'function' [13:31:08.330] - Future class: 'MiraiFuture', 'MultiprocessFuture', 'Future', 'environment' [13:31:08.330] - Copy elements of temporary 'MiraiFuture' to final 'Future' object ... [13:31:08.331] - Field: 'label' [13:31:08.331] - Field: 'local' [13:31:08.331] - Field: 'owner' [13:31:08.331] - Field: 'envir' [13:31:08.331] - Field: 'packages' [13:31:08.331] - Field: 'gc' [13:31:08.332] - Field: 'conditions' [13:31:08.332] - Field: 'expr' [13:31:08.332] - Field: 'uuid' [13:31:08.332] - Field: 'seed' [13:31:08.332] - Field: 'version' [13:31:08.332] - Field: 'result' [13:31:08.333] - Field: 'asynchronous' [13:31:08.333] - Field: 'calls' [13:31:08.333] - Field: 'globals' [13:31:08.333] - Field: 'stdout' [13:31:08.333] - Field: 'earlySignal' [13:31:08.334] - Field: 'lazy' [13:31:08.334] - Field: 'state' [13:31:08.334] - Field: '.cluster' [13:31:08.334] - Copy elements of temporary 'MiraiFuture' to final 'Future' object ... done [13:31:08.334] - Launch lazy future ... [13:31:08.334] Packages needed by the future expression (n = 0): [13:31:08.335] Packages needed by future strategies (n = 0): [13:31:08.335] { [13:31:08.335] { [13:31:08.335] { [13:31:08.335] ...future.startTime <- base::Sys.time() [13:31:08.335] { [13:31:08.335] { [13:31:08.335] { [13:31:08.335] base::local({ [13:31:08.335] has_future <- base::requireNamespace("future", [13:31:08.335] quietly = TRUE) [13:31:08.335] if (has_future) { [13:31:08.335] ns <- base::getNamespace("future") [13:31:08.335] version <- ns[[".package"]][["version"]] [13:31:08.335] if (is.null(version)) [13:31:08.335] version <- utils::packageVersion("future") [13:31:08.335] } [13:31:08.335] else { [13:31:08.335] version <- NULL [13:31:08.335] } [13:31:08.335] if (!has_future || version < "1.8.0") { [13:31:08.335] info <- base::c(r_version = base::gsub("R version ", [13:31:08.335] "", base::R.version$version.string), [13:31:08.335] platform = base::sprintf("%s (%s-bit)", [13:31:08.335] base::R.version$platform, 8 * base::.Machine$sizeof.pointer), [13:31:08.335] os = base::paste(base::Sys.info()[base::c("sysname", [13:31:08.335] "release", "version")], collapse = " "), [13:31:08.335] hostname = base::Sys.info()[["nodename"]]) [13:31:08.335] info <- base::sprintf("%s: %s", base::names(info), [13:31:08.335] info) [13:31:08.335] info <- base::paste(info, collapse = "; ") [13:31:08.335] if (!has_future) { [13:31:08.335] msg <- base::sprintf("Package 'future' is not installed on worker (%s)", [13:31:08.335] info) [13:31:08.335] } [13:31:08.335] else { [13:31:08.335] msg <- base::sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", [13:31:08.335] info, version) [13:31:08.335] } [13:31:08.335] base::stop(msg) [13:31:08.335] } [13:31:08.335] }) [13:31:08.335] } [13:31:08.335] ...future.strategy.old <- future::plan("list") [13:31:08.335] options(future.plan = NULL) [13:31:08.335] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.335] future::plan("default", .cleanup = FALSE, .init = FALSE) [13:31:08.335] } [13:31:08.335] ...future.workdir <- getwd() [13:31:08.335] } [13:31:08.335] ...future.oldOptions <- base::as.list(base::.Options) [13:31:08.335] ...future.oldEnvVars <- base::Sys.getenv() [13:31:08.335] } [13:31:08.335] base::options(future.startup.script = FALSE, future.globals.onMissing = "error", [13:31:08.335] future.globals.maxSize = NULL, future.globals.method = NULL, [13:31:08.335] future.globals.onMissing = "error", future.globals.onReference = NULL, [13:31:08.335] future.globals.resolve = TRUE, future.resolve.recursive = NULL, [13:31:08.335] future.rng.onMisuse = NULL, future.rng.onMisuse.keepFuture = NULL, [13:31:08.335] future.stdout.windows.reencode = NULL, width = 80L) [13:31:08.335] ...future.futureOptionsAdded <- base::setdiff(base::names(base::.Options), [13:31:08.335] base::names(...future.oldOptions)) [13:31:08.335] } [13:31:08.335] if (FALSE) { [13:31:08.335] } [13:31:08.335] else { [13:31:08.335] if (TRUE) { [13:31:08.335] ...future.stdout <- base::rawConnection(base::raw(0L), [13:31:08.335] open = "w") [13:31:08.335] } [13:31:08.335] else { [13:31:08.335] ...future.stdout <- base::file(base::switch(.Platform$OS.type, [13:31:08.335] windows = "NUL", "/dev/null"), open = "w") [13:31:08.335] } [13:31:08.335] base::sink(...future.stdout, type = "output", split = FALSE) [13:31:08.335] base::on.exit(if (!base::is.null(...future.stdout)) { [13:31:08.335] base::sink(type = "output", split = FALSE) [13:31:08.335] base::close(...future.stdout) [13:31:08.335] }, add = TRUE) [13:31:08.335] } [13:31:08.335] ...future.frame <- base::sys.nframe() [13:31:08.335] ...future.conditions <- base::list() [13:31:08.335] ...future.rng <- base::globalenv()$.Random.seed [13:31:08.335] if (FALSE) { [13:31:08.335] ...future.globalenv.names <- c(base::names(base::.GlobalEnv), [13:31:08.335] "...future.value", "...future.globalenv.names", ".Random.seed") [13:31:08.335] } [13:31:08.335] ...future.result <- base::tryCatch({ [13:31:08.335] base::withCallingHandlers({ [13:31:08.335] ...future.value <- base::withVisible(base::local({ [13:31:08.335] x$a <- 1 [13:31:08.335] x [13:31:08.335] })) [13:31:08.335] future::FutureResult(value = ...future.value$value, [13:31:08.335] visible = ...future.value$visible, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.335] ...future.rng), globalenv = if (FALSE) [13:31:08.335] list(added = base::setdiff(base::names(base::.GlobalEnv), [13:31:08.335] ...future.globalenv.names)) [13:31:08.335] else NULL, started = ...future.startTime, version = "1.8") [13:31:08.335] }, condition = base::local({ [13:31:08.335] c <- base::c [13:31:08.335] inherits <- base::inherits [13:31:08.335] invokeRestart <- base::invokeRestart [13:31:08.335] length <- base::length [13:31:08.335] list <- base::list [13:31:08.335] seq.int <- base::seq.int [13:31:08.335] signalCondition <- base::signalCondition [13:31:08.335] sys.calls <- base::sys.calls [13:31:08.335] `[[` <- base::`[[` [13:31:08.335] `+` <- base::`+` [13:31:08.335] `<<-` <- base::`<<-` [13:31:08.335] sysCalls <- function(calls = sys.calls(), from = 1L) { [13:31:08.335] calls[seq.int(from = from + 12L, to = length(calls) - [13:31:08.335] 3L)] [13:31:08.335] } [13:31:08.335] function(cond) { [13:31:08.335] is_error <- inherits(cond, "error") [13:31:08.335] ignore <- !is_error && !is.null(NULL) && inherits(cond, [13:31:08.335] NULL) [13:31:08.335] if (is_error) { [13:31:08.335] sessionInformation <- function() { [13:31:08.335] list(r = base::R.Version(), locale = base::Sys.getlocale(), [13:31:08.335] rngkind = base::RNGkind(), namespaces = base::loadedNamespaces(), [13:31:08.335] search = base::search(), system = base::Sys.info()) [13:31:08.335] } [13:31:08.335] ...future.conditions[[length(...future.conditions) + [13:31:08.335] 1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), [13:31:08.335] cond$call), session = sessionInformation(), [13:31:08.335] timestamp = base::Sys.time(), signaled = 0L) [13:31:08.335] signalCondition(cond) [13:31:08.335] } [13:31:08.335] else if (!ignore && TRUE && inherits(cond, "condition")) { [13:31:08.335] signal <- FALSE && inherits(cond, character(0)) [13:31:08.335] ...future.conditions[[length(...future.conditions) + [13:31:08.335] 1L]] <<- list(condition = cond, signaled = base::as.integer(signal)) [13:31:08.335] if (FALSE && !signal) { [13:31:08.335] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.335] { [13:31:08.335] inherits <- base::inherits [13:31:08.335] invokeRestart <- base::invokeRestart [13:31:08.335] is.null <- base::is.null [13:31:08.335] muffled <- FALSE [13:31:08.335] if (inherits(cond, "message")) { [13:31:08.335] muffled <- grepl(pattern, "muffleMessage") [13:31:08.335] if (muffled) [13:31:08.335] invokeRestart("muffleMessage") [13:31:08.335] } [13:31:08.335] else if (inherits(cond, "warning")) { [13:31:08.335] muffled <- grepl(pattern, "muffleWarning") [13:31:08.335] if (muffled) [13:31:08.335] invokeRestart("muffleWarning") [13:31:08.335] } [13:31:08.335] else if (inherits(cond, "condition")) { [13:31:08.335] if (!is.null(pattern)) { [13:31:08.335] computeRestarts <- base::computeRestarts [13:31:08.335] grepl <- base::grepl [13:31:08.335] restarts <- computeRestarts(cond) [13:31:08.335] for (restart in restarts) { [13:31:08.335] name <- restart$name [13:31:08.335] if (is.null(name)) [13:31:08.335] next [13:31:08.335] if (!grepl(pattern, name)) [13:31:08.335] next [13:31:08.335] invokeRestart(restart) [13:31:08.335] muffled <- TRUE [13:31:08.335] break [13:31:08.335] } [13:31:08.335] } [13:31:08.335] } [13:31:08.335] invisible(muffled) [13:31:08.335] } [13:31:08.335] muffleCondition(cond, pattern = "^muffle") [13:31:08.335] } [13:31:08.335] } [13:31:08.335] else { [13:31:08.335] if (TRUE) { [13:31:08.335] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.335] { [13:31:08.335] inherits <- base::inherits [13:31:08.335] invokeRestart <- base::invokeRestart [13:31:08.335] is.null <- base::is.null [13:31:08.335] muffled <- FALSE [13:31:08.335] if (inherits(cond, "message")) { [13:31:08.335] muffled <- grepl(pattern, "muffleMessage") [13:31:08.335] if (muffled) [13:31:08.335] invokeRestart("muffleMessage") [13:31:08.335] } [13:31:08.335] else if (inherits(cond, "warning")) { [13:31:08.335] muffled <- grepl(pattern, "muffleWarning") [13:31:08.335] if (muffled) [13:31:08.335] invokeRestart("muffleWarning") [13:31:08.335] } [13:31:08.335] else if (inherits(cond, "condition")) { [13:31:08.335] if (!is.null(pattern)) { [13:31:08.335] computeRestarts <- base::computeRestarts [13:31:08.335] grepl <- base::grepl [13:31:08.335] restarts <- computeRestarts(cond) [13:31:08.335] for (restart in restarts) { [13:31:08.335] name <- restart$name [13:31:08.335] if (is.null(name)) [13:31:08.335] next [13:31:08.335] if (!grepl(pattern, name)) [13:31:08.335] next [13:31:08.335] invokeRestart(restart) [13:31:08.335] muffled <- TRUE [13:31:08.335] break [13:31:08.335] } [13:31:08.335] } [13:31:08.335] } [13:31:08.335] invisible(muffled) [13:31:08.335] } [13:31:08.335] muffleCondition(cond, pattern = "^muffle") [13:31:08.335] } [13:31:08.335] } [13:31:08.335] } [13:31:08.335] })) [13:31:08.335] }, error = function(ex) { [13:31:08.335] base::structure(base::list(value = NULL, visible = NULL, [13:31:08.335] conditions = ...future.conditions, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.335] ...future.rng), started = ...future.startTime, [13:31:08.335] finished = Sys.time(), session_uuid = NA_character_, [13:31:08.335] version = "1.8"), class = "FutureResult") [13:31:08.335] }, finally = { [13:31:08.335] if (!identical(...future.workdir, getwd())) [13:31:08.335] setwd(...future.workdir) [13:31:08.335] { [13:31:08.335] if (identical(getOption("nwarnings"), ...future.oldOptions$nwarnings)) { [13:31:08.335] ...future.oldOptions$nwarnings <- NULL [13:31:08.335] } [13:31:08.335] base::options(...future.oldOptions) [13:31:08.335] if (.Platform$OS.type == "windows") { [13:31:08.335] old_names <- names(...future.oldEnvVars) [13:31:08.335] envs <- base::Sys.getenv() [13:31:08.335] names <- names(envs) [13:31:08.335] common <- intersect(names, old_names) [13:31:08.335] added <- setdiff(names, old_names) [13:31:08.335] removed <- setdiff(old_names, names) [13:31:08.335] changed <- common[...future.oldEnvVars[common] != [13:31:08.335] envs[common]] [13:31:08.335] NAMES <- toupper(changed) [13:31:08.335] args <- list() [13:31:08.335] for (kk in seq_along(NAMES)) { [13:31:08.335] name <- changed[[kk]] [13:31:08.335] NAME <- NAMES[[kk]] [13:31:08.335] if (name != NAME && is.element(NAME, old_names)) [13:31:08.335] next [13:31:08.335] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.335] } [13:31:08.335] NAMES <- toupper(added) [13:31:08.335] for (kk in seq_along(NAMES)) { [13:31:08.335] name <- added[[kk]] [13:31:08.335] NAME <- NAMES[[kk]] [13:31:08.335] if (name != NAME && is.element(NAME, old_names)) [13:31:08.335] next [13:31:08.335] args[[name]] <- "" [13:31:08.335] } [13:31:08.335] NAMES <- toupper(removed) [13:31:08.335] for (kk in seq_along(NAMES)) { [13:31:08.335] name <- removed[[kk]] [13:31:08.335] NAME <- NAMES[[kk]] [13:31:08.335] if (name != NAME && is.element(NAME, old_names)) [13:31:08.335] next [13:31:08.335] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.335] } [13:31:08.335] if (length(args) > 0) [13:31:08.335] base::do.call(base::Sys.setenv, args = args) [13:31:08.335] args <- names <- old_names <- NAMES <- envs <- common <- added <- removed <- NULL [13:31:08.335] } [13:31:08.335] else { [13:31:08.335] base::do.call(base::Sys.setenv, args = base::as.list(...future.oldEnvVars)) [13:31:08.335] } [13:31:08.335] { [13:31:08.335] if (base::length(...future.futureOptionsAdded) > [13:31:08.335] 0L) { [13:31:08.335] opts <- base::vector("list", length = base::length(...future.futureOptionsAdded)) [13:31:08.335] base::names(opts) <- ...future.futureOptionsAdded [13:31:08.335] base::options(opts) [13:31:08.335] } [13:31:08.335] { [13:31:08.335] NULL [13:31:08.335] options(future.plan = NULL) [13:31:08.335] if (is.na(NA_character_)) [13:31:08.335] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.335] else Sys.setenv(R_FUTURE_PLAN = NA_character_) [13:31:08.335] future::plan(...future.strategy.old, .cleanup = FALSE, [13:31:08.335] .init = FALSE) [13:31:08.335] } [13:31:08.335] } [13:31:08.335] } [13:31:08.335] }) [13:31:08.335] if (TRUE) { [13:31:08.335] base::sink(type = "output", split = FALSE) [13:31:08.335] if (TRUE) { [13:31:08.335] ...future.result$stdout <- base::rawToChar(base::rawConnectionValue(...future.stdout)) [13:31:08.335] } [13:31:08.335] else { [13:31:08.335] ...future.result["stdout"] <- base::list(NULL) [13:31:08.335] } [13:31:08.335] base::close(...future.stdout) [13:31:08.335] ...future.stdout <- NULL [13:31:08.335] } [13:31:08.335] ...future.result$conditions <- ...future.conditions [13:31:08.335] ...future.result$finished <- base::Sys.time() [13:31:08.335] ...future.result [13:31:08.335] } [13:31:08.339] - Launch lazy future ... done [13:31:08.339] run() for 'MiraiFuture' ... done > rm(list = "x") > y <- value(f) > print(y) $a [1] 1 > stopifnot(identical(y, y0)) > > ## Future assignment > x <- list() > y %<-% { + x$a <- 1 + x + } Warning in getGlobalsAndPackages(expr, envir = envir, tweak = tweakExpression, : R option 'future.globals.resolve' may only be used for troubleshooting. It must not be used in production since it changes how futures are evaluated and there is a great risk that the results cannot be reproduced elsewhere: 'TRUE' [13:31:08.343] getGlobalsAndPackages() ... Warning in getGlobalsAndPackages(expr, envir = envir, tweak = tweakExpression, : R option 'future.globals.onMissing' may only be used for troubleshooting. It must not be used in production since it changes how futures are evaluated and there is a great risk that the results cannot be reproduced elsewhere: 'error' [13:31:08.343] Searching for globals... [13:31:08.345] - globals found: [5] '{', 'x', '<-', '$', '$<-' [13:31:08.346] Searching for globals ... DONE [13:31:08.346] Resolving globals: TRUE [13:31:08.346] Resolving any globals that are futures ... [13:31:08.346] - globals: [5] '{', 'x', '<-', '$', '$<-' [13:31:08.346] Resolving any globals that are futures ... DONE [13:31:08.347] Resolving futures part of globals (recursively) ... [13:31:08.347] resolve() on list ... [13:31:08.347] recursive: 99 [13:31:08.347] length: 1 [13:31:08.348] elements: 'x' [13:31:08.348] length: 0 (resolved future 1) [13:31:08.348] resolve() on list ... DONE [13:31:08.348] - globals: [1] 'x' [13:31:08.348] Resolving futures part of globals (recursively) ... DONE [13:31:08.348] The total size of the 1 globals is 0 bytes (0 bytes) [13:31:08.349] The total size of the 1 globals exported for future expression ('{; x$a <- 1; x; }') is 0 bytes.. This exceeds the maximum allowed size of 500.00 MiB (option 'future.globals.maxSize'). There is one global: 'x' (0 bytes of class 'list') [13:31:08.349] - globals: [1] 'x' [13:31:08.349] [13:31:08.349] getGlobalsAndPackages() ... DONE [13:31:08.350] run() for 'Future' ... [13:31:08.350] - state: 'created' [13:31:08.350] - Future backend: 'FutureStrategy', 'mirai_multisession', 'mirai_cluster', 'mirai', 'multiprocess', 'future', 'function' [13:31:08.354] - Future class: 'MiraiFuture', 'MultiprocessFuture', 'Future', 'environment' [13:31:08.354] - Copy elements of temporary 'MiraiFuture' to final 'Future' object ... [13:31:08.354] - Field: 'label' [13:31:08.355] - Field: 'local' [13:31:08.355] - Field: 'owner' [13:31:08.355] - Field: 'envir' [13:31:08.355] - Field: 'packages' [13:31:08.355] - Field: 'gc' [13:31:08.356] - Field: 'conditions' [13:31:08.356] - Field: 'expr' [13:31:08.356] - Field: 'uuid' [13:31:08.356] - Field: 'seed' [13:31:08.356] - Field: 'version' [13:31:08.356] - Field: 'result' [13:31:08.357] - Field: 'asynchronous' [13:31:08.357] - Field: 'calls' [13:31:08.357] - Field: 'globals' [13:31:08.357] - Field: 'stdout' [13:31:08.357] - Field: 'earlySignal' [13:31:08.357] - Field: 'lazy' [13:31:08.358] - Field: 'state' [13:31:08.358] - Field: '.cluster' [13:31:08.358] - Copy elements of temporary 'MiraiFuture' to final 'Future' object ... done [13:31:08.358] - Launch lazy future ... [13:31:08.358] Packages needed by the future expression (n = 0): [13:31:08.359] Packages needed by future strategies (n = 0): [13:31:08.359] { [13:31:08.359] { [13:31:08.359] { [13:31:08.359] ...future.startTime <- base::Sys.time() [13:31:08.359] { [13:31:08.359] { [13:31:08.359] { [13:31:08.359] base::local({ [13:31:08.359] has_future <- base::requireNamespace("future", [13:31:08.359] quietly = TRUE) [13:31:08.359] if (has_future) { [13:31:08.359] ns <- base::getNamespace("future") [13:31:08.359] version <- ns[[".package"]][["version"]] [13:31:08.359] if (is.null(version)) [13:31:08.359] version <- utils::packageVersion("future") [13:31:08.359] } [13:31:08.359] else { [13:31:08.359] version <- NULL [13:31:08.359] } [13:31:08.359] if (!has_future || version < "1.8.0") { [13:31:08.359] info <- base::c(r_version = base::gsub("R version ", [13:31:08.359] "", base::R.version$version.string), [13:31:08.359] platform = base::sprintf("%s (%s-bit)", [13:31:08.359] base::R.version$platform, 8 * base::.Machine$sizeof.pointer), [13:31:08.359] os = base::paste(base::Sys.info()[base::c("sysname", [13:31:08.359] "release", "version")], collapse = " "), [13:31:08.359] hostname = base::Sys.info()[["nodename"]]) [13:31:08.359] info <- base::sprintf("%s: %s", base::names(info), [13:31:08.359] info) [13:31:08.359] info <- base::paste(info, collapse = "; ") [13:31:08.359] if (!has_future) { [13:31:08.359] msg <- base::sprintf("Package 'future' is not installed on worker (%s)", [13:31:08.359] info) [13:31:08.359] } [13:31:08.359] else { [13:31:08.359] msg <- base::sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", [13:31:08.359] info, version) [13:31:08.359] } [13:31:08.359] base::stop(msg) [13:31:08.359] } [13:31:08.359] }) [13:31:08.359] } [13:31:08.359] ...future.strategy.old <- future::plan("list") [13:31:08.359] options(future.plan = NULL) [13:31:08.359] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.359] future::plan("default", .cleanup = FALSE, .init = FALSE) [13:31:08.359] } [13:31:08.359] ...future.workdir <- getwd() [13:31:08.359] } [13:31:08.359] ...future.oldOptions <- base::as.list(base::.Options) [13:31:08.359] ...future.oldEnvVars <- base::Sys.getenv() [13:31:08.359] } [13:31:08.359] base::options(future.startup.script = FALSE, future.globals.onMissing = "error", [13:31:08.359] future.globals.maxSize = NULL, future.globals.method = NULL, [13:31:08.359] future.globals.onMissing = "error", future.globals.onReference = NULL, [13:31:08.359] future.globals.resolve = TRUE, future.resolve.recursive = NULL, [13:31:08.359] future.rng.onMisuse = NULL, future.rng.onMisuse.keepFuture = NULL, [13:31:08.359] future.stdout.windows.reencode = NULL, width = 80L) [13:31:08.359] ...future.futureOptionsAdded <- base::setdiff(base::names(base::.Options), [13:31:08.359] base::names(...future.oldOptions)) [13:31:08.359] } [13:31:08.359] if (FALSE) { [13:31:08.359] } [13:31:08.359] else { [13:31:08.359] if (TRUE) { [13:31:08.359] ...future.stdout <- base::rawConnection(base::raw(0L), [13:31:08.359] open = "w") [13:31:08.359] } [13:31:08.359] else { [13:31:08.359] ...future.stdout <- base::file(base::switch(.Platform$OS.type, [13:31:08.359] windows = "NUL", "/dev/null"), open = "w") [13:31:08.359] } [13:31:08.359] base::sink(...future.stdout, type = "output", split = FALSE) [13:31:08.359] base::on.exit(if (!base::is.null(...future.stdout)) { [13:31:08.359] base::sink(type = "output", split = FALSE) [13:31:08.359] base::close(...future.stdout) [13:31:08.359] }, add = TRUE) [13:31:08.359] } [13:31:08.359] ...future.frame <- base::sys.nframe() [13:31:08.359] ...future.conditions <- base::list() [13:31:08.359] ...future.rng <- base::globalenv()$.Random.seed [13:31:08.359] if (FALSE) { [13:31:08.359] ...future.globalenv.names <- c(base::names(base::.GlobalEnv), [13:31:08.359] "...future.value", "...future.globalenv.names", ".Random.seed") [13:31:08.359] } [13:31:08.359] ...future.result <- base::tryCatch({ [13:31:08.359] base::withCallingHandlers({ [13:31:08.359] ...future.value <- base::withVisible(base::local({ [13:31:08.359] x$a <- 1 [13:31:08.359] x [13:31:08.359] })) [13:31:08.359] future::FutureResult(value = ...future.value$value, [13:31:08.359] visible = ...future.value$visible, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.359] ...future.rng), globalenv = if (FALSE) [13:31:08.359] list(added = base::setdiff(base::names(base::.GlobalEnv), [13:31:08.359] ...future.globalenv.names)) [13:31:08.359] else NULL, started = ...future.startTime, version = "1.8") [13:31:08.359] }, condition = base::local({ [13:31:08.359] c <- base::c [13:31:08.359] inherits <- base::inherits [13:31:08.359] invokeRestart <- base::invokeRestart [13:31:08.359] length <- base::length [13:31:08.359] list <- base::list [13:31:08.359] seq.int <- base::seq.int [13:31:08.359] signalCondition <- base::signalCondition [13:31:08.359] sys.calls <- base::sys.calls [13:31:08.359] `[[` <- base::`[[` [13:31:08.359] `+` <- base::`+` [13:31:08.359] `<<-` <- base::`<<-` [13:31:08.359] sysCalls <- function(calls = sys.calls(), from = 1L) { [13:31:08.359] calls[seq.int(from = from + 12L, to = length(calls) - [13:31:08.359] 3L)] [13:31:08.359] } [13:31:08.359] function(cond) { [13:31:08.359] is_error <- inherits(cond, "error") [13:31:08.359] ignore <- !is_error && !is.null(NULL) && inherits(cond, [13:31:08.359] NULL) [13:31:08.359] if (is_error) { [13:31:08.359] sessionInformation <- function() { [13:31:08.359] list(r = base::R.Version(), locale = base::Sys.getlocale(), [13:31:08.359] rngkind = base::RNGkind(), namespaces = base::loadedNamespaces(), [13:31:08.359] search = base::search(), system = base::Sys.info()) [13:31:08.359] } [13:31:08.359] ...future.conditions[[length(...future.conditions) + [13:31:08.359] 1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), [13:31:08.359] cond$call), session = sessionInformation(), [13:31:08.359] timestamp = base::Sys.time(), signaled = 0L) [13:31:08.359] signalCondition(cond) [13:31:08.359] } [13:31:08.359] else if (!ignore && TRUE && inherits(cond, "condition")) { [13:31:08.359] signal <- FALSE && inherits(cond, character(0)) [13:31:08.359] ...future.conditions[[length(...future.conditions) + [13:31:08.359] 1L]] <<- list(condition = cond, signaled = base::as.integer(signal)) [13:31:08.359] if (FALSE && !signal) { [13:31:08.359] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.359] { [13:31:08.359] inherits <- base::inherits [13:31:08.359] invokeRestart <- base::invokeRestart [13:31:08.359] is.null <- base::is.null [13:31:08.359] muffled <- FALSE [13:31:08.359] if (inherits(cond, "message")) { [13:31:08.359] muffled <- grepl(pattern, "muffleMessage") [13:31:08.359] if (muffled) [13:31:08.359] invokeRestart("muffleMessage") [13:31:08.359] } [13:31:08.359] else if (inherits(cond, "warning")) { [13:31:08.359] muffled <- grepl(pattern, "muffleWarning") [13:31:08.359] if (muffled) [13:31:08.359] invokeRestart("muffleWarning") [13:31:08.359] } [13:31:08.359] else if (inherits(cond, "condition")) { [13:31:08.359] if (!is.null(pattern)) { [13:31:08.359] computeRestarts <- base::computeRestarts [13:31:08.359] grepl <- base::grepl [13:31:08.359] restarts <- computeRestarts(cond) [13:31:08.359] for (restart in restarts) { [13:31:08.359] name <- restart$name [13:31:08.359] if (is.null(name)) [13:31:08.359] next [13:31:08.359] if (!grepl(pattern, name)) [13:31:08.359] next [13:31:08.359] invokeRestart(restart) [13:31:08.359] muffled <- TRUE [13:31:08.359] break [13:31:08.359] } [13:31:08.359] } [13:31:08.359] } [13:31:08.359] invisible(muffled) [13:31:08.359] } [13:31:08.359] muffleCondition(cond, pattern = "^muffle") [13:31:08.359] } [13:31:08.359] } [13:31:08.359] else { [13:31:08.359] if (TRUE) { [13:31:08.359] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.359] { [13:31:08.359] inherits <- base::inherits [13:31:08.359] invokeRestart <- base::invokeRestart [13:31:08.359] is.null <- base::is.null [13:31:08.359] muffled <- FALSE [13:31:08.359] if (inherits(cond, "message")) { [13:31:08.359] muffled <- grepl(pattern, "muffleMessage") [13:31:08.359] if (muffled) [13:31:08.359] invokeRestart("muffleMessage") [13:31:08.359] } [13:31:08.359] else if (inherits(cond, "warning")) { [13:31:08.359] muffled <- grepl(pattern, "muffleWarning") [13:31:08.359] if (muffled) [13:31:08.359] invokeRestart("muffleWarning") [13:31:08.359] } [13:31:08.359] else if (inherits(cond, "condition")) { [13:31:08.359] if (!is.null(pattern)) { [13:31:08.359] computeRestarts <- base::computeRestarts [13:31:08.359] grepl <- base::grepl [13:31:08.359] restarts <- computeRestarts(cond) [13:31:08.359] for (restart in restarts) { [13:31:08.359] name <- restart$name [13:31:08.359] if (is.null(name)) [13:31:08.359] next [13:31:08.359] if (!grepl(pattern, name)) [13:31:08.359] next [13:31:08.359] invokeRestart(restart) [13:31:08.359] muffled <- TRUE [13:31:08.359] break [13:31:08.359] } [13:31:08.359] } [13:31:08.359] } [13:31:08.359] invisible(muffled) [13:31:08.359] } [13:31:08.359] muffleCondition(cond, pattern = "^muffle") [13:31:08.359] } [13:31:08.359] } [13:31:08.359] } [13:31:08.359] })) [13:31:08.359] }, error = function(ex) { [13:31:08.359] base::structure(base::list(value = NULL, visible = NULL, [13:31:08.359] conditions = ...future.conditions, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.359] ...future.rng), started = ...future.startTime, [13:31:08.359] finished = Sys.time(), session_uuid = NA_character_, [13:31:08.359] version = "1.8"), class = "FutureResult") [13:31:08.359] }, finally = { [13:31:08.359] if (!identical(...future.workdir, getwd())) [13:31:08.359] setwd(...future.workdir) [13:31:08.359] { [13:31:08.359] if (identical(getOption("nwarnings"), ...future.oldOptions$nwarnings)) { [13:31:08.359] ...future.oldOptions$nwarnings <- NULL [13:31:08.359] } [13:31:08.359] base::options(...future.oldOptions) [13:31:08.359] if (.Platform$OS.type == "windows") { [13:31:08.359] old_names <- names(...future.oldEnvVars) [13:31:08.359] envs <- base::Sys.getenv() [13:31:08.359] names <- names(envs) [13:31:08.359] common <- intersect(names, old_names) [13:31:08.359] added <- setdiff(names, old_names) [13:31:08.359] removed <- setdiff(old_names, names) [13:31:08.359] changed <- common[...future.oldEnvVars[common] != [13:31:08.359] envs[common]] [13:31:08.359] NAMES <- toupper(changed) [13:31:08.359] args <- list() [13:31:08.359] for (kk in seq_along(NAMES)) { [13:31:08.359] name <- changed[[kk]] [13:31:08.359] NAME <- NAMES[[kk]] [13:31:08.359] if (name != NAME && is.element(NAME, old_names)) [13:31:08.359] next [13:31:08.359] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.359] } [13:31:08.359] NAMES <- toupper(added) [13:31:08.359] for (kk in seq_along(NAMES)) { [13:31:08.359] name <- added[[kk]] [13:31:08.359] NAME <- NAMES[[kk]] [13:31:08.359] if (name != NAME && is.element(NAME, old_names)) [13:31:08.359] next [13:31:08.359] args[[name]] <- "" [13:31:08.359] } [13:31:08.359] NAMES <- toupper(removed) [13:31:08.359] for (kk in seq_along(NAMES)) { [13:31:08.359] name <- removed[[kk]] [13:31:08.359] NAME <- NAMES[[kk]] [13:31:08.359] if (name != NAME && is.element(NAME, old_names)) [13:31:08.359] next [13:31:08.359] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.359] } [13:31:08.359] if (length(args) > 0) [13:31:08.359] base::do.call(base::Sys.setenv, args = args) [13:31:08.359] args <- names <- old_names <- NAMES <- envs <- common <- added <- removed <- NULL [13:31:08.359] } [13:31:08.359] else { [13:31:08.359] base::do.call(base::Sys.setenv, args = base::as.list(...future.oldEnvVars)) [13:31:08.359] } [13:31:08.359] { [13:31:08.359] if (base::length(...future.futureOptionsAdded) > [13:31:08.359] 0L) { [13:31:08.359] opts <- base::vector("list", length = base::length(...future.futureOptionsAdded)) [13:31:08.359] base::names(opts) <- ...future.futureOptionsAdded [13:31:08.359] base::options(opts) [13:31:08.359] } [13:31:08.359] { [13:31:08.359] NULL [13:31:08.359] options(future.plan = NULL) [13:31:08.359] if (is.na(NA_character_)) [13:31:08.359] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.359] else Sys.setenv(R_FUTURE_PLAN = NA_character_) [13:31:08.359] future::plan(...future.strategy.old, .cleanup = FALSE, [13:31:08.359] .init = FALSE) [13:31:08.359] } [13:31:08.359] } [13:31:08.359] } [13:31:08.359] }) [13:31:08.359] if (TRUE) { [13:31:08.359] base::sink(type = "output", split = FALSE) [13:31:08.359] if (TRUE) { [13:31:08.359] ...future.result$stdout <- base::rawToChar(base::rawConnectionValue(...future.stdout)) [13:31:08.359] } [13:31:08.359] else { [13:31:08.359] ...future.result["stdout"] <- base::list(NULL) [13:31:08.359] } [13:31:08.359] base::close(...future.stdout) [13:31:08.359] ...future.stdout <- NULL [13:31:08.359] } [13:31:08.359] ...future.result$conditions <- ...future.conditions [13:31:08.359] ...future.result$finished <- base::Sys.time() [13:31:08.359] ...future.result [13:31:08.359] } [13:31:08.363] - Launch lazy future ... done [13:31:08.363] run() for 'MiraiFuture' ... done > rm(list = "x") > print(y) $a [1] 1 > stopifnot(identical(y, y0)) > > ## 'x' is _not_ a global variable here > x <- list() > y %<-% { + x <- list(b = 2) + x$a <- 1 + x + } Warning in getGlobalsAndPackages(expr, envir = envir, tweak = tweakExpression, : R option 'future.globals.resolve' may only be used for troubleshooting. It must not be used in production since it changes how futures are evaluated and there is a great risk that the results cannot be reproduced elsewhere: 'TRUE' [13:31:08.365] getGlobalsAndPackages() ... Warning in getGlobalsAndPackages(expr, envir = envir, tweak = tweakExpression, : R option 'future.globals.onMissing' may only be used for troubleshooting. It must not be used in production since it changes how futures are evaluated and there is a great risk that the results cannot be reproduced elsewhere: 'error' [13:31:08.366] Searching for globals... [13:31:08.369] - globals found: [5] '{', '<-', 'list', '$', '$<-' [13:31:08.369] Searching for globals ... DONE [13:31:08.369] Resolving globals: TRUE [13:31:08.369] Resolving any globals that are futures ... [13:31:08.369] - globals: [5] '{', '<-', 'list', '$', '$<-' [13:31:08.370] Resolving any globals that are futures ... DONE [13:31:08.370] [13:31:08.370] [13:31:08.370] getGlobalsAndPackages() ... DONE [13:31:08.371] run() for 'Future' ... [13:31:08.371] - state: 'created' [13:31:08.371] - Future backend: 'FutureStrategy', 'mirai_multisession', 'mirai_cluster', 'mirai', 'multiprocess', 'future', 'function' [13:31:08.373] - Future class: 'MiraiFuture', 'MultiprocessFuture', 'Future', 'environment' [13:31:08.373] - Copy elements of temporary 'MiraiFuture' to final 'Future' object ... [13:31:08.374] - Field: 'label' [13:31:08.374] - Field: 'local' [13:31:08.374] - Field: 'owner' [13:31:08.374] - Field: 'envir' [13:31:08.374] - Field: 'packages' [13:31:08.375] - Field: 'gc' [13:31:08.375] - Field: 'conditions' [13:31:08.375] - Field: 'expr' [13:31:08.375] - Field: 'uuid' [13:31:08.375] - Field: 'seed' [13:31:08.375] - Field: 'version' [13:31:08.376] - Field: 'result' [13:31:08.376] - Field: 'asynchronous' [13:31:08.376] - Field: 'calls' [13:31:08.376] - Field: 'globals' [13:31:08.376] - Field: 'stdout' [13:31:08.376] - Field: 'earlySignal' [13:31:08.377] - Field: 'lazy' [13:31:08.377] - Field: 'state' [13:31:08.377] - Field: '.cluster' [13:31:08.377] - Copy elements of temporary 'MiraiFuture' to final 'Future' object ... done [13:31:08.377] - Launch lazy future ... [13:31:08.377] Packages needed by the future expression (n = 0): [13:31:08.378] Packages needed by future strategies (n = 0): [13:31:08.378] { [13:31:08.378] { [13:31:08.378] { [13:31:08.378] ...future.startTime <- base::Sys.time() [13:31:08.378] { [13:31:08.378] { [13:31:08.378] { [13:31:08.378] base::local({ [13:31:08.378] has_future <- base::requireNamespace("future", [13:31:08.378] quietly = TRUE) [13:31:08.378] if (has_future) { [13:31:08.378] ns <- base::getNamespace("future") [13:31:08.378] version <- ns[[".package"]][["version"]] [13:31:08.378] if (is.null(version)) [13:31:08.378] version <- utils::packageVersion("future") [13:31:08.378] } [13:31:08.378] else { [13:31:08.378] version <- NULL [13:31:08.378] } [13:31:08.378] if (!has_future || version < "1.8.0") { [13:31:08.378] info <- base::c(r_version = base::gsub("R version ", [13:31:08.378] "", base::R.version$version.string), [13:31:08.378] platform = base::sprintf("%s (%s-bit)", [13:31:08.378] base::R.version$platform, 8 * base::.Machine$sizeof.pointer), [13:31:08.378] os = base::paste(base::Sys.info()[base::c("sysname", [13:31:08.378] "release", "version")], collapse = " "), [13:31:08.378] hostname = base::Sys.info()[["nodename"]]) [13:31:08.378] info <- base::sprintf("%s: %s", base::names(info), [13:31:08.378] info) [13:31:08.378] info <- base::paste(info, collapse = "; ") [13:31:08.378] if (!has_future) { [13:31:08.378] msg <- base::sprintf("Package 'future' is not installed on worker (%s)", [13:31:08.378] info) [13:31:08.378] } [13:31:08.378] else { [13:31:08.378] msg <- base::sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", [13:31:08.378] info, version) [13:31:08.378] } [13:31:08.378] base::stop(msg) [13:31:08.378] } [13:31:08.378] }) [13:31:08.378] } [13:31:08.378] ...future.strategy.old <- future::plan("list") [13:31:08.378] options(future.plan = NULL) [13:31:08.378] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.378] future::plan("default", .cleanup = FALSE, .init = FALSE) [13:31:08.378] } [13:31:08.378] ...future.workdir <- getwd() [13:31:08.378] } [13:31:08.378] ...future.oldOptions <- base::as.list(base::.Options) [13:31:08.378] ...future.oldEnvVars <- base::Sys.getenv() [13:31:08.378] } [13:31:08.378] base::options(future.startup.script = FALSE, future.globals.onMissing = "error", [13:31:08.378] future.globals.maxSize = NULL, future.globals.method = NULL, [13:31:08.378] future.globals.onMissing = "error", future.globals.onReference = NULL, [13:31:08.378] future.globals.resolve = TRUE, future.resolve.recursive = NULL, [13:31:08.378] future.rng.onMisuse = NULL, future.rng.onMisuse.keepFuture = NULL, [13:31:08.378] future.stdout.windows.reencode = NULL, width = 80L) [13:31:08.378] ...future.futureOptionsAdded <- base::setdiff(base::names(base::.Options), [13:31:08.378] base::names(...future.oldOptions)) [13:31:08.378] } [13:31:08.378] if (FALSE) { [13:31:08.378] } [13:31:08.378] else { [13:31:08.378] if (TRUE) { [13:31:08.378] ...future.stdout <- base::rawConnection(base::raw(0L), [13:31:08.378] open = "w") [13:31:08.378] } [13:31:08.378] else { [13:31:08.378] ...future.stdout <- base::file(base::switch(.Platform$OS.type, [13:31:08.378] windows = "NUL", "/dev/null"), open = "w") [13:31:08.378] } [13:31:08.378] base::sink(...future.stdout, type = "output", split = FALSE) [13:31:08.378] base::on.exit(if (!base::is.null(...future.stdout)) { [13:31:08.378] base::sink(type = "output", split = FALSE) [13:31:08.378] base::close(...future.stdout) [13:31:08.378] }, add = TRUE) [13:31:08.378] } [13:31:08.378] ...future.frame <- base::sys.nframe() [13:31:08.378] ...future.conditions <- base::list() [13:31:08.378] ...future.rng <- base::globalenv()$.Random.seed [13:31:08.378] if (FALSE) { [13:31:08.378] ...future.globalenv.names <- c(base::names(base::.GlobalEnv), [13:31:08.378] "...future.value", "...future.globalenv.names", ".Random.seed") [13:31:08.378] } [13:31:08.378] ...future.result <- base::tryCatch({ [13:31:08.378] base::withCallingHandlers({ [13:31:08.378] ...future.value <- base::withVisible(base::local({ [13:31:08.378] x <- list(b = 2) [13:31:08.378] x$a <- 1 [13:31:08.378] x [13:31:08.378] })) [13:31:08.378] future::FutureResult(value = ...future.value$value, [13:31:08.378] visible = ...future.value$visible, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.378] ...future.rng), globalenv = if (FALSE) [13:31:08.378] list(added = base::setdiff(base::names(base::.GlobalEnv), [13:31:08.378] ...future.globalenv.names)) [13:31:08.378] else NULL, started = ...future.startTime, version = "1.8") [13:31:08.378] }, condition = base::local({ [13:31:08.378] c <- base::c [13:31:08.378] inherits <- base::inherits [13:31:08.378] invokeRestart <- base::invokeRestart [13:31:08.378] length <- base::length [13:31:08.378] list <- base::list [13:31:08.378] seq.int <- base::seq.int [13:31:08.378] signalCondition <- base::signalCondition [13:31:08.378] sys.calls <- base::sys.calls [13:31:08.378] `[[` <- base::`[[` [13:31:08.378] `+` <- base::`+` [13:31:08.378] `<<-` <- base::`<<-` [13:31:08.378] sysCalls <- function(calls = sys.calls(), from = 1L) { [13:31:08.378] calls[seq.int(from = from + 12L, to = length(calls) - [13:31:08.378] 3L)] [13:31:08.378] } [13:31:08.378] function(cond) { [13:31:08.378] is_error <- inherits(cond, "error") [13:31:08.378] ignore <- !is_error && !is.null(NULL) && inherits(cond, [13:31:08.378] NULL) [13:31:08.378] if (is_error) { [13:31:08.378] sessionInformation <- function() { [13:31:08.378] list(r = base::R.Version(), locale = base::Sys.getlocale(), [13:31:08.378] rngkind = base::RNGkind(), namespaces = base::loadedNamespaces(), [13:31:08.378] search = base::search(), system = base::Sys.info()) [13:31:08.378] } [13:31:08.378] ...future.conditions[[length(...future.conditions) + [13:31:08.378] 1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), [13:31:08.378] cond$call), session = sessionInformation(), [13:31:08.378] timestamp = base::Sys.time(), signaled = 0L) [13:31:08.378] signalCondition(cond) [13:31:08.378] } [13:31:08.378] else if (!ignore && TRUE && inherits(cond, "condition")) { [13:31:08.378] signal <- FALSE && inherits(cond, character(0)) [13:31:08.378] ...future.conditions[[length(...future.conditions) + [13:31:08.378] 1L]] <<- list(condition = cond, signaled = base::as.integer(signal)) [13:31:08.378] if (FALSE && !signal) { [13:31:08.378] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.378] { [13:31:08.378] inherits <- base::inherits [13:31:08.378] invokeRestart <- base::invokeRestart [13:31:08.378] is.null <- base::is.null [13:31:08.378] muffled <- FALSE [13:31:08.378] if (inherits(cond, "message")) { [13:31:08.378] muffled <- grepl(pattern, "muffleMessage") [13:31:08.378] if (muffled) [13:31:08.378] invokeRestart("muffleMessage") [13:31:08.378] } [13:31:08.378] else if (inherits(cond, "warning")) { [13:31:08.378] muffled <- grepl(pattern, "muffleWarning") [13:31:08.378] if (muffled) [13:31:08.378] invokeRestart("muffleWarning") [13:31:08.378] } [13:31:08.378] else if (inherits(cond, "condition")) { [13:31:08.378] if (!is.null(pattern)) { [13:31:08.378] computeRestarts <- base::computeRestarts [13:31:08.378] grepl <- base::grepl [13:31:08.378] restarts <- computeRestarts(cond) [13:31:08.378] for (restart in restarts) { [13:31:08.378] name <- restart$name [13:31:08.378] if (is.null(name)) [13:31:08.378] next [13:31:08.378] if (!grepl(pattern, name)) [13:31:08.378] next [13:31:08.378] invokeRestart(restart) [13:31:08.378] muffled <- TRUE [13:31:08.378] break [13:31:08.378] } [13:31:08.378] } [13:31:08.378] } [13:31:08.378] invisible(muffled) [13:31:08.378] } [13:31:08.378] muffleCondition(cond, pattern = "^muffle") [13:31:08.378] } [13:31:08.378] } [13:31:08.378] else { [13:31:08.378] if (TRUE) { [13:31:08.378] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.378] { [13:31:08.378] inherits <- base::inherits [13:31:08.378] invokeRestart <- base::invokeRestart [13:31:08.378] is.null <- base::is.null [13:31:08.378] muffled <- FALSE [13:31:08.378] if (inherits(cond, "message")) { [13:31:08.378] muffled <- grepl(pattern, "muffleMessage") [13:31:08.378] if (muffled) [13:31:08.378] invokeRestart("muffleMessage") [13:31:08.378] } [13:31:08.378] else if (inherits(cond, "warning")) { [13:31:08.378] muffled <- grepl(pattern, "muffleWarning") [13:31:08.378] if (muffled) [13:31:08.378] invokeRestart("muffleWarning") [13:31:08.378] } [13:31:08.378] else if (inherits(cond, "condition")) { [13:31:08.378] if (!is.null(pattern)) { [13:31:08.378] computeRestarts <- base::computeRestarts [13:31:08.378] grepl <- base::grepl [13:31:08.378] restarts <- computeRestarts(cond) [13:31:08.378] for (restart in restarts) { [13:31:08.378] name <- restart$name [13:31:08.378] if (is.null(name)) [13:31:08.378] next [13:31:08.378] if (!grepl(pattern, name)) [13:31:08.378] next [13:31:08.378] invokeRestart(restart) [13:31:08.378] muffled <- TRUE [13:31:08.378] break [13:31:08.378] } [13:31:08.378] } [13:31:08.378] } [13:31:08.378] invisible(muffled) [13:31:08.378] } [13:31:08.378] muffleCondition(cond, pattern = "^muffle") [13:31:08.378] } [13:31:08.378] } [13:31:08.378] } [13:31:08.378] })) [13:31:08.378] }, error = function(ex) { [13:31:08.378] base::structure(base::list(value = NULL, visible = NULL, [13:31:08.378] conditions = ...future.conditions, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.378] ...future.rng), started = ...future.startTime, [13:31:08.378] finished = Sys.time(), session_uuid = NA_character_, [13:31:08.378] version = "1.8"), class = "FutureResult") [13:31:08.378] }, finally = { [13:31:08.378] if (!identical(...future.workdir, getwd())) [13:31:08.378] setwd(...future.workdir) [13:31:08.378] { [13:31:08.378] if (identical(getOption("nwarnings"), ...future.oldOptions$nwarnings)) { [13:31:08.378] ...future.oldOptions$nwarnings <- NULL [13:31:08.378] } [13:31:08.378] base::options(...future.oldOptions) [13:31:08.378] if (.Platform$OS.type == "windows") { [13:31:08.378] old_names <- names(...future.oldEnvVars) [13:31:08.378] envs <- base::Sys.getenv() [13:31:08.378] names <- names(envs) [13:31:08.378] common <- intersect(names, old_names) [13:31:08.378] added <- setdiff(names, old_names) [13:31:08.378] removed <- setdiff(old_names, names) [13:31:08.378] changed <- common[...future.oldEnvVars[common] != [13:31:08.378] envs[common]] [13:31:08.378] NAMES <- toupper(changed) [13:31:08.378] args <- list() [13:31:08.378] for (kk in seq_along(NAMES)) { [13:31:08.378] name <- changed[[kk]] [13:31:08.378] NAME <- NAMES[[kk]] [13:31:08.378] if (name != NAME && is.element(NAME, old_names)) [13:31:08.378] next [13:31:08.378] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.378] } [13:31:08.378] NAMES <- toupper(added) [13:31:08.378] for (kk in seq_along(NAMES)) { [13:31:08.378] name <- added[[kk]] [13:31:08.378] NAME <- NAMES[[kk]] [13:31:08.378] if (name != NAME && is.element(NAME, old_names)) [13:31:08.378] next [13:31:08.378] args[[name]] <- "" [13:31:08.378] } [13:31:08.378] NAMES <- toupper(removed) [13:31:08.378] for (kk in seq_along(NAMES)) { [13:31:08.378] name <- removed[[kk]] [13:31:08.378] NAME <- NAMES[[kk]] [13:31:08.378] if (name != NAME && is.element(NAME, old_names)) [13:31:08.378] next [13:31:08.378] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.378] } [13:31:08.378] if (length(args) > 0) [13:31:08.378] base::do.call(base::Sys.setenv, args = args) [13:31:08.378] args <- names <- old_names <- NAMES <- envs <- common <- added <- removed <- NULL [13:31:08.378] } [13:31:08.378] else { [13:31:08.378] base::do.call(base::Sys.setenv, args = base::as.list(...future.oldEnvVars)) [13:31:08.378] } [13:31:08.378] { [13:31:08.378] if (base::length(...future.futureOptionsAdded) > [13:31:08.378] 0L) { [13:31:08.378] opts <- base::vector("list", length = base::length(...future.futureOptionsAdded)) [13:31:08.378] base::names(opts) <- ...future.futureOptionsAdded [13:31:08.378] base::options(opts) [13:31:08.378] } [13:31:08.378] { [13:31:08.378] NULL [13:31:08.378] options(future.plan = NULL) [13:31:08.378] if (is.na(NA_character_)) [13:31:08.378] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.378] else Sys.setenv(R_FUTURE_PLAN = NA_character_) [13:31:08.378] future::plan(...future.strategy.old, .cleanup = FALSE, [13:31:08.378] .init = FALSE) [13:31:08.378] } [13:31:08.378] } [13:31:08.378] } [13:31:08.378] }) [13:31:08.378] if (TRUE) { [13:31:08.378] base::sink(type = "output", split = FALSE) [13:31:08.378] if (TRUE) { [13:31:08.378] ...future.result$stdout <- base::rawToChar(base::rawConnectionValue(...future.stdout)) [13:31:08.378] } [13:31:08.378] else { [13:31:08.378] ...future.result["stdout"] <- base::list(NULL) [13:31:08.378] } [13:31:08.378] base::close(...future.stdout) [13:31:08.378] ...future.stdout <- NULL [13:31:08.378] } [13:31:08.378] ...future.result$conditions <- ...future.conditions [13:31:08.378] ...future.result$finished <- base::Sys.time() [13:31:08.378] ...future.result [13:31:08.378] } [13:31:08.382] - Launch lazy future ... done [13:31:08.382] run() for 'MiraiFuture' ... done > rm(list = "x") > print(y) $b [1] 2 $a [1] 1 > stopifnot(identical(y, list(b = 2, a = 1))) > > ## Explicit future > x <- list() > f <- future({ + x[["a"]] <- 1 + x + }) Warning in getGlobalsAndPackages(expr, envir = envir, tweak = tweakExpression, : R option 'future.globals.resolve' may only be used for troubleshooting. It must not be used in production since it changes how futures are evaluated and there is a great risk that the results cannot be reproduced elsewhere: 'TRUE' [13:31:08.384] getGlobalsAndPackages() ... Warning in getGlobalsAndPackages(expr, envir = envir, tweak = tweakExpression, : R option 'future.globals.onMissing' may only be used for troubleshooting. It must not be used in production since it changes how futures are evaluated and there is a great risk that the results cannot be reproduced elsewhere: 'error' [13:31:08.385] Searching for globals... [13:31:08.387] - globals found: [5] '{', 'x', '<-', '[[', '[[<-' [13:31:08.387] Searching for globals ... DONE [13:31:08.387] Resolving globals: TRUE [13:31:08.387] Resolving any globals that are futures ... [13:31:08.388] - globals: [5] '{', 'x', '<-', '[[', '[[<-' [13:31:08.388] Resolving any globals that are futures ... DONE [13:31:08.388] Resolving futures part of globals (recursively) ... [13:31:08.389] resolve() on list ... [13:31:08.389] recursive: 99 [13:31:08.390] length: 1 [13:31:08.390] elements: 'x' [13:31:08.390] length: 0 (resolved future 1) [13:31:08.391] resolve() on list ... DONE [13:31:08.391] - globals: [1] 'x' [13:31:08.391] Resolving futures part of globals (recursively) ... DONE [13:31:08.391] The total size of the 1 globals is 0 bytes (0 bytes) [13:31:08.392] The total size of the 1 globals exported for future expression ('{; x[["a"]] <- 1; x; }') is 0 bytes.. This exceeds the maximum allowed size of 500.00 MiB (option 'future.globals.maxSize'). There is one global: 'x' (0 bytes of class 'list') [13:31:08.392] - globals: [1] 'x' [13:31:08.392] [13:31:08.392] getGlobalsAndPackages() ... DONE [13:31:08.392] run() for 'Future' ... [13:31:08.393] - state: 'created' [13:31:08.393] - Future backend: 'FutureStrategy', 'mirai_multisession', 'mirai_cluster', 'mirai', 'multiprocess', 'future', 'function' [13:31:08.395] - Future class: 'MiraiFuture', 'MultiprocessFuture', 'Future', 'environment' [13:31:08.395] - Copy elements of temporary 'MiraiFuture' to final 'Future' object ... [13:31:08.395] - Field: 'label' [13:31:08.396] - Field: 'local' [13:31:08.396] - Field: 'owner' [13:31:08.396] - Field: 'envir' [13:31:08.396] - Field: 'packages' [13:31:08.396] - Field: 'gc' [13:31:08.396] - Field: 'conditions' [13:31:08.397] - Field: 'expr' [13:31:08.397] - Field: 'uuid' [13:31:08.397] - Field: 'seed' [13:31:08.397] - Field: 'version' [13:31:08.397] - Field: 'result' [13:31:08.397] - Field: 'asynchronous' [13:31:08.398] - Field: 'calls' [13:31:08.398] - Field: 'globals' [13:31:08.398] - Field: 'stdout' [13:31:08.398] - Field: 'earlySignal' [13:31:08.398] - Field: 'lazy' [13:31:08.398] - Field: 'state' [13:31:08.399] - Field: '.cluster' [13:31:08.399] - Copy elements of temporary 'MiraiFuture' to final 'Future' object ... done [13:31:08.399] - Launch lazy future ... [13:31:08.399] Packages needed by the future expression (n = 0): [13:31:08.399] Packages needed by future strategies (n = 0): [13:31:08.400] { [13:31:08.400] { [13:31:08.400] { [13:31:08.400] ...future.startTime <- base::Sys.time() [13:31:08.400] { [13:31:08.400] { [13:31:08.400] { [13:31:08.400] base::local({ [13:31:08.400] has_future <- base::requireNamespace("future", [13:31:08.400] quietly = TRUE) [13:31:08.400] if (has_future) { [13:31:08.400] ns <- base::getNamespace("future") [13:31:08.400] version <- ns[[".package"]][["version"]] [13:31:08.400] if (is.null(version)) [13:31:08.400] version <- utils::packageVersion("future") [13:31:08.400] } [13:31:08.400] else { [13:31:08.400] version <- NULL [13:31:08.400] } [13:31:08.400] if (!has_future || version < "1.8.0") { [13:31:08.400] info <- base::c(r_version = base::gsub("R version ", [13:31:08.400] "", base::R.version$version.string), [13:31:08.400] platform = base::sprintf("%s (%s-bit)", [13:31:08.400] base::R.version$platform, 8 * base::.Machine$sizeof.pointer), [13:31:08.400] os = base::paste(base::Sys.info()[base::c("sysname", [13:31:08.400] "release", "version")], collapse = " "), [13:31:08.400] hostname = base::Sys.info()[["nodename"]]) [13:31:08.400] info <- base::sprintf("%s: %s", base::names(info), [13:31:08.400] info) [13:31:08.400] info <- base::paste(info, collapse = "; ") [13:31:08.400] if (!has_future) { [13:31:08.400] msg <- base::sprintf("Package 'future' is not installed on worker (%s)", [13:31:08.400] info) [13:31:08.400] } [13:31:08.400] else { [13:31:08.400] msg <- base::sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", [13:31:08.400] info, version) [13:31:08.400] } [13:31:08.400] base::stop(msg) [13:31:08.400] } [13:31:08.400] }) [13:31:08.400] } [13:31:08.400] ...future.strategy.old <- future::plan("list") [13:31:08.400] options(future.plan = NULL) [13:31:08.400] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.400] future::plan("default", .cleanup = FALSE, .init = FALSE) [13:31:08.400] } [13:31:08.400] ...future.workdir <- getwd() [13:31:08.400] } [13:31:08.400] ...future.oldOptions <- base::as.list(base::.Options) [13:31:08.400] ...future.oldEnvVars <- base::Sys.getenv() [13:31:08.400] } [13:31:08.400] base::options(future.startup.script = FALSE, future.globals.onMissing = "error", [13:31:08.400] future.globals.maxSize = NULL, future.globals.method = NULL, [13:31:08.400] future.globals.onMissing = "error", future.globals.onReference = NULL, [13:31:08.400] future.globals.resolve = TRUE, future.resolve.recursive = NULL, [13:31:08.400] future.rng.onMisuse = NULL, future.rng.onMisuse.keepFuture = NULL, [13:31:08.400] future.stdout.windows.reencode = NULL, width = 80L) [13:31:08.400] ...future.futureOptionsAdded <- base::setdiff(base::names(base::.Options), [13:31:08.400] base::names(...future.oldOptions)) [13:31:08.400] } [13:31:08.400] if (FALSE) { [13:31:08.400] } [13:31:08.400] else { [13:31:08.400] if (TRUE) { [13:31:08.400] ...future.stdout <- base::rawConnection(base::raw(0L), [13:31:08.400] open = "w") [13:31:08.400] } [13:31:08.400] else { [13:31:08.400] ...future.stdout <- base::file(base::switch(.Platform$OS.type, [13:31:08.400] windows = "NUL", "/dev/null"), open = "w") [13:31:08.400] } [13:31:08.400] base::sink(...future.stdout, type = "output", split = FALSE) [13:31:08.400] base::on.exit(if (!base::is.null(...future.stdout)) { [13:31:08.400] base::sink(type = "output", split = FALSE) [13:31:08.400] base::close(...future.stdout) [13:31:08.400] }, add = TRUE) [13:31:08.400] } [13:31:08.400] ...future.frame <- base::sys.nframe() [13:31:08.400] ...future.conditions <- base::list() [13:31:08.400] ...future.rng <- base::globalenv()$.Random.seed [13:31:08.400] if (FALSE) { [13:31:08.400] ...future.globalenv.names <- c(base::names(base::.GlobalEnv), [13:31:08.400] "...future.value", "...future.globalenv.names", ".Random.seed") [13:31:08.400] } [13:31:08.400] ...future.result <- base::tryCatch({ [13:31:08.400] base::withCallingHandlers({ [13:31:08.400] ...future.value <- base::withVisible(base::local({ [13:31:08.400] x[["a"]] <- 1 [13:31:08.400] x [13:31:08.400] })) [13:31:08.400] future::FutureResult(value = ...future.value$value, [13:31:08.400] visible = ...future.value$visible, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.400] ...future.rng), globalenv = if (FALSE) [13:31:08.400] list(added = base::setdiff(base::names(base::.GlobalEnv), [13:31:08.400] ...future.globalenv.names)) [13:31:08.400] else NULL, started = ...future.startTime, version = "1.8") [13:31:08.400] }, condition = base::local({ [13:31:08.400] c <- base::c [13:31:08.400] inherits <- base::inherits [13:31:08.400] invokeRestart <- base::invokeRestart [13:31:08.400] length <- base::length [13:31:08.400] list <- base::list [13:31:08.400] seq.int <- base::seq.int [13:31:08.400] signalCondition <- base::signalCondition [13:31:08.400] sys.calls <- base::sys.calls [13:31:08.400] `[[` <- base::`[[` [13:31:08.400] `+` <- base::`+` [13:31:08.400] `<<-` <- base::`<<-` [13:31:08.400] sysCalls <- function(calls = sys.calls(), from = 1L) { [13:31:08.400] calls[seq.int(from = from + 12L, to = length(calls) - [13:31:08.400] 3L)] [13:31:08.400] } [13:31:08.400] function(cond) { [13:31:08.400] is_error <- inherits(cond, "error") [13:31:08.400] ignore <- !is_error && !is.null(NULL) && inherits(cond, [13:31:08.400] NULL) [13:31:08.400] if (is_error) { [13:31:08.400] sessionInformation <- function() { [13:31:08.400] list(r = base::R.Version(), locale = base::Sys.getlocale(), [13:31:08.400] rngkind = base::RNGkind(), namespaces = base::loadedNamespaces(), [13:31:08.400] search = base::search(), system = base::Sys.info()) [13:31:08.400] } [13:31:08.400] ...future.conditions[[length(...future.conditions) + [13:31:08.400] 1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), [13:31:08.400] cond$call), session = sessionInformation(), [13:31:08.400] timestamp = base::Sys.time(), signaled = 0L) [13:31:08.400] signalCondition(cond) [13:31:08.400] } [13:31:08.400] else if (!ignore && TRUE && inherits(cond, "condition")) { [13:31:08.400] signal <- FALSE && inherits(cond, character(0)) [13:31:08.400] ...future.conditions[[length(...future.conditions) + [13:31:08.400] 1L]] <<- list(condition = cond, signaled = base::as.integer(signal)) [13:31:08.400] if (FALSE && !signal) { [13:31:08.400] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.400] { [13:31:08.400] inherits <- base::inherits [13:31:08.400] invokeRestart <- base::invokeRestart [13:31:08.400] is.null <- base::is.null [13:31:08.400] muffled <- FALSE [13:31:08.400] if (inherits(cond, "message")) { [13:31:08.400] muffled <- grepl(pattern, "muffleMessage") [13:31:08.400] if (muffled) [13:31:08.400] invokeRestart("muffleMessage") [13:31:08.400] } [13:31:08.400] else if (inherits(cond, "warning")) { [13:31:08.400] muffled <- grepl(pattern, "muffleWarning") [13:31:08.400] if (muffled) [13:31:08.400] invokeRestart("muffleWarning") [13:31:08.400] } [13:31:08.400] else if (inherits(cond, "condition")) { [13:31:08.400] if (!is.null(pattern)) { [13:31:08.400] computeRestarts <- base::computeRestarts [13:31:08.400] grepl <- base::grepl [13:31:08.400] restarts <- computeRestarts(cond) [13:31:08.400] for (restart in restarts) { [13:31:08.400] name <- restart$name [13:31:08.400] if (is.null(name)) [13:31:08.400] next [13:31:08.400] if (!grepl(pattern, name)) [13:31:08.400] next [13:31:08.400] invokeRestart(restart) [13:31:08.400] muffled <- TRUE [13:31:08.400] break [13:31:08.400] } [13:31:08.400] } [13:31:08.400] } [13:31:08.400] invisible(muffled) [13:31:08.400] } [13:31:08.400] muffleCondition(cond, pattern = "^muffle") [13:31:08.400] } [13:31:08.400] } [13:31:08.400] else { [13:31:08.400] if (TRUE) { [13:31:08.400] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.400] { [13:31:08.400] inherits <- base::inherits [13:31:08.400] invokeRestart <- base::invokeRestart [13:31:08.400] is.null <- base::is.null [13:31:08.400] muffled <- FALSE [13:31:08.400] if (inherits(cond, "message")) { [13:31:08.400] muffled <- grepl(pattern, "muffleMessage") [13:31:08.400] if (muffled) [13:31:08.400] invokeRestart("muffleMessage") [13:31:08.400] } [13:31:08.400] else if (inherits(cond, "warning")) { [13:31:08.400] muffled <- grepl(pattern, "muffleWarning") [13:31:08.400] if (muffled) [13:31:08.400] invokeRestart("muffleWarning") [13:31:08.400] } [13:31:08.400] else if (inherits(cond, "condition")) { [13:31:08.400] if (!is.null(pattern)) { [13:31:08.400] computeRestarts <- base::computeRestarts [13:31:08.400] grepl <- base::grepl [13:31:08.400] restarts <- computeRestarts(cond) [13:31:08.400] for (restart in restarts) { [13:31:08.400] name <- restart$name [13:31:08.400] if (is.null(name)) [13:31:08.400] next [13:31:08.400] if (!grepl(pattern, name)) [13:31:08.400] next [13:31:08.400] invokeRestart(restart) [13:31:08.400] muffled <- TRUE [13:31:08.400] break [13:31:08.400] } [13:31:08.400] } [13:31:08.400] } [13:31:08.400] invisible(muffled) [13:31:08.400] } [13:31:08.400] muffleCondition(cond, pattern = "^muffle") [13:31:08.400] } [13:31:08.400] } [13:31:08.400] } [13:31:08.400] })) [13:31:08.400] }, error = function(ex) { [13:31:08.400] base::structure(base::list(value = NULL, visible = NULL, [13:31:08.400] conditions = ...future.conditions, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.400] ...future.rng), started = ...future.startTime, [13:31:08.400] finished = Sys.time(), session_uuid = NA_character_, [13:31:08.400] version = "1.8"), class = "FutureResult") [13:31:08.400] }, finally = { [13:31:08.400] if (!identical(...future.workdir, getwd())) [13:31:08.400] setwd(...future.workdir) [13:31:08.400] { [13:31:08.400] if (identical(getOption("nwarnings"), ...future.oldOptions$nwarnings)) { [13:31:08.400] ...future.oldOptions$nwarnings <- NULL [13:31:08.400] } [13:31:08.400] base::options(...future.oldOptions) [13:31:08.400] if (.Platform$OS.type == "windows") { [13:31:08.400] old_names <- names(...future.oldEnvVars) [13:31:08.400] envs <- base::Sys.getenv() [13:31:08.400] names <- names(envs) [13:31:08.400] common <- intersect(names, old_names) [13:31:08.400] added <- setdiff(names, old_names) [13:31:08.400] removed <- setdiff(old_names, names) [13:31:08.400] changed <- common[...future.oldEnvVars[common] != [13:31:08.400] envs[common]] [13:31:08.400] NAMES <- toupper(changed) [13:31:08.400] args <- list() [13:31:08.400] for (kk in seq_along(NAMES)) { [13:31:08.400] name <- changed[[kk]] [13:31:08.400] NAME <- NAMES[[kk]] [13:31:08.400] if (name != NAME && is.element(NAME, old_names)) [13:31:08.400] next [13:31:08.400] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.400] } [13:31:08.400] NAMES <- toupper(added) [13:31:08.400] for (kk in seq_along(NAMES)) { [13:31:08.400] name <- added[[kk]] [13:31:08.400] NAME <- NAMES[[kk]] [13:31:08.400] if (name != NAME && is.element(NAME, old_names)) [13:31:08.400] next [13:31:08.400] args[[name]] <- "" [13:31:08.400] } [13:31:08.400] NAMES <- toupper(removed) [13:31:08.400] for (kk in seq_along(NAMES)) { [13:31:08.400] name <- removed[[kk]] [13:31:08.400] NAME <- NAMES[[kk]] [13:31:08.400] if (name != NAME && is.element(NAME, old_names)) [13:31:08.400] next [13:31:08.400] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.400] } [13:31:08.400] if (length(args) > 0) [13:31:08.400] base::do.call(base::Sys.setenv, args = args) [13:31:08.400] args <- names <- old_names <- NAMES <- envs <- common <- added <- removed <- NULL [13:31:08.400] } [13:31:08.400] else { [13:31:08.400] base::do.call(base::Sys.setenv, args = base::as.list(...future.oldEnvVars)) [13:31:08.400] } [13:31:08.400] { [13:31:08.400] if (base::length(...future.futureOptionsAdded) > [13:31:08.400] 0L) { [13:31:08.400] opts <- base::vector("list", length = base::length(...future.futureOptionsAdded)) [13:31:08.400] base::names(opts) <- ...future.futureOptionsAdded [13:31:08.400] base::options(opts) [13:31:08.400] } [13:31:08.400] { [13:31:08.400] NULL [13:31:08.400] options(future.plan = NULL) [13:31:08.400] if (is.na(NA_character_)) [13:31:08.400] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.400] else Sys.setenv(R_FUTURE_PLAN = NA_character_) [13:31:08.400] future::plan(...future.strategy.old, .cleanup = FALSE, [13:31:08.400] .init = FALSE) [13:31:08.400] } [13:31:08.400] } [13:31:08.400] } [13:31:08.400] }) [13:31:08.400] if (TRUE) { [13:31:08.400] base::sink(type = "output", split = FALSE) [13:31:08.400] if (TRUE) { [13:31:08.400] ...future.result$stdout <- base::rawToChar(base::rawConnectionValue(...future.stdout)) [13:31:08.400] } [13:31:08.400] else { [13:31:08.400] ...future.result["stdout"] <- base::list(NULL) [13:31:08.400] } [13:31:08.400] base::close(...future.stdout) [13:31:08.400] ...future.stdout <- NULL [13:31:08.400] } [13:31:08.400] ...future.result$conditions <- ...future.conditions [13:31:08.400] ...future.result$finished <- base::Sys.time() [13:31:08.400] ...future.result [13:31:08.400] } [13:31:08.404] - Launch lazy future ... done [13:31:08.404] run() for 'MiraiFuture' ... done > rm(list = "x") > y <- value(f) > print(y) $a [1] 1 > stopifnot(identical(y, y0)) > > ## Future assignment > x <- list() > y %<-% { + x[["a"]] <- 1 + x + } Warning in getGlobalsAndPackages(expr, envir = envir, tweak = tweakExpression, : R option 'future.globals.resolve' may only be used for troubleshooting. It must not be used in production since it changes how futures are evaluated and there is a great risk that the results cannot be reproduced elsewhere: 'TRUE' [13:31:08.406] getGlobalsAndPackages() ... Warning in getGlobalsAndPackages(expr, envir = envir, tweak = tweakExpression, : R option 'future.globals.onMissing' may only be used for troubleshooting. It must not be used in production since it changes how futures are evaluated and there is a great risk that the results cannot be reproduced elsewhere: 'error' [13:31:08.406] Searching for globals... [13:31:08.409] - globals found: [5] '{', 'x', '<-', '[[', '[[<-' [13:31:08.409] Searching for globals ... DONE [13:31:08.409] Resolving globals: TRUE [13:31:08.409] Resolving any globals that are futures ... [13:31:08.409] - globals: [5] '{', 'x', '<-', '[[', '[[<-' [13:31:08.410] Resolving any globals that are futures ... DONE [13:31:08.410] Resolving futures part of globals (recursively) ... [13:31:08.410] resolve() on list ... [13:31:08.410] recursive: 99 [13:31:08.411] length: 1 [13:31:08.411] elements: 'x' [13:31:08.411] length: 0 (resolved future 1) [13:31:08.411] resolve() on list ... DONE [13:31:08.411] - globals: [1] 'x' [13:31:08.411] Resolving futures part of globals (recursively) ... DONE [13:31:08.412] The total size of the 1 globals is 0 bytes (0 bytes) [13:31:08.412] The total size of the 1 globals exported for future expression ('{; x[["a"]] <- 1; x; }') is 0 bytes.. This exceeds the maximum allowed size of 500.00 MiB (option 'future.globals.maxSize'). There is one global: 'x' (0 bytes of class 'list') [13:31:08.412] - globals: [1] 'x' [13:31:08.412] [13:31:08.413] getGlobalsAndPackages() ... DONE [13:31:08.413] run() for 'Future' ... [13:31:08.413] - state: 'created' [13:31:08.413] - Future backend: 'FutureStrategy', 'mirai_multisession', 'mirai_cluster', 'mirai', 'multiprocess', 'future', 'function' [13:31:08.416] - Future class: 'MiraiFuture', 'MultiprocessFuture', 'Future', 'environment' [13:31:08.416] - Copy elements of temporary 'MiraiFuture' to final 'Future' object ... [13:31:08.416] - Field: 'label' [13:31:08.416] - Field: 'local' [13:31:08.416] - Field: 'owner' [13:31:08.416] - Field: 'envir' [13:31:08.417] - Field: 'packages' [13:31:08.417] - Field: 'gc' [13:31:08.417] - Field: 'conditions' [13:31:08.417] - Field: 'expr' [13:31:08.417] - Field: 'uuid' [13:31:08.417] - Field: 'seed' [13:31:08.418] - Field: 'version' [13:31:08.418] - Field: 'result' [13:31:08.418] - Field: 'asynchronous' [13:31:08.418] - Field: 'calls' [13:31:08.418] - Field: 'globals' [13:31:08.418] - Field: 'stdout' [13:31:08.419] - Field: 'earlySignal' [13:31:08.419] - Field: 'lazy' [13:31:08.419] - Field: 'state' [13:31:08.419] - Field: '.cluster' [13:31:08.419] - Copy elements of temporary 'MiraiFuture' to final 'Future' object ... done [13:31:08.419] - Launch lazy future ... [13:31:08.420] Packages needed by the future expression (n = 0): [13:31:08.420] Packages needed by future strategies (n = 0): [13:31:08.420] { [13:31:08.420] { [13:31:08.420] { [13:31:08.420] ...future.startTime <- base::Sys.time() [13:31:08.420] { [13:31:08.420] { [13:31:08.420] { [13:31:08.420] base::local({ [13:31:08.420] has_future <- base::requireNamespace("future", [13:31:08.420] quietly = TRUE) [13:31:08.420] if (has_future) { [13:31:08.420] ns <- base::getNamespace("future") [13:31:08.420] version <- ns[[".package"]][["version"]] [13:31:08.420] if (is.null(version)) [13:31:08.420] version <- utils::packageVersion("future") [13:31:08.420] } [13:31:08.420] else { [13:31:08.420] version <- NULL [13:31:08.420] } [13:31:08.420] if (!has_future || version < "1.8.0") { [13:31:08.420] info <- base::c(r_version = base::gsub("R version ", [13:31:08.420] "", base::R.version$version.string), [13:31:08.420] platform = base::sprintf("%s (%s-bit)", [13:31:08.420] base::R.version$platform, 8 * base::.Machine$sizeof.pointer), [13:31:08.420] os = base::paste(base::Sys.info()[base::c("sysname", [13:31:08.420] "release", "version")], collapse = " "), [13:31:08.420] hostname = base::Sys.info()[["nodename"]]) [13:31:08.420] info <- base::sprintf("%s: %s", base::names(info), [13:31:08.420] info) [13:31:08.420] info <- base::paste(info, collapse = "; ") [13:31:08.420] if (!has_future) { [13:31:08.420] msg <- base::sprintf("Package 'future' is not installed on worker (%s)", [13:31:08.420] info) [13:31:08.420] } [13:31:08.420] else { [13:31:08.420] msg <- base::sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", [13:31:08.420] info, version) [13:31:08.420] } [13:31:08.420] base::stop(msg) [13:31:08.420] } [13:31:08.420] }) [13:31:08.420] } [13:31:08.420] ...future.strategy.old <- future::plan("list") [13:31:08.420] options(future.plan = NULL) [13:31:08.420] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.420] future::plan("default", .cleanup = FALSE, .init = FALSE) [13:31:08.420] } [13:31:08.420] ...future.workdir <- getwd() [13:31:08.420] } [13:31:08.420] ...future.oldOptions <- base::as.list(base::.Options) [13:31:08.420] ...future.oldEnvVars <- base::Sys.getenv() [13:31:08.420] } [13:31:08.420] base::options(future.startup.script = FALSE, future.globals.onMissing = "error", [13:31:08.420] future.globals.maxSize = NULL, future.globals.method = NULL, [13:31:08.420] future.globals.onMissing = "error", future.globals.onReference = NULL, [13:31:08.420] future.globals.resolve = TRUE, future.resolve.recursive = NULL, [13:31:08.420] future.rng.onMisuse = NULL, future.rng.onMisuse.keepFuture = NULL, [13:31:08.420] future.stdout.windows.reencode = NULL, width = 80L) [13:31:08.420] ...future.futureOptionsAdded <- base::setdiff(base::names(base::.Options), [13:31:08.420] base::names(...future.oldOptions)) [13:31:08.420] } [13:31:08.420] if (FALSE) { [13:31:08.420] } [13:31:08.420] else { [13:31:08.420] if (TRUE) { [13:31:08.420] ...future.stdout <- base::rawConnection(base::raw(0L), [13:31:08.420] open = "w") [13:31:08.420] } [13:31:08.420] else { [13:31:08.420] ...future.stdout <- base::file(base::switch(.Platform$OS.type, [13:31:08.420] windows = "NUL", "/dev/null"), open = "w") [13:31:08.420] } [13:31:08.420] base::sink(...future.stdout, type = "output", split = FALSE) [13:31:08.420] base::on.exit(if (!base::is.null(...future.stdout)) { [13:31:08.420] base::sink(type = "output", split = FALSE) [13:31:08.420] base::close(...future.stdout) [13:31:08.420] }, add = TRUE) [13:31:08.420] } [13:31:08.420] ...future.frame <- base::sys.nframe() [13:31:08.420] ...future.conditions <- base::list() [13:31:08.420] ...future.rng <- base::globalenv()$.Random.seed [13:31:08.420] if (FALSE) { [13:31:08.420] ...future.globalenv.names <- c(base::names(base::.GlobalEnv), [13:31:08.420] "...future.value", "...future.globalenv.names", ".Random.seed") [13:31:08.420] } [13:31:08.420] ...future.result <- base::tryCatch({ [13:31:08.420] base::withCallingHandlers({ [13:31:08.420] ...future.value <- base::withVisible(base::local({ [13:31:08.420] x[["a"]] <- 1 [13:31:08.420] x [13:31:08.420] })) [13:31:08.420] future::FutureResult(value = ...future.value$value, [13:31:08.420] visible = ...future.value$visible, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.420] ...future.rng), globalenv = if (FALSE) [13:31:08.420] list(added = base::setdiff(base::names(base::.GlobalEnv), [13:31:08.420] ...future.globalenv.names)) [13:31:08.420] else NULL, started = ...future.startTime, version = "1.8") [13:31:08.420] }, condition = base::local({ [13:31:08.420] c <- base::c [13:31:08.420] inherits <- base::inherits [13:31:08.420] invokeRestart <- base::invokeRestart [13:31:08.420] length <- base::length [13:31:08.420] list <- base::list [13:31:08.420] seq.int <- base::seq.int [13:31:08.420] signalCondition <- base::signalCondition [13:31:08.420] sys.calls <- base::sys.calls [13:31:08.420] `[[` <- base::`[[` [13:31:08.420] `+` <- base::`+` [13:31:08.420] `<<-` <- base::`<<-` [13:31:08.420] sysCalls <- function(calls = sys.calls(), from = 1L) { [13:31:08.420] calls[seq.int(from = from + 12L, to = length(calls) - [13:31:08.420] 3L)] [13:31:08.420] } [13:31:08.420] function(cond) { [13:31:08.420] is_error <- inherits(cond, "error") [13:31:08.420] ignore <- !is_error && !is.null(NULL) && inherits(cond, [13:31:08.420] NULL) [13:31:08.420] if (is_error) { [13:31:08.420] sessionInformation <- function() { [13:31:08.420] list(r = base::R.Version(), locale = base::Sys.getlocale(), [13:31:08.420] rngkind = base::RNGkind(), namespaces = base::loadedNamespaces(), [13:31:08.420] search = base::search(), system = base::Sys.info()) [13:31:08.420] } [13:31:08.420] ...future.conditions[[length(...future.conditions) + [13:31:08.420] 1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), [13:31:08.420] cond$call), session = sessionInformation(), [13:31:08.420] timestamp = base::Sys.time(), signaled = 0L) [13:31:08.420] signalCondition(cond) [13:31:08.420] } [13:31:08.420] else if (!ignore && TRUE && inherits(cond, "condition")) { [13:31:08.420] signal <- FALSE && inherits(cond, character(0)) [13:31:08.420] ...future.conditions[[length(...future.conditions) + [13:31:08.420] 1L]] <<- list(condition = cond, signaled = base::as.integer(signal)) [13:31:08.420] if (FALSE && !signal) { [13:31:08.420] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.420] { [13:31:08.420] inherits <- base::inherits [13:31:08.420] invokeRestart <- base::invokeRestart [13:31:08.420] is.null <- base::is.null [13:31:08.420] muffled <- FALSE [13:31:08.420] if (inherits(cond, "message")) { [13:31:08.420] muffled <- grepl(pattern, "muffleMessage") [13:31:08.420] if (muffled) [13:31:08.420] invokeRestart("muffleMessage") [13:31:08.420] } [13:31:08.420] else if (inherits(cond, "warning")) { [13:31:08.420] muffled <- grepl(pattern, "muffleWarning") [13:31:08.420] if (muffled) [13:31:08.420] invokeRestart("muffleWarning") [13:31:08.420] } [13:31:08.420] else if (inherits(cond, "condition")) { [13:31:08.420] if (!is.null(pattern)) { [13:31:08.420] computeRestarts <- base::computeRestarts [13:31:08.420] grepl <- base::grepl [13:31:08.420] restarts <- computeRestarts(cond) [13:31:08.420] for (restart in restarts) { [13:31:08.420] name <- restart$name [13:31:08.420] if (is.null(name)) [13:31:08.420] next [13:31:08.420] if (!grepl(pattern, name)) [13:31:08.420] next [13:31:08.420] invokeRestart(restart) [13:31:08.420] muffled <- TRUE [13:31:08.420] break [13:31:08.420] } [13:31:08.420] } [13:31:08.420] } [13:31:08.420] invisible(muffled) [13:31:08.420] } [13:31:08.420] muffleCondition(cond, pattern = "^muffle") [13:31:08.420] } [13:31:08.420] } [13:31:08.420] else { [13:31:08.420] if (TRUE) { [13:31:08.420] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.420] { [13:31:08.420] inherits <- base::inherits [13:31:08.420] invokeRestart <- base::invokeRestart [13:31:08.420] is.null <- base::is.null [13:31:08.420] muffled <- FALSE [13:31:08.420] if (inherits(cond, "message")) { [13:31:08.420] muffled <- grepl(pattern, "muffleMessage") [13:31:08.420] if (muffled) [13:31:08.420] invokeRestart("muffleMessage") [13:31:08.420] } [13:31:08.420] else if (inherits(cond, "warning")) { [13:31:08.420] muffled <- grepl(pattern, "muffleWarning") [13:31:08.420] if (muffled) [13:31:08.420] invokeRestart("muffleWarning") [13:31:08.420] } [13:31:08.420] else if (inherits(cond, "condition")) { [13:31:08.420] if (!is.null(pattern)) { [13:31:08.420] computeRestarts <- base::computeRestarts [13:31:08.420] grepl <- base::grepl [13:31:08.420] restarts <- computeRestarts(cond) [13:31:08.420] for (restart in restarts) { [13:31:08.420] name <- restart$name [13:31:08.420] if (is.null(name)) [13:31:08.420] next [13:31:08.420] if (!grepl(pattern, name)) [13:31:08.420] next [13:31:08.420] invokeRestart(restart) [13:31:08.420] muffled <- TRUE [13:31:08.420] break [13:31:08.420] } [13:31:08.420] } [13:31:08.420] } [13:31:08.420] invisible(muffled) [13:31:08.420] } [13:31:08.420] muffleCondition(cond, pattern = "^muffle") [13:31:08.420] } [13:31:08.420] } [13:31:08.420] } [13:31:08.420] })) [13:31:08.420] }, error = function(ex) { [13:31:08.420] base::structure(base::list(value = NULL, visible = NULL, [13:31:08.420] conditions = ...future.conditions, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.420] ...future.rng), started = ...future.startTime, [13:31:08.420] finished = Sys.time(), session_uuid = NA_character_, [13:31:08.420] version = "1.8"), class = "FutureResult") [13:31:08.420] }, finally = { [13:31:08.420] if (!identical(...future.workdir, getwd())) [13:31:08.420] setwd(...future.workdir) [13:31:08.420] { [13:31:08.420] if (identical(getOption("nwarnings"), ...future.oldOptions$nwarnings)) { [13:31:08.420] ...future.oldOptions$nwarnings <- NULL [13:31:08.420] } [13:31:08.420] base::options(...future.oldOptions) [13:31:08.420] if (.Platform$OS.type == "windows") { [13:31:08.420] old_names <- names(...future.oldEnvVars) [13:31:08.420] envs <- base::Sys.getenv() [13:31:08.420] names <- names(envs) [13:31:08.420] common <- intersect(names, old_names) [13:31:08.420] added <- setdiff(names, old_names) [13:31:08.420] removed <- setdiff(old_names, names) [13:31:08.420] changed <- common[...future.oldEnvVars[common] != [13:31:08.420] envs[common]] [13:31:08.420] NAMES <- toupper(changed) [13:31:08.420] args <- list() [13:31:08.420] for (kk in seq_along(NAMES)) { [13:31:08.420] name <- changed[[kk]] [13:31:08.420] NAME <- NAMES[[kk]] [13:31:08.420] if (name != NAME && is.element(NAME, old_names)) [13:31:08.420] next [13:31:08.420] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.420] } [13:31:08.420] NAMES <- toupper(added) [13:31:08.420] for (kk in seq_along(NAMES)) { [13:31:08.420] name <- added[[kk]] [13:31:08.420] NAME <- NAMES[[kk]] [13:31:08.420] if (name != NAME && is.element(NAME, old_names)) [13:31:08.420] next [13:31:08.420] args[[name]] <- "" [13:31:08.420] } [13:31:08.420] NAMES <- toupper(removed) [13:31:08.420] for (kk in seq_along(NAMES)) { [13:31:08.420] name <- removed[[kk]] [13:31:08.420] NAME <- NAMES[[kk]] [13:31:08.420] if (name != NAME && is.element(NAME, old_names)) [13:31:08.420] next [13:31:08.420] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.420] } [13:31:08.420] if (length(args) > 0) [13:31:08.420] base::do.call(base::Sys.setenv, args = args) [13:31:08.420] args <- names <- old_names <- NAMES <- envs <- common <- added <- removed <- NULL [13:31:08.420] } [13:31:08.420] else { [13:31:08.420] base::do.call(base::Sys.setenv, args = base::as.list(...future.oldEnvVars)) [13:31:08.420] } [13:31:08.420] { [13:31:08.420] if (base::length(...future.futureOptionsAdded) > [13:31:08.420] 0L) { [13:31:08.420] opts <- base::vector("list", length = base::length(...future.futureOptionsAdded)) [13:31:08.420] base::names(opts) <- ...future.futureOptionsAdded [13:31:08.420] base::options(opts) [13:31:08.420] } [13:31:08.420] { [13:31:08.420] NULL [13:31:08.420] options(future.plan = NULL) [13:31:08.420] if (is.na(NA_character_)) [13:31:08.420] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.420] else Sys.setenv(R_FUTURE_PLAN = NA_character_) [13:31:08.420] future::plan(...future.strategy.old, .cleanup = FALSE, [13:31:08.420] .init = FALSE) [13:31:08.420] } [13:31:08.420] } [13:31:08.420] } [13:31:08.420] }) [13:31:08.420] if (TRUE) { [13:31:08.420] base::sink(type = "output", split = FALSE) [13:31:08.420] if (TRUE) { [13:31:08.420] ...future.result$stdout <- base::rawToChar(base::rawConnectionValue(...future.stdout)) [13:31:08.420] } [13:31:08.420] else { [13:31:08.420] ...future.result["stdout"] <- base::list(NULL) [13:31:08.420] } [13:31:08.420] base::close(...future.stdout) [13:31:08.420] ...future.stdout <- NULL [13:31:08.420] } [13:31:08.420] ...future.result$conditions <- ...future.conditions [13:31:08.420] ...future.result$finished <- base::Sys.time() [13:31:08.420] ...future.result [13:31:08.420] } [13:31:08.424] - Launch lazy future ... done [13:31:08.424] run() for 'MiraiFuture' ... done > rm(list = "x") > print(y) $a [1] 1 > stopifnot(identical(y, y0)) > > ## Explicit future > x <- list() > f <- future({ + x["a"] <- list(1) + x + }) Warning in getGlobalsAndPackages(expr, envir = envir, tweak = tweakExpression, : R option 'future.globals.resolve' may only be used for troubleshooting. It must not be used in production since it changes how futures are evaluated and there is a great risk that the results cannot be reproduced elsewhere: 'TRUE' [13:31:08.427] getGlobalsAndPackages() ... Warning in getGlobalsAndPackages(expr, envir = envir, tweak = tweakExpression, : R option 'future.globals.onMissing' may only be used for troubleshooting. It must not be used in production since it changes how futures are evaluated and there is a great risk that the results cannot be reproduced elsewhere: 'error' [13:31:08.427] Searching for globals... [13:31:08.431] - globals found: [6] '{', 'x', '<-', '[', '[<-', 'list' [13:31:08.431] Searching for globals ... DONE [13:31:08.431] Resolving globals: TRUE [13:31:08.431] Resolving any globals that are futures ... [13:31:08.431] - globals: [6] '{', 'x', '<-', '[', '[<-', 'list' [13:31:08.431] Resolving any globals that are futures ... DONE [13:31:08.432] Resolving futures part of globals (recursively) ... [13:31:08.432] resolve() on list ... [13:31:08.432] recursive: 99 [13:31:08.433] length: 1 [13:31:08.433] elements: 'x' [13:31:08.433] length: 0 (resolved future 1) [13:31:08.433] resolve() on list ... DONE [13:31:08.433] - globals: [1] 'x' [13:31:08.433] Resolving futures part of globals (recursively) ... DONE [13:31:08.434] The total size of the 1 globals is 0 bytes (0 bytes) [13:31:08.434] The total size of the 1 globals exported for future expression ('{; x["a"] <- list(1); x; }') is 0 bytes.. This exceeds the maximum allowed size of 500.00 MiB (option 'future.globals.maxSize'). There is one global: 'x' (0 bytes of class 'list') [13:31:08.434] - globals: [1] 'x' [13:31:08.434] [13:31:08.435] getGlobalsAndPackages() ... DONE [13:31:08.435] run() for 'Future' ... [13:31:08.435] - state: 'created' [13:31:08.435] - Future backend: 'FutureStrategy', 'mirai_multisession', 'mirai_cluster', 'mirai', 'multiprocess', 'future', 'function' [13:31:08.437] - Future class: 'MiraiFuture', 'MultiprocessFuture', 'Future', 'environment' [13:31:08.438] - Copy elements of temporary 'MiraiFuture' to final 'Future' object ... [13:31:08.438] - Field: 'label' [13:31:08.438] - Field: 'local' [13:31:08.438] - Field: 'owner' [13:31:08.438] - Field: 'envir' [13:31:08.439] - Field: 'packages' [13:31:08.439] - Field: 'gc' [13:31:08.439] - Field: 'conditions' [13:31:08.439] - Field: 'expr' [13:31:08.439] - Field: 'uuid' [13:31:08.439] - Field: 'seed' [13:31:08.440] - Field: 'version' [13:31:08.440] - Field: 'result' [13:31:08.440] - Field: 'asynchronous' [13:31:08.440] - Field: 'calls' [13:31:08.440] - Field: 'globals' [13:31:08.440] - Field: 'stdout' [13:31:08.441] - Field: 'earlySignal' [13:31:08.441] - Field: 'lazy' [13:31:08.441] - Field: 'state' [13:31:08.441] - Field: '.cluster' [13:31:08.441] - Copy elements of temporary 'MiraiFuture' to final 'Future' object ... done [13:31:08.441] - Launch lazy future ... [13:31:08.442] Packages needed by the future expression (n = 0): [13:31:08.442] Packages needed by future strategies (n = 0): [13:31:08.442] { [13:31:08.442] { [13:31:08.442] { [13:31:08.442] ...future.startTime <- base::Sys.time() [13:31:08.442] { [13:31:08.442] { [13:31:08.442] { [13:31:08.442] base::local({ [13:31:08.442] has_future <- base::requireNamespace("future", [13:31:08.442] quietly = TRUE) [13:31:08.442] if (has_future) { [13:31:08.442] ns <- base::getNamespace("future") [13:31:08.442] version <- ns[[".package"]][["version"]] [13:31:08.442] if (is.null(version)) [13:31:08.442] version <- utils::packageVersion("future") [13:31:08.442] } [13:31:08.442] else { [13:31:08.442] version <- NULL [13:31:08.442] } [13:31:08.442] if (!has_future || version < "1.8.0") { [13:31:08.442] info <- base::c(r_version = base::gsub("R version ", [13:31:08.442] "", base::R.version$version.string), [13:31:08.442] platform = base::sprintf("%s (%s-bit)", [13:31:08.442] base::R.version$platform, 8 * base::.Machine$sizeof.pointer), [13:31:08.442] os = base::paste(base::Sys.info()[base::c("sysname", [13:31:08.442] "release", "version")], collapse = " "), [13:31:08.442] hostname = base::Sys.info()[["nodename"]]) [13:31:08.442] info <- base::sprintf("%s: %s", base::names(info), [13:31:08.442] info) [13:31:08.442] info <- base::paste(info, collapse = "; ") [13:31:08.442] if (!has_future) { [13:31:08.442] msg <- base::sprintf("Package 'future' is not installed on worker (%s)", [13:31:08.442] info) [13:31:08.442] } [13:31:08.442] else { [13:31:08.442] msg <- base::sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", [13:31:08.442] info, version) [13:31:08.442] } [13:31:08.442] base::stop(msg) [13:31:08.442] } [13:31:08.442] }) [13:31:08.442] } [13:31:08.442] ...future.strategy.old <- future::plan("list") [13:31:08.442] options(future.plan = NULL) [13:31:08.442] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.442] future::plan("default", .cleanup = FALSE, .init = FALSE) [13:31:08.442] } [13:31:08.442] ...future.workdir <- getwd() [13:31:08.442] } [13:31:08.442] ...future.oldOptions <- base::as.list(base::.Options) [13:31:08.442] ...future.oldEnvVars <- base::Sys.getenv() [13:31:08.442] } [13:31:08.442] base::options(future.startup.script = FALSE, future.globals.onMissing = "error", [13:31:08.442] future.globals.maxSize = NULL, future.globals.method = NULL, [13:31:08.442] future.globals.onMissing = "error", future.globals.onReference = NULL, [13:31:08.442] future.globals.resolve = TRUE, future.resolve.recursive = NULL, [13:31:08.442] future.rng.onMisuse = NULL, future.rng.onMisuse.keepFuture = NULL, [13:31:08.442] future.stdout.windows.reencode = NULL, width = 80L) [13:31:08.442] ...future.futureOptionsAdded <- base::setdiff(base::names(base::.Options), [13:31:08.442] base::names(...future.oldOptions)) [13:31:08.442] } [13:31:08.442] if (FALSE) { [13:31:08.442] } [13:31:08.442] else { [13:31:08.442] if (TRUE) { [13:31:08.442] ...future.stdout <- base::rawConnection(base::raw(0L), [13:31:08.442] open = "w") [13:31:08.442] } [13:31:08.442] else { [13:31:08.442] ...future.stdout <- base::file(base::switch(.Platform$OS.type, [13:31:08.442] windows = "NUL", "/dev/null"), open = "w") [13:31:08.442] } [13:31:08.442] base::sink(...future.stdout, type = "output", split = FALSE) [13:31:08.442] base::on.exit(if (!base::is.null(...future.stdout)) { [13:31:08.442] base::sink(type = "output", split = FALSE) [13:31:08.442] base::close(...future.stdout) [13:31:08.442] }, add = TRUE) [13:31:08.442] } [13:31:08.442] ...future.frame <- base::sys.nframe() [13:31:08.442] ...future.conditions <- base::list() [13:31:08.442] ...future.rng <- base::globalenv()$.Random.seed [13:31:08.442] if (FALSE) { [13:31:08.442] ...future.globalenv.names <- c(base::names(base::.GlobalEnv), [13:31:08.442] "...future.value", "...future.globalenv.names", ".Random.seed") [13:31:08.442] } [13:31:08.442] ...future.result <- base::tryCatch({ [13:31:08.442] base::withCallingHandlers({ [13:31:08.442] ...future.value <- base::withVisible(base::local({ [13:31:08.442] x["a"] <- list(1) [13:31:08.442] x [13:31:08.442] })) [13:31:08.442] future::FutureResult(value = ...future.value$value, [13:31:08.442] visible = ...future.value$visible, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.442] ...future.rng), globalenv = if (FALSE) [13:31:08.442] list(added = base::setdiff(base::names(base::.GlobalEnv), [13:31:08.442] ...future.globalenv.names)) [13:31:08.442] else NULL, started = ...future.startTime, version = "1.8") [13:31:08.442] }, condition = base::local({ [13:31:08.442] c <- base::c [13:31:08.442] inherits <- base::inherits [13:31:08.442] invokeRestart <- base::invokeRestart [13:31:08.442] length <- base::length [13:31:08.442] list <- base::list [13:31:08.442] seq.int <- base::seq.int [13:31:08.442] signalCondition <- base::signalCondition [13:31:08.442] sys.calls <- base::sys.calls [13:31:08.442] `[[` <- base::`[[` [13:31:08.442] `+` <- base::`+` [13:31:08.442] `<<-` <- base::`<<-` [13:31:08.442] sysCalls <- function(calls = sys.calls(), from = 1L) { [13:31:08.442] calls[seq.int(from = from + 12L, to = length(calls) - [13:31:08.442] 3L)] [13:31:08.442] } [13:31:08.442] function(cond) { [13:31:08.442] is_error <- inherits(cond, "error") [13:31:08.442] ignore <- !is_error && !is.null(NULL) && inherits(cond, [13:31:08.442] NULL) [13:31:08.442] if (is_error) { [13:31:08.442] sessionInformation <- function() { [13:31:08.442] list(r = base::R.Version(), locale = base::Sys.getlocale(), [13:31:08.442] rngkind = base::RNGkind(), namespaces = base::loadedNamespaces(), [13:31:08.442] search = base::search(), system = base::Sys.info()) [13:31:08.442] } [13:31:08.442] ...future.conditions[[length(...future.conditions) + [13:31:08.442] 1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), [13:31:08.442] cond$call), session = sessionInformation(), [13:31:08.442] timestamp = base::Sys.time(), signaled = 0L) [13:31:08.442] signalCondition(cond) [13:31:08.442] } [13:31:08.442] else if (!ignore && TRUE && inherits(cond, "condition")) { [13:31:08.442] signal <- FALSE && inherits(cond, character(0)) [13:31:08.442] ...future.conditions[[length(...future.conditions) + [13:31:08.442] 1L]] <<- list(condition = cond, signaled = base::as.integer(signal)) [13:31:08.442] if (FALSE && !signal) { [13:31:08.442] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.442] { [13:31:08.442] inherits <- base::inherits [13:31:08.442] invokeRestart <- base::invokeRestart [13:31:08.442] is.null <- base::is.null [13:31:08.442] muffled <- FALSE [13:31:08.442] if (inherits(cond, "message")) { [13:31:08.442] muffled <- grepl(pattern, "muffleMessage") [13:31:08.442] if (muffled) [13:31:08.442] invokeRestart("muffleMessage") [13:31:08.442] } [13:31:08.442] else if (inherits(cond, "warning")) { [13:31:08.442] muffled <- grepl(pattern, "muffleWarning") [13:31:08.442] if (muffled) [13:31:08.442] invokeRestart("muffleWarning") [13:31:08.442] } [13:31:08.442] else if (inherits(cond, "condition")) { [13:31:08.442] if (!is.null(pattern)) { [13:31:08.442] computeRestarts <- base::computeRestarts [13:31:08.442] grepl <- base::grepl [13:31:08.442] restarts <- computeRestarts(cond) [13:31:08.442] for (restart in restarts) { [13:31:08.442] name <- restart$name [13:31:08.442] if (is.null(name)) [13:31:08.442] next [13:31:08.442] if (!grepl(pattern, name)) [13:31:08.442] next [13:31:08.442] invokeRestart(restart) [13:31:08.442] muffled <- TRUE [13:31:08.442] break [13:31:08.442] } [13:31:08.442] } [13:31:08.442] } [13:31:08.442] invisible(muffled) [13:31:08.442] } [13:31:08.442] muffleCondition(cond, pattern = "^muffle") [13:31:08.442] } [13:31:08.442] } [13:31:08.442] else { [13:31:08.442] if (TRUE) { [13:31:08.442] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.442] { [13:31:08.442] inherits <- base::inherits [13:31:08.442] invokeRestart <- base::invokeRestart [13:31:08.442] is.null <- base::is.null [13:31:08.442] muffled <- FALSE [13:31:08.442] if (inherits(cond, "message")) { [13:31:08.442] muffled <- grepl(pattern, "muffleMessage") [13:31:08.442] if (muffled) [13:31:08.442] invokeRestart("muffleMessage") [13:31:08.442] } [13:31:08.442] else if (inherits(cond, "warning")) { [13:31:08.442] muffled <- grepl(pattern, "muffleWarning") [13:31:08.442] if (muffled) [13:31:08.442] invokeRestart("muffleWarning") [13:31:08.442] } [13:31:08.442] else if (inherits(cond, "condition")) { [13:31:08.442] if (!is.null(pattern)) { [13:31:08.442] computeRestarts <- base::computeRestarts [13:31:08.442] grepl <- base::grepl [13:31:08.442] restarts <- computeRestarts(cond) [13:31:08.442] for (restart in restarts) { [13:31:08.442] name <- restart$name [13:31:08.442] if (is.null(name)) [13:31:08.442] next [13:31:08.442] if (!grepl(pattern, name)) [13:31:08.442] next [13:31:08.442] invokeRestart(restart) [13:31:08.442] muffled <- TRUE [13:31:08.442] break [13:31:08.442] } [13:31:08.442] } [13:31:08.442] } [13:31:08.442] invisible(muffled) [13:31:08.442] } [13:31:08.442] muffleCondition(cond, pattern = "^muffle") [13:31:08.442] } [13:31:08.442] } [13:31:08.442] } [13:31:08.442] })) [13:31:08.442] }, error = function(ex) { [13:31:08.442] base::structure(base::list(value = NULL, visible = NULL, [13:31:08.442] conditions = ...future.conditions, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.442] ...future.rng), started = ...future.startTime, [13:31:08.442] finished = Sys.time(), session_uuid = NA_character_, [13:31:08.442] version = "1.8"), class = "FutureResult") [13:31:08.442] }, finally = { [13:31:08.442] if (!identical(...future.workdir, getwd())) [13:31:08.442] setwd(...future.workdir) [13:31:08.442] { [13:31:08.442] if (identical(getOption("nwarnings"), ...future.oldOptions$nwarnings)) { [13:31:08.442] ...future.oldOptions$nwarnings <- NULL [13:31:08.442] } [13:31:08.442] base::options(...future.oldOptions) [13:31:08.442] if (.Platform$OS.type == "windows") { [13:31:08.442] old_names <- names(...future.oldEnvVars) [13:31:08.442] envs <- base::Sys.getenv() [13:31:08.442] names <- names(envs) [13:31:08.442] common <- intersect(names, old_names) [13:31:08.442] added <- setdiff(names, old_names) [13:31:08.442] removed <- setdiff(old_names, names) [13:31:08.442] changed <- common[...future.oldEnvVars[common] != [13:31:08.442] envs[common]] [13:31:08.442] NAMES <- toupper(changed) [13:31:08.442] args <- list() [13:31:08.442] for (kk in seq_along(NAMES)) { [13:31:08.442] name <- changed[[kk]] [13:31:08.442] NAME <- NAMES[[kk]] [13:31:08.442] if (name != NAME && is.element(NAME, old_names)) [13:31:08.442] next [13:31:08.442] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.442] } [13:31:08.442] NAMES <- toupper(added) [13:31:08.442] for (kk in seq_along(NAMES)) { [13:31:08.442] name <- added[[kk]] [13:31:08.442] NAME <- NAMES[[kk]] [13:31:08.442] if (name != NAME && is.element(NAME, old_names)) [13:31:08.442] next [13:31:08.442] args[[name]] <- "" [13:31:08.442] } [13:31:08.442] NAMES <- toupper(removed) [13:31:08.442] for (kk in seq_along(NAMES)) { [13:31:08.442] name <- removed[[kk]] [13:31:08.442] NAME <- NAMES[[kk]] [13:31:08.442] if (name != NAME && is.element(NAME, old_names)) [13:31:08.442] next [13:31:08.442] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.442] } [13:31:08.442] if (length(args) > 0) [13:31:08.442] base::do.call(base::Sys.setenv, args = args) [13:31:08.442] args <- names <- old_names <- NAMES <- envs <- common <- added <- removed <- NULL [13:31:08.442] } [13:31:08.442] else { [13:31:08.442] base::do.call(base::Sys.setenv, args = base::as.list(...future.oldEnvVars)) [13:31:08.442] } [13:31:08.442] { [13:31:08.442] if (base::length(...future.futureOptionsAdded) > [13:31:08.442] 0L) { [13:31:08.442] opts <- base::vector("list", length = base::length(...future.futureOptionsAdded)) [13:31:08.442] base::names(opts) <- ...future.futureOptionsAdded [13:31:08.442] base::options(opts) [13:31:08.442] } [13:31:08.442] { [13:31:08.442] NULL [13:31:08.442] options(future.plan = NULL) [13:31:08.442] if (is.na(NA_character_)) [13:31:08.442] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.442] else Sys.setenv(R_FUTURE_PLAN = NA_character_) [13:31:08.442] future::plan(...future.strategy.old, .cleanup = FALSE, [13:31:08.442] .init = FALSE) [13:31:08.442] } [13:31:08.442] } [13:31:08.442] } [13:31:08.442] }) [13:31:08.442] if (TRUE) { [13:31:08.442] base::sink(type = "output", split = FALSE) [13:31:08.442] if (TRUE) { [13:31:08.442] ...future.result$stdout <- base::rawToChar(base::rawConnectionValue(...future.stdout)) [13:31:08.442] } [13:31:08.442] else { [13:31:08.442] ...future.result["stdout"] <- base::list(NULL) [13:31:08.442] } [13:31:08.442] base::close(...future.stdout) [13:31:08.442] ...future.stdout <- NULL [13:31:08.442] } [13:31:08.442] ...future.result$conditions <- ...future.conditions [13:31:08.442] ...future.result$finished <- base::Sys.time() [13:31:08.442] ...future.result [13:31:08.442] } [13:31:08.446] - Launch lazy future ... done [13:31:08.446] run() for 'MiraiFuture' ... done > rm(list = "x") > y <- value(f) > print(y) $a [1] 1 > stopifnot(identical(y, y0)) > > ## Future assignment > x <- list() > y %<-% { + x["a"] <- list(1) + x + } Warning in getGlobalsAndPackages(expr, envir = envir, tweak = tweakExpression, : R option 'future.globals.resolve' may only be used for troubleshooting. It must not be used in production since it changes how futures are evaluated and there is a great risk that the results cannot be reproduced elsewhere: 'TRUE' [13:31:08.448] getGlobalsAndPackages() ... Warning in getGlobalsAndPackages(expr, envir = envir, tweak = tweakExpression, : R option 'future.globals.onMissing' may only be used for troubleshooting. It must not be used in production since it changes how futures are evaluated and there is a great risk that the results cannot be reproduced elsewhere: 'error' [13:31:08.449] Searching for globals... [13:31:08.451] - globals found: [6] '{', 'x', '<-', '[', '[<-', 'list' [13:31:08.452] Searching for globals ... DONE [13:31:08.452] Resolving globals: TRUE [13:31:08.452] Resolving any globals that are futures ... [13:31:08.452] - globals: [6] '{', 'x', '<-', '[', '[<-', 'list' [13:31:08.452] Resolving any globals that are futures ... DONE [13:31:08.453] Resolving futures part of globals (recursively) ... [13:31:08.453] resolve() on list ... [13:31:08.453] recursive: 99 [13:31:08.453] length: 1 [13:31:08.453] elements: 'x' [13:31:08.454] length: 0 (resolved future 1) [13:31:08.454] resolve() on list ... DONE [13:31:08.454] - globals: [1] 'x' [13:31:08.454] Resolving futures part of globals (recursively) ... DONE [13:31:08.454] The total size of the 1 globals is 0 bytes (0 bytes) [13:31:08.455] The total size of the 1 globals exported for future expression ('{; x["a"] <- list(1); x; }') is 0 bytes.. This exceeds the maximum allowed size of 500.00 MiB (option 'future.globals.maxSize'). There is one global: 'x' (0 bytes of class 'list') [13:31:08.455] - globals: [1] 'x' [13:31:08.455] [13:31:08.455] getGlobalsAndPackages() ... DONE [13:31:08.455] run() for 'Future' ... [13:31:08.456] - state: 'created' [13:31:08.456] - Future backend: 'FutureStrategy', 'mirai_multisession', 'mirai_cluster', 'mirai', 'multiprocess', 'future', 'function' [13:31:08.458] - Future class: 'MiraiFuture', 'MultiprocessFuture', 'Future', 'environment' [13:31:08.458] - Copy elements of temporary 'MiraiFuture' to final 'Future' object ... [13:31:08.459] - Field: 'label' [13:31:08.459] - Field: 'local' [13:31:08.459] - Field: 'owner' [13:31:08.459] - Field: 'envir' [13:31:08.459] - Field: 'packages' [13:31:08.459] - Field: 'gc' [13:31:08.460] - Field: 'conditions' [13:31:08.460] - Field: 'expr' [13:31:08.460] - Field: 'uuid' [13:31:08.460] - Field: 'seed' [13:31:08.460] - Field: 'version' [13:31:08.460] - Field: 'result' [13:31:08.461] - Field: 'asynchronous' [13:31:08.461] - Field: 'calls' [13:31:08.462] - Field: 'globals' [13:31:08.462] - Field: 'stdout' [13:31:08.462] - Field: 'earlySignal' [13:31:08.463] - Field: 'lazy' [13:31:08.463] - Field: 'state' [13:31:08.463] - Field: '.cluster' [13:31:08.463] - Copy elements of temporary 'MiraiFuture' to final 'Future' object ... done [13:31:08.463] - Launch lazy future ... [13:31:08.463] Packages needed by the future expression (n = 0): [13:31:08.464] Packages needed by future strategies (n = 0): [13:31:08.464] { [13:31:08.464] { [13:31:08.464] { [13:31:08.464] ...future.startTime <- base::Sys.time() [13:31:08.464] { [13:31:08.464] { [13:31:08.464] { [13:31:08.464] base::local({ [13:31:08.464] has_future <- base::requireNamespace("future", [13:31:08.464] quietly = TRUE) [13:31:08.464] if (has_future) { [13:31:08.464] ns <- base::getNamespace("future") [13:31:08.464] version <- ns[[".package"]][["version"]] [13:31:08.464] if (is.null(version)) [13:31:08.464] version <- utils::packageVersion("future") [13:31:08.464] } [13:31:08.464] else { [13:31:08.464] version <- NULL [13:31:08.464] } [13:31:08.464] if (!has_future || version < "1.8.0") { [13:31:08.464] info <- base::c(r_version = base::gsub("R version ", [13:31:08.464] "", base::R.version$version.string), [13:31:08.464] platform = base::sprintf("%s (%s-bit)", [13:31:08.464] base::R.version$platform, 8 * base::.Machine$sizeof.pointer), [13:31:08.464] os = base::paste(base::Sys.info()[base::c("sysname", [13:31:08.464] "release", "version")], collapse = " "), [13:31:08.464] hostname = base::Sys.info()[["nodename"]]) [13:31:08.464] info <- base::sprintf("%s: %s", base::names(info), [13:31:08.464] info) [13:31:08.464] info <- base::paste(info, collapse = "; ") [13:31:08.464] if (!has_future) { [13:31:08.464] msg <- base::sprintf("Package 'future' is not installed on worker (%s)", [13:31:08.464] info) [13:31:08.464] } [13:31:08.464] else { [13:31:08.464] msg <- base::sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", [13:31:08.464] info, version) [13:31:08.464] } [13:31:08.464] base::stop(msg) [13:31:08.464] } [13:31:08.464] }) [13:31:08.464] } [13:31:08.464] ...future.strategy.old <- future::plan("list") [13:31:08.464] options(future.plan = NULL) [13:31:08.464] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.464] future::plan("default", .cleanup = FALSE, .init = FALSE) [13:31:08.464] } [13:31:08.464] ...future.workdir <- getwd() [13:31:08.464] } [13:31:08.464] ...future.oldOptions <- base::as.list(base::.Options) [13:31:08.464] ...future.oldEnvVars <- base::Sys.getenv() [13:31:08.464] } [13:31:08.464] base::options(future.startup.script = FALSE, future.globals.onMissing = "error", [13:31:08.464] future.globals.maxSize = NULL, future.globals.method = NULL, [13:31:08.464] future.globals.onMissing = "error", future.globals.onReference = NULL, [13:31:08.464] future.globals.resolve = TRUE, future.resolve.recursive = NULL, [13:31:08.464] future.rng.onMisuse = NULL, future.rng.onMisuse.keepFuture = NULL, [13:31:08.464] future.stdout.windows.reencode = NULL, width = 80L) [13:31:08.464] ...future.futureOptionsAdded <- base::setdiff(base::names(base::.Options), [13:31:08.464] base::names(...future.oldOptions)) [13:31:08.464] } [13:31:08.464] if (FALSE) { [13:31:08.464] } [13:31:08.464] else { [13:31:08.464] if (TRUE) { [13:31:08.464] ...future.stdout <- base::rawConnection(base::raw(0L), [13:31:08.464] open = "w") [13:31:08.464] } [13:31:08.464] else { [13:31:08.464] ...future.stdout <- base::file(base::switch(.Platform$OS.type, [13:31:08.464] windows = "NUL", "/dev/null"), open = "w") [13:31:08.464] } [13:31:08.464] base::sink(...future.stdout, type = "output", split = FALSE) [13:31:08.464] base::on.exit(if (!base::is.null(...future.stdout)) { [13:31:08.464] base::sink(type = "output", split = FALSE) [13:31:08.464] base::close(...future.stdout) [13:31:08.464] }, add = TRUE) [13:31:08.464] } [13:31:08.464] ...future.frame <- base::sys.nframe() [13:31:08.464] ...future.conditions <- base::list() [13:31:08.464] ...future.rng <- base::globalenv()$.Random.seed [13:31:08.464] if (FALSE) { [13:31:08.464] ...future.globalenv.names <- c(base::names(base::.GlobalEnv), [13:31:08.464] "...future.value", "...future.globalenv.names", ".Random.seed") [13:31:08.464] } [13:31:08.464] ...future.result <- base::tryCatch({ [13:31:08.464] base::withCallingHandlers({ [13:31:08.464] ...future.value <- base::withVisible(base::local({ [13:31:08.464] x["a"] <- list(1) [13:31:08.464] x [13:31:08.464] })) [13:31:08.464] future::FutureResult(value = ...future.value$value, [13:31:08.464] visible = ...future.value$visible, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.464] ...future.rng), globalenv = if (FALSE) [13:31:08.464] list(added = base::setdiff(base::names(base::.GlobalEnv), [13:31:08.464] ...future.globalenv.names)) [13:31:08.464] else NULL, started = ...future.startTime, version = "1.8") [13:31:08.464] }, condition = base::local({ [13:31:08.464] c <- base::c [13:31:08.464] inherits <- base::inherits [13:31:08.464] invokeRestart <- base::invokeRestart [13:31:08.464] length <- base::length [13:31:08.464] list <- base::list [13:31:08.464] seq.int <- base::seq.int [13:31:08.464] signalCondition <- base::signalCondition [13:31:08.464] sys.calls <- base::sys.calls [13:31:08.464] `[[` <- base::`[[` [13:31:08.464] `+` <- base::`+` [13:31:08.464] `<<-` <- base::`<<-` [13:31:08.464] sysCalls <- function(calls = sys.calls(), from = 1L) { [13:31:08.464] calls[seq.int(from = from + 12L, to = length(calls) - [13:31:08.464] 3L)] [13:31:08.464] } [13:31:08.464] function(cond) { [13:31:08.464] is_error <- inherits(cond, "error") [13:31:08.464] ignore <- !is_error && !is.null(NULL) && inherits(cond, [13:31:08.464] NULL) [13:31:08.464] if (is_error) { [13:31:08.464] sessionInformation <- function() { [13:31:08.464] list(r = base::R.Version(), locale = base::Sys.getlocale(), [13:31:08.464] rngkind = base::RNGkind(), namespaces = base::loadedNamespaces(), [13:31:08.464] search = base::search(), system = base::Sys.info()) [13:31:08.464] } [13:31:08.464] ...future.conditions[[length(...future.conditions) + [13:31:08.464] 1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), [13:31:08.464] cond$call), session = sessionInformation(), [13:31:08.464] timestamp = base::Sys.time(), signaled = 0L) [13:31:08.464] signalCondition(cond) [13:31:08.464] } [13:31:08.464] else if (!ignore && TRUE && inherits(cond, "condition")) { [13:31:08.464] signal <- FALSE && inherits(cond, character(0)) [13:31:08.464] ...future.conditions[[length(...future.conditions) + [13:31:08.464] 1L]] <<- list(condition = cond, signaled = base::as.integer(signal)) [13:31:08.464] if (FALSE && !signal) { [13:31:08.464] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.464] { [13:31:08.464] inherits <- base::inherits [13:31:08.464] invokeRestart <- base::invokeRestart [13:31:08.464] is.null <- base::is.null [13:31:08.464] muffled <- FALSE [13:31:08.464] if (inherits(cond, "message")) { [13:31:08.464] muffled <- grepl(pattern, "muffleMessage") [13:31:08.464] if (muffled) [13:31:08.464] invokeRestart("muffleMessage") [13:31:08.464] } [13:31:08.464] else if (inherits(cond, "warning")) { [13:31:08.464] muffled <- grepl(pattern, "muffleWarning") [13:31:08.464] if (muffled) [13:31:08.464] invokeRestart("muffleWarning") [13:31:08.464] } [13:31:08.464] else if (inherits(cond, "condition")) { [13:31:08.464] if (!is.null(pattern)) { [13:31:08.464] computeRestarts <- base::computeRestarts [13:31:08.464] grepl <- base::grepl [13:31:08.464] restarts <- computeRestarts(cond) [13:31:08.464] for (restart in restarts) { [13:31:08.464] name <- restart$name [13:31:08.464] if (is.null(name)) [13:31:08.464] next [13:31:08.464] if (!grepl(pattern, name)) [13:31:08.464] next [13:31:08.464] invokeRestart(restart) [13:31:08.464] muffled <- TRUE [13:31:08.464] break [13:31:08.464] } [13:31:08.464] } [13:31:08.464] } [13:31:08.464] invisible(muffled) [13:31:08.464] } [13:31:08.464] muffleCondition(cond, pattern = "^muffle") [13:31:08.464] } [13:31:08.464] } [13:31:08.464] else { [13:31:08.464] if (TRUE) { [13:31:08.464] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.464] { [13:31:08.464] inherits <- base::inherits [13:31:08.464] invokeRestart <- base::invokeRestart [13:31:08.464] is.null <- base::is.null [13:31:08.464] muffled <- FALSE [13:31:08.464] if (inherits(cond, "message")) { [13:31:08.464] muffled <- grepl(pattern, "muffleMessage") [13:31:08.464] if (muffled) [13:31:08.464] invokeRestart("muffleMessage") [13:31:08.464] } [13:31:08.464] else if (inherits(cond, "warning")) { [13:31:08.464] muffled <- grepl(pattern, "muffleWarning") [13:31:08.464] if (muffled) [13:31:08.464] invokeRestart("muffleWarning") [13:31:08.464] } [13:31:08.464] else if (inherits(cond, "condition")) { [13:31:08.464] if (!is.null(pattern)) { [13:31:08.464] computeRestarts <- base::computeRestarts [13:31:08.464] grepl <- base::grepl [13:31:08.464] restarts <- computeRestarts(cond) [13:31:08.464] for (restart in restarts) { [13:31:08.464] name <- restart$name [13:31:08.464] if (is.null(name)) [13:31:08.464] next [13:31:08.464] if (!grepl(pattern, name)) [13:31:08.464] next [13:31:08.464] invokeRestart(restart) [13:31:08.464] muffled <- TRUE [13:31:08.464] break [13:31:08.464] } [13:31:08.464] } [13:31:08.464] } [13:31:08.464] invisible(muffled) [13:31:08.464] } [13:31:08.464] muffleCondition(cond, pattern = "^muffle") [13:31:08.464] } [13:31:08.464] } [13:31:08.464] } [13:31:08.464] })) [13:31:08.464] }, error = function(ex) { [13:31:08.464] base::structure(base::list(value = NULL, visible = NULL, [13:31:08.464] conditions = ...future.conditions, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.464] ...future.rng), started = ...future.startTime, [13:31:08.464] finished = Sys.time(), session_uuid = NA_character_, [13:31:08.464] version = "1.8"), class = "FutureResult") [13:31:08.464] }, finally = { [13:31:08.464] if (!identical(...future.workdir, getwd())) [13:31:08.464] setwd(...future.workdir) [13:31:08.464] { [13:31:08.464] if (identical(getOption("nwarnings"), ...future.oldOptions$nwarnings)) { [13:31:08.464] ...future.oldOptions$nwarnings <- NULL [13:31:08.464] } [13:31:08.464] base::options(...future.oldOptions) [13:31:08.464] if (.Platform$OS.type == "windows") { [13:31:08.464] old_names <- names(...future.oldEnvVars) [13:31:08.464] envs <- base::Sys.getenv() [13:31:08.464] names <- names(envs) [13:31:08.464] common <- intersect(names, old_names) [13:31:08.464] added <- setdiff(names, old_names) [13:31:08.464] removed <- setdiff(old_names, names) [13:31:08.464] changed <- common[...future.oldEnvVars[common] != [13:31:08.464] envs[common]] [13:31:08.464] NAMES <- toupper(changed) [13:31:08.464] args <- list() [13:31:08.464] for (kk in seq_along(NAMES)) { [13:31:08.464] name <- changed[[kk]] [13:31:08.464] NAME <- NAMES[[kk]] [13:31:08.464] if (name != NAME && is.element(NAME, old_names)) [13:31:08.464] next [13:31:08.464] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.464] } [13:31:08.464] NAMES <- toupper(added) [13:31:08.464] for (kk in seq_along(NAMES)) { [13:31:08.464] name <- added[[kk]] [13:31:08.464] NAME <- NAMES[[kk]] [13:31:08.464] if (name != NAME && is.element(NAME, old_names)) [13:31:08.464] next [13:31:08.464] args[[name]] <- "" [13:31:08.464] } [13:31:08.464] NAMES <- toupper(removed) [13:31:08.464] for (kk in seq_along(NAMES)) { [13:31:08.464] name <- removed[[kk]] [13:31:08.464] NAME <- NAMES[[kk]] [13:31:08.464] if (name != NAME && is.element(NAME, old_names)) [13:31:08.464] next [13:31:08.464] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.464] } [13:31:08.464] if (length(args) > 0) [13:31:08.464] base::do.call(base::Sys.setenv, args = args) [13:31:08.464] args <- names <- old_names <- NAMES <- envs <- common <- added <- removed <- NULL [13:31:08.464] } [13:31:08.464] else { [13:31:08.464] base::do.call(base::Sys.setenv, args = base::as.list(...future.oldEnvVars)) [13:31:08.464] } [13:31:08.464] { [13:31:08.464] if (base::length(...future.futureOptionsAdded) > [13:31:08.464] 0L) { [13:31:08.464] opts <- base::vector("list", length = base::length(...future.futureOptionsAdded)) [13:31:08.464] base::names(opts) <- ...future.futureOptionsAdded [13:31:08.464] base::options(opts) [13:31:08.464] } [13:31:08.464] { [13:31:08.464] NULL [13:31:08.464] options(future.plan = NULL) [13:31:08.464] if (is.na(NA_character_)) [13:31:08.464] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.464] else Sys.setenv(R_FUTURE_PLAN = NA_character_) [13:31:08.464] future::plan(...future.strategy.old, .cleanup = FALSE, [13:31:08.464] .init = FALSE) [13:31:08.464] } [13:31:08.464] } [13:31:08.464] } [13:31:08.464] }) [13:31:08.464] if (TRUE) { [13:31:08.464] base::sink(type = "output", split = FALSE) [13:31:08.464] if (TRUE) { [13:31:08.464] ...future.result$stdout <- base::rawToChar(base::rawConnectionValue(...future.stdout)) [13:31:08.464] } [13:31:08.464] else { [13:31:08.464] ...future.result["stdout"] <- base::list(NULL) [13:31:08.464] } [13:31:08.464] base::close(...future.stdout) [13:31:08.464] ...future.stdout <- NULL [13:31:08.464] } [13:31:08.464] ...future.result$conditions <- ...future.conditions [13:31:08.464] ...future.result$finished <- base::Sys.time() [13:31:08.464] ...future.result [13:31:08.464] } [13:31:08.468] - Launch lazy future ... done [13:31:08.468] run() for 'MiraiFuture' ... done > rm(list = "x") > print(y) $a [1] 1 > stopifnot(identical(y, y0)) > > ## Future assignment > x <- list() > name <- "a" > y %<-% { + x[name] <- list(1) + x + } Warning in getGlobalsAndPackages(expr, envir = envir, tweak = tweakExpression, : R option 'future.globals.resolve' may only be used for troubleshooting. It must not be used in production since it changes how futures are evaluated and there is a great risk that the results cannot be reproduced elsewhere: 'TRUE' [13:31:08.470] getGlobalsAndPackages() ... Warning in getGlobalsAndPackages(expr, envir = envir, tweak = tweakExpression, : R option 'future.globals.onMissing' may only be used for troubleshooting. It must not be used in production since it changes how futures are evaluated and there is a great risk that the results cannot be reproduced elsewhere: 'error' [13:31:08.471] Searching for globals... [13:31:08.473] - globals found: [7] '{', 'x', '<-', '[', 'name', '[<-', 'list' [13:31:08.474] Searching for globals ... DONE [13:31:08.474] Resolving globals: TRUE [13:31:08.474] Resolving any globals that are futures ... [13:31:08.474] - globals: [7] '{', 'x', '<-', '[', 'name', '[<-', 'list' [13:31:08.474] Resolving any globals that are futures ... DONE [13:31:08.475] Resolving futures part of globals (recursively) ... [13:31:08.475] resolve() on list ... [13:31:08.475] recursive: 99 [13:31:08.475] length: 2 [13:31:08.476] elements: 'x', 'name' [13:31:08.476] length: 1 (resolved future 1) [13:31:08.476] length: 0 (resolved future 2) [13:31:08.476] resolve() on list ... DONE [13:31:08.476] - globals: [2] 'x', 'name' [13:31:08.476] Resolving futures part of globals (recursively) ... DONE [13:31:08.477] The total size of the 2 globals is 112 bytes (112 bytes) [13:31:08.477] The total size of the 2 globals exported for future expression ('{; x[name] <- list(1); x; }') is 112 bytes.. This exceeds the maximum allowed size of 500.00 MiB (option 'future.globals.maxSize'). There are two globals: 'name' (112 bytes of class 'character') and 'x' (0 bytes of class 'list') [13:31:08.477] - globals: [2] 'x', 'name' [13:31:08.478] [13:31:08.478] getGlobalsAndPackages() ... DONE [13:31:08.478] run() for 'Future' ... [13:31:08.478] - state: 'created' [13:31:08.479] - Future backend: 'FutureStrategy', 'mirai_multisession', 'mirai_cluster', 'mirai', 'multiprocess', 'future', 'function' [13:31:08.481] - Future class: 'MiraiFuture', 'MultiprocessFuture', 'Future', 'environment' [13:31:08.481] - Copy elements of temporary 'MiraiFuture' to final 'Future' object ... [13:31:08.481] - Field: 'label' [13:31:08.481] - Field: 'local' [13:31:08.481] - Field: 'owner' [13:31:08.482] - Field: 'envir' [13:31:08.482] - Field: 'packages' [13:31:08.482] - Field: 'gc' [13:31:08.482] - Field: 'conditions' [13:31:08.482] - Field: 'expr' [13:31:08.483] - Field: 'uuid' [13:31:08.483] - Field: 'seed' [13:31:08.483] - Field: 'version' [13:31:08.483] - Field: 'result' [13:31:08.483] - Field: 'asynchronous' [13:31:08.483] - Field: 'calls' [13:31:08.484] - Field: 'globals' [13:31:08.484] - Field: 'stdout' [13:31:08.484] - Field: 'earlySignal' [13:31:08.484] - Field: 'lazy' [13:31:08.484] - Field: 'state' [13:31:08.484] - Field: '.cluster' [13:31:08.485] - Copy elements of temporary 'MiraiFuture' to final 'Future' object ... done [13:31:08.485] - Launch lazy future ... [13:31:08.485] Packages needed by the future expression (n = 0): [13:31:08.485] Packages needed by future strategies (n = 0): [13:31:08.486] { [13:31:08.486] { [13:31:08.486] { [13:31:08.486] ...future.startTime <- base::Sys.time() [13:31:08.486] { [13:31:08.486] { [13:31:08.486] { [13:31:08.486] base::local({ [13:31:08.486] has_future <- base::requireNamespace("future", [13:31:08.486] quietly = TRUE) [13:31:08.486] if (has_future) { [13:31:08.486] ns <- base::getNamespace("future") [13:31:08.486] version <- ns[[".package"]][["version"]] [13:31:08.486] if (is.null(version)) [13:31:08.486] version <- utils::packageVersion("future") [13:31:08.486] } [13:31:08.486] else { [13:31:08.486] version <- NULL [13:31:08.486] } [13:31:08.486] if (!has_future || version < "1.8.0") { [13:31:08.486] info <- base::c(r_version = base::gsub("R version ", [13:31:08.486] "", base::R.version$version.string), [13:31:08.486] platform = base::sprintf("%s (%s-bit)", [13:31:08.486] base::R.version$platform, 8 * base::.Machine$sizeof.pointer), [13:31:08.486] os = base::paste(base::Sys.info()[base::c("sysname", [13:31:08.486] "release", "version")], collapse = " "), [13:31:08.486] hostname = base::Sys.info()[["nodename"]]) [13:31:08.486] info <- base::sprintf("%s: %s", base::names(info), [13:31:08.486] info) [13:31:08.486] info <- base::paste(info, collapse = "; ") [13:31:08.486] if (!has_future) { [13:31:08.486] msg <- base::sprintf("Package 'future' is not installed on worker (%s)", [13:31:08.486] info) [13:31:08.486] } [13:31:08.486] else { [13:31:08.486] msg <- base::sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", [13:31:08.486] info, version) [13:31:08.486] } [13:31:08.486] base::stop(msg) [13:31:08.486] } [13:31:08.486] }) [13:31:08.486] } [13:31:08.486] ...future.strategy.old <- future::plan("list") [13:31:08.486] options(future.plan = NULL) [13:31:08.486] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.486] future::plan("default", .cleanup = FALSE, .init = FALSE) [13:31:08.486] } [13:31:08.486] ...future.workdir <- getwd() [13:31:08.486] } [13:31:08.486] ...future.oldOptions <- base::as.list(base::.Options) [13:31:08.486] ...future.oldEnvVars <- base::Sys.getenv() [13:31:08.486] } [13:31:08.486] base::options(future.startup.script = FALSE, future.globals.onMissing = "error", [13:31:08.486] future.globals.maxSize = NULL, future.globals.method = NULL, [13:31:08.486] future.globals.onMissing = "error", future.globals.onReference = NULL, [13:31:08.486] future.globals.resolve = TRUE, future.resolve.recursive = NULL, [13:31:08.486] future.rng.onMisuse = NULL, future.rng.onMisuse.keepFuture = NULL, [13:31:08.486] future.stdout.windows.reencode = NULL, width = 80L) [13:31:08.486] ...future.futureOptionsAdded <- base::setdiff(base::names(base::.Options), [13:31:08.486] base::names(...future.oldOptions)) [13:31:08.486] } [13:31:08.486] if (FALSE) { [13:31:08.486] } [13:31:08.486] else { [13:31:08.486] if (TRUE) { [13:31:08.486] ...future.stdout <- base::rawConnection(base::raw(0L), [13:31:08.486] open = "w") [13:31:08.486] } [13:31:08.486] else { [13:31:08.486] ...future.stdout <- base::file(base::switch(.Platform$OS.type, [13:31:08.486] windows = "NUL", "/dev/null"), open = "w") [13:31:08.486] } [13:31:08.486] base::sink(...future.stdout, type = "output", split = FALSE) [13:31:08.486] base::on.exit(if (!base::is.null(...future.stdout)) { [13:31:08.486] base::sink(type = "output", split = FALSE) [13:31:08.486] base::close(...future.stdout) [13:31:08.486] }, add = TRUE) [13:31:08.486] } [13:31:08.486] ...future.frame <- base::sys.nframe() [13:31:08.486] ...future.conditions <- base::list() [13:31:08.486] ...future.rng <- base::globalenv()$.Random.seed [13:31:08.486] if (FALSE) { [13:31:08.486] ...future.globalenv.names <- c(base::names(base::.GlobalEnv), [13:31:08.486] "...future.value", "...future.globalenv.names", ".Random.seed") [13:31:08.486] } [13:31:08.486] ...future.result <- base::tryCatch({ [13:31:08.486] base::withCallingHandlers({ [13:31:08.486] ...future.value <- base::withVisible(base::local({ [13:31:08.486] x[name] <- list(1) [13:31:08.486] x [13:31:08.486] })) [13:31:08.486] future::FutureResult(value = ...future.value$value, [13:31:08.486] visible = ...future.value$visible, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.486] ...future.rng), globalenv = if (FALSE) [13:31:08.486] list(added = base::setdiff(base::names(base::.GlobalEnv), [13:31:08.486] ...future.globalenv.names)) [13:31:08.486] else NULL, started = ...future.startTime, version = "1.8") [13:31:08.486] }, condition = base::local({ [13:31:08.486] c <- base::c [13:31:08.486] inherits <- base::inherits [13:31:08.486] invokeRestart <- base::invokeRestart [13:31:08.486] length <- base::length [13:31:08.486] list <- base::list [13:31:08.486] seq.int <- base::seq.int [13:31:08.486] signalCondition <- base::signalCondition [13:31:08.486] sys.calls <- base::sys.calls [13:31:08.486] `[[` <- base::`[[` [13:31:08.486] `+` <- base::`+` [13:31:08.486] `<<-` <- base::`<<-` [13:31:08.486] sysCalls <- function(calls = sys.calls(), from = 1L) { [13:31:08.486] calls[seq.int(from = from + 12L, to = length(calls) - [13:31:08.486] 3L)] [13:31:08.486] } [13:31:08.486] function(cond) { [13:31:08.486] is_error <- inherits(cond, "error") [13:31:08.486] ignore <- !is_error && !is.null(NULL) && inherits(cond, [13:31:08.486] NULL) [13:31:08.486] if (is_error) { [13:31:08.486] sessionInformation <- function() { [13:31:08.486] list(r = base::R.Version(), locale = base::Sys.getlocale(), [13:31:08.486] rngkind = base::RNGkind(), namespaces = base::loadedNamespaces(), [13:31:08.486] search = base::search(), system = base::Sys.info()) [13:31:08.486] } [13:31:08.486] ...future.conditions[[length(...future.conditions) + [13:31:08.486] 1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), [13:31:08.486] cond$call), session = sessionInformation(), [13:31:08.486] timestamp = base::Sys.time(), signaled = 0L) [13:31:08.486] signalCondition(cond) [13:31:08.486] } [13:31:08.486] else if (!ignore && TRUE && inherits(cond, "condition")) { [13:31:08.486] signal <- FALSE && inherits(cond, character(0)) [13:31:08.486] ...future.conditions[[length(...future.conditions) + [13:31:08.486] 1L]] <<- list(condition = cond, signaled = base::as.integer(signal)) [13:31:08.486] if (FALSE && !signal) { [13:31:08.486] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.486] { [13:31:08.486] inherits <- base::inherits [13:31:08.486] invokeRestart <- base::invokeRestart [13:31:08.486] is.null <- base::is.null [13:31:08.486] muffled <- FALSE [13:31:08.486] if (inherits(cond, "message")) { [13:31:08.486] muffled <- grepl(pattern, "muffleMessage") [13:31:08.486] if (muffled) [13:31:08.486] invokeRestart("muffleMessage") [13:31:08.486] } [13:31:08.486] else if (inherits(cond, "warning")) { [13:31:08.486] muffled <- grepl(pattern, "muffleWarning") [13:31:08.486] if (muffled) [13:31:08.486] invokeRestart("muffleWarning") [13:31:08.486] } [13:31:08.486] else if (inherits(cond, "condition")) { [13:31:08.486] if (!is.null(pattern)) { [13:31:08.486] computeRestarts <- base::computeRestarts [13:31:08.486] grepl <- base::grepl [13:31:08.486] restarts <- computeRestarts(cond) [13:31:08.486] for (restart in restarts) { [13:31:08.486] name <- restart$name [13:31:08.486] if (is.null(name)) [13:31:08.486] next [13:31:08.486] if (!grepl(pattern, name)) [13:31:08.486] next [13:31:08.486] invokeRestart(restart) [13:31:08.486] muffled <- TRUE [13:31:08.486] break [13:31:08.486] } [13:31:08.486] } [13:31:08.486] } [13:31:08.486] invisible(muffled) [13:31:08.486] } [13:31:08.486] muffleCondition(cond, pattern = "^muffle") [13:31:08.486] } [13:31:08.486] } [13:31:08.486] else { [13:31:08.486] if (TRUE) { [13:31:08.486] muffleCondition <- function (cond, pattern = "^muffle") [13:31:08.486] { [13:31:08.486] inherits <- base::inherits [13:31:08.486] invokeRestart <- base::invokeRestart [13:31:08.486] is.null <- base::is.null [13:31:08.486] muffled <- FALSE [13:31:08.486] if (inherits(cond, "message")) { [13:31:08.486] muffled <- grepl(pattern, "muffleMessage") [13:31:08.486] if (muffled) [13:31:08.486] invokeRestart("muffleMessage") [13:31:08.486] } [13:31:08.486] else if (inherits(cond, "warning")) { [13:31:08.486] muffled <- grepl(pattern, "muffleWarning") [13:31:08.486] if (muffled) [13:31:08.486] invokeRestart("muffleWarning") [13:31:08.486] } [13:31:08.486] else if (inherits(cond, "condition")) { [13:31:08.486] if (!is.null(pattern)) { [13:31:08.486] computeRestarts <- base::computeRestarts [13:31:08.486] grepl <- base::grepl [13:31:08.486] restarts <- computeRestarts(cond) [13:31:08.486] for (restart in restarts) { [13:31:08.486] name <- restart$name [13:31:08.486] if (is.null(name)) [13:31:08.486] next [13:31:08.486] if (!grepl(pattern, name)) [13:31:08.486] next [13:31:08.486] invokeRestart(restart) [13:31:08.486] muffled <- TRUE [13:31:08.486] break [13:31:08.486] } [13:31:08.486] } [13:31:08.486] } [13:31:08.486] invisible(muffled) [13:31:08.486] } [13:31:08.486] muffleCondition(cond, pattern = "^muffle") [13:31:08.486] } [13:31:08.486] } [13:31:08.486] } [13:31:08.486] })) [13:31:08.486] }, error = function(ex) { [13:31:08.486] base::structure(base::list(value = NULL, visible = NULL, [13:31:08.486] conditions = ...future.conditions, rng = !identical(base::globalenv()$.Random.seed, [13:31:08.486] ...future.rng), started = ...future.startTime, [13:31:08.486] finished = Sys.time(), session_uuid = NA_character_, [13:31:08.486] version = "1.8"), class = "FutureResult") [13:31:08.486] }, finally = { [13:31:08.486] if (!identical(...future.workdir, getwd())) [13:31:08.486] setwd(...future.workdir) [13:31:08.486] { [13:31:08.486] if (identical(getOption("nwarnings"), ...future.oldOptions$nwarnings)) { [13:31:08.486] ...future.oldOptions$nwarnings <- NULL [13:31:08.486] } [13:31:08.486] base::options(...future.oldOptions) [13:31:08.486] if (.Platform$OS.type == "windows") { [13:31:08.486] old_names <- names(...future.oldEnvVars) [13:31:08.486] envs <- base::Sys.getenv() [13:31:08.486] names <- names(envs) [13:31:08.486] common <- intersect(names, old_names) [13:31:08.486] added <- setdiff(names, old_names) [13:31:08.486] removed <- setdiff(old_names, names) [13:31:08.486] changed <- common[...future.oldEnvVars[common] != [13:31:08.486] envs[common]] [13:31:08.486] NAMES <- toupper(changed) [13:31:08.486] args <- list() [13:31:08.486] for (kk in seq_along(NAMES)) { [13:31:08.486] name <- changed[[kk]] [13:31:08.486] NAME <- NAMES[[kk]] [13:31:08.486] if (name != NAME && is.element(NAME, old_names)) [13:31:08.486] next [13:31:08.486] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.486] } [13:31:08.486] NAMES <- toupper(added) [13:31:08.486] for (kk in seq_along(NAMES)) { [13:31:08.486] name <- added[[kk]] [13:31:08.486] NAME <- NAMES[[kk]] [13:31:08.486] if (name != NAME && is.element(NAME, old_names)) [13:31:08.486] next [13:31:08.486] args[[name]] <- "" [13:31:08.486] } [13:31:08.486] NAMES <- toupper(removed) [13:31:08.486] for (kk in seq_along(NAMES)) { [13:31:08.486] name <- removed[[kk]] [13:31:08.486] NAME <- NAMES[[kk]] [13:31:08.486] if (name != NAME && is.element(NAME, old_names)) [13:31:08.486] next [13:31:08.486] args[[name]] <- ...future.oldEnvVars[[name]] [13:31:08.486] } [13:31:08.486] if (length(args) > 0) [13:31:08.486] base::do.call(base::Sys.setenv, args = args) [13:31:08.486] args <- names <- old_names <- NAMES <- envs <- common <- added <- removed <- NULL [13:31:08.486] } [13:31:08.486] else { [13:31:08.486] base::do.call(base::Sys.setenv, args = base::as.list(...future.oldEnvVars)) [13:31:08.486] } [13:31:08.486] { [13:31:08.486] if (base::length(...future.futureOptionsAdded) > [13:31:08.486] 0L) { [13:31:08.486] opts <- base::vector("list", length = base::length(...future.futureOptionsAdded)) [13:31:08.486] base::names(opts) <- ...future.futureOptionsAdded [13:31:08.486] base::options(opts) [13:31:08.486] } [13:31:08.486] { [13:31:08.486] NULL [13:31:08.486] options(future.plan = NULL) [13:31:08.486] if (is.na(NA_character_)) [13:31:08.486] Sys.unsetenv("R_FUTURE_PLAN") [13:31:08.486] else Sys.setenv(R_FUTURE_PLAN = NA_character_) [13:31:08.486] future::plan(...future.strategy.old, .cleanup = FALSE, [13:31:08.486] .init = FALSE) [13:31:08.486] } [13:31:08.486] } [13:31:08.486] } [13:31:08.486] }) [13:31:08.486] if (TRUE) { [13:31:08.486] base::sink(type = "output", split = FALSE) [13:31:08.486] if (TRUE) { [13:31:08.486] ...future.result$stdout <- base::rawToChar(base::rawConnectionValue(...future.stdout)) [13:31:08.486] } [13:31:08.486] else { [13:31:08.486] ...future.result["stdout"] <- base::list(NULL) [13:31:08.486] } [13:31:08.486] base::close(...future.stdout) [13:31:08.486] ...future.stdout <- NULL [13:31:08.486] } [13:31:08.486] ...future.result$conditions <- ...future.conditions [13:31:08.486] ...future.result$finished <- base::Sys.time() [13:31:08.486] ...future.result [13:31:08.486] } [13:31:08.489] - Launch lazy future ... done [13:31:08.490] run() for 'MiraiFuture' ... done > rm(list = c("x", "name")) > print(y) $a [1] 1 > stopifnot(identical(y, y0)) > > message("*** Globals - subassignments w/ x$a <- value ... DONE") *** Globals - subassignments w/ x$a <- value ... DONE > > message("*** Globals - subassignments ... DONE") *** Globals - subassignments ... DONE > > source("incl/end.R") > > proc.time() user system elapsed 0.50 0.07 1.00