Skip to content

Commit

Permalink
update docs and rely on release nanonext
Browse files Browse the repository at this point in the history
  • Loading branch information
shikokuchuo committed Aug 9, 2024
1 parent 5a10265 commit e40b833
Show file tree
Hide file tree
Showing 15 changed files with 117 additions and 118 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/check-standard.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:

- name: Add r-universe to repos
run: |
cat("\noptions(repos=c(RMV='https://shikokuchuo.r-universe.dev',CRAN ='https://cloud.r-project.org'))\n", file = "~/.Rprofile", append = TRUE)
cat("\noptions(repos=c(RMV='https://community.r-multiverse.org',CRAN ='https://cloud.r-project.org'))\n", file = "~/.Rprofile", append = TRUE)
shell: Rscript {0}

- uses: r-lib/actions/setup-r-dependencies@v2
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pkgdown.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:

- name: Add r-universe to repos
run: |
cat("\noptions(repos=c(RMV='https://shikokuchuo.r-universe.dev',CRAN ='https://cloud.r-project.org'))\n", file = "~/.Rprofile", append = TRUE)
cat("\noptions(repos=c(RMV='https://community.r-multiverse.org',CRAN ='https://cloud.r-project.org'))\n", file = "~/.Rprofile", append = TRUE)
shell: Rscript {0}

- uses: r-lib/actions/setup-r-dependencies@v2
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/rhub.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ jobs:
job-config: ${{ matrix.config.job-config }}
- name: Add r-universe to repos
run: |
cat("\noptions(repos=c(RMV='https://shikokuchuo.r-universe.dev',CRAN ='https://cloud.r-project.org'))\n", file = "~/.Rprofile", append = TRUE)
cat("\noptions(repos=c(RMV='https://community.r-multiverse.org',CRAN ='https://cloud.r-project.org'))\n", file = "~/.Rprofile", append = TRUE)
shell: Rscript {0}
- uses: r-hub/actions/setup-deps@v1
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-coverage.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:

- name: Add r-universe to repos
run: |
cat("\noptions(repos=c(RMV='https://shikokuchuo.r-universe.dev',CRAN ='https://cloud.r-project.org'))\n", file = "~/.Rprofile", append = TRUE)
cat("\noptions(repos=c(RMV='https://community.r-multiverse.org',CRAN ='https://cloud.r-project.org'))\n", file = "~/.Rprofile", append = TRUE)
shell: Rscript {0}

- uses: r-lib/actions/setup-r-dependencies@v2
Expand Down
4 changes: 2 additions & 2 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Package: mirai
Type: Package
Title: Minimalist Async Evaluation Framework for R
Version: 1.1.1.9019
Version: 1.1.1.9020
Description: Designed for simplicity, a 'mirai' evaluates an R expression
asynchronously in a parallel process, locally or distributed over the
network, with the result automatically available upon completion. Modern
Expand All @@ -27,7 +27,7 @@ Encoding: UTF-8
Depends:
R (>= 3.6)
Imports:
nanonext (>= 1.1.1.9018)
nanonext (>= 1.2.0)
Enhances:
parallel,
promises
Expand Down
5 changes: 3 additions & 2 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# mirai 1.1.1.9019 (development)
# mirai 1.1.1.9020 (development)

