# Version 1.25.0 [2022-06-11]

## New Features

• Now showNews() for Package recognizes ‘NEWS.md’ files too.

## Bug Fixes

• Rdoc no longer injects a dummy \emph{} at the end of @howtocite sections, because it now triggers an R CMD check --as-cran NOTE. The workaround was used to workaround an R CMD check false positive way back in 2004, which has since been fixed.

# Version 1.24.0 [2020-08-24]

• Added $<- and [[<- for Object to the list of S3 methods that tries to ignore objects of class Object that are of the kind that R.oo creates. This fixes conflicts with Object objects that the arrow package produces, which are non-R.oo objects. Other S3 Object methods already do this since R.oo 1.20.0 to workaround similar issues with the rJava package. ## Bug Fixes • getDate() for Package returned NA because it was looking for DESCRIPTION field Date, which has been renamed to Date/Publication. # Version 1.23.0 [2019-11-02] ## Significant Changes • Exporting generic throw(), which previously was a re-export of ditto from R.methodsS3. This change prevents the message “Registered S3 method overwritten by ‘R.oo’: … throw.default R.methodsS3” from appearing when the R.oo package is loaded (directly or indirectly). ## Deprecated and Defunct • Removed defunct method gc() for Object. Use clearCache(..., gc = TRUE). ## CRAN Policy • Dont test example(getBundle.Package) because they may take more than 5 seconds when run on CRAN where installed.packages() will take a long time due to many thousands of packages. # Version 1.22.0 [2018-04-21] ## New Features • Now generic function clone() is always created. This avoids the recurring issues where the creation of generic R.oo::clone() was skipped if another clone() generic already existed during package installation from source. This would in turn cause for instance the R.utils package to fail during loading (R.utils Issue #29). Thanks to Matt Dowle for reporting on this and insisting on a fix. ## Deprecated and Defunct • Removed previously defunct update() for Package; use update.packages(). • Removed previously defunct registerFinalizer() for Object. • Previous deprecated gc() for Object is now defunct; use clearCache(..., gc = TRUE) instead. ## Bug Fixes • Method dispatching of [[<- for Object and BasicObject failed when running R CMD check in R-devel (>= 3.6.0) with environment variables _R_S3_METHOD_LOOKUP_BASEENV_AFTER_GLOBALENV and _R_S3_METHOD_LOOKUP_USE_TOPENV_AS_DEFENV both set to TRUE. # Version 1.21.0 [2016-10-30] ## New Features • Now TAB-completion works on elements of Object, BasicObject, and Class. • Now getElement() works also for Object, Class, and BasicObject. • [[() for Object, Class and BasicObject gained argument exact, but exact = FALSE is currently ignored and treated as exact = TRUE. # Version 1.20.0 [2016-02-17] ## Significant Changes • Package requires R (>= 2.13.0) (April 2011), because R.methodsS3 effectively requires that version. ## New Features • Some S3 methods for R.oo classes Object and Exception would interfere with ditto for rJava objects that had class attributes containing "Object" and "Exception". Although these classes have the same name, and therefore are in conflict, they represent completely different classes. For methods where conflicts have been identified, the R.oo implementations will try to detect the conflict and call the next method instead. • Now print() and startupMessage() for Package report on package date only if date exists. ## Software Quality • CLEANUP: Explicit namespace imports also from utils package. • CLEANUP: Drop unused code. ## Bug Fixes • clazz[[method]]() for Class object clazz did not call the intended static method, as clazz$<method>() would do.

• getClasses() for Package would return NULL.

# Version 1.19.0 [2015-02-27]

## Software Quality

• Now explicitly declare “default” S3 methods for getClasses() and getMethods().

• Dropped non-ASCII characters from R source comments.

## Bug Fixes

• Now charToInt() returns integers as documented (was numerics).

• objectSize() for environment could result in infinite recursive calls if there circular dependencies between environments. Added package test for objectSize() including this case.

• getKnownSubclasses() for Class could throw an error if one of the objects “scanned” for being a function and of class Class would thrown an error from just looking at it. See R-devel thread ‘Inspect a “delayed” assigned whose value throws an error?’ on 2015-01-26 for details.

• Forgot to explicitly import getClasses() and getMethods() from the methods package. Interestingly, this one has never given an error.

• getStaticInstance() for Object now searches the parent/calling environment as well. This covers the case when constructors and objects are created in a local environment (contrary to package namespaces and the global environment).

# Version 1.18.5 [2015-01-05]

## Deprecated and Defunct

• Now update() for Package is defunct; use update.packages().

# Version 1.18.4 [2014-12-29]

## New Features

• Added argument decreasing to ll(), e.g. ll(sortBy = "objectSize", decreasing = TRUE).

# Version 1.18.1 [2014-03-30]

## Bug Fixes

• Now getRdDeclaration(), getRdHierarchy(), and getRdMethods() for Class handles also non-exported methods and classes.

# Version 1.18.0 [2014-02-22]

## Significant Changes

• A registered finalizer function for Object:s no longer calls finalize() on the Object itself unless the R.oo package is loaded, whereas previously it would have tried to temporarily reattach the R.oo package. On the other hand, it is now sufficient to have R.oo loaded for finalize() to be called, whereas in the passed it also had to be attached.

## Deprecated and Defunct

• Deprecated gc() for Object. Use clearCache(..., gc = TRUE) instead.

# Version 1.17.1 [2014-02-05]

## Significant Changes

• Argument properties of ll() defaults to an options, which if not set in turn defaults to a given value. The ll() method is no longer trying to set that option if missing. The option is also no longer set when the package is attached.

# Version 1.17.0 [2014-01-05]

• Now Class$forName() searches all loaded namespaces as a last resort. # Version 1.16.2 [2014-01-05] ## New Features • Now static method Class$forName() accepts optional envir argument for specifying from where to search for the Class object.

• Added argument ‘gc = FALSE’ to clearCache(). It is recommended to start using clearCache(obj, gc = TRUE) instead of gc(obj).

## Deprecated and Defunct

• Defunct registerFinalizer() for Object.

## Bug Fixes

• The temporary finalizer() registered for Object while loading the R.oo package itself would cause cyclic loading of R.oo. The reason was that it checked whether R.oo was available or not, by only looking at attached namespaces but not loaded ones. This bug was introduced in R.oo 1.16.0.

# Version 1.16.1 [2014-01-04]

## Software Quality

• Added several missing importFrom() and S3method() statements to the NAMESPACE file.

# Version 1.16.0 [2013-10-13]

## New Features

• Added argument ‘finalize’ to Object() to specify whether a finalizer should be registered or not. If so, then generic function finalize() is called on the Object. Furthermore, extend() for Object gained argument ...finalize, which, regardless of argument finalize of Object, force the registration of a finalizer (...finalize = TRUE) or the removal of one (...finalize = FALSE). If ...finalize = NA (default), then the finalizer is enabled/disabled according to argument finalize of Object. For backward compatibility reasons, the default behavior is still to register a finalizer for Object:s, but this may change in a future release.

## Software Quality

• Now the package’s system tests assume that it’s only the base package that is attached.

## Bug Fixes

• Now Object finalizers will no longer try to re-attach the R.oo package if library() is in the process of trying to attach another package, because otherwise a cyclic loading of namespaces may occur. This was observed for a package that allocated a temporary Object .onAttach() which then was garbage collected and finalized.

# Version 1.15.8 [2013-10-10]

## Bug Fixes

• It appears that when loading the package it may happen that the R.oo namespace is loaded cyclicly, though this has only been observed while running R CMD INSTALL. This may be because a Package object (R.oo::R.oo) is assigned during the loading of the namespace. Since Package extends() an Object object, this may end up loading R.oo again. To avoid this, R.oo::R.oo is now assigned using delayed assignment.

# Version 1.15.7 [2013-10-08]

## Software Quality

• Now using inherits = FALSE in several internal exists()/get() calls.

# Version 1.15.6 [2013-10-07]

## New Features

• Now Rdoc tag @howToCite does a better job when there are multiple citations in CITATION.

## Software Quality

• Now importing getCall() from stats, iff R (>= 2.14.0).

# Version 1.15.5 [2013-09-28]

## New Features

• Now the R.oo Package object is also available when the package is only loaded (but not attached).

# Version 1.15.4 [2013-09-26]

## Deprecated and Defunct

• Deprecated update() for Package.

• Deprecated non-used registerFinalizer() for Object.

# Version 1.15.3 [2013-09-23]

## Software Quality

• Now properly declaring all S3 methods in the NAMESPACE file.

# Version 1.15.2 [2013-09-20]

## Software Quality

• ROBUSTNESS: Forgot to import R.methodsS3::appendVarArgs().

## Bug Fixes

• The finalizer function registered by extend() for Object:s assumed that the utils is attached while calling capture.output(), which under certain conditions could generate ‘Error in getObjectInfo(this) : could not find function “capture.output”’ while the garbage collector was running. In extreme cases it could also crash R.

# Version 1.15.1 [2013-08-29]

## New Features

• library("R.oo", warn.conflicts = FALSE, quietly = TRUE) will load the package completely silently.

• Now startupMessage() for Package acknowledges library(..., quietly = TRUE).

• setConstructorS3() no longer requires that R.oo is attached (“loaded”).

# Version 1.15.0 [2013-08-23]

## New Features

• Now getHowToCite() for Package utilizes utils::citation(), if package don’t contain a HOWTOCITE file. It is recommended to write packages with CITATION instead of HOWTOCITE.

## Documentation

• Hiding non-essential methods from the Rd help index, e.g. charToInt(), intToChar(), hashCode(), equals(), dimension(), and trim().

## Software Quality

• Package no longer utilizes :::.

## Deprecated and Defunct

• Made get- and showHowToCite() protected methods.

• Dropped deprecated inst/HOWTOSITE replaced by inst/CITATION.

# Version 1.14.0 [2013-08-20]

## Bug Fixes

• ll(private = TRUE) gave an error if the environment contained the special ... argument.

# Version 1.13.9 [2013-07-01]

## Software Quality

• Bumped up package dependencies.

# Version 1.13.8 [2013-06-27]

## New Features

• Added a trial version of Rdoc tag @usage.

# Version 1.13.7 [2013-05-30]

## Documentation

• CRAN POLICY: Now all Rd \usage{} lines are at most 90 characters long.

# Version 1.13.4 [2013-04-08]

## New Features

• Now the @RdocData Rdoc tag also adds an \docType{data} Rd tag.

# Version 1.13.3 [2013-04-04]

## Bug Fixes

• In R.oo v1.13.1, a bug was introduced causing the value of Rdoc tag @allmethods not to be parsed and instead treated as text.

# Version 1.13.2 [2013-04-03]

## New Features

• Now Rdoc$compile() outputs the same Rd files regardless of system settings. More precisely, it always uses \n for line breaks and locale “C” (default) for sorting strings. • Now Rdoc$compile(..., filename) handles when argument filename is a vector of filenames.

# Version 1.13.0 [2013-03-08]

## New Features

• Added support for Rdoc tag @author to have an optional value, e.g. @author "John Doe" as well as @author "JD, FB" where the initials are inferred from the package’s DESCRIPTION file.

• Added compileRdoc() to make it easier to compile Rdoc comments into Rd help files, e.g. Rscript -e "R.oo::compileRdoc()".

• Now getAuthor() and getMaintainer() for Package use the Authors@R field of DESCRIPTION and if not found, then the Author/Maintainer fields. In addition, using argument as = "person" will parse and return the results as a person list.

## Software Quality

• Added an Authors@R field to the DESCRIPTION.

# Version 1.12.0 [2013-03-04]

## New Features

• It is now easier to find help for static method, e.g. help("Object$load") and ?"Object$load".

• For “static” methods (e.g. Object$load()), the Rdoc compiler now generates a \usage{} section without the deprecated Rd markup \synopsis{}, which has been replaced by the static call placed in a comment. It also uses the static method as the name and alias (e.g. \name{Object$load}).

# Version 1.11.7 [2013-01-08]

## Bug Fixes

• ROBUSTNESS: Made the Object finalizers reentrant. This was previously not the case on R prior to R v2.15.2 Patched r61487 iff the garbage collection is triggered from within base::parse() and the R.oo package is not already loaded when the finalizer is called. In such cases, R could crash. Added a package system test for this. Thanks to Duncan Murdoch (R core) for reporting on this and R core for making base::library() reentrant in R (>= 2.15.2 Patched r61487).

# Version 1.11.6 [2013-01-08]

## New Features

• Added argument format to getInternalAddress() for Object.

## Bug Fixes

• The hexadecimal string returned by as.character() for Object would contain the decimal value and not the hexadecimal one.

# Version 1.11.5 [2012-12-28]

## Software Quality

• Further preparation for supporting R.oo and its derived packages to be imported without attaching (“loading”) them.

• Replaced all data.class(obj) with class(obj)[1L].

## Bug Fixes

• getMethods() for Class would give an error if no methods were found for the queried Class.

• In the rare case where getStaticInstance() for Class failed to setup a static instance, the temporary state set internally would not be unset.

# Version 1.11.4 [2012-12-19]

## New Features

• Added startupMessage() for Package.

# Version 1.11.3 [2012-12-18]

## Software Quality

• R CMD check for R devel no longer gives a NOTE on attach().

# Version 1.11.2 [2012-11-29]

## Performance

• Made getKnownSubclasses() for Class a bit faster.

# Version 1.11.1 [2012-11-28]

## Significant Changes

• LIMITATION: Registered finalizer for pure Object:s (i.e. excluding those which are of a subclass of Object) will no longer be called if the R.oo package has been detached. This should be a very unlikely scenario.

## Bug Fixes

• extend() for Object dropped existing field modifiers.

# Version 1.11.0 [2012-11-23]

## New Features

• Now getStaticInstance() for Class sets the environment for the returned Object to that of the Class.

## Software Quality

• Preparing for better support for Object/Class in import-only namespaces, i.e. without packages being loaded.

# Version 1.10.1 [2012-10-16]

## Bug Fixes

• No longer passing ... to NextMethod(), cf. R-devel thread ‘Do *not* pass … to NextMethod()’ - it’ll do it for you; missing documentation, a bug or just me?’ on Oct 16, 2012.

# Version 1.9.5 [2012-04-20]

## New Features

• Added argument export to setConstructorS3().

## Bug Fixes

• If there are no Rd files, then check() of Rdoc would throw the error “object ‘res’ not found”.

# Version 1.7.2 [2010-04-13]

## Bug Fixes

• Package(pkg) would throw “Error in Package(pkgname) : object ‘package’ not found”, if pkg is installed in multiple libraries.

# Version 1.7.1 [2010-03-17]

## Bug Fixes

• Loading the package would generate warnings of of several conflicts. Forgot to export .conflicts.OK after adding the namespace.

# Version 1.6.7 [2010-01-21]

## Documentation

• Added some more “get started” help to help(R.oo).

# Version 1.6.6 [2009-11-19]

## New Features

• Added isOlderThan() for Package.

# Version 1.6.5 [2009-10-30]

## New Features

• ROBUSTIFICATION: Lowered the risk for save() of Object to leave an incomplete file due to say power failures etc. This is done by first writing to a temporary file, which is then renamed. If the temporary file already exists, an exception is thrown.

# Version 1.6.4 [2009-10-27]

## Software Quality

• Removed a stray print() statement in attachLocally() for Object:s.

# Version 1.6.3 [2009-10-26]

## New Features

• Added objectSize() for environments.

• The $<- function goes through alternatives where to save the new value, e.g. set<Name>(), <name> field, static <name> field etc. When a “match” found and the value was assigned, it did not return (except for the set<Name>() match), but instead continued search for the rest. One effect of this was that the new value was always assign to the static field too. The fix make the code run faster too. Thanks Edouard Duchesnay at Service Hospitalier Frédéric Joliot, Commissariat à l’Energie Atomique, France for spotting this. # Version 1.1.0 [2005-07-18] ## New Features • Added argument replaceNewline to getDescription() of Package. • Now as.character() of Package reports the title, the license, and the description, but no longer if the package is part of a bundle. The latter was too slow since it had to scan all installed packages. • Now print() of Class passes ... to getDetails(), that is, now print(Class, private = TRUE) will work too. • Added attachLocally() to the Object class. • Added extend.default(), which can be used to extend any type of object. • Now pure Object:s are also finalized. Before only subclasses defined via extend(<Object>, "<SubClass>", ...) was finalized. This was not a big deal, because the finalize():er of the Object class is empty anyway. ## Documentation • Added a section on “Defining static fields” to the help page of Object. ## Bug Fixes • Rdoc$compile() sometimes generated the error invalid regular expression '\name{[^\}]*}' (forgot to escape { and }). Fixed. Thanks Lorenz Wernisch, School of Crystallography, University of London for reporting this.

• getDetails() in Class would list private and protected methods as public.

• Argument enforceRCC of setMethodS3() was not passed to setGenericS3().

# Version 1.0.5 [2005-06-03]

## New Features

• Now the static load() method in Object asserts that the loaded Object inherits from the class that the static object, which is used to call load(), is of. Thus, Object$load(...) will load all Object:s, whereas MyClass$load(...) will only load objects inheriting from MyClass.

• Now an @RdocMethod tag will not add keyword “internal” if the class starts with a lower case, e.g. matrix.

• A @keyword foo can now be removed with @keyword -foo. Order is irrelevant, since @keyword:s are added at the very end.

# Version 1.0.4 [2005-05-02]

## New Features

• Added getDevelUrl() to the Package class.

# Version 1.0.3 [2005-02-28]

## New Features

• Argument appendVarArgs of setMethodS3() is now ignored if a replacement function (named nnn<-) is defined.

# Version 1.0.2 [2005-02-25]

## Bug Fixes

• setMethodS3(..., abstract = TRUE) generated warnings of type using .GlobalEnv instead of package:<pkg>. Found a way (ad hoc?) to get rid of them. See source code for details. This should remove similar warnings from packages loading R.oo.

# Version 1.0.1 [2005-02-20]

## New Features

• Package now outputs “See ?R.oo for help” when loaded.

• setMethodS3(..., abstract = TRUE) now defines abstract methods with ... as the only argument(s).

## Software Quality

• Now using three-digit version numbers, e.g. a.b.c where a,b,c in 0,1,…,9. ‘a’ is updated for major updates, ‘b’ for minor updates and ‘c’ is for minor revisions.

• Removed require(methods) for R v2.0.0 and above.

# Version 1.00 [2005-02-15]

## Significant Changes

• Moved to CRAN.

# Version 0.70 [2005-02-15]

## New Features

• Added appendVarArgs = TRUE to setMethodS3(), which specifies that ... should be added, if missing.

• Add argument ... to all methods to make it even more consistent with any generic function. This is also done for a few methods in the R base packages.

## Software Quality

• Package now passes R CMD check on R v2.1.0 devel without warnings.

# Version 0.69 [2005-02-11]

## New Features

• Renamed get- & showDescription() to get- & showDescriptionFile() and added getDescription() to get the Description field of DESCRIPTION.

## Documentation

• Added an example to setMethodS3() that is not using Object().

## Software Quality

• Package now passes R CMD check on R v2.1.0 devel also. Had to modify a few lines of code to meet the new stricter regular expression patterns.

## Deprecated and Defunct

• Moving away from trycatch() in favor of tryCatch(). trycatch() remains for a while, but will be made deprecated in future version and later probably defunct.

# Version 0.68 [2005-02-09]

## New Features

• By default, now Rdoc$compile() runs Rdoc$check() at the end.

• Rdoc: Added a first simple test for undefined top-level tags in the generated Rd code. Utilizes tools::Rd_parse(), which might be renamed etc. according to its help page.

• Tag-variables such as @author now search for value in options() too.

# Version 0.67 [2004-10-23]

## Bug Fixes

• getRdMethods() in Class returned empty \tabular{rll}{} if no methods exist, but this gives an error in R CMD Rdconv.

# Version 0.66 [2004-10-21]

## New Features

• When using setMethodS3(..., abstract = TRUE) in a package that uses lazy loading, which all new packages do by default, warnings like “using .GlobalEnv instead of package:utils” will be generated the first time the abstract method is accessed. This is because eval() is used to create the abstract method; we are looking for a way that will not generate these warnings, although they are not serious. Example: library(R.colors); print(getColorSpace.Color).

• Added getEnvironment() to the Package class.

## Documentation

• Added help to more methods.

## Software Quality

• Made the package compatible with R v2.0.0 too. Had to move example file ‘Exception.R’ from data/ to inst/misc/ and update the help example for Rdoc. Update the example of unload() for the Package class to load the boot package instead of obsolete ts.

## Bug Fixes

• Rdoc tags was not be parsed by the Rdoc compiler for deprecated methods.

# Version 0.65 [2004-06-27]

## New Features

• Substantially improved the loading of all my packages. The Package() constructor, which was called when a new package was loaded, was slow unnecessarily slow because of an internal call to installed.packages().

• Added known generic function as.vector().

## Documentation

• Added documentation to many methods.

## Bug Fixes

• getInternalAddress() for class Object was “too” hard coded making it not work correctly on for instance Suse Linux. Assumed fixed positions of the hexadecimal address of the environment. Now a gsub() with a backreference is used. Should be more safe.

# Version 0.64 [2004-04-21]

## Bug Fixes

• Fixed deprecated warning about package.description() that occured R v1.9.0 such that the code still works for older versions of R. This was needed for the Package class.

# Version 0.63 [2004-03-03]

## New Features

• Updated trycatch() (and the Exception class) to work with R v1.8.1. If running R v1.8.1, then tryCatch() is used internally. For R v1.7.1 and before the old trycatch() is used, which will be made deprecated later on. Added a throw() for the error class too for rethrowing errors.

• Update the Rdoc compiler to generate correct \name and \alias Rd tags.

## Deprecated and Defunct

• To anyone using setClassS3(), please use setConstructorS3() instead; setClassS3() is deprecated and will be phased out soon!

## Bug Fixes

• Package class - from R v1.8.1 we noted that R CMD check made installed.packages() return multiple matches of the same package. This might have been a problem before too, but R CMD check never complained.

# Version 0.62 [2003-12-31]

## New Features

• Added showDescription(), getHistory(), showHistory(), getHowToCite(), and showHowToCite() to the Package class.

## Bug Fixes

• For some Rdoc types the \keyword{} statement was placed on the same line as the previous Rd statement. This sometimes generated cluttered Rd index files.

# Version 0.61 [2003-12-16]

## New Features

• Package: update() does now also reload the updated package by default.

• Exception: Now the throw() method includes the complete stacktrace too when generating a error signal. In other words, the user will automatically see the stacktrace of the error if the error is not caught. Same for stop().

• Rdoc: Added the tag @RdocDocumentation for general documentation.

# Version 0.60 [2003-10-28]

## New Features

• Added argument compress = TRUE to Object’s save() to make it more explicit that compression is supported too. Compression is supported by all R systems since R v1.5.0. See ?capabilities.

• Now Rdoc tries to create the ‘man/’ (destPath) directory if missing.

# Version 0.50 [2002-12-20]

## New Features

• Updated try(), which a slight modification to the base::try() for improved exception handling, to have its own internal restart() function (just like base::try()), because restart() has been made deprecated from R v1.6.0. This is how the try() in the base package does it.

# Version 0.49 [2002-12-15]

## New Features

• Added the finalizer method finalize(), which any subclass can override and that will be called by the garbage collector just before an object is about to be removed from the memory.

• Added default function for equals().

• Added argument overwrite = TRUE and conflict = c("error", "warning", "quiet") to setMethodS3().

• Now extend() in class Object removes duplicated class attributes.

• Now it is possible to create methods (also generic) with one (or several) . (period) as a prefix of the name. Such a method should be considered private in the same manner as fields with a period are private.

• Added argument path = NULL to save() and load() in class Object. It will remove the need using paste() etc.

• For ll(), replaced "getClass" with "data.class" in the properties argument. Since data.class is almost the same as mode, mode was also removed.

• SPELL CHECK: “…name name…” in one of setGenericS3()’s error messages. Thanks Gordon Smyth, WEHI, Melbourne, for the comment.

## Deprecated and Defunct

• COMPATIBILITY FIX: Removed default getClass(), because it was not would not work with the methods package.

• Removed deprecated and obsolete is.interface().

## Bug Fixes

• The Rdoc class listed too many methods in the “Methods inherited” section.

# Version 0.48 [2002-11-23]

## Significant Changes

• Renamed setClassS3() to setConstructorS3(), since this is what it is actually doing. Keeping setClassS3() for backward compatibility but made it deprecated.

## New Features

• Updated setGenericS3() to always create generic functions with no arguments except ... to follow the RCC.

• Now $() and $<-() in class Object and Class also gets and sets attribute values too, respectively.

• Added getInstanciationTime(), which returns the time point when the object was created.

• Updated getField() of class Class to call generic method getField() and not getField.Object().

# Version 0.42 [2002-05-31]

## Software Quality

• Removed forgotten debug messages in setGenericS3().

# Version 0.41 [2002-05-26]

## New Features

• Moved about() from R.base to this package and removed old description().

• Now the package reports its name, version and date if it was succesfully loaded.

• Added argument dontWarn to setGenericS3(), which by default is set so no warnings are produced for renamed methods in the base package.

• Copied packagePaths() from package R.base to package R.oo, since it is required in R.oo and we do not want R.oo to depend on R.base.

## Software Quality

• Package now passes the R CMD check with 5 warnings.

# Version 0.40 [2002-05-05]

## New Features

• The classes Throwable and Exception have been transfered to here from the R.lang package. With the trycatch() they are really useful.

• throw() and trycatch() are now available in both R.base and R.oo.

• Added createClassS3() and internal variable .NewClassesNotCreated.

• $.Object() and $.Reference() now returns NULL if a field/method etc is not found! Before it an error was thrown.

## Bug Fixes

• trycatch() didn’t work methods created by setMethodS3(). This was due to I did (internally):

object <- try(eval(substitute(object, envir=envir)))

object <- try(eval(substitute(object), envir=envir))

Hmm, a tricky typo to find since it worked elsewhere.

## Bug Fixes

• setGenericS3() gave an error if one tried to set a generic function with the same name as an R object that was not a function. A simple add of argument mode = "function" to the exists() check fixed this.

# Version 0.38 [2002-04-02]

## Bug Fixes

• Bug fix in gco(). R v1.4.0 made it crash.

# Version 0.28 [2002-01-09]

## New Features

• Made R.oo compatible with new R v1.4.0 and the new package methods.

# Version 0.27 [2002-01-02]

## New Features

• Internally renamed the methods, e.g. new(), getClass(), and extends(), that conflicted with methods defined in the new R package methods. Hopefully, these changes makes methods run when R.classes is loaded.

• Starting to seperate Object methods and .Reference methods. Eventually maybe R.oo Object’s could work very similar to methods object where .Reference is just an add-on to make the Object’s referensable.

# Version 0.26 [2001-12-29]

## New Features

• First steps to make R.classes work together with the new methods package. These fixes made R.classes work when methods was loaded, but methods didn’t work when R.classes was loaded.

• This version was never released to the public.

# Version 0.25 [2001-08-09]

## New Features

• Added super(), which provides a simple way to access methods in the super class.

# Version 0.24 [2001-08-07]

## New Features

• Added support for this[[field]] and this[[field]] <- value when this is a reference. Another step away from get- and putObject().

• Introduced the modifers() function instead of old attr(...).

## Documentation

• Updated many of the out-of-date examples in the help pages.

## Performance

• Improved the speed of the garbage collector and it can now also run until no more objects are deleted.

# Version 0.23 [2001-08-04]

## Performance

• Major break-through in memory and speed efficiency. A lot of expressions are now evaluated directly in the object space environment, which means that no copying between the object space and the current environment is needed. This improvement makes the need for getObject() and setObject() much less of interest and they will probably be made obsolete or private, which is another step towards a more user friendly oo core.

# Version 0.22 [2001-08-03]

## New Features

• Improved the error and warning messages for false references.

• delete() can now remove any number of any kind of objects, i.e. it is now more consistent to rm().

• Created this HISTORY file. Everything below is recreated from from this date and is therefore not complete.

# Version 0.19 [2001-07-06]

## Significant Changes

• Renamed the package to R.oo (from com.braju.oo).

# Version 0.14 [2001-04-30]

## Bug Fixes

• Bug fixes in garbage collection algorithm.

# Version 0.9 [2001-04-02]

## New Features

• Support for static methods. A static method is declared as myStatic = METHOD+STATIC and implemented as myStatic.myClass <- function(arg1, arg2, ...). Note that there is no this argument to static classes.

# Version 0.8 [2001-04-01]

## Significant Changes

• Totally changed the declaration of methods in a class. Previously, one wrote myFcn = function() NULL and now one writes myFcn = METHOD where METHOD is predefined constant. This allows fields in a class to also contain functions, i.e. myField = sqrt(x), which was not possible in previous versions.

# Version 0.5 [2001-03-27]

## Significant Changes

• This is the first public release.

# Version 0.1 [2001-03-12]

• The very first version.

# Version 0.0 [2001-03-10]

• The very first attempt to create an object-oriented core for R. At this moment I was a beginner in R.