/
ONEWS
10276 lines (7066 loc) · 371 KB
/
ONEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Dear Emacs, please make this -*-Text-*- mode!
This file covers NEWS from the release of 2.0.0 up to the
release of R-2.10.0. See 'NEWS' (or doc/html/NEWS.html or
doc/NEWS.Rd) for subsequent changes.
**************************************************
* *
* 2.9 SERIES NEWS *
* *
**************************************************
CHANGES IN R VERSION 2.9.2 patched
NEW FEATURES
o On systems using ICU for collation (including Mac OS X), using
Sys.setlocale() to change the LC_COLLATE setting is more
likely to change the collation provided by ICU.
BUG FIXES
o On systems using zipped data and help (Windows) the names of
datasets could clash with temporary filenames used when
running examples, causing errors.
o as.complex() sometimes warned about NAs on coercions and
sometimes not (when the C function asComplex was used, e.g. on
list elements). (PR#13942)
o cat() on an unopened connection could close it twice, and
with file() connections segfaulted on some systems.
o Printing a list could segfault if the elements are nested too
deeply.
CHANGES IN R VERSION 2.9.2
NEW FEATURES
o install.packages(NULL) now lists packages only once even if they
occur in more than one repository (as the latest compatible
version of those available will always be downloaded).
o approxfun() and approx() now accept a 'rule' of length two, for
easy specification of different interpolation rules on left and
right.
They no longer segfault for invalid zero-length specification
of 'yleft, 'yright', or 'f'.
o seq_along(x) is now equivalent to seq_len(length(x)) even where
length() has an S3/S4 method; previously it (intentionally)
always used the default method for length().
o PCRE has been updated to version 7.9 (for bug fixes).
o agrep() uses 64-bit ints where available on 32-bit platforms
and so may do a better job with complex matches.
(E.g. PR#13789, which failed only on 32-bit systems.)
DEPRECATED & DEFUNCT
o R CMD Rd2txt is deprecated. (It is just a wrapper for
R CMD Rdconv -t txt.)
o tools::Rd_parse() is deprecated and will be removed in 2.10.0
(which will use only Rd version 2).
BUG FIXES
o parse_Rd() still did not handle source reference encodings
properly.
o The C utility function PrintValue no longer attempts to print
attributes for CHARSXPs as those attributes are used
internally for the CHARSXP cache. This fixes a segfault when
calling it on a CHARSXP from C code.
o PDF graphics output was producing two instances of anything
drawn with the symbol font face. (Report from Baptiste Auguie.)
o length(x) <- newval and grep() could cause memory corruption.
(PR#13837)
o If model.matrix() was given too large a model, it could crash
R. (PR#13838, fix found by Olaf Mersmann.)
o gzcon() (used by load()) would re-open an open connection,
leaking a file descriptor each time. (PR#13841)
o The checks for inconsistent inheritance reported by setClass()
now detect inconsistent superclasses and give better warning
messages.
o print.anova() failed to recognize the column labelled
P(>|Chi|) from a Poisson/binomial GLM anova as a p-value
column in order to format it appropriately (and as a
consequence it gave no significance stars).
o A missing PROTECT caused rare segfaults during calls to
load(). (PR#13880, fix found by Bill Dunlap.)
o gsub() in a non-UTF-8 locale with a marked UTF-8 input
could in rare circumstances overrun a buffer and so segfault.
o R CMD Rdconv --version was not working correctly.
o Missing PROTECTs in nlm() caused "random" errors. (PR#13381 by
Adam D.I. Kramer, analysis and suggested fix by Bill Dunlap.)
o Some extreme cases of pbeta(log.p = TRUE) are more accurate
(finite values < -700 rather than -Inf). (PR#13786)
pbeta() now reports on more cases where the asymptotic
expansions lose accuracy (the underlying TOMS708 C code was
ignoring some of these, including the PR#13786 example).
o new.env(hash = TRUE, size = NA) now works the way it has been
documented to for a long time.
o tcltk::tk_choose.files(multi = TRUE) produces better-formatted
output with filenames containing spaces. (PR#13875)
o R CMD check --use-valgrind did not run valgrind on the package tests.
o The tclvalue() and the print() and as.xxx methods for class
"tclObj" crashed R with an invalid object -- seen with an
object saved from an earlier session.
o R CMD BATCH garbled options -d <debugger> (useful for
valgrind, although --debugger=valgrind always worked)
o INSTALL with LazyData and Encoding declared in DESCRIPTION
might have left options("encoding") set for the rest of the
package installation.
CHANGES IN R VERSION 2.9.1
NEW FEATURES
o New function anyDuplicated(x) returns 0 (= FALSE) or the index
of the first duplicated entry of x.
o matplot(), matlines() and matpoints() now also obey a 'lend'
argument, determining line end styles. (Wish of PR#13619).
o bw.SJ(), bw.bcv() and bw.ucv() now gain an optional 'tol'
argument allowing more accurate estimates.
o new.packages() no longer regards packages with the same name
as a member of an installed bundle as 'new' (this is now
consistent with the dependency checks in install.packages()).
It no longer reports on partially installed bundles (since
members can be updated individually if a bundle is unbundled).
o old.packages() and hence updates.packages() will look for
updates to members of package bundles before updates to the
whole bundle: this allow bundles to be split and installations
updated.
o nlminb() gives better non-convergence messages in some cases.
o S3 method dispatch will support S4 class inheritance for S3
methods, for primitives and via UseMethod(), if the argument
S3methods=TRUE is given to setClass(). S4 method dispatch
will use S3 per-object inheritance if S3Class() is set on the
object. See ?Methods and the paper referenced there.
o R CMD INSTALL is more tolerant of (malformed) packages with a
'man' directory but no validly named .Rd files.
o R CMD check now reports where options are used that cause some
of the checks to be skipped.
o RSiteSearch has been updated to be consistent with the new
layout of the search site itself, which now includes separate
options for vignettes, views, and r-sig-mixed-models, as well
as changed names for r-help. (Contributed by Jonathan Baron.)
o That R CMD check makes use of a
<pkg>/tests/Examples/<pkg>-Ex.Rout.save file as a reference
result is now documented in 'Writing R Extensions'.
DEPRECATED & DEFUNCT
o print.atomic() (defunct since 1.9.0) has been removed since it
caused confusion for an S4 class union "atomic".
o png(type="cairo1") is deprecated -- it was only needed for
platforms with 1.0 <= cairo < 1.2.
BUG FIXES
o The ... argument was not handled properly when ... was found
in the enclosure of the current function, rather than in the
function header itself. (This caused integrate() to fail in
certain cases.)
o col2rgb("#00000080", TRUE) would return the background colour.
(Reported by Hadley Wickham.)
o interaction() now ensures that the levels of the result are unique.
o packageDescription() and hence sessionInfo() now report the correct
package version also for a non-attached loaded namespace of
a version different from the default lib.loc.
o smoothScatter() now also works when e.g. xlim[2] < xlim[1].
o Invalid use of sprintf() such as sprintf("%S%") now give an error
instead of a segmentation fault, as do very unusual cases such as
sprintf("%s", tryCatch(stop(), error=identity)). (It was
always documented that misuse could crash R in
platform-dependent ways.)
o parse_Rd() would mishandle braces when they occurred at
the start of a line within an R string in an Rd file (reported
by Alex Couture-Beil) or when they occurred in an R comment
(reported by Mark Bravington).
o readNEWS() missed version numbers with more than one digit.
o building R --without-x no longer fails (PR#13665)
o printCoefmat(cbind(0,1)) now works too (PR#13677)
o bw.SJ(c(1:99, 1e6)) now works too.
o Rd2txt() could not handle empty descriptions of items in an Rd
file (reported by Mark Bravington), and did not wrap long lists
of arguments if they were given in a single item.
o stars() would do a partial plot when called with plot = FALSE;
it now consistently returns the locations of the stars.
o Rd2latex() could not handle empty sections.
o old.packages() and hence update.packages() would fail on a
repository which contained only one package but with multiple
versions of that package.
o as.character.Rd() added extra braces when displaying two-argument
macros. (Report and fix by Manuel Eugster.)
o unsplit() was misbehaving in the case of single-column data
frames. (Reported by Will Gray.)
o as(I(1), "vector") and similar coercions from objects of
"unregistered" S3 classes now work.
o srcref records produced by parse() and parse_Rd() did not record
the encoding of the source file. (Reported by Romain Francois.)
o The X11 version of View() was misbehaving in MBCS locales, and
PgUp/PgDn now behave better, thanks to a patch from Ei-ji Nakama.
o R CMD check looked at the environment variable PDFLATEX, but
as from R 2.8.1 R CMD Rd2dvi used R_PDFLATEXCMD in
preference, and that was set by R CMD (and not PDFLATEX). Now
R CMD check looks at R_PDFLATEXCMD.
o sprintf() now signals an error when the result of single format
specification would be longer than the limit (8192 bytes); it would
return "somewhat random" results or segfault previously. (PR#13667)
Further, arguments of type "language" or "symbol" are no longer
allowed, as these, e.g., sprintf("%s", quote(list())), typically
lead to unexpected results or hard to understand error messages.
o The new (in 2.9.0) 'stringsAsFactors' argument to expand.grid()
was not working: it now does work but has default TRUE for
backwards compatibility.
o tcrossprod(<1d-array>, <matrix>) now does work when the arguments
are of compatible dimensions.
o qbinom() now is accurate also in (large size, small prob)
cases. (PR#13711)
o The calculation of the Spearman p-value in cor.test() is
slightly more accurate in some cases. (PR#13574)
o The digamma(), trigamma() and psigamma() functions could be
inaccurate for values of x around 1e-15 due to cancellation.
(PR#13714).
o median.default() was altered in 2.8.1 to use sum() rather
than mean(), although it was still documented to use mean().
This caused problems for POSIXt objects, for which mean() but
not sum() makes sense, so the change has been reverted.
o Assigning an extra 0-length column to a data frame by
DF$foo <- value gave a corrupt data frame rather than failing.
(PR#13724) This also happened for DF[["foo"]] <- value.
o R CMD INSTALL no longer gives a spurious warning about old R
versions ignoring multiple dependencies, if the conditions are
known to be satisfied.
o The test for setting dim() allowed a value with two or more
NAs to be set on a 0-length object. (PR#13729) Also, it
allowed an even number of negative values.
o xtfrm(), rank(), sort() and order() did not always make use of
custom comparison methods specific to the class of elements
being sorted.
o Increase NAMED value on 'seq' value in for() loop so loop code
cannot modify 'seq' value.
o Prevent rectangles of size < 0.5 pixel from disappearing in
Quartz when using rastered backend. (PR#13744)
o Printing _NA_complex_ had a low-level thinko; patch thanks to
Bill Dunlap.
o CP1257 encoding for postscript/PDF has been corrected. (PR#13736)
o aov() with an error term was evaluating the ... arguments in
2.9.0 whilst checking their names, so could fail by evaluating
them in the wrong place. (PR#13733)
o The print() method for arima() failed if all coefs were fixed.
o R CMD INSTALL --no-latex was not implemented in 2.9.0 (only).
o Added a needed PROTECT call in RunFinalizers to handle cases where
the routine is called recursively from a GC in a finalizer.
o Constructing error messages about unused arguments in calls to
closures no longer evaluates the arguments.
o qr(x, LAPACK=TRUE) did not coerce integer x to numeric.
o qr.coef() misbehaved in the LAPACK case with a matrix RHS, so
that solve(qr(x, LAPACK=TRUE)) gave wrong results. (Found by
Avraham Adler, PR#13762 by Ravi Varadhan.)
CHANGES IN R VERSION 2.9.0
NEW FEATURES
o Package 'Matrix' is now a recommended package contained in the
basic R distribution. It provides S4 classes and methods for
dense and sparse matrices, often by using the numerical
libraries Lapack and from the SuiteSparse collection CHOLMOD,
CSparse, and SPQR among others.
o pdf() and postscript() gain a 'useKerning' argument to place
strings using kerning (which had previously been ignored in
display but not in strwidth), based in part on an idea and
code from Ei-ji Nakama. The default is TRUE.
Kerning involving spaces is now ignored (it was previously
only used in the computation of string widths).
o seq.default() and seq.int() ensure that the result is within the
interval [from, to] even when the last value would previously
have been slightly out of range because of the allowance for
rounding error in computing the number of elements.
o boxplot() gains a simple 'matrix' method, enabling boxplot(mat)
instead of boxplot(data.frame(mat)).
o zip.file.extract() gains an optional 'dir' argument (but use
unzip() instead).
o source() with 'encoding' specified (and not as "unknown") marks
the encoding of character strings in Latin-1 and UTF-8
locales.
o parse(text=z) now marks the encoding of character strings in
Latin-1 and UTF-8 locales if 'z' is of known encoding (that is
all elements are either ASCII or marked as Latin-1 or UTF-8).
o sprintf() does stricter error checking on input formats to
avoid passing invalid formats to the OS (which have a tendency
to crash under such inputs).
o expand.grid() gains a 'stringsAsFactors' argument to ask for
automatic conversion of character vectors to factors (which
happened for many years but was not previously documented).
[This did not actually work prior to R 2.9.1.]
o bxp() now computes the 'ylim' including the outliers only if
'outline = TRUE'. (Wish of PR#13196)
o barplot() gains a 'args.legend' argument. (Wish of PR#13265).
o RweaveLatexSetup() now accepts all (and not just some) options
passed through from Sweave()
o cumsum(x) and cumprod(x) for double precision x now use a long
double accumulator where available and so more closely match
sum() and prod() in potentially being more accurate.
o plot() methods for "stepfun" (and hence "ecdf") gain an 'col'
argument, allowing to set all three colors simultaneously.
o Iterating over a factor in a for loop now coerces to a character
vector (rather than using the integer codes).
o data.frame() now recycles columns of list arguments, not just
vectors and factors.
o plot.ts(plot.type="multiple") now makes use of *.lab and
*.axis graphical parameters (wish of PR#13134 and 13135).
o Classes can be exported from a name space using the NAMESPACE
file directive 'exportClassPattern' which has the same syntax
as 'exportPattern'.
o strftime() now converts its first argument with as.POSIXlt()
and so is no longer an alias for format.POSIXLt.
o body<-() now treats list values consistently with other
types: they no longer need to be wrapped in a list() call.
o option("pdfbrowser") is now set on Windows as well as on Unix-alikes.
o object.size() now returns an object of class "object_size" and
has a print() method.
o [col/row]Sums(), *Means() now have an additional '...' argument,
so that they can more easily be turned into generic functions.
o Package 'tools' contains dependsOnPkgs() to compute reverse
dependencies.
o Strict type checking is now turned on: this catches more
internal corruptions, and some badly written contributed code.
o There are new functions in package 'tcltk', tk_choose.files(),
tk_choose.dir() and tk_messageBox(), analogues of functions
available on Windows (the last is an analogue of winDialog).
o Sys.glob() now does tilde expansion on all platforms.
o read.table() and friends gain a 'fileEncoding' argument to
make re-encoding of input just a little bit simpler.
o grep() gains an 'invert' argument mimicking 'grep -v/--invert'.
o strwrap() now allows a separate prefix for the first line.
o grep() has a more efficient sibling grepl() that returns a
logical vector.
o xfig() has new arguments 'defaultFont' and 'textSpecial'
contributed by Sebastian Fischmeister.
o parse() and parse_Rd() now point to syntax errors in the
reported error context, and include the filename and line and
column numbers so smart text editors can jump to the error
location.
o str(<1d-array>) now writes "[1:n(1d)]" instead of the previous
less clear "[, 1:n]".
o New function testInstalledPackage() in package 'tools' allows
the examples (and if they were installed) any package-specific
tests to be run on an installed package.
testInstalledPackages() can run all the examples and tests in
the standard and/or recommended packages. Also
testInstalledBasic() can run the basic tests (if installed).
o file.copy() now has a 'recursive' argument.
o Errors in setOldClass() will cause a previous definition to be restored.
o Ambiguities in class inheritance and method selection resulting
from duplicates in superclasses are now resolved by requiring
(if possible) consistency with all the superclass inheritance. The
rules for method selection have been revised to take advantage of
the improved ordering.
See ?Methods and the reference there related to inheritance.
o New function unzip() in package 'utils' to expand or list zip
archives.
o Replacement functions for class() and oldClass() will unset
the S4 bit when the replacement can't be an S4 object;
oldClass() will return the S3 class for S4 objects with slot
.S3Class.
o clip() takes extra steps to avoid the next graphics call
resetting the clip region.
o New function sample.int() to provide documented access to the
internal part of sample() (sampling from seq_len(n)).
o New version of withVisible() for better handling of cases like
withVisible(eval.parent(....)). Moved to package 'base' with a
view to replace .Internal(eval.with.vis) in source() later.
o showClass() which is also used to auto-print class definitions, now
mentions the package where the class comes from, if there is one.
o simulate(obj) now also works for "glm" objects and for weighted
fits, thanks in part to contributions from Ben Bolker and
Heather Turner. There is now a means to extend the methods
available for "glm" objects, as glm families can have an
optional 'simulate' component.
o S4 classes that inherit from any of the "structure" classes or
from "vector" will turn on methods for all the "Ops" group of
functions when the package containing the classes is
loaded. See class?structure.
o A mechanism now allows S4 classes to inherit from object types
"environment", "externalptr" and symbol ("name"). See ?setClass.
o demo() gains 'echo' and 'ask' arguments, with defaults similar
to example().
o library() no longer checks for the packages merged during the
re-organization of 1.9.0.
o New function poisson.test() in package 'stats' for exact test
of rates and rate ratios.
o New function isdebugged() indicates whether its argument has the
debug flag set or not.
o ls.str() [via print method] now also works when some objects in
the environment are missing().
o Subsetting S4-objects (without an explicit "[" method) no longer
preserves the class in cases like setClass("C",
contains="list"); This reverts a "bug fix" activated in R 2.8.0.
o .packages() and .find.packages() no longer check the package
info for installed packages with dumped metadata, since this
was checked when the package was installed. .packages() only
considers such packages to be validly installed (any others
were installed in a long-obsolete version of R). Both changes
speed up searches in libraries of thousands of packages.
o boxplot() uses butt line endings for its median line
(suggestion of Uwe Ligges, PR#13553).
o S4 objects passed to a non-default S3 method will be converted
to a valid S3 object with the S3 class. See the section on
inheriting from non-S4 classes in ?Classes.
o A new class "nonStructure" has been defined; classes that extend
a vector class but that should lose their slots under Math or
Ops functions should extend this class. See class?nonStructure.
o axis.POSIXct() now plots in the timezone marked for its inputs
(if any) rather than in the local time. The latter was a
deliberate choice, but is easy to select by removing the
'tzone' attribute. (Suggestion of Dan Kelley.)
o A new function classesToAM() returns an adjacency matrix
representing the inheritance of the classes specified. Allows
better human examination of the patterns, e.g. by using the
matrix as input to one of the graph packages (see the
documentation).
o X11options(antialias = "none") now works, for consistency with
X11().
o sprintf() now allows zero-length arguments (with a zero-length
result). (Suggestion of Bill Dunlap.)
o unlink() is now able to remove broken symbolic links on
Unix-alikes.
o New selectSuperClasses() utility in package 'methods'.
o HoltWinters() now allows parameters alpha and beta to be fixed
at 0 and hence beta = FALSE and gamma = FALSE are used to
specify restricted models.
o A new function smoothScatter() has been added to package
'graphics'. It is appropriate for very dense scatter plots
and uses density estimation and color to reflect density of
plotting.
DEPRECATED & DEFUNCT
o allGenerics() is defunct.
o Use of allocVector(CHARSXP ...) is defunct and gives an error.
o The compatibility define for graphics structure NewDevDesc in
GraphicsDevice.h has been removed.
o Support for versioned installs (R CMD INSTALL --with-package-versions
and install.packages(installWithVers = TRUE)) has been removed.
Packages installed with versioned names will be ignored.
o The numeric and power(0.5) forms of argument to make.link()
which were deprecated in 2.4.0 are now defunct: use power()
directly.
o Conversion to Sd and Ssgm by R CMD Rdconv is now defunct.
o Support for R --gui=gnome is now defunct (and package
gnomeGUI has been withdrwan as it used a long-obsolete version
of GNOME).
o R CMD SHLIB on Windows will call the first target (not 'all') in
Makevars[.win] in future versions: so make 'all' the first
target if you have any.
UTILITIES
o R CMD build now also uses a Makevars[.win] file for cleaning
up src/.
o R CMD Rd2dvi and R CMD check are now able to cope with Cyrillic
characters in UTF-8 if environment variable _R_CYRILLIC_TEX_
is set to a non-empty value and the latex system has suitable
fonts (thanks to a hint from Alexey Shipunov).
o New function rtags() in package 'utils' that provides etags-like
indexing capabilities for R code files.
New front-end script R CMD rtags provides an interface to the
rtags() function (see R CMD rtags --help for details).
o New environment variable R_TEXI2DVICMD to hold the path (if any)
to 'texi2dvi' found at configure time: this now provides the
default to option("texi2dvi").
o massage-Examples.pl has been replaced by the R function
tools:::massageExamples().
o R CMD REMOVE now uses remove.packages() and hence removes all
members of a bundle.
o R CMD SHLIB is now an R script and has a new option -n aka
--dry-run to show what commands would be run. The same code
is used on Unix and Windows.
o R CMD Rdconv has new options --package and --version to set the
corresponding fields in HTML conversion.
o R CMD check runs the package tests with a custom startup file,
currently containing 'options(useFancyQuotes = FALSE)'.
Those tests are run by an R script: using a tests/Makefile
(undocumented) no longer works.
o R CMD config now knows about DYLIB_EXT and SHLIB_EXT, for use
in configure files.
o R CMD BATCH has a new option --no-timing to suppress printing
out the session timing.
o R CMD Rd2dvi can now work on an installed package.
o R CMD check no longer loads package 'tcltk' when checking for
code problems, so more problems may be reported.
o For R CMD SHLIB on Windows the default 'all' target only makes
the DLL, and no longer call targets 'before' and 'after'.
Rd CONVERSION
o Rd files have an optional \Rdversion{} section, which if
missing defaults to 1.0. There is support for version 1.1, a
slightly modified version with the following changes:
- The warnings for \code{} inside example are suppressed.
- Whitespace between arguments in \item and \section is
accepted without a warning (see below).
- $ is treated literally in text, even for latex conversions.
- \ is only an escape before % { } \ .
- \R, \dots and \ldots can be followed by {}, and it is
recommended that they when not followed by whitespace.
- The obsolete interpretation of \Alpha etc is no longer done.
o Rd conversion now handles ^ ~ < > | correctly in non-code
environments (such as \samp), and # and _ even in latex
conversion (but $ still needs to be escaped in version 1.0).
o Whitespace between first and second arguments is now accepted
for \item and \section, e.g. \item{foo} {some value}.
Previously arguments after whitespace were silently ignored,
and a warning is given for version 1.0 files.
o The Rd files created by prompt() and friends are declared to be
version 1.1.
o \alias now supports the escaping of { as well as of %, and this
is recommended.
o parse_Rd(), an experimental parser for Rd files, and Rd2txt(),
Rd2HTML(), Rd2latex() and Rd2ex(), even more experimental
converters, have been added to package 'tools'.
o R CMD check runs the package's Rd files through parse_Rd() for a
stricter syntax check. This can be suppressed by setting
_R_CHECK_RD_PARSE_ to FALSE.
o Added markup \verb, which displays like \code, but parses as
verbatim text. Currently only supported by parse_Rd() and
Rd2HTML().
INSTALLATION
o The shell used by the 'R' script and other shell scripts
intended to be run directly can be specified at installation
time by setting the (precious) configure variable R_SHELL.
o libtool has been updated to 2.2.6a.
o --with-ICU is now the default: this means that ICU will be
used for collation on Mac OS >= 10.4.
o make install-tests can be used to install the test files,
to allowed an installed version of R to be tested -- see the
R-admin manual. This is also supported by the function
testInstalledPackages() in package 'tools'.
o 'make install' using a parallel make should now work.
o 'make check' now always re-makes and re-runs the package
examples, which are now collated in the locale's order (and
not ASCII order).
o configure will now set the default optimization level for
gfortran on x86_64 Linux to -O as -O2 has caused problems with
gfortran 4.3.x.
PACKAGE INSTALLATION
o install.packages() is able to infer that repos=NULL was
intended from the extension on the file name specified as 'pkgs'.
On Mac OS X it now supports local binary packages with .tar.gz
extension. Nonetheless .tgz remains the preferred extension
and is expected in repositories.
It now checks >= version dependencies for dependent packages,
and so will install a newer version of a dependency if needed
and available on the repositories.
The library being installed into is considered when looking
for installed packages if it is not already part of
.libPaths() (as INSTALL already does).
It has a new argument 'Ncpus' to support parallel installs of
source packages.
o HTML links will be resolved first to the standard packages: this
avoids other installed packages diverting help on e.g. qr()
and plot() to themselves. The HTML files are only "touched" if
they have changed.
o A check is done that the R files can be parsed: this both
prevents a broken package without lazy-loading from being
installed and gives better diagnostics.
o install.packages() gains a 'configure.vars' argument, and both
this and 'configure.args' get their defaults from options().
o There is a unified R script for INSTALL on both Unix-alike and
Windows that takes option names used by either in the past.
It adds --no-multiarch to disable building other than the main
sub-architecture, and allows multiple instances of
--configure-args and --configure-vars (which will be
concatenated).
New option --install-tests will install any package-specific
tests.
o Times in the Packaged: and Built: fields are now recorded in
UTC, and in most cases in ISO 8601 format.
C-LEVEL FACILITIES
o A helper function, asCharacterFactor, converts from factors to
character vectors.
BUG FIXES
o The postscript() output for setting text is faster and smaller.
o Subsetting a data frame with duplicate column names without
selecting columns (e.g. z[i,]) no longer makes the column
names unique. This was never documented, but some packages
have assumed it.
o data.frame() no longer ignores row names on objects if the
first name is empty. (PR#13230: this has been the behaviour
for a long time, but apparently undocumented.)
o deparse(control="S_compatible") now never uses backticks.
o X-spline drawing is improved for cases where the control
points are located well off the edges of the device.
The symptom of this problem is the error "reached MAXNUMPTS".
o exists() with mode= "any" will no longer run an active binding's
function.
o format(c(1 + 2i, NA)) no longer has extraneous space in " NA".
o mood.test() could fail in 2.8.x on large samples because of
integer overflow.
o heatmap() without a dendrogram could fail. (PR#13512)
o Checks for missing values will no longer occasionally result in
an infinite loop or stack overflow error, depending on the
compiler. Active bindings are now always considered to be
non-missing.
o Rd conversion was not accepting \p (as in \pkg} or (when using
Perl 5.10.x) \k (as in \kbd) in any preamble text in a
\value{} section, since those are nowadays interpreted by
Perl. (PR#13575)
o if(as.raw(1)) TRUE now works as expected. (PR#13630)
Also, c(as.raw(12), TRUE) or c(raw(3), pi) do.
o duplicated(<data frame>, incomparables = NA) now gives the
intended error message. (PR#13632)
o name handling of as.data.frame() has been sanitized somewhat
o Evaluating an assignment expression with a string on the left
hand side no longer destructively changes the string to a symbol
in the expression.
**************************************************
* *
* 2.8 SERIES NEWS *
* *
**************************************************
CHANGES IN R VERSION 2.8.1 patched
NEW FEATURES
o R CMD check has a new argument '--install-args' to pass
command-line arguments to INSTALL.
E.g. --install-args="--docs=normal" on Windows if the HTML
Help Workshop is not installed.
o R-Forge has been added to R_HOME/etc/repositories, so it will
be available interactively in setRepositories().
o The compiled loess() code has been updated to the current
version of dloess from Netlib. This includes patches from Ben
Tyner which correct some errors when degree = 0 and hence
solve PR#13570.
INSTALLATION
o --with-ICU is now supported (and recommended) on Mac OS X using
Apple's supplied port. Note however that the locale category
LC_COLLATE cannot be changed whilst R is running on Apple's
version of ICU.
Configure supports a wider range of ICU versions on other
OSes: version 3.0 should suffice, and 3.2, 3.8 and 4.0 have
been tested.
BUG FIXES
o grid-based plots no longer reset the base text size to the
default 96dpi in cairo-based bitmap devices.
o Rd conversion was incorrectly parsing \\\* and \\\{ (and other
cases with an odd number of backslashes greater than one).
Text conversion of \code{\ etc} was incorrect (a single
backslash stands for itself inside \code).
\code{} inside \examples{} is now fixed up (but the warning
remains, since it will be handled incorrectly in earlier
versions of R).
o as.matrix.data.frame() could fail if coercion changed the
dimension of one of the columns (as e.g. the coercion of a "Surv"
object to a character vector does).
o When extracting part of a complex list structure using [[]]
with a vector index, the extracted part was not marked for
duplication on change. (PR#13411)
o Assigning an additional element to a pairlist/language element
by x[["foo"]] <- value did not name the additional element.
o .Call() and .External() were not accepting "NativeSymbolInfo"
and "NativeSymbol" objects as claimed. (Patch from Olaf
Mersmann.)
o codoc() was missing some default value mismatches with
unescaped backslashes, e.g. final="\\" needs to be written as
final="\\\\" in the Rd file.
The reports on values now give strings in the original quoted
format (with \ and " escaped).
o The $<- method for pairlists (including language objects)
failed to duplicate if NAMED was 2.
o read.table(blank.lines.skip = FALSE) gave a final empty row on
files with less than 5 lines (PR#13433).
o Workaround for a bug in some versions of iconv that was seen
with output lines of more than 10,000 bytes and with
re-encoding requested on an output connection.
o The fullrefman.{dvi,pdf} duplicated part I in part II (at
least on some systems).
o cbind() could crash with a zero-length input and a list result.
o pdf(colormodel = "gray") was setting the stroke colour for fills.
o file.show() with multiple files would only show multiple
copies of the first one. (PR#13469)
o formatC(mode = "character") was documented to work, but
did not. (PR#13474)
o besselI(x,.., expon.scaled=TRUE) now gives accurate results for
x < 1e5 whereas it previously underflowed for x >~= 1500.
Further, besselJ(x,..) also computes up to 1e5 (instead of 1e4).
o str() was incorrectly warning about its option component
'formatNum' set by strOptions().
o nls(algorithm = "port") did not accept the [factor] notation.
(PR#13650)
o The relational (aka "comparison") operators are now binary, also in
a lower level sense, and an expression as "<"(1) is now erronous.
o The 'offset' argument for lm() and glm() is not longer
documented to be allowed to be of length 1: this has not been
true for a long time.
o format.info(x) is now also correct when x has no finite content.
o predict.lm() now works correctly when the fit had more than
one offset (possibly specified both in the formula and as an
argument). This function is called by predict.glm(), so the
same isses are corrected there.
o besselI(x, nu) with nu a negative integer (a singular case) is now
correct. (PR#13556)
CHANGES IN R VERSION 2.8.1
NEW FEATURES
o sum() now has a method for "difftime" objects (via the Summary
group).