Skip to content

Releases: oracle/fastr

FastR - GraalVM Community Edition 1.0 RC15

05 Apr 16:14
Compare
Choose a tag to compare

FastR is a GNU R compatible implementation of R for GraalVM. It is currently based on R 3.5.1, reuses the base packages of GNU R and is compatible with the ecosystem.

For example, FastR can install and run unmodified complex R packages like ggplot2, Shiny, or Rcpp, for compatibility with other packages please refer to the compatibility checker: http://www.graalvm.org/docs/reference-manual/compatibility/.

Being implemented on top of GraalVM, FastR uses its state-of-the-art JIT compiler and has better peak performance, often several times faster than GNU R.

The R language components can be installed in GraalVM using the gu utility.

More information is available on the GraalVM website: http://www.graalvm.org/docs/reference-manual/languages/r/

Breaking changes in RC15:

  • ActiveBinding objects do not support the UNBOX message anymore
  • new Truffle interop converts double values to int values if they fit in the integer range

Added missing R builtins and C APIs:

  • simple support for the weak reference API functions (R_MakeWeakRef, R_MakeWeakRefC, R_WeakRefKey, R_WeakRefValue)
  • Rf_i1mach
  • gzcon builtin for url connections, e.g., load(url('protocol://path')) should work now
  • Sys.localeconv supports: decimal_point, thousands_sep, grouping, int_curr_symbol, currency_symbol, mon_decimal_point,
    mon_thousands_sep, mon_grouping, int_frac_digits, p_cs_precedes, other fields are fixed to some meaningful but not culture
    sensitive value for given field

Bug fixes:

  • rep.int with value argument of length 0 just returns the value argument
  • tcrossprod called from apply did not give correct result #60
  • Rf_lengthgets can accept NULL argument
  • FastR does not allow Java interop when not started with --jvm

FastR - GraalVM Community Edition 1.0 RC14

18 Mar 18:02
Compare
Choose a tag to compare

FastR is a GNU R compatible implementation of R for GraalVM. It is currently based on R 3.5.1, reuses the base packages of GNU R and is compatible with the ecosystem.

For example, FastR can install and run unmodified complex R packages like ggplot2, Shiny, or Rcpp, for compatibility with other packages please refer to the compatibility checker: http://www.graalvm.org/docs/reference-manual/compatibility/.

Being implemented on top of GraalVM, FastR uses its state-of-the-art JIT compiler and has better peak performance, often several times faster than GNU R.

The R language components can be installed in GraalVM using the gu utility.

More information is available on the GraalVM website: http://www.graalvm.org/docs/reference-manual/languages/r/

New features in RC14:

  • all FastR specific options (NOT those GNU-R compatible like --save) are experimental except for --R.PrintErrorStacktracesToFile, which is an option that enables logging of FastR internal errors for bug reporting purposes. Experimental options can be unlocked using --experimental-options or with ContextBuilder#allowExperimentalOptions.
  • the MRAN mirror used by FastR by default instead of CRAN was bumped to 2019-02-13
  • options for the JVM or native image are now passed using --vm. prefix in both cases instead of --jvm.. or --native. (e.g., --jvm.Dproperty=false becomes --vm.Dproperty=false)

New features:

  • whenever possible, errors are propagated to the FastR embedder

Added missing R builtins and C API

  • Rf_StringBlank

Bug fixes:

  • C_numeric_deriv gives wrong results of gradient #54
  • tcrossprod with a single vector #56
  • length<- would remove attributes from the target even if it was a shared value
  • length(x) <- N should not strip attributes if length(x) == N, which is not in line with GNU-R documentation, but relied upon in the methods package #55
  • as.Date with invalid date string #56

FastR - GraalVM Community Edition 1.0 RC13

05 Mar 15:31
Compare
Choose a tag to compare

FastR is a GNU R compatible implementation of R for GraalVM. It is currently based on R 3.5.1, reuses the base packages of GNU R and is compatible with the ecosystem.

For example, FastR can install and run unmodified complex R packages like ggplot2, Shiny, or Rcpp, for compatibility with other packages please refer to the compatibility checker: http://www.graalvm.org/docs/reference-manual/compatibility/.

Being implemented on top of GraalVM, FastR uses its state-of-the-art JIT compiler and has better peak performance, often several times faster than GNU R.

