Releases: stefan-m-lenz/JuliaConnectoR
v1.1.4
v1.1.3
Fixes and small improvements:
- Fix broadcasting via dot-syntax for multiple arguments (Issue #27)
- Show standard output of Julia startup process in addition to standard error output if starting Julia fails
- Example for
juliaEval
: clean up Julia connection after executing the example and avoid installing a Julia package on CRAN - Example for
juliaImport
: Don't run on CRAN due to CRAN note on execution time, run as test instead
v1.1.2
Fixes:
- Beginning with R version 4.4.0, complex numbers may have missing values in either the real or the imaginary component while the other component has a value that is not
NA
. (ConsiderNA + 1i
: In R version 4.4.0,Im(NA + 1i) == 1
. Before,Re(NA + 1i)
andIm(NA + 1i)
wasNA
.) This fact is respected now. To keep the behaviour of the JuliaConnectoR package stable, the values having only oneNA
component are translated to Juliamissing
values in the same way as complex values where both components areNA
. The information about the non-NA
component is lost when translating the value to Julia. - Fix issue #16: Julia tables with a column identifier type that is different to
Symbol
can be translated to R data frames now - Removed
exportClasses
inNAMESPACE
to get rid of the corresponing new CRAN warning. (The export is not needed as only S3 classes are used in the package.)
Improvements:
- Julia is now available on CRAN and the tests as well as many of the examples are now run there when checking the package. The example for
as.data.frame
is prevented from being run on CRAN, together with some other tests that take more time than it is acceptable on CRAN. - Upgrade of README example with Julia package
Flux
to current Flux version 0.14 - Switch from Travis CI to GitHub Actions
v1.1.1
This release references the final version of the corresponding article, which has just been published in the Journal of Statistical Software.
v1.1.0
New features:
- The
JULIACONNECTOR_JULIAOPTS
can be used to specify Julia startup options. - The Julia package
InteractiveUtils
, which is available in the Julia REPL by default, is loaded in Julia.
Improvements:
- Improved error messages, showing a more detailed stack trace.
- The example for the
as.data.frame.JuliaProxy
function now uses the Julia packageIndexedTables
, which has reached version 1.0, instead ofJuliaDB
. - On Linux, the
LD_LIBRARY_PATH
for Julia is now set to''
to prevent incompatibilities with theLD_LIBRARY_PATH
that is used by R. (TheLD_LIBRARY_PATH
can be set to a different value via theJULIACONNECTOR_JULIAENV
environment variable.)
Bug fixes:
- Cleaning up of Julia objects during garbage collection is now thread safe.
- "Dirty" NAs are recognized as NAs (fix #10)
v1.0.0
The version number 1.0.0 indicates the maturity of the package and expresses the commitment to the current API.
There are no breaking changes in this release, only some new features:
- Multiple R processes can now use the same Julia session. The function
startJuliaServer
can be used for starting a multiclient Julia server to which R (child) processes can connect. - The environment variable
JULIACONNECTOR_SERVER
can be used for connecting to a running multiclient Julia server. - On operating systems other than Windows, one can set now environment variables that are only used in the Julia process and not used in R. This is possible via the environment variable
JULIACONNECTOR_JULIAENV
. - A citation has been added.
v0.6.3
Bug fixes:
- Fix error in Julia startup script that is happening if the R installation is in a path that contains blank spaces (#4)
- Treat NaN now differently to NA in all cases as intended. In particular, the R double vector
c(1, NaN)
is translated to the JuliaFloat64
vector[1.0; NaN]
now. - Handle symbols without UTF-8 instead of letting
enc2native
choose symbols, which can be confusing and leads to non-portable behaviour - Julia operators imported via
juliaImport
can now be called as functions without throwing a parsing error
Small improvements:
- Output with some information about the module when printing an imported module
- Clearer and more compact display of error messages
- Smaller improvements in the documentation, in particular concerning
juliaPut
and the Julia setup
v0.6.2
Improvements and bug fixes:
- Removed the name
name
for the first argument ofjuliaCall
, as this made it impossible to pass a keyword argument with the keyname
to Julia, e.g., to callPkg.PackageSpec(name = "RData")
viajuliaCall("Pkg.PackageSpec", name = "RData")
. This is now possible and does not cause a fatal error any more. - Improved the stability of the TCP connection by checking the length of all results returned by
read
in Julia andreadBin
in R. - Removed an undocumented behaviour of
juliaImport
: Previously, there was a function without "bang" created for each function with a "bang", e. g. ifMyModule
contains the functionfun!
andMyModule
was imported withMyModule <- juliaImport(".MyModule")
, thenMyModule$fun
pointed toMyModule.fun!
, in addition toMyModule$`fun!`
. This is not the case any more, as it may lead to confusion, andMyModule.fun!
needs to be called asMyModule$`fun!`
in R.
v0.6.1
Improvements:
juliaCall
can handle broadcasting functions with the dot notation. For example,juliaCall("sin.", c(1,2,3))
works now.- The output of objects on the console is now exactly the same as in Julia. Particularly, large output does not clutter the screen any more because it is displayed only partly, with dots in place of the parts that are left out. Check out the output of
juliaPut(matrix(rnorm(10000), nrow = 100))
for an example. The width of the current display in R is also respected for here. - Tested against Julia 1.5.
Bug fixes:
- Fix hanging of tests on Linux when
JULIA_BINDIR
variable is set to empty string. - Fix warning message that the Tables package could not be installed, which erroneously showed up in any empty installation.
v0.6.0
This version is the first version that is released on CRAN. It can now be installed via
install.packages("JuliaConnectoR")
To make the package compliant to CRAN policies, the usage of assign
had to be removed.
This resulted in breaking changes concerning the functions juliaImport
and juliaUsing
.
juliaUsing
has been removed, as the behaviour ofusing
in Julia cannot be simulated without resorting toassign
in R.juliaImport
does not assign the functions any more but it returns an environment containing the functions.- The argument
importInternal
ofjuliaImport
has been renamed toall
. It also defaults toTRUE
now, which means that also internal functions are contained in the returned environment by default. (Name collisions are now excluded anyway.)
Consider a Julia package SomePackage
that exports a function somefun
.
Then the new possibilities for importing it in R are now the following:
Old (0.5) | New (0.6) |
---|---|
|
|
|
|
In the second case, the use of assign
is something that you may want to avoid if you would , e. g., like to use your code in a package. So it would be recommmended to change it to using juliaImport
as well.