Skip to content

Releases: stefan-m-lenz/JuliaConnectoR

v1.1.4

09 Oct 08:41
Compare
Choose a tag to compare

This release improves the discovery process of the Julia installation and the documentation regarding the Julia setup.
This concerns especially the Julia setup on Mac (see Issue #30).

v1.1.3

07 Dec 15:03
Compare
Choose a tag to compare

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

29 Nov 10:01
Compare
Choose a tag to compare

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. (Consider NA + 1i: In R version 4.4.0, Im(NA + 1i) == 1. Before, Re(NA + 1i) and Im(NA + 1i) was NA.) This fact is respected now. To keep the behaviour of the JuliaConnectoR package stable, the values having only one NA component are translated to Julia missing values in the same way as complex values where both components are NA. 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 in NAMESPACE 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

01 Feb 17:57
Compare
Choose a tag to compare

This release references the final version of the corresponding article, which has just been published in the Journal of Statistical Software.

v1.1.0

09 Nov 14:41
Compare
Choose a tag to compare

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 package IndexedTables, which has reached version 1.0, instead of JuliaDB.
  • On Linux, the LD_LIBRARY_PATH for Julia is now set to '' to prevent incompatibilities with the LD_LIBRARY_PATH that is used by R. (The LD_LIBRARY_PATH can be set to a different value via the JULIACONNECTOR_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

02 Aug 08:43
Compare
Choose a tag to compare

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

29 Mar 07:57
Compare
Choose a tag to compare

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 Julia Float64 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

01 Oct 12:13
Compare
Choose a tag to compare

Improvements and bug fixes:

  • Removed the name name for the first argument of juliaCall, as this made it impossible to pass a keyword argument with the key name to Julia, e.g., to call Pkg.PackageSpec(name = "RData") via juliaCall("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 and readBin in R.
  • Removed an undocumented behaviour of juliaImport: Previously, there was a function without "bang" created for each function with a "bang", e. g. if MyModule contains the function fun! and MyModule was imported with MyModule <- juliaImport(".MyModule"), then MyModule$fun pointed to MyModule.fun!, in addition to MyModule$`fun!`. This is not the case any more, as it may lead to confusion, and MyModule.fun! needs to be called as MyModule$`fun!` in R.

v0.6.1

13 Aug 08:09
Compare
Choose a tag to compare

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

24 Apr 20:53
Compare
Choose a tag to compare

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 of using in Julia cannot be simulated without resorting to assign in R.
  • juliaImport does not assign the functions any more but it returns an environment containing the functions.
  • The argument importInternal of juliaImport has been renamed to all. It also defaults to TRUE 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)
juliaImport("SomePackage")
SomePackage.somefun()
SomePackage <- juliaImport("SomePackage")
SomePackage$somefun()
juliaUsing("SomePackage")
somefun()
assign(juliaImport("SomePackage", all = FALSE))
somefun()

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.