* `everywhere()` adds argument '.serial' to accept serialization configurations created by `serial_config()`. These allow normally non-exportable reference objects such as Arrow Tables or torch tensors to be used seamlessly across parallel processes without additional marshalling steps. Configurations apply on a per compute profile basis.
* `serialization()` is now deprecated in favour of the above usage of `everywhere()`, and will be removed in a future version.
Expand All @@ -7,9 +7,10 @@
* Collecting a 'mirai_map' no longer spuriously introduces empty names where none were present originally.
* Faster local `daemons(dispatcher = FALSE)` and `make_cluster()` by using asynchronous launches (thanks @mtmorgan #123).
* Local dispatcher daemons now synchronize with host, the same as non-dispatcher daemons (prevents use before all have connected).
* Fixes rare cases of `everywhere()` not reaching all daemons when using dispatcher.
* More efficient dispatcher startup by only loading the base package, in addition to not reading startup configurations (thanks @krlmlr).
* Removes hard dependency on `stats` and `utils` base packages.
* Requires `nanonext` >= [1.1.1.9018].
* Requires `nanonext` >= 1.2.0.

# mirai 1.1.1

Expand Down
1 change: 0 additions & 1 deletion R/mirai.R
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,6 @@ everywhere <- function(.expr, ..., .args = list(), .serial = NULL, .compute = "d
.expr <- c(.register, .expr)
.args <- c(.args, list(.serial = .serial))
`opt<-`(envir[["sock"]], "serial", .serial)
`[[<-`(envir, "serial", .serial)
}

if (is.null(envir[["sockc"]])) {
Expand Down
6 changes: 3 additions & 3 deletions README.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ Whilst the async operation is ongoing, attempting to access a mirai's data yield
m
m$data
```
To check whether a mirai remains unresolved i.e. its async operation is still ongoing:
To check whether a mirai remains unresolved (yet to complete):
```{r unres}
unresolved(m)
```
Expand Down Expand Up @@ -91,8 +91,8 @@ Daemons may also be deployed [remotely](https://shikokuchuo.net/mirai/articles/m

```{r map}
df <- data.frame(
fruit = c("melon", "pear", "coconut"),
price = c(5L, 1L, 2L)
fruit = c("melon", "grapes", "coconut"),
price = c(3L, 5L, 2L)
)
m <- mirai_map(df, sprintf, .args = list(fmt = "%s: $%d"))
```
Expand Down
13 changes: 6 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,7 @@ m$data
#> 'unresolved' logi NA
```

To check whether a mirai remains unresolved i.e. its async operation is
still ongoing:
To check whether a mirai remains unresolved (yet to complete):

``` r
unresolved(m)
Expand All @@ -76,7 +75,7 @@ To wait for and collect the return value, use the mirai’s `[]` method:

``` r
m[]
#> [1] 6.275195 6.697046 7.518985 6.332227 6.446677
#> [1] 5.735529 7.862045 6.024613 7.572171 5.791506
```

As a mirai represents an async operation, it is never necessary to wait
Expand All @@ -90,7 +89,7 @@ while (unresolved(m)) {
m
#> < mirai [$data] >
m$data
#> [1] 6.275195 6.697046 7.518985 6.332227 6.446677
#> [1] 5.735529 7.862045 6.024613 7.572171 5.791506
```

#### Daemons
Expand Down Expand Up @@ -124,8 +123,8 @@ rows of a dataframe or matrix.

``` r
df <- data.frame(
fruit = c("melon", "pear", "coconut"),
price = c(5L, 1L, 2L)
fruit = c("melon", "grapes", "coconut"),
price = c(3L, 5L, 2L)
)
m <- mirai_map(df, sprintf, .args = list(fmt = "%s: $%d"))
```
Expand All @@ -140,7 +139,7 @@ progress indicators.
m
#> < mirai map [3/3] >
m[.flat]
#> [1] "melon: $5" "pear: $1" "coconut: $2"
#> [1] "melon: $3" "grapes: $5" "coconut: $2"
```

All errors are returned as ‘errorValues’, facilitating recovery from
Expand Down
104 changes: 52 additions & 52 deletions vignettes/mirai.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ m
m$data
#> 'unresolved' logi NA
```
To check whether a mirai remains unresolved i.e. its async operation is still ongoing:
To check whether a mirai remains unresolved (yet to complete):

``` r
unresolved(m)
Expand All @@ -61,15 +61,15 @@ To wait for and collect the return value, use the mirai's `[]` method:

``` r
m[]
#> [1] 5.035731 2.525158 4.462494 4.866664 5.847000
#> [1] 4.686698 3.649466 5.643721 5.237069 3.828488
```
As a mirai represents an async operation, it is never necessary to wait for it. Other code can continue to be run. Once it completes, the return value automatically becomes available at `$data`.

``` r
m
#> < mirai [$data] >
m$data
#> [1] 5.035731 2.525158 4.462494 4.866664 5.847000
#> [1] 4.686698 3.649466 5.643721 5.237069 3.828488
```
For easy programmatic use of `mirai()`, '.expr' accepts a pre-constructed language object, and also a list of named arguments passed via '.args'. So, the following would be equivalent to the above:

Expand All @@ -81,7 +81,7 @@ args <- list(time = x$time, mean = x$mean)

m <- mirai(.expr = expr, .args = args)
m[]
#> [1] 3.481751 4.707875 4.207655 5.762250 2.692773
#> [1] 4.812297 4.021603 3.333087 4.998890 3.676835
```

[&laquo; Back to ToC](#table-of-contents)
Expand Down Expand Up @@ -158,11 +158,11 @@ for (i in 1:10) {
#> iteration 1 successful
#> iteration 2 successful
#> iteration 3 successful
#> Error: random error
#> iteration 4 successful
#> iteration 5 successful
#> iteration 6 successful
#> iteration 7 successful
#> Error: random error
#> iteration 8 successful
#> iteration 9 successful
#> iteration 10 successful
Expand Down Expand Up @@ -199,12 +199,12 @@ status()
#>
#> $daemons
#> i online instance assigned complete
#> abstract://9ac5654134c5ea197184df9e 1 1 1 0 0
#> abstract://090d4c6e7211e5108bd04164 2 1 1 0 0
#> abstract://abaee2eee2558d736d801a2a 3 1 1 0 0
#> abstract://a4eaa8fa5e705a6037a28705 4 1 1 0 0
#> abstract://edb7f2c078d439aed2ca3b3b 5 1 1 0 0
#> abstract://e74f405d21b249c69c88bec4 6 1 1 0 0
#> abstract://a0b81e5334b04e1434e37552 1 1 1 0 0
#> abstract://8ff80f924503294749199213 2 1 1 0 0
#> abstract://b082aab5aad836d568dac23a 3 1 1 0 0
#> abstract://6ff7d4056fb2d0d447fcad00 4 1 1 0 0
#> abstract://67005db15f4748b788093372 5 1 1 0 0
#> abstract://3a1ba8fb052d8544585e7c0b 6 1 1 0 0
```
The default `dispatcher = TRUE` creates a `dispatcher()` background process that connects to individual daemon processes on the local machine. This ensures that tasks are dispatched efficiently on a first-in first-out (FIFO) basis to daemons for processing. Tasks are queued at the dispatcher and sent to a daemon as soon as it can accept the task for immediate execution.

Expand Down Expand Up @@ -233,7 +233,7 @@ status()
#> [1] 6
#>
#> $daemons
#> [1] "abstract://3447f493f716be0137955a97"
#> [1] "abstract://1561773b749829cf1e118973"
```
This implementation sends tasks immediately, and ensures that tasks are evenly-distributed amongst daemons. This means that optimal scheduling is not guaranteed as the duration of tasks cannot be known *a priori*. As an example, tasks could be queued at a daemon behind a long-running task, whilst other daemons are idle having already completed their tasks.

Expand Down Expand Up @@ -261,11 +261,11 @@ m <- mirai(capture.output(str(con)))
m[]
#> [1] "Formal class 'SQLiteConnection' [package \"RSQLite\"] with 8 slots"
#> [2] " ..@ ptr :<externalptr> "
#> [3] " ..@ dbname : chr \"/tmp/RtmpMRdBww/file3d141b7a2d72\""
#> [3] " ..@ dbname : chr \"/tmp/RtmpKgiYbm/file6ecd76c526ac\""
#> [4] " ..@ loadable.extensions: logi TRUE"
#> [5] " ..@ flags : int 70"
#> [6] " ..@ vfs : chr \"\""
#> [7] " ..@ ref :<environment: 0x5d47b3fff338> "
#> [7] " ..@ ref :<environment: 0x5c4ae4950318> "
#> [8] " ..@ bigint : chr \"integer64\""
#> [9] " ..@ extended_types : logi FALSE"
```
Expand Down Expand Up @@ -356,7 +356,7 @@ By specifying `dispatcher = FALSE`, remote daemons connect directly to the host

``` r
daemons(url = host_url(), dispatcher = FALSE)
#> [1] "tcp://hostname:40087"
#> [1] "tcp://hostname:40369"
```
Note that above, calling `host_url()` without a port value uses the default of '0'. This is a wildcard value that will automatically cause a free ephemeral port to be assigned. The actual assigned port is provided in the return value of the call, or it may be queried at any time via `status()`.

Expand All @@ -370,7 +370,7 @@ status()
#> [1] 0
#>
#> $daemons
#> [1] "tcp://hostname:40087"
#> [1] "tcp://hostname:40369"
```
To reset all connections and revert to default behaviour:

Expand Down Expand Up @@ -457,10 +457,10 @@ daemons(n = 2, url = host_url())
#> [1] 2
launch_remote(1:2)
#> [1]
#> Rscript -e 'mirai::daemon("tcp://hostname:41643",rs=c(10407,-1333183123,-1821263542,-1849417149,-770713944,-616731511,456908470))'
#> Rscript -e 'mirai::daemon("tcp://hostname:42061",rs=c(10407,65206378,-1681371421,978039496,964317737,-1891049514,1351556191))'
#>
#> [2]
#> Rscript -e 'mirai::daemon("tcp://hostname:42847",rs=c(10407,-1917107425,-704481308,1750322114,1991745078,-659632702,-603397324))'
#> Rscript -e 'mirai::daemon("tcp://hostname:42401",rs=c(10407,-789354243,-1756126780,-884928208,-2037464012,-229484652,-49442703))'
daemons(0)
#> [1] 0
```
Expand All @@ -487,37 +487,37 @@ The generated self-signed certificate is available via `launch_remote()`. This f
``` r
launch_remote(1)
#> [1]
#> Rscript -e 'mirai::daemon("wss://hostname:35191/1",tls=c("-----BEGIN CERTIFICATE-----
#> Rscript -e 'mirai::daemon("wss://hostname:45045/1",tls=c("-----BEGIN CERTIFICATE-----
#> MIIFNzCCAx+gAwIBAgIBATANBgkqhkiG9w0BAQsFADAzMREwDwYDVQQDDAhrdW1h
#> bW90bzERMA8GA1UECgwITmFub25leHQxCzAJBgNVBAYTAkpQMB4XDTAxMDEwMTAw
#> MDAwMFoXDTMwMTIzMTIzNTk1OVowMzERMA8GA1UEAwwIa3VtYW1vdG8xETAPBgNV
#> BAoMCE5hbm9uZXh0MQswCQYDVQQGEwJKUDCCAiIwDQYJKoZIhvcNAQEBBQADggIP
#> ADCCAgoCggIBAM4WX01vQyMpV2jWSeT/mhrGCWxZu6AXFpeOcZmiLWBgaT+EOoVZ
#> C2caPAuxbTkqqAB8omXmwwxO/chouYZQNEuGdCXYimDsb+q5HLRnQknM03DzwWDV
#> l00d3t/JrdQrjxU04wdzizeQTFyON5xWz8ie64QJE7RezBYtIALoStKW4od2u2QH
#> KJpFM8lkbm0YoFS49MblY+FZetjXX5E6fqBkikqLaOHbX7re/jT2DTEWn4Tc40YD
#> zjhLNLhsF4eJKQZj4d1IALCUi79yKpV299h2HhsJ9ONKv3BfTWQhPNDjwiTxt3HT
#> XUUrQyT+TAmBgE3ERQkKgQrRpBqDyuyNDIu4Y2AujgN5QZxsNTs9I0CJI5IF++KP
#> ZFVKreuAh4S+ZEmmwSi2iOFfgOaZVHNPoSv+xObE0ZxDbETzM6tSzixaiVkkBaXM
#> NL8NxxLFq5j70QYBYdmC8x4QFjJflkwJcXUYOD7sMhhLCTUlljTTJm+5Penx6O9y
#> xGPxA0klrIDtZJuYvEdY3hjCo5w1PvqswrcEVWDIKg4HexfrbSlRH3Zw/uU7TCOV
#> fZ3l4LLPNbutKa8ax7GYHkWiYXl8UuY04gGA8E3g6/rlD6VubonTu/xBm7g97UCu
#> QFNGJfiGU1CPk3+XfzA88X94mdDj/YEtRTrRGkd+1cWdladromfwyg9DAgMBAAGj
#> VjBUMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFARhpxnKNWBASUs8prHU
#> jt+r/o1QMB8GA1UdIwQYMBaAFARhpxnKNWBASUs8prHUjt+r/o1QMA0GCSqGSIb3
#> DQEBCwUAA4ICAQC/bzIhXlyBA0dkt/ds/VaV++TKdyV1E7qN6yWRfomft8CoU6QL
#> Ti20GOKr0op/ofKffjImLzjKEHxt8M9SZ2qek6d9/bNX7azC6bF3sc+TfwXL/Jr6
#> oB8zEIoIFGOC262Tjz0cyG2TA/I+dSYtpqYl/6RyAqOjHU6yMRXOmSMgWBnHjQHE
#> CDys2uRhoGyLeAS6/t+sPwFBGdzwtVXaGxTfDyy1aBf3hyYh7THHSSRkGsddRDaG
#> rN/+ECb+pe7noVpgNL+3YlK6ap/cxqObK/PgPP4DK6xGVXVEwyXpAdNx+HGum0X6
#> zYYpwif4MBpgTPLMZySqoiolOW5GMBq7jW3Fvu/YII0TreTBKa9Ndp4XSa/tgilM
#> ktBURzaGqQM/IxSRr8I4VSBFqKgTiKUJMziXUeRdjC4kqnZ6yLlfvMNdiUUVqgRD
#> Q9udn8WkD66h+CoLJpfuWrqP3X+ics72u51AlwsuwB8vdHc26cydbb62P2vVJYsv
#> t8kVpYLuvf2GXMU5unyKyTV0skwQNMIRgVH3UbyCZEw8rFolOlsP+l+ivHhTRQ1S
#> S9fnRnmGRHi+ekVstmi+K80I7auQVRQsULEC8Lf8b4nLYO98KDMAi8PEOE3utKwP
#> hyiS5Z3LARPu76FHWHfOwA5WUcHIvlRfS8nqHIXZHMCPxogCtlLizf2KOA==
#> ADCCAgoCggIBANSOJw8VRLIH4khckb+sTb6ZpEPffP3eshk618DYLmxeDPd+i657
#> 6YVVCkeqNcOFs2ECnn6pCpBSQRQ2ESB5Q51/ivBpGuOUndtYY+LHL3Q5hQGNfPGm
#> Gt3bvexeoEt6odqzujufVLzWRXG+5x6ZT0YA+rgQJFElnD3M7exCPOocryid3coC
#> XWtqvrdjAg9cuND3BwlqMEAS0+xq8UQnJ7Bp3/Tj0eefz2afv+NI1WvWJPcU7/ei
#> yh1sDsdEGdo3RDtRAxTcYN8/thAecWCJ5cHsIn5LpGZJtOcwtnpseZR++imu6EJJ
#> mxxwyJzmK45MjuR7dg/Oh7bohAZZHkA//pdJ8X9C7FY/d60XRVI4q6U/NhKwEZJu
#> aAPWwMwEk/3JEsWf9tR8LN0CvA1nL4mdtJOjQAJqmPqtULF6rkEkTtIDbKhUriGz
#> zW5jf3v2MdQnXrLEHMwobuQJ03RbcuMeglKeSoMKeqE3nbBR47BvZIEkc38I5X9o
#> 9cPDkVZ8ufIT63fjjv2/6DAb7x1SbbVXuj/78zvAzm7SnN44siBqQG45wwiJWRuQ
#> jbnbME3CCVVagVX/7EASxw9npfJ1K8xoJHtx3QNuu9dbTCwL51MrAkrEOtCKmR/Y
#> 9wRlv5UaimZ8fvkBGR5I+yLwh9A9MjCJLQ3WjaUHSkSOdB//lSdt8oplAgMBAAGj
#> VjBUMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFB8Aqw5F7Jcln6PzU9ZV
#> Aiw5HiSCMB8GA1UdIwQYMBaAFB8Aqw5F7Jcln6PzU9ZVAiw5HiSCMA0GCSqGSIb3
#> DQEBCwUAA4ICAQAPgcjF428G/AzD4H9lmAzKLRIj+4m9s9JwX3fvXc8GjGFQp0ej
#> gtw+CDAls7EgrF1vB2Hgx2BeqdOK2oW2JBvTWqubMxkGkgjs7frF/ANhTG45pvcd
#> gY525bKbSYpL4P4wb0C31WoA0832HpMduJztjW/qFBsknOvqpZunf6mywvr1lgtL
#> lI2Vt0KtqqgAGvwRrhzuiJ5gQbzX4D244OKAU5CWq3F9ER63nL9/Fe9D4LbwmHYd
#> Y7a021gQGyiXoqj1FLp9sq11HxWgL6oAVfklHF8RI01BUiqSKRJ05y1p2pIJAgH6
#> XkrM86SGLYoxQQ/zoAcek1aPRWMYGYLOng+FejvjVbunaazq9+evzN8bZEuM8fTH
#> JCyg6omOF6gS+Dkvub8QLZUFOA43pJ1GWuSwcEadX4HR7mZ1Gog8a2jQ8UnTHg6m
#> 0K+GIP2SvwcMcSX/4t0zUpwHBm4+UD66wMCS7RDDt0fExTALyDSMA+80OmDRDott
#> 6v9YLQ4ILm8TZvsLAn+hSR32MzMbMkPh19sG+thBAwbYRByTvX86Y1m+o6biVu+n
#> alJeEYJNSxVBCG6HoMOFsqIItjyVdGNu5YtRcxOL1cCDXtz+9i/WJb3HRgoQtFCu
#> jQem+uQorPXNjESw5WjLg4UPLRS9d4WGQo9Sa4xPyOPPB4Q8CZ6OeIdgmw==
#> -----END CERTIFICATE-----
#> ",""),rs=c(10407,1853456881,618089214,-1171000473,-1302518660,-1276345523,-1705177686))'
#> ",""),rs=c(10407,526850812,2095802317,1687455786,-1643828317,-117557112,-2063979287))'
```
The printed value may be deployed directly on a remote machine.

Expand Down Expand Up @@ -749,10 +749,10 @@ daemons(4)
vec <- c(1, 1, 4, 4, 1, 1, 1, 1)
system.time(mirai_map(vec, Sys.sleep)[])
#> user system elapsed
#> 0.000 0.008 4.008
#> 0.005 0.002 4.006
system.time(parLapply(cl, vec, Sys.sleep))
#> user system elapsed
#> 0.008 0.006 8.011
#> 0.010 0.000 8.012
```
`.args` is used to specify further constant arguments to `.f` - the 'mean' and 'sd' in the example below:

Expand All @@ -762,13 +762,13 @@ with(
mirai_map(1:3, rnorm, .args = list(mean = 20, sd = 2))[]
)
#> [[1]]
#> [1] 18.30614
#> [1] 18.72358
#>
#> [[2]]
#> [1] 22.89714 19.74490
#> [1] 21.81064 20.25435
#>
#> [[3]]
#> [1] 20.94216 17.98050 18.15185
#> [1] 20.00686 19.66549 18.66953
```
Use `...` to further specify objects referenced but not defined in `.f` - the 'do' in the anonymous function below:

Expand All @@ -783,13 +783,13 @@ ml
#> < mirai map [3/3] >
ml[]
#> $a
#> [1] "39"
#> [1] "e0"
#>
#> $b
#> [1] ff 1c
#> [1] 84 de
#>
#> $c
#> [1] "9eaf02"
#> [1] "4d73ce"
```
Use of `mirai_map()` assumes that `daemons()` have previously been set. If not then one (non-dispatcher) daemon is set to allow the function to proceed. This ensures safe behaviour, but is unlikely to be optimal, so please ensure daemons are set beforehand.

Expand Down
2 changes: 1 addition & 1 deletion vignettes/mirai.Rmd.orig
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ Whilst the async operation is ongoing, attempting to access a mirai's data yield
m
m$data
```
To check whether a mirai remains unresolved i.e. its async operation is still ongoing:
To check whether a mirai remains unresolved (yet to complete):
```{r unres}
unresolved(m)
```
Expand Down
Loading

0 comments on commit e40b833

Please sign in to comment.