Releases: oracle/fastr
FastR - GraalVM Community Edition 1.0 RC15
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 theUNBOX
message anymore- new Truffle interop converts
double
values toint
values if they fit in the integer range- see the changes in the spec tests
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 forurl
connections, e.g.,load(url('protocol://path'))
should work nowSys.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 argumenttcrossprod
called fromapply
did not give correct result #60Rf_lengthgets
can acceptNULL
argument- FastR does not allow Java interop when not started with
--jvm
FastR - GraalVM Community Edition 1.0 RC14
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 withContextBuilder#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 #54tcrossprod
with a single vector #56length<-
would remove attributes from the target even if it was a shared valuelength(x) <- N
should not strip attributes iflength(x) == N
, which is not in line with GNU-R documentation, but relied upon in the methods package #55as.Date
with invalid date string #56
FastR - GraalVM Community Edition 1.0 RC13
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 viaorg.graal.polyglot.Context.Builder
. - optional post-installation script
configure_fastr
also regeneratesetc/Renviron
andetc/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
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
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
andcomment<-
work with S4 objectsiconvlist()
was failing on argument error #43range
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 themode
argument #44- 'charIndex out of range' when parsing an incomplete source #39
no_proxy
environment variable was not parsed correctlyread.csv
treats empty value asNA
of the same type as the rest of the values in the column #42SET_NAMED
allows to decrease the reference count to support a pattern fromdata.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
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 functionoptimize
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 #28file.path
withNULL
as one of its arguments gives correct result (empty character vector)format.POSIXlt
uses the same time zone database as rest of the system #29dev.control(displaylist = 'inhibit')
causedClassCastException
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 forifnotfound
- 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
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
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
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 tocode
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
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