The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
Classes get a more informative print method (#346).
Correctly register S3 methods for S7 objects with a package (#333).
External methods are now registered using an attribute of the S3
methods table rather than an element of that environment. This prevents
a warning being generated during the “code/documentation mismatches”
check in R CMD check
(#342).
class_missing
and class_any
can now be
unioned with |
(#337).
new_object()
no longer accepts NULL
as
.parent
.
new_object()
now correctly runs the validator from
abstract parent classes (#329).
new_object()
works better when custom property
setters modify other properties.
new_property()
gains a validator
argument that allows you to specify a per-property validator
(#275).
new_property()
clarifies that it’s the user’s
responsibility to return the correct class; it is not
automatically validated.
Properties with a custom setter are now validated after
the setter has run and are validated when the object is constructed or
when you call validate()
, not just when you modify them
after construction.
S7_inherits()
now accepts class = NULL
to test if an object is any sort of S7 object (#347).
new_external_generic()
is only needed when you want
a soft dependency on another package.
methods_register()
now also registers S3 and S4
methods (#306).
Subclasses of abstract class can have readonly properties (#269).
During construction, validation is now only performed once for each element of the class hierarchy (#248).
Implemented a better filtering strategy for the S4 class hierarchy so you can now correctly dispatch on virtual classes (#252).
New set_props()
to make a modified copy of an object
(#229).
R CMD check
now passes on R 3.5 and greater (for
tidyverse compatibility).
Dispatching on an evaluated argument no longer causes a crash (#254).
Improve method dispatch failure message (#231).
Can use |
to create unions from S7 classes
(#224).
Can no longer subclass an environment via
class_environment
because we need to think the consequences
of this behaviour through more fully (#253).
Add [.S7_object
, [<-.S7_object
,
[[.S7_object
, and [[<-.S7_object
methods to
avoid “object of type ‘S4’ is not subsettable” error (@jamieRowen,
#236).
Combining S7 classes with c()
now gives an error
(#230)
Base classes now show as class_x
instead of
"x"
in method print (#232)
Exported class_factor
, class_Date
,
class_POSIXct
, and class_data.frame
.
New S7_inherits()
and check_is_S7()
(#193)
new_class()
can create abstract classes
(#199).
method_call()
is now S7_dispatch()
(#200).
Can now register methods for double-dispatch base Ops (currently only works if both classes are S7, or the first argument is S7 and the second doesn’t have a method for the Ops generic) (#128).
All built-in wrappers around base types use class_
.
You can no longer refer to a base type with a string or a constructor
function (#170).
convert()
allows you to convert an object into
another class (#136).
super()
replaces next_method()
(#110).
class_any
and class_missing
make it
possible to dispatch on absent arguments and arguments of any class
(#67).
New method_explain()
to explain dispatch
(#194).
Minor property improvements: use same syntax for naming short-hand and full property specifications; input type automatically validated for custom setters. A property with a getter but no setter is read-only (#168).
When creating an object, unspecified properties are initialized
with their default value (#67). DISCUSS: to achieve this, the
constructor arguments default to class_missing
.
Add $.S7_object
and $<-.S7_object
methods to avoid “object of type ‘S4’ is not subsettable” error
(#204).
Dispatch now disambiguates between S4 and S3/S7, and, optionally, between S7 classes in different packages (#48, #163).
new_generic()
now requires
dispatch_args
(#180). This means that
new_generic()
will typically be called without names.
Either new_generic("foo", "x")
for a “standard” generic, or
new_generic("foo", "x", function(x, y) call_method())
for a
non-standard method.
new_external_generic()
now requires
dispatch_args
so we can eagerly check the
signature.
Revamp website. README now shows brief example and more info in
vignette("S7")
. Initial design docs and minutes are now
articles so they appear on the website.
props<-
for setting multiple properties
simultaneously and validating afterwards (#149).new_S3_class()
for referring to S3 classes (#134).
S4 unions are converted to S7 unions (#150).x@.data
-> S7_data()
; probably to be
replaced by casting.signature
->
dispatch_args
.str()
and print()
methodsnew_class()
has properties as 3rd argument (instead of
constructor).These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.