R6 2.6.1
CRAN release: 2025-02-14
- Closed #298: In
.DollarNames.R6(), avoid use ofNextMethod(). This is to work around a compatibility issue with RStudio IDE. (#299)
R6 2.6.0
CRAN release: 2025-02-12
R6 methods no longer recommends
initializeor.__enclos_env__in autocomplete.The deprecated
lockparameter has been removed.R6Class()now prints a message when afinalizemethod is public instead of private.When a superclass is not cloneable, then subclasses cannot be cloneable (@IndrajeetPatil, #247).
Fixed #253: Errors could occur when deep cloning if a member object was an environment with a class that had a
$method. Deep cloning now usesget0()instead of$. R6 now requires R >= 3.2. (@zeehio, #274)
R6 2.4.1
CRAN release: 2019-11-12
- Cloning active bindings previously relied on buggy behavior in
as.list.environment(), which would return the active binding’s function definition rather than the value from invoking the function. In R 4.0, the behavior will chang so that it returns the value. R6 now no longer relies on this buggy behavior. (#192)
R6 2.3.0
CRAN release: 2018-10-04
Vignettes are no longer included as part of the source package because of their large size. Documentation is now at https://r6.r-lib.org/.
Fixed #125: The
print.R6method now always returns the object that was passed to it.Fixed #155: In some cases, a cloned object’s methods could refer to the wrong
superobject. (#156)Fixed #94, #133: When cloning an object which contained a function that is not a method, the corresponding function in the new object would have its environment changed, as though it were a method. Now it no longer has a changed environment. (#156)
Fixed #121: If a
finalizemethod was present, it would prevent objects passed toinitializefrom getting GC’d.Fixed #158: If a
$setmethod of an R6 generator object is given the valueNULL, it previously removed the named item. Now it adds the named item with the valueNULL.Fixed #159: Printing an R6 object containing a large vector was slow.
R6 2.2.2
CRAN release: 2017-06-17
Fixed #108: When an object with a
superobject and an active binding in thesuperobject was cloned, the new object’ssuperobject did not get the active binding – it was a normal function.Fixed #119: When a class had two levels of inheritance, an instance of that class’s
superobject could contain methods that had an incorrect enclosing environment.
R6 2.2.1
CRAN release: 2017-05-10
Vignettes now only try use the microbenchmark package if it is present. This is so that the package builds properly on platforms where microbenchmark is not present, like Solaris.
Fixed ending position for
trim().
R6 2.2.0
CRAN release: 2016-10-05
Classes can define finalizers explicitly, by defining a public
finalizemethod. (#92, #93)Added function
is.R6()andis.R6Class(). (#95)Fixed #96: R6 now avoids using
$and[[after the class has been assigned to the object. This allows the user to provide their own methods for$and[[without causing problems to R6’s operation.
R6 2.1.2
CRAN release: 2016-01-26
Implemented
format.R6()andformat.R6ClassGenerator, the former calls a publicformatmethod if defined. This might change the functionality of existing classes that define a publicformatmethod intended for other purposes (#73. Thanks to Kirill Müller)Functions are shown with their interface in
printandformat, limited to one line (#76. Thanks to Kirill Müller)R6 objects and generators print out which class they inherit from. (#67)
R6 2.1.0
CRAN release: 2015-07-04
Added support for making clones of R6 objects with a
clone()method on R6 objects. Thedeep=TRUEoption allows for making clones that have copies of fields with reference semantics (like other R6 objects). (#27)Allow adding public or private members when there were no public or private members to begin with. (#51)
Previously, when an R6 object was printed, it accessed (and called) active bindings. Now it simply reports that a field is an active binding. (#37, #38. Thanks to Oscar de Lama)
Printing private members now works correctly for portable R6 objects. (#26)
The ‘lock’ argument has been renamed to ‘lock_objects’. Also, there is a new argument, ‘lock_class’, which can prevent changes to the class. (#52)
Fixed printing of NULL fields.
R6 2.0.1
CRAN release: 2014-10-29
A superclass is validated on object instantiation, not on class creation.
Added
debugandundebugmethods to generator object.
R6 2.0
CRAN release: 2014-08-19
[BREAKING CHANGE] Added
portableoption, which allows inheritance across different package namespaces, and made it the default.Added
set()method on class generator object, so new fields and methods can be added after the generator has been created.All of the functions involved in instantiating objects are encapsulated in an environment separate from the R6 namespace. This means that if a generator is created with one version of R6, saved, then restored in a new R session that has a different version of R6, there shouldn’t be any problems with compatibility.
Methods are locked so that they can’t be changed. (Fixes #19)
Inheritance of superclasses is dynamic; instead of reading in the superclass when a class is created, this happens each time an object is instantiated. (Fixes #12)
Added trailing newline when printing R6 objects. (Thanks to Gabor Csardi)
The
printmethod of R6 objects can be redefined. (Thanks to Gabor Csardi)