- In preparation for normalization of an official R API, references to non-API functions
DDVAL
,Rf_findVarInFrame3
,SET_TYPEOF
,SET_BODY
,SET_FORMALS
andSET_CLOENV
have been removed. The calls to PROMSXP accessor functions remain, as they are central to this package's purpose and it is not yet clear what the official API will have in their place.
- Fix issues raised by CRAN:
- Always cast argument of
printf("%p", ...)
to(void *)
- Always cast argument of
- The representation of quotations has been changed. Quotations are now represented as expressions with a class attribute. This means that you can
eval
a quotation and it will return the same value that a promise would return when forced. This also means that you canbquote
orsubstitute
to place a quotation into an expression, and the resulting expression will evaluate hygienically. - The better to support hygiene,
arg*
will check if there a quotation in the argument expression (as it would be if the call had been done withbquote
) and transparently unwrap it. - Added method
is_forced_.name
. - Added
arg_value
to peek at values of promises (without forcing). - Added
as.quo
conversion methods for formulas andrlang
quosures.
- Added some support for "weird" promises. These are created by primitive s3 methods dispatched from a generic like
c
. These promises are forced (have a value, which was dispatched from) but still have an environment.
- Added memory protection calls where identified by
rchk
. - Comply with
-Wstrict-prototypes
.
- Implemented
all.equal
method forquotation
objects. dots
andquotation
objects now print themselves in adeparse()
-like style.is_*_()
functions how have methods for promises/dots.set_
andset_enclos_
are added to help with making assignments.
- Fixed handling of missing arguments in
do
andquo
. do
now passes arguments via a temporary binding of...
in some cases. This should fix some cases wheresys.calls()
returned naked promises, which made for confusing debugging. For R versions before 4.0 the old behavior is retained.- Fixed man pages which were not generated completely.
locate(fn, mode="function")
now works in the case wherefn
is a forced promise containing a function.
caller
now correctly returns itsifnotfound
argument.
Initial CRAN Release.