The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
reset_globals, reset_packages,
reset_options, and garbage_collection in
crew_controller_sequential() (#217).tls to tlscert in the call
to mirai::daemon() (#227, @shikokuchuo).collections queues instead of custom queues
(#229).collections dictionaries instead of hash
environments to track tasks (#229).promise() method of the
controller.crew’s workers by avoiding
nanonext::cv_value() for condition variables (#225).
Consequences:
wait(mode = "all") no longer guarantees that a task is
available for pop(). It just consumes a condition variable
signal. pop() should always be checked for
NULL return values.mirai gains a threaded dispatcher,
saturated() needs to avoid the overhead of calling
status() to get task counts. So the definition of
“saturated” has changed: a controller is saturated if the number of
uncollected tasks is greater than or equal to the maximum
number of workers. Previously, it was the number of unresolved
tasks..pushed and .popped are
safely removed.pushed and popped are
removed.unpopped() method because
it is unnecessary to export and it assumes only the controller submits
tasks to the compute profile (affecting interoperability).later loop in
autoscale().pids() methods in controllers and clients
and stop babysitting the dispatcher process (#236).crew_clean() in favor of
crew_monitor_local() (#236).launch_worker() to just
include arguments call and name.mirai (#232).processes and async in
crew launchers in favor of job arrays (#218, #237).tasks_mask is finite, set seconds_min
to seconds_interval in the throttle to give tasks enough
time to accumulate.mirai::info() instead of
mirai::status()$events (#232, @shikokuchuo).crew_client(). This is
mainly to support the use of the default compute profile to make
crew more compatible with non-crew
mirai-based workflows. It’s a quick solution for single
controllers but does not work for controller groups.crew_client()$start() now errors if a
mirai compute profile of the same name is already
active.crew_random_name().controller$walk() with 100000 tasks:
pre-compute the task list and defer auto-scaling until all tasks are
pushed. Pushing a million tasks in walk() now takes just
under 70 seconds on a local M2 Macbook.nanonext::ip_addr() instead of
getip::getip() to get the default IP address of the host
(#216, @shikokuchuo).walk() report progress when
pushing tasks.reset_globals,
reset_packages, reset_options, and
garbage_collection from the launcher to the controller
(#217). crew_eval() now handles cleanup directly, and
workflows running mirai 2.0.0 should mostly run faster
because not all cleanup steps are automatically enabled.mirai::call_mirai_() in tests (#222, @shikokuchuo).targets: avoid superfluous processing in
controller$pop().queue$push(), by
making the queue non-portable and using direct access and direct
assignment in R6.mirai::status() in
workloads with a large number of quick tasks. Instead of resetting the
throttle every time there is task or worker activity, only reset if
there is worker activity. This was achieved by giving relay objects
their own throttles instead of having them use the launcher
throttles.dispatcher argument
of mirai::daemons() (#215, @shikokuchuo).name and workers arguments of controllers.
They are not deprecated at the controller level. They are only
deprecated in crew_client().name_worker() from crew-
to crew-worker-.call_mirai() instead of the now deprecated
call_mirai_() (@shikokuchuo, #198).crew_controller_sequential() (#205).serialization argument to
crew_client() (#204).crew_terminate_process().mirai 2.0.0 with the pair 1 poly protocol
(#193). Most notably, all workers now share the same URL instead of
having different web sockets for different workers. This gets rid of
crew’s previous “slotted” model for workers.push(). (The task
must be popped first before another task of the same name can be
submitted.) This allows controllers to use hash tables to track tasks,
which makes push() and pop() orders of
magnitude faster. It is also needed for the new retry mechanism based on
backup controllers and controller groups.scale() and wait()
to increase responsiveness.wait(mode = "all") for controller groups.ws:// (and wss://) to
tcp:// (and tls+tcp://) (#193).pop() and
collect() more efficient. pop() is 64 times
faster."launcher" column of the
results to "controller".summary().launch_max error from underutilized
workers (#189).launch_max in favor of
crashes_error (#189).rotate() instead of
looking for crashes of a specific worker in launch()
(#189).crashes() launcher method to allow plugins to
detect and respond to crashes more easily.seconds_idle to 300.autometric to Suggests:.crew_eval() with
autometric::log_phase_set() and
autometric::log_phase_reset().r_arguments argument to supply command line
arguments to R for workers (#175, @rpruim).cancel() controller method to cancel one or more
tasks.cancel(all = TRUE) from terminate()
as a safeguard.client$dispatcher a ps::ps_handle()
handle and add a new client$client handle for the current
process.log_resources is
given, the controller now calls log() as a side effect in
most controller methods, with throttling to preserve speed.pop() etc.as_monad() makes error reporting
more consistent.path.expand() on local log files.Rscript.crew_worker() before attempting
to dial into mirai.asyncdial = FALSE back to
mirai::daemon() call.local_log_directory and
local_log_join in favor of
crew_options_local() and the options_local
argument.crew_options_metrics() and the
options_metrics argument for recording resource metrics
(#178).logging.Rmd vignette to explain best
practices for logging and resource usage metrics (#178).retry_tasks argument with default
TRUE (#170).nanonextcrew promises in favor of native
event-driven promises in mirai (#162).shiny.Rmd and promises.Rmd
vignette to recommend native event-driven mirai promises
(#162)..args rather than ... in
mirai::mirai() to make sure arguments continue to be passed
as local variables in mirai >= 0.13.1.9012.autoscale(),
descale(), and started() to facilitate
different kinds of Shiny apps.scale and throttle methods
of controller$promise(). promise() now always
calls autoscale() to make sure one and only one
auto-scaling loop is running asynchronously. Auto-scaling thus continues
even after the promise resolves.error argument to collect()
(#166).crew promises and
Shiny extended tasks (#157, @jcheng5).controller$promise(mode = "one")
in the vignette on promises (@jcheng5).error argument in pop() which
may help with integration with ExtendedTask (@jcheng5).nanonext >= 0.12.0 and mirai
>= 0.12.0.push_backlog() and pop_backlog()
to manage cases when it is not desirable to push to saturated
controllers (https://github.com/ropensci/targets/issues/1220).mirai object of a task pushed to
the controller. This allows users to interact with the task directly,
e.g. to create a promise object with promises::as.promise()
(#146, @jcheng5).walk() method for controllers and controller
groups to submit tasks in batch and return control immediately without
waiting for any task to complete (#148, @jcheng5).collect() method for popping multiple tasks
at once (#148, @jcheng5).nonempty(),
resolved(), unresolved(), and
unpopped() to help with #148.mirai dispatcher error message extremely
verbose.crew_terminate_signal().crew_monitor_local() to help users monitor
and terminate local R processes created by crew and
mirai.crew_terminate_process()
to terminate a process manually without resorting to
SIGKILL on Windows.controller$map() if at least one
task threw one. warnings = FALSE suppresses this
behavior.output = TRUE in daemon() so
stdout and stderr streams print.local_log_directory and
local_log_join to write to local log files.asyncdial to autoexit.Sys.info()[["user"]] to get the user in
crew_clean() (#135, @luwidmer).controller$map() can no longer be used
if there are tasks waiting to be popped.cli progress bar in map().R6 members in the
private list and add active bindings where interfaces are
necessary (#137). Ad hoc tests that absolutely need to modify private
objects can use object$.__enclos_env__$private trick, but
these tests should be skipped on CRAN in case there is a change to
R6 that breaks this..signal from mirai::mirai() since all
mirai tasks signal as of mirai version
0.11.2.9025.crew_throttle(), a decoupled mechanism for
throttling that can be applied to scaling.throttle argument, powered by
crew_throttle().mirai::status() again in
daemons_info() and make it configurable using
seconds_interval and seconds_timeout in both
the client and the launcher (#128).seconds_exit because exitlinger
in mirai is now obsolete (#125, @shikokuchuo).mirai::nextget("cv") to count unresolved tasks
instead of looping through all the task objects (#131).collect() in auto-scaling.
Simplifies much of the code. Made possible by the efficiency gains in
#131.wait().seconds_interval in map() no longer
defaults to controller$client$seconds_interval.launcher$terminate_workers() terminates one or more
workers, and launcher$terminate terminates the whole
launcher.processes field to set the number of local
mirai daemons for asynchronous requests to launch and
terminate the serious workers. Then, launch_worker() and
terminate_worker() can optionally make use of
launcher$async$eval() to send these asynchronous
calls.mirai
0.9.1 (#96).status() retries (@shikokuchuo, #100).launch_max to error out if workers repeatedly
launch without completing any tasks (#101, @shikokuchuo, @multimeric).launcher$done().algorithm argument to the
push(), shove(), and map()
methods of controllers and controller groups, as well as
arguments/fields in crew_eval() and its return value (#113,
@shikokuchuo).mirai::nextstream() (#115, @shikokuchuo).crew_tls() function for TLS configuration
(#120).tls_enable and tls_config
arguments of crew_client() etc. in favor of a
tls argument which accepts crew_tls() objects
(#120).nanonext and
mirai.map() method to the controller class for
functional programming (#93).scale() which launched too many workers when
active - demand was less than 0.crew_clean() to help clean up any lingering
dispatchers and workers from previous sessions.targets 1.1.3.daemons() in daemons_info().nanonext 0.9.0.R6 schedule class (#84).launch_worker() (#84). Unfortunately neither of these
changes is back-compatible for third-party launcher plugins. However,
the controller interface is still back-compatible, so
targets remains unaffected.NULL result in
pop()$result[[1L]].assigned and
complete stats from mirai 0.8.7.9029.pkgdown reference and Rd
families to clarify which parts are for end-users and which parts are
for launcher plugin developers.controller$shove() and schedule$list()
to support fast extensions for functional programming.mirai 0.9.0 or greater.packageStartupMessage()..args instead of ... in
mirai::mirai().set.seed() instead of
withr::local_seed() (#67, @shikokuchuo).rlang::duplicate() (#72, @shikokuchuo).saturated() controller method to support
targets.worker_index column to controller summaries.auto_scale argument/field of controllers
in favor of the scale argument of push(),
pop(), and wait().self$router$seconds_interval (#76).clean() and instead terminate lost workers on
launch.collect argument to pop().asyncdial from call to
mirai::daemons().clean() controller method.scale() and launch()
controller methods.inactive() launcher method to help with the
above.nanonext::.unresolved()
(#49).callr launcher to the local process launcher
(#56).mirai implements the dispatcher another way
(#60).substitute argument to push()
(#63).mirai (#61).processx instead of callr for the
local process launcher (#64”).crew_eval() by e.g. relying on
nanonext::mclock() for the time.empty() method to check if the controller or
controller group is empty.mirai for globals cleanup, garbage collection,
and global option resets (#65).mirai
(#65).pop().crew_wait() to crew_retry().crew_assert() and
crew_random_name() to help launcher plugins.listen() method to start() in
the router class.poll() method now retries
mirai::daemons() for robustness.crew_retry() gains a max_tries
argument.router$daemons to
NULL in poll() when the connection has a
momentary problem.listening().call() method to make it easier to write custom
launcher plugins.as.character() to make sure the list
argument supplied to rm() is safe. Fixes a test that was
failing on R-devel with crew version 0.0.4.seconds_poll_high and
seconds_poll_low fields and arguments for compatibility
with mirai development and release versions.async_dial field in the router for
compatibility with mirai development and release
versions.These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.