The R language components can be installed in GraalVM using the gu utility.

More information is available on the GraalVM website: http://www.graalvm.org/docs/reference-manual/languages/r/

New features in RC13:

  • new JUL-like logging infrastructure backed by Truffle
  • FastR options are based on Truffle Options. New command-line format - i.e. bin/r --R.PerformanceWarning="true". Also configurable via org.graal.polyglot.Context.Builder.
  • optional post-installation script configure_fastr also regenerates etc/Renviron and etc/ldpaths
  • FastR vectors are not writeable from other languages. In order to update FastR vectors from other languages: retrieve the reference to the subset assign function [<- and execute it. Note that it will return the new vector with the updated values.

Added missing R builtins and C API

  • polyroot
  • dummy implementation of pcre_config

Bug fixes:

  • when using GNU-R graphics (--R.UseInternalGridGraphics=false) FastR would still override the graphics package R functions
  • cannot install RcppParallel #52
  • visibility propagation in tryCatch

FastR - GraalVM Community Edition 1.0 RC12

04 Feb 13:43
Compare
Choose a tag to compare

FastR is a GNU R compatible implementation of R for GraalVM. It is currently based on R 3.5.1, reuses the base packages of GNU R and is compatible with the ecosystem.

For example, FastR can install and run unmodified complex R packages like ggplot2, Shiny, or Rcpp, for compatibility with other packages please refer to the compatibility checker: http://www.graalvm.org/docs/reference-manual/compatibility/.

Being implemented on top of GraalVM, FastR uses its state-of-the-art JIT compiler and has better peak performance, often several times faster than GNU R.

The R language components can be installed in GraalVM using the gu utility.

More information is available on the GraalVM website: http://www.graalvm.org/docs/reference-manual/languages/r/

New features in RC12:

  • the implementation of the TruffleLanguage#toString method uses R function print
  • for example: the console in Chrome DevTools will print data.frames formatted like R would

Added missing R builtins and C API

  • FastR provides GNU-R compatible parseData for expressions parsed via parse(...,keep.source=T)
  • format.POSIXlt supports following formats: %z, %Z, %x, %X.
  • dummy implementation of the ALTREP framework to avoid linking problems. Most of the functions fail at runtime. #48

Bug fixes:

  • sys.calls gives wrong result when eval with envir argument is on the call stack
  • is.na was not correctly handling lists, for example: is.na(list(function() 42))
  • transfer srcref attribute to the result of .subset and [
  • matrix(1,nrow=NULL,ncol=NULL) caused internal FastR error instead of R user level error
  • option --polyglot works with the native image of FastR
  • added native functions optim() and optimness()
  • fixed various race conditions in parallel package
  • strsplit(...,perl=T) does not end up in an infinite loop if the pattern is not found by pcre_exec
  • as.character.factor error for levels containing NAs
  • env2list error for environments containing pairlists
  • body<- error for non-scalar values
  • unlink error for paths containing wildcard(s) but no path separator
  • dims attribute errorneously set to RDoubleVector; exception when retrieving the dims #49
  • issues with the dplyr's mutate and transmute: #50 and #51

FastR - GraalVM Community Edition 1.0 RC11

15 Jan 09:43
Compare
Choose a tag to compare

FastR is a GNU R compatible implementation of R for GraalVM. It is currently based on R 3.5.1, reuses the base packages of GNU R and is compatible with the ecosystem.

For example, FastR can install and run unmodified complex R packages like ggplot2, Shiny, or Rcpp, for compatibility with other packages please refer to the compatibility checker: http://www.graalvm.org/docs/reference-manual/compatibility/.

Being implemented on top of GraalVM, FastR uses its state-of-the-art JIT compiler and has better peak performance, often several times faster than GNU R.

The R language components can be installed in GraalVM using the gu utility.

More information is available on the GraalVM website: http://www.graalvm.org/docs/reference-manual/languages/r/

New features in RC11:

  • upgraded the R version to R-3.5.1

    • base packages and other sources used directly from GNU-R upgraded to their R-3.5.1 versions
    • fixed differences between R-3.4.0 and R-3.5.1
  • FastR does not print or log any details for internal errors unless it is run with --jvm.DR:+PrintErrorStacktracesToFile

Added missing R builtins and C API

  • Rf_duplicated
  • Rf_setVar
  • norm_rand
  • exp_rand

Bug fixes:

  • internal error in mapply with empty arguments list
  • comment and comment<- work with S4 objects
  • iconvlist() was failing on argument error #43
  • range works properly with lists
  • the reference count of dimnames of the result of == was not handled properly leading to incorrect results #40
  • exists did not work properly in all cases when used with the mode argument #44
  • 'charIndex out of range' when parsing an incomplete source #39
  • no_proxy environment variable was not parsed correctly
  • read.csv treats empty value as NA of the same type as the rest of the values in the column #42
  • SET_NAMED allows to decrease the reference count to support a pattern from data.table
  • exception when writing into the result returned from split
  • switch falls through only if the actual argument is empty constant: switch('x',x=,y=42) vs. switch('x',x=quote(f(1,))[[3]],y=42)
  • oldClass<- works with external pointers and other less common R types
  • C API function Rf_setAttrib coerces double vector to integer when setting "dim" attribute #46

FastR - GraalVM Community Edition 1.0 RC10

05 Dec 18:13
Compare
Choose a tag to compare

FastR is a GNU R compatible implementation of R for GraalVM. It is currently based on R 3.4.0, reuses the base packages of GNU R is compatible with the ecosystem.

For example, FastR can install and run unmodified complex R packages like ggplot2, Shiny, or Rcpp, for compatibility with other packages please refer to the compatibility checker: http://www.graalvm.org/docs/reference-manual/compatibility/.

Being implemented on top of GraalVM, FastR uses its state-of-the-art JIT compiler and has better peak performance, often several times faster than GNU R.

The R language components can be installed in GraalVM using the gu utility.

More information is available on the GraalVM website: http://www.graalvm.org/docs/reference-manual/languages/r/

New features in RC10:

  • interop and tooling: READ and WRITE of ActiveBinding may have side effects. This is communicated via KEY_INFO to the tools and other languages (e.g., a debugger may warn before evaluating an ActiveBinding)
  • the MRAN mirror used by FastR as default repo was moved to https://mran.microsoft.com/snapshot/2018-06-20
  • new function install.fastr.packages to install FastR rJava replacement and possibly other packages in the future
  • print the whole guest language stacktrace if an exception occurs during an interop call into another language

Added missing R builtins and C API:

  • pos.to.env builtin
  • private do_fmin external function from the stats packages used by public R function optimize
  • beta #33

Bug fixes:

  • tooling: top level statements are not marked as functions (e.g., a debugger will not treat them as such anymore)
  • update rpath correctly for redistributed libraries when producing a release build. This issue caused linking problems for MacOS users #26
  • UseMethod caused internal error under some specific circumstances (happens during installation of the R.oo package)
  • fully support indirect use of .Internal, e.g. in (get('.Internal'))(paste0(list(1,2),','))
  • as.character(external-pointer) does not crash, but prints the pointer address #28
  • file.path with NULL as one of its arguments gives correct result (empty character vector)
  • format.POSIXlt uses the same time zone database as rest of the system #29
  • dev.control(displaylist = 'inhibit') caused ClassCastException
  • download.file follows redirects.
  • static members of Java interop objects are not ignored during printing and deparsing
  • fixed internal error in on.exit(NULL)
  • fixed mget to accept also non list values for ifnotfound
  • updating dimensions of a vector always resets the dimnames. #34
  • env2list used in, e.g., as.list.environment can handle ... inside the environment

FastR - GraalVM Community Edition 1.0 RC9

05 Nov 13:51
Compare
Choose a tag to compare

FastR is a GNU R compatible implementation of R for GraalVM. It is currently based on R 3.4.0, reuses the base packages of GNU R is compatible with the ecosystem.

For example, FastR can install and run unmodified complex R packages like ggplot2, Shiny, or Rcpp, for compatibility with other packages please refer to the compatibility checker: http://www.graalvm.org/docs/reference-manual/compatibility/.

Being implemented on top of GraalVM, FastR uses its state-of-the-art JIT compiler and has better peak performance, often several times faster than GNU R.

The R language components can be installed in GraalVM using the gu utility.

More information is available on the GraalVM website: http://www.graalvm.org/docs/reference-manual/languages/r/

New features

  • various improvements in handling of foreign objects in R

Added missing R builtins and C API

  • eapply builtin
  • rapply builtin

Bug fixes:

  • colon builtin calculated length incorrectly in some circumstances
  • storage.mode<- works with NULL
  • Rf_coerceVector works with pairlists and language objects
  • allow formal parameter names: '..1', '..1=default', '...=default'

FastR - GraalVM Community Edition 1.0 RC8

19 Oct 19:13
Compare
Choose a tag to compare

FastR is a GNU R compatible implementation of R for GraalVM. It is currently based on R 3.4.0, reuses the base packages of GNU R is compatible with the ecosystem.

For example, FastR can install and run unmodified complex R packages like ggplot2, Shiny, or Rcpp, for compatibility with other packages please refer to the compatibility checker: http://www.graalvm.org/docs/reference-manual/compatibility/.

Being implemented on top of GraalVM, FastR uses its state-of-the-art JIT compiler and has better peak performance, often several times faster than GNU R.

The R language components can be installed in GraalVM using the gu utility.

More information is available on the GraalVM website: http://www.graalvm.org/docs/reference-manual/languages/r/

Bug fixes:

  • slot (@) was not working with foreign arrays
  • memory leak when invoking some native functions
  • one symbol was reported multiple times to the memory profiler
  • maintain the same ownership relation between SEXPs as GNU-R does to prevent an unexpected collection of some SEXPs

FastR - GraalVM Community Edition 1.0 RC7

03 Oct 13:34
Compare
Choose a tag to compare

FastR is a GNU R compatible implementation of R for GraalVM. It is currently based on R 3.4.0, reuses the base packages of GNU R is compatible with the ecosystem.

For example, FastR can install and run unmodified complex R packages like ggplot2, Shiny, or Rcpp, for compatibility with other packages please refer to the compatibility checker: http://www.graalvm.org/docs/reference-manual/compatibility/.

Being implemented on top of GraalVM, FastR uses its state-of-the-art JIT compiler and has better peak performance, often several times faster than GNU R.

The R language components can be installed in GraalVM using the gu utility.

More information is available on the GraalVM website: http://www.graalvm.org/docs/reference-manual/languages/r/

API changes

  • eval.polyglot: the parameter source was renamed to code

New features

  • AWT based graphics devices (jpg, png, X11, ...) supported in native image
  • Seamless way to create R data frames from Polyglot objects
    • Handled by as.data.frame.polyglot.value
    • Expected structure: KEYS are used as column names, the values must be homogenous arrays (e.g. respond to HAS_SIZE)

Bug fixes

  • S3 dispatch works correctly with NULL
  • Paths in eval.polyglot are resolved relative to the current working directory
  • Connections: sockets can always be read and written, raw connections are always binary
  • Promises are evaluated in LazyLoadDBFetch (to support delayedAssign)
  • Fixed broken Rscript --version
  • Various fixes necessary to pass dplyr tests (GitHub version of dplyr)

FastR - GraalVM Community Edition 1.0 RC6

03 Sep 14:44
Compare
Choose a tag to compare

FastR is a GNU R compatible implementation of R for GraalVM. It is currently based on R 3.4.0, reuses the base packages of GNU R is compatible with the ecosystem.

For example, FastR can install and run unmodified complex R packages like ggplot2, Shiny, or Rcpp, for compatibility with other packages please refer to the compatibility checker: http://www.graalvm.org/docs/reference-manual/compatibility/.

Being implemented on top of GraalVM, FastR uses its state-of-the-art JIT compiler and has better peak performance, often several times faster than GNU R.

The R language components can be installed in GraalVM using the gu utility.

More information is available on the GraalVM website: http://www.graalvm.org/docs/reference-manual/languages/r/

New features

  • Support for reading/writing graphical parameters via par
    • in preparation for full graphics package support

Added missing R builtins and C API

  • 'get' builtin supports the 'envir' argument
  • 'inspect' internal
  • SETLEVELS
  • Rf_isObject
  • SET_ENCLOS
  • R_nchar
  • R_forceAndCall

Bugfixes

  • support for formulas that include '...'
  • updating attributes of NULL produces empty list with given attributes
  • treat CR/LF in readLine like GNU-R
  • fix in La_chol (incorrect pivot attribute in return)
  • various fixes in vector coercion code to produce GNU-R compatible warnings and errors