-
Notifications
You must be signed in to change notification settings - Fork 86
/
Copy pathNEWS.3.html
11328 lines (10293 loc) · 443 KB
/
NEWS.3.html
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>R: R News</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<link rel="stylesheet" type="text/css" href="R.css" />
</head><body><div class="container">
<table width="100%" summary="page for NEWS"><tr><td>NEWS</td><td style="text-align: right;">R Documentation</td></tr></table>
<h2>R News</h2>
<h3>LATER NEWS</h3>
<ul>
<li><p> News for <span style="font-family: Courier New, Courier; color: #666666;"><b>R</b></span> 4.x.y can be found in HTML format at
<a href="NEWS.html">NEWS.html</a>,
and in text format in file
<a href="../NEWS">NEWS</a>
in the ‘<span class="file">doc</span>’ directory.
</p>
</li></ul>
<h3><img src="../help/figures/../../html/Rlogo.svg" class="toplogo" alt="[R logo]" /> CHANGES IN R 3.6.3</h3>
<h4>NEW FEATURES</h4>
<ul>
<li><p> The included LAPACK has been updated to version 3.9.0 (for
the included routines, just bug fixes).
</p>
</li></ul>
<h4>BUG FIXES</h4>
<ul>
<li><p> Fixed a C level integer overflow in <code>rhyper()</code>; reported
by Benjamin Tyner in <a href="https://bugs.R-project.org/show_bug.cgi?id=17694">PR#17694</a>.
</p>
</li>
<li><p> Uses of <code>url(gzcon(.))</code> needing to extend buffer size
have failed (with HTTP/2 servers), reported by Gábor Csárdi.
</p>
</li>
<li> <p><code>predict(loess(..), se=TRUE)</code> now errors out (instead of
seg.faulting etc) for large sample sizes, thanks to a report and
patch by Benjamin Tyner in <a href="https://bugs.R-project.org/show_bug.cgi?id=17121">PR#17121</a>.
</p>
</li>
<li> <p><code>tools:assertCondition(., "error")</code> and hence
<code>assertError()</code> no longer return errors twice (invisibly).
</p>
</li>
<li> <p><code>update(form, new)</code> in the case of a long <code>new</code>
formula sometimes wrongly eliminated the intercept from <code>form</code>,
or (more rarely) added a garbage term (or seg.faulted !); the fix
happened by simplifying the C-level logic of <code>terms.formula()</code>.
Reported by Mathias Ambühl in <a href="https://bugs.R-project.org/show_bug.cgi?id=16326">PR#16326</a>.
</p>
</li>
<li><p> The error message from <code>stopifnot(.., <error producing call>)</code>
again contains the full <code>"stopifnot(.......)"</code> call: Its
attempted suppression did not work consistently.
</p>
</li>
<li><p> On Windows, <code>download.file(., , "wininet", headers=character())</code>
would fail; reported with patch proposal by Kevin Ushey in <a href="https://bugs.R-project.org/show_bug.cgi?id=17710">PR#17710</a>.
</p>
</li></ul>
<h3><img src="../help/figures/../../html/Rlogo.svg" class="toplogo" alt="[R logo]" /> CHANGES IN R 3.6.2</h3>
<h4>NEW FEATURES</h4>
<ul>
<li> <p><code>runmed(x, *)</code> gains a new option <code>na.action</code>
determining <em>how</em> to handle <code>NaN</code> or <code>NA</code> in <code>x</code>.
</p>
</li>
<li> <p><code>dotchart()</code> gains new options <code>ann</code>, <code>xaxt</code>,
<code>frame.plot</code> and <code>log</code>.
</p>
</li></ul>
<h4>INSTALLATION on a UNIX-ALIKE</h4>
<ul>
<li><p> Detection of the C stack direction has been moved from
run-time to <code>configure</code>: this is safer with LTO builds and
allows the detection to be overridden – see file
‘<span class="file">config.site</span>’.
</p>
</li>
<li><p> Source-code changes enable installation on platforms using
<code>gcc -fno-common</code> (the expected default for
<code>gcc 10.x</code>).
</p>
</li></ul>
<h4>C-LEVEL FACILITIES</h4>
<ul>
<li> <p><code>installTrChar</code> (which is nowadays is wrapped by
<code>installChar</code>) is defined in ‘<span class="file">Rinternals.h</span>’. (Neither
are part of the API.)
</p>
</li></ul>
<h4>PACKAGE INSTALLATION</h4>
<ul>
<li><p> Header ‘<span class="file">Rconfig.h</span>’ contains the value of
<code>FC_LEN_T</code> deduced at installation which is used by the
prototypes in headers ‘<span class="file">R_ext/BLAS.h</span>’ and
‘<span class="file">R_ext/Lapack.h</span>’ but to avoid extensive breakage this is
only exposed when <code>USE_FC_LEN_T</code> is defined.
</p>
<p>If a package's C/C++ calls to BLAS/LAPACK allow for the
‘hidden’ arguments used by most Fortran compilers to pass
the lengths of Fortran character arguments, define
<code>USE_FC_LEN_T</code> and include ‘<span class="file">Rconfig.h</span>’ (possibly
<em>via</em> ‘<span class="file">R.h</span>’) before including ‘<span class="file">R_ext/BLAS.h</span>’ or
‘<span class="file">R_ext/Lapack.h</span>’.
</p>
</li>
<li><p> A package with Fortran source code and perhaps C (but not
C++) sources can request for its shared object/DLL to be linked by
the Fortran compiler by including a line <code>USE_FC_TO_LINK=</code> in
‘<span class="file">src/Makevars[.win]</span>’ and using <code>$(SHLIB_OPENMP_FFLAGS)</code>
as part of <code>PKG_LIBS</code>.
</p>
<p>The known reason for doing so is a package which uses Fortran
(only) OpenMP on a platform where the Fortran OpenMP runtime is
incompatible with the C one (e.g. <code>gfortran</code> 9.x
with <code>clang</code>).
</p>
</li></ul>
<h4>UTILITIES</h4>
<ul>
<li> <p><code>R CMD check</code> has a new option to mitigate checks
leaving files/directories in ‘<span class="file">/tmp</span>’. See the ‘R
Internals’ manual – this is part of <code>--as-cran</code>.
</p>
</li></ul>
<h4>Windows</h4>
<ul>
<li><p> The default standard for C++ in package installation is
C++11 (as it has been on other platforms where available since <span style="font-family: Courier New, Courier; color: #666666;"><b>R</b></span>
3.6.0: the default toolchain on Windows was defaulting to C++98).
</p>
</li></ul>
<h4>DEPRECATED AND DEFUNCT</h4>
<ul>
<li><p> Support for specifying C++98 in package installation is
deprecated.
</p>
</li>
<li><p> Support in <code>R CMD config</code> for <span class="samp">F77</span>,
<span class="samp">FCPIFCPLAGS</span>, <span class="samp">CPP</span>, <span class="samp">CXXCPP</span> and <span class="samp">CXX98</span> and
similar is deprecated. (<span class="samp">CPP</span> is found from the system
<code>make</code> and may well not be set.)
</p>
<p>Use <span class="samp">$CC -E</span> and <span class="samp">$CXX -E</span> instead of <span class="samp">CPP</span> and
<span class="samp">CXXCPP</span>.
</p>
</li></ul>
<h4>BUG FIXES</h4>
<ul>
<li> <p><code>runmed(x, *)</code> when <code>x</code> contains missing values
now works consistently for both <code>algorithm="Stuetzle"</code> and
<code>"Turlach"</code>, and no longer segfaults for <code>"Turlach"</code>, as
reported by Hilmar Berger.
</p>
</li>
<li> <p><code>apply(diag(3), 2:3, mean)</code> now gives a helpful error message.
</p>
</li>
<li> <p><code>dgamma(x, shape, log=TRUE)</code> now longer overflows
to <code>Inf</code> for shape < 1 and very small <code>x</code>, fixing
<a href="https://bugs.R-project.org/show_bug.cgi?id=17577">PR#17577</a>, reported by Jonathan Rougier.
</p>
</li>
<li><p> Buffer overflow in building error messages fixed. Reported
by Benjamin Tremblay.
</p>
</li>
<li> <p><code>options(str = .)</code> is correctly initialized at
package <span class="pkg">utils</span> load time, now. A consequence is that
<code>str()</code> in scripts now is more consistent to interactive use,
e.g., when displaying function(**) argument lists.
</p>
</li>
<li> <p><code>as.numeric(<call>)</code> now gives correct error message.
</p>
</li>
<li><p> Printing <code>ls.str()</code> no longer wrongly shows
<code>"<missing>"</code> in rare cases.
</p>
</li>
<li><p> Auto-printing S4 objects no longer duplicates the object,
for faster speed and reduced memory consumption. Reported by Aaron
Lun.
</p>
</li>
<li> <p><code>pchisq(<LRG>, <LRG>, ncp=100)</code> no longer takes
practically forever in some cases. Hence ditto for corresponding
<code>qchisq()</code> calls.
</p>
</li>
<li> <p><code>x %% L</code> for finite <code>x</code> no longer returns
<code>NaN</code> when <code>L</code> is infinite, nor suffers from cancellation
for large finite <code>L</code>, thanks to Long Qu's <a href="https://bugs.R-project.org/show_bug.cgi?id=17611">PR#17611</a>.
</p>
<p>Analogously, <code>x %/% L</code> and <code>L %/% x</code> suffer less from
cancellation and return values corresponding to limits for large
<code>L</code>.
</p>
</li>
<li> <p><code>grepl(NA, *)</code> now returns <code>logical</code> as documented.
</p>
</li>
<li> <p><code>options(warn=1e11)</code> is an error now, instead of later
leading to C stack overflow because of infinite recursion.
</p>
</li>
<li> <p><code>R_tryCatch</code> no longer transfers control for all
conditions. Reported and patch provided by Lionel Henry in
<a href="https://bugs.R-project.org/show_bug.cgi?id=17617">PR#17617</a>.
</p>
</li>
<li> <p><code>format(object.size(.), digits=NULL)</code> now works, fixing
<a href="https://bugs.R-project.org/show_bug.cgi?id=17628">PR#17628</a> reported by Jonathan Carroll.
</p>
</li>
<li> <p><code>get_all_vars(f, d)</code> now also works for cases, e.g. where
<code>d</code> contains a matrix. Reported by Simon Wood in 2009 and patch
provided by Ben Bolker in <a href="https://bugs.R-project.org/show_bug.cgi?id=13624">PR#13624</a>.
</p>
<p>Additionally, it now also works when some variables are data frames,
fixing <a href="https://bugs.R-project.org/show_bug.cgi?id=14905">PR#14905</a>, reported by Patrick Breheny.
</p>
</li>
<li> <p><code>barplot()</code> could get spacings wrong if there were exactly two
bars <a href="https://bugs.R-project.org/show_bug.cgi?id=15522">PR#15522</a>. Patch by Michael Chirico.
</p>
</li>
<li> <p><code>power.t.test()</code> works in more cases when returning values
of n smaller than 2.
</p>
</li>
<li> <p><code>dotchart(*, pch=., groups=.)</code> now works better. Reported
by Robert and confirmed by Nic Rochette in <a href="https://bugs.R-project.org/show_bug.cgi?id=16953">PR#16953</a>.
</p>
</li>
<li> <p><code>canCoerce(obj, cl)</code> no longer assumes
<code>length(class(obj)) == 1</code>.
</p>
</li>
<li> <p><code>plot.formula(*, subset = *)</code> now also works in a boundary
case reported by Robert Schlicht (TU Dresden).
</p>
</li>
<li> <p><code>readBin()</code> and <code>writeBin()</code> of a
<code>rawConnection()</code> now also work in large cases, thanks to a
report and proposal by Taeke Harkema in <a href="https://bugs.R-project.org/show_bug.cgi?id=17665">PR#17665</a>.
</p>
</li></ul>
<h3><img src="../help/figures/../../html/Rlogo.svg" class="toplogo" alt="[R logo]" /> CHANGES IN R 3.6.1</h3>
<h4>INSTALLATION on a UNIX-ALIKE</h4>
<ul>
<li><p> The default detection of the shell variable <code>libNN</code> is
overridden for derivatives of Debian Linux, some of which have
started to have a ‘<span class="file">/usr/lib64</span>’ directory.
(E.g. Ubuntu 19.04.) As before, it can be specified in
‘<span class="file">config.site</span>’.
</p>
</li></ul>
<h4>UTILITIES</h4>
<ul>
<li> <p><code>R CMD config</code> knows the values of <code>AR</code> and
<code>RANLIB</code>, often set for LTO builds.
</p>
</li></ul>
<h4>DEPRECATED AND DEFUNCT</h4>
<ul>
<li><p> The use of a character vector with <code>.Fortran()</code> is
formally deprecated and gives a non-portability warning. (It has
long been strongly discouraged in ‘Writing R Extensions’.)
</p>
</li></ul>
<h4>BUG FIXES</h4>
<ul>
<li><p> On Windows, GUI package installation via <code>menuInstallPkgs()</code>
works again, thanks to Len Weil's and Duncan Murdoch's <a href="https://bugs.R-project.org/show_bug.cgi?id=17556">PR#17556</a>.
</p>
</li>
<li> <p><code>R CMD check</code> on <code>data()</code> fixing <a href="https://bugs.R-project.org/show_bug.cgi?id=17558">PR#17558</a>
thanks to Duncan Murdoch.
</p>
</li>
<li> <p><code>quasi(*, variance = list(..))</code> now works more
efficiently, and should work in all cases fixing <a href="https://bugs.R-project.org/show_bug.cgi?id=17560">PR#17560</a>.
Further, <code>quasi(var = mu(1-mu))</code> and <code>quasi(var = "mu ^ 3")</code>
now work, and <code>quasi(variance = "log(mu)")</code> now gives a correct
error message.
</p>
</li>
<li><p> Creation of lazy loading database during package installation is
again robust to Rprofile changing the current working directory
(<a href="https://bugs.R-project.org/show_bug.cgi?id=17559">PR#17559</a>).
</p>
</li>
<li> <p><code>boxplot(y ~ f, horizontal=TRUE)</code> now produces correct x-
and y-labels.
</p>
</li>
<li> <p><code>rbind.data.frame()</code> allows to keep <code><NA></code> levels
from factor columns (<a href="https://bugs.R-project.org/show_bug.cgi?id=17562">PR#17562</a>) via new option <code>factor.exclude</code>.
</p>
<p>Additionally, it works in one more case with matrix-columns which
had been reported on 2017-01-16 by Krzysztof Banas.
</p>
</li>
<li><p> Correct messaging in C++ pragma checks in <span class="pkg">tools</span> code for
<code>R CMD check</code>, fixing <a href="https://bugs.R-project.org/show_bug.cgi?id=17566">PR#17566</a> thanks to Xavier Robin.
</p>
</li>
<li><p>print()ing and auto-printing no longer differs for
<code>function</code>s with a user defined <code>print.function</code>, thanks to
Bill Dunlap's report.
</p>
</li>
<li><p> On Windows, <code>writeClipboard(.., format = <n>)</code> now
does correctly pass <code>format</code> to the underlying C code, thanks to
a bug report (with patch) by Jenny Bryan.
</p>
</li>
<li> <p><code>as.data.frame()</code> treats 1D arrays the same as vectors,
<a href="https://bugs.R-project.org/show_bug.cgi?id=17570">PR#17570</a>.
</p>
</li>
<li><p> Improvements in <code>smoothEnds(x, *)</code> working with
<code>NA</code>s (towards <code>runmed()</code> working in that case, in the next
version of R).
</p>
</li>
<li> <p><code>vcov(glm(<quasi>), dispersion = *)</code> works correctly
again, fixing <a href="https://bugs.R-project.org/show_bug.cgi?id=17571">PR#17571</a> thanks to Pavel Krivitsky.
</p>
</li>
<li> <p><code>R CMD INSTALL</code> of binary packages on Windows now
works also with per-directory locking.
</p>
</li>
<li> <p><code>R CMD INSTALL</code> and <code>install.packages()</code> on Windows
are now more robust against a locked file in an earlier installation
of the package to be installed. The default value of option
<code>install.lock</code> on Windows has been changed to <code>TRUE</code>.
</p>
</li>
<li><p> On Unix alikes (when <code>readline</code> is active), only
expand tilde (<code>~</code>) file names starting with a tilde, instead of
almost all tildes.
</p>
</li>
<li><p> In R documentation (‘<span class="file">*.Rd</span>’) files, <span class="samp">\item [..]</span> is no
longer treated specially when rendered in LaTeX and hence pdf, but
rather shows the brackets in all cases.
</p>
</li></ul>
<h3><img src="../help/figures/../../html/Rlogo.svg" class="toplogo" alt="[R logo]" /> CHANGES IN R 3.6.0</h3>
<h4>SIGNIFICANT USER-VISIBLE CHANGES</h4>
<ul>
<li><p> Serialization format version 3 becomes the default for
serialization and saving of the workspace (<code>save()</code>,
<code>serialize()</code>, <code>saveRDS()</code>, <code>compiler::cmpfile()</code>).
Serialized data in format 3 cannot be read by versions of <span style="font-family: Courier New, Courier; color: #666666;"><b>R</b></span> prior
to version 3.5.0. Serialization format version 2 is still
supported and can be selected by <code>version = 2</code> in the
save/serialization functions. The default can be changed back for
the whole <span style="font-family: Courier New, Courier; color: #666666;"><b>R</b></span> session by setting environment variables
<span class="env">R_DEFAULT_SAVE_VERSION</span> and <span class="env">R_DEFAULT_SERIALIZE_VERSION</span>
to <code>2</code>. For maximal back-compatibility, files
‘<span class="file">vignette.rds</span>’ and ‘<span class="file">partial.rdb</span>’ generated by <code>R
CMD build</code> are in serialization format version 2, and resave by
default produces files in serialization format version 2 (unless
the original is already in format version 3).
</p>
</li>
<li><p> The default method for generating from a discrete uniform
distribution (used in <code>sample()</code>, for instance) has been
changed. This addresses the fact, pointed out by Ottoboni and
Stark, that the previous method made <code>sample()</code> noticeably
non-uniform on large populations. See <a href="https://bugs.R-project.org/show_bug.cgi?id=17494">PR#17494</a> for a
discussion. The previous method can be requested using
<code>RNGkind()</code> or <code>RNGversion()</code> if necessary for
reproduction of old results. Thanks to Duncan Murdoch for
contributing the patch and Gabe Becker for further assistance.
</p>
<p>The output of <code>RNGkind()</code> has been changed to also return the
‘kind’ used by <code>sample()</code>.
</p>
</li></ul>
<h4>NEW FEATURES</h4>
<ul>
<li> <p><code>Sys.setFileTime()</code> has been vectorized so arguments
<code>path</code> and <code>time</code> of length greater than one are now
supported.
</p>
</li>
<li> <p><code>axis()</code> gets new option <code>gap.axis = NA</code> for
specifying a multiplication factor for the minimal “gap”
(distance) between axis labels drawn. Its default is <code>1</code>
for labels <em>parallel</em> to the axis, and <code>0.25</code> for
perpendicular ones.
</p>
<p>Perpendicular labels no longer overlap, fixing bug <a href="https://bugs.R-project.org/show_bug.cgi?id=17384">PR#17384</a>.
</p>
</li>
<li><p> The default method of <code>plot()</code> gains new arguments
<code>xgap.axis = NA</code> and <code>ygap.axis = NA</code> to be passed to
the x– and y– <code>axis(.., gap.axis=*)</code> calls.
</p>
</li>
<li> <p><code>removeSource()</code> now works not only for functions but
also for some language objects.
</p>
</li>
<li> <p><code>as.call()</code>, <code>rep.int()</code>, <code>rep_len()</code> and
<code>nchar()</code> dispatch internally.
</p>
</li>
<li> <p><code>is(object, class2)</code> looks for <code>class2</code> in the
calling namespace after looking in the namespace of
<code>class(object)</code>.
</p>
</li>
<li> <p><code>extendrange(.., f)</code> with a length-2 <code>f</code> now
extends separately to the left and the right.
</p>
</li>
<li> <p><code>lengths()</code> dispatches internally to S4 methods.
</p>
</li>
<li> <p><code>download.file()</code> on Windows now uses <code>URLdecode()</code>
to determine the file extension, and uses binary transfer
(<code>mode = "wb"</code>) also for file extension ‘<span class="file">.rds</span>’.
</p>
<p>The help page for <code>download.file()</code> now contains the same
information on all platforms.
</p>
</li>
<li><p> Setting <span class="samp">C</span> locale for collation <em>via</em> environment
variables <span class="env">LC_ALL</span> and <span class="env">LC_COLLATE</span> and <em>via</em> a call
to <code>Sys.setlocale()</code> now takes precedence over environment
variable <span class="env">R_ICU_LOCALE</span>.
</p>
</li>
<li><p> There is a new function, <code>nullfile()</code>, to give the file
name of the null system device (e.g., ‘<span class="file">/dev/null</span>’) on the
current platform.
</p>
</li>
<li><p> There are two new options, <code>keep.parse.data</code> and
<code>keep.parse.data.pkgs</code>, which control whether parse data are
included into sources when <code>keep.source</code> or
<code>keep.source.pkgs</code> is <code>TRUE</code>. By default,
<code>keep.parse.data.pkgs</code> is now <code>FALSE</code>, which changes
previous behavior and significantly reduces space and time overhead
when sources are kept when installing packages.
</p>
</li>
<li><p> In <code>rapply(x, ..)</code>, <code>x</code> can also be
“list-like” and of length <i>>= 2^{31}</i>.
</p>
</li>
<li> <p><code>trimws()</code> gets new optional <code>whitespace</code>
argument, allowing more extensive definitions of “space”,
such as including Unicode spaces (as wished in <a href="https://bugs.R-project.org/show_bug.cgi?id=17431">PR#17431</a>).
</p>
</li>
<li> <p><code>weighted.mean()</code> no longer coerces the weights to a
double/numeric vector, since <code>sum()</code> now handles integer
overflow. This makes <code>weighted.mean()</code> more polymorphic and
endomorphic, but be aware that the results are no longer
guaranteed to be a vector of type <span class="samp">double</span>.
</p>
</li>
<li><p> When loading namespaces, S3 method registrations which
overwrite previous registrations are now noted by default (using
<code>packageStartupMessage()</code>).
</p>
</li>
<li> <p><code>compiler::cmpfile()</code> gains a <code>version</code> argument, for
use when the output file should be saved in serialization format 2.
</p>
</li>
<li><p> The axis labeling in the default method of <code>pairs()</code>
may now be toggled by new options <code>horOdd</code> and <code>verOdd</code>.
</p>
</li>
<li><p> (Not Windows nor macOS.) Package <span class="pkg">tcltk</span> now supports an
environment variable <span class="env">R_DONT_USE_TK</span> which if set disables Tk
initialization. This is intended for use to circumvent errors in
loading the package, e.g. with recent Linux running under
an address sanitizer.
</p>
</li>
<li><p> The <code>numeric</code> method of <code>all.equal()</code> gets
optional arguments <code>countEQ</code> and <code>formatFUN</code>. If
<code>countEQ</code> is true, the mean error is more sensible when many
entries are <b>eq</b>ual.
</p>
</li>
<li> <p><code>outer(x,y, FUN = "*")</code> is more efficient using
<code>tcrossprod(u,v)</code> instead of <code>u %*% t(v)</code>.
</p>
</li>
<li> <p><code>vcov(<mlm>)</code> is more efficient via new optional
arguments in <code>summary.mlm()</code>.
</p>
</li>
<li><p> The default method of <code>summary()</code> gets an option to
choose the <em>kind</em> of <code>quantile()</code>s to use; wish of
<a href="https://bugs.R-project.org/show_bug.cgi?id=17438">PR#17438</a>.
</p>
</li>
<li><p> Fitting multiple linear models <em>via</em> <code>lm()</code> does
work with <em>matrix</em> offsets, as suggested in <a href="https://bugs.R-project.org/show_bug.cgi?id=17407">PR#17407</a>.
</p>
</li>
<li><p> The new functions <code>mem.maxVSize()</code> and
<code>mem.maxMSize()</code> allow the maximal size of the vector heap
and the maximal number of nodes allowed in the current <code>R</code>
process to be queried and set.
</p>
</li>
<li> <p><code>news()</code> gains support for ‘<span class="file">NEWS.md</span>’ files.
</p>
</li>
<li><p> An effort has been started to have our reference manuals,
i.e., all help pages. show platform-independent information (rather
than Windows or Unix-alike specifics visible only on that platform).
Consequently, the Windows version of <code>X11()</code> / <code>x11()</code>
got identical formal arguments to the Unix one.
</p>
</li>
<li> <p><code>sessionInfo()$running</code> has been factored out in a new
variable <code>osVersion</code>.
</p>
</li>
<li> <p><code>slice.index()</code> now also works for multi-dimensional
margins.
</p>
</li>
<li> <p><code>untar()</code> used with an external <code>tar</code> command
assumes this supports decompression including <code>xz</code> and
automagically detecting the compression type. This has been true
of all mainstream implementations since 2009 (for GNU
<code>tar</code>, since version 1.22): older implementations are
still supported <em>via</em> the new argument
<code>support_old_tars</code> whose default is controlled by environment
variable <span class="env">R_SUPPORT_OLD_TARS</span>. (It looks like NetBSD and
OpenBSD have ‘older’ <code>tar</code> commands for this
purpose.)
</p>
</li>
<li><p> The new function <code>asplit()</code> allow splitting an array or
matrix by its margins.
</p>
</li>
<li><p> New functions <code>errorCondition()</code> and
<code>warningCondition()</code> provide a convenient way to create
structured error and warning objects.
</p>
<p><code>.Deprecated()</code> now signals a warning of class
<code>"deprecatedWarning"</code>, and <code>.Defunct()</code> now signals an
error of class <code>"defunctError"</code>.
</p>
</li>
<li><p> Many ‘package not found’ errors are now signaled as
errors of class <code>"packageNotFoundError"</code>.
</p>
</li>
<li><p> As an experimental feature, when <code>loadNamespace()</code> fails
because the requested package is not available the error is
initially signaled with a <code>retry_loadNamespace</code> restart
available. This allows a calling handler to try to install the
package and continue.
</p>
</li>
<li> <p><code>S3method()</code> directives in ‘<span class="file">NAMESPACE</span>’ can now
also be used to perform <em>delayed</em> S3 method registration.
</p>
</li>
<li><p> Experimentally, setting environment variable
<span class="env">_R_CHECK_LENGTH_1_LOGIC2_</span> will lead to warnings (or errors
if the variable is set to a ‘true’ value) when <code>&&</code> or
<code>||</code> encounter and use arguments of length more than one.
</p>
</li>
<li><p> Added <code>"lines"</code> and <code>"chars"</code> coordinate systems
to <code>grconvertX()</code> and <code>grconvertY()</code>.
</p>
</li>
<li> <p><code>getOption()</code> is more efficient notably for the rare
case when called with two arguments, from several contributors in
<a href="https://bugs.R-project.org/show_bug.cgi?id=17394">PR#17394</a>.
</p>
</li>
<li><p> In <code>.col(dim)</code> and <code>.row(dim)</code>, <code>dim</code> now may
also be an integer-valued <code>"double"</code>.
</p>
</li>
<li> <p><code>sQuote()</code> and <code>dQuote()</code> get an explicit <code>q</code>
argument with obvious default instead of using
<code>getOption("fancyQuotes")</code> implicitly and unconditionally.
</p>
</li>
<li> <p><code>unzip()</code> can list archives with comments and with
spaces in file names even using an external <code>unzip</code> command.
</p>
</li>
<li><p> Command line completion has a new setting
<code>rc.settings(dots = FALSE)</code> to remove <code>...</code> from the
list of possible function arguments.
</p>
</li>
<li> <p><code>library()</code> no longer checks packages with compiled
code match <span class="samp">R.version$platform</span>. <code>loadNamespace()</code>
never has, and increasingly the ‘canonical name’ does not
reflect the important characteristics of compiled code.
</p>
</li>
<li><p> The primitive functions <code>drop()</code> and <code>unclass()</code>
now avoid duplicating their data for atomic vectors that are large
enough, by returning <code>ALTREP</code> wrapper objects with adjusted
attributes. <span style="font-family: Courier New, Courier; color: #666666;"><b>R</b></span>-level assignments to change attributes will also
use wrapper objects to avoid duplicating data for larger atomic
vectors. <span style="font-family: Courier New, Courier; color: #666666;"><b>R</b></span> functions like <code>structure()</code> and <code>unname()</code>
will therefore not duplicate data in these settings. Generic
vectors as produced by <code>list()</code> are not yet covered by this
optimization but may be in due course.
</p>
</li>
<li><p> In <code>formals()</code>, <code>envir</code> becomes an optional
argument instead of being hardwired.
</p>
</li>
<li><p> Instead of signalling an error for an invalid S4 object
<code>x</code>, <code>str(x)</code> now gives a warning and subsequently still
shows most parts of <code>x</code>, e.g., when slots are missing.
</p>
</li>
<li> <p><code>gamma(x)</code> and <code>lgamma(x)</code> no longer warn when
correctly returning <code>Inf</code> or underflowing to zero. This
helps maximum likelihood and similar computations.
</p>
</li>
<li> <p><code>convertColor()</code> is now vectorized, so a lot faster for
converting many colours at once. The new argument
<code>vectorized</code> to <code>colorConverter()</code> ensures that
non-vectorized colour converters still work. (Thanks to Brodie
Gaslam.)
</p>
</li>
<li> <p><code>download.file()</code> and <code>url()</code> get new argument
<code>headers</code> for custom HTTP headers, e.g., allowing to perform
basic http authentication, thanks to a patch contributed by Gábor
Csárdi.
</p>
</li>
<li><p> File-based connection functions <code>file()</code>,
<code>gzfile()</code>, <code>bzfile()</code> and <code>xzfile()</code> now signal an
error when used on a directory.
</p>
</li>
<li><p> For <code>approx()</code>, <code>splinefun()</code> <em>etc</em>, a new
setting <code>ties = c("ordered", <fun>)</code> allows skipping the
sorting and still treat ties.
</p>
</li>
<li> <p><code>format(x)</code> gives a more user friendly error message in
the case where no method is defined. A minimal method is provided
in <code>format.default(x)</code> when <code>isS4(x)</code> is true.
</p>
</li>
<li> <p><code>which(x)</code> now also works when <code>x</code> is a long
vector, thanks to Suharto Anggono's <a href="https://bugs.R-project.org/show_bug.cgi?id=17201">PR#17201</a>. <strong>NB</strong>: this
may return a double result, breaking the previous guarantee of an
integer result.
</p>
</li>
<li> <p><code>seq.default()</code> is more careful to return an
<code>integer</code> (as opposed to <code>double</code>) result when its
arguments are large and/or classed objects; see comment #9 of
Suharto Anggono's <a href="https://bugs.R-project.org/show_bug.cgi?id=17497">PR#17497</a>.
</p>
</li>
<li><p> The <code>plot()</code> method for <code>lm</code> and <code>glm</code> fits,
<code>plot.lm()</code>, gains a new option <code>iter.smooth</code> with a
default of <code>0</code> for binomial fits, no longer down-weighting
when smoothing the residuals.
</p>
</li>
<li> <p><code>zip()</code> passes its list of files <em>via</em> standard
input to the external command when too long for the command line
(on some platforms).
</p>
</li>
<li> <p><code>data()</code> gains an <code>overwrite</code> argument.
</p>
</li>
<li> <p><code>t.test()</code> now also returns the standard error (in
list component <code>stderr</code>).
</p>
</li>
<li> <p><code>model.matrix(*, contrasts.arg = CC)</code> now warns about
invalid <code>contrasts.arg</code>s.
</p>
</li>
<li><p> Performance of <code>substr()</code> and <code>substring()</code> has been
improved.
</p>
</li>
<li> <p><code>stopifnot()</code> has been simplified thanks to Suharto
Anggono's proposals to become considerably faster for cheap
expressions.
</p>
</li>
<li><p> The default ‘user agent’ has been changed when
accessing <span class="samp">http://</span> and <span class="samp">https://</span> sites using
<span class="samp">libcurl</span>. (A site was found which caused <span class="samp">libcurl</span> to
infinite-loop with the previous default.)
</p>
</li>
<li> <p><code>sessionInfo()</code> now also contains <code>RNGkind()</code> and
prints it when it differs from the default; based on a proposal and
patch by Gabe Becker in <a href="https://bugs.R-project.org/show_bug.cgi?id=17535">PR#17535</a>.
Also, <code>RNGversion(getRversion())</code> works directly.
</p>
</li>
<li> <p><code>library()</code> and <code>require()</code> now allow more control
over handling search path conflicts when packages are
attached. The policy is controlled by the new
<code>conflicts.policy</code> option.
</p>
</li>
<li> <p><code>barplot()</code> gets a formula method, thanks to a patch
proposal by Arni Magnusson in <a href="https://bugs.R-project.org/show_bug.cgi?id=17521">PR#17521</a>.
</p>
</li>
<li> <p><code>pmax()</code> and <code>pmin(x)</code> now also work for long
vectors, thanks to Suharto Anggono's <a href="https://bugs.R-project.org/show_bug.cgi?id=17533">PR#17533</a>.
</p>
</li>
<li> <p><code>bxp()</code> now warns when omitting duplicated arguments.
</p>
</li>
<li><p> New <code>hcl.colors()</code> function to provide wide range of
HCL-based colour palettes with much better perceptual properties
than the existing RGB/HSV-based palettes like <code>rainbow()</code>.
</p>
<p>Also a new <code>hcl.pals()</code> function to list available palette
names for <code>hcl.colors()</code>.
</p>
<p>Contributed by Achim Zeileis.
</p>
</li>
<li><p> The default colours for <code>image()</code> and
<code>filled.contour()</code> are now based on <code>hcl.colors()</code>.
</p>
</li>
<li><p> The palette-generating functions <code>rainbow()</code>,
<code>gray.colors()</code>, etc. get a new <code>rev</code> argument
to facilitate reversing the order of colors.
</p>
</li>
<li><p> New <code>str2lang()</code> and <code>str2expression()</code> as streamlined
versions of <code>parse(text=., keep.source=FALSE)</code> allow to abstract
typical call constructions, e.g., in <code>formula</code> manipulations.
(Somewhat experimental)
</p>
</li>
<li><p> Add <code>update_PACKAGES()</code> for incrementally updating a
package repository index, instead of rebuilding the index from
scratch. Thanks to Gabe Becker in <a href="https://bugs.R-project.org/show_bug.cgi?id=17544">PR#17544</a> for the patch, based
on part of his <span class="pkg">switchr</span> package.
</p>
</li></ul>
<h4>INSTALLATION on a UNIX-ALIKE</h4>
<ul>
<li><p> The options selected for the C++ compiler default to the
C++11 standard if supported, otherwise to the C++98 standard.
</p>
</li>
<li><p> Visibility macros such as <span class="samp">C_VISIBILITY</span> can now be
user-set (including to empty), e.g. in ‘<span class="file">config.site</span>’.
</p>
</li>
<li><p> Macro <span class="samp">FCLIBS</span>, which has sometimes been needed on
Solaris, has been renamed to <span class="samp">FCLIBS_XTRA</span>.
</p>
</li>
<li><p> Macro <span class="samp">F77</span> is always set to the value of <span class="samp">FC</span>, so
the latter should be set to user-select the Fortran compiler for
both fixed-form and free-form Fortran. In particular,
<code>gfortran</code> is now the first choice for <span class="samp">F77</span>, not
<code>f95</code>.
</p>
<p>Macros <span class="samp">FFLAGS</span> and <span class="samp">FCFLAGS</span> remain distinct to allow
for a compiler which needs a flag to select free- or fixed-form
Fortran (most use the source-file extension to choose: ‘<span class="file">.f</span>’
is fixed-form and ‘<span class="file">.f90</span>’ and ‘<span class="file">.f95</span>’ are free-form).
</p>
<p>If only one of them is set, its value is used for both.
</p>
</li>
<li><p> The special-casing of <span class="samp">CFLAGS</span>, <span class="samp">CXXFLAGS</span> and
<span class="samp">FFLAGS</span> for Intel compilers on Linux has been removed: we do
not have recent experience but the generic defaults now chosen are
the same as those previously special-cased for <span class="samp">x86_64</span>.
</p>
<p>If necessary, override the defaults on the <code>configure</code>
command line or in file ‘<span class="file">config.site</span>’.
</p>
</li>
<li><p> Long-untested <code>configure</code> support for HP-UX and very
old versions of Linux has been removed.
</p>
</li>
<li> <p><code>configure --with-blas</code> (without specifying a value)
includes OpenBLAS in its search (before ATLAS and a generic
BLAS). This follows recent versions of the <span class="samp">ax_blas</span>
autoconf macro.
</p>
</li>
<li><p> The <code>configure</code> macro <span class="samp">MAKEINFO</span> has been
updated to <span class="samp">TEXI2ANY</span>.
</p>
</li>
<li><p> Support for <code>make install-strip</code> has been enhanced.
</p>
</li></ul>
<h4>PACKAGE INSTALLATION</h4>
<ul>
<li><p> Source package installation is by default ‘staged’:
the package is installed into a temporary location under the final
library directory and moved into place once the installation is
complete. The benefit is that partially-installed packages are
hidden from other <span style="font-family: Courier New, Courier; color: #666666;"><b>R</b></span> sessions.
</p>
<p>The overall default is set by environment variable
<span class="env">R_INSTALL_STAGED</span>. <code>R CMD INSTALL</code> has new options
<span class="option">--staged-install</span> and <span class="option">--no-staged-install</span>, and
packages can use the <span class="samp">StagedInstall</span> field in their
‘<span class="file">DESCRIPTION</span>’ file to opt out. (That opt-out is a temporary
measure which may be withdrawn in future.)
</p>
<p>Staged installation requires either <span class="option">--pkglock</span> or
<span class="option">--lock</span>, one of which is used by default.
</p>
</li>
<li><p> The interpretation of source code with extension ‘<span class="file">.f</span>’
is changing. Previously this denoted FORTRAN 77 code, but current
compilers no longer have a FORTRAN 77 mode and interpret it as
‘fixed-form’ Fortran 90 (or later where supported) code.
Extensions ‘<span class="file">.f90</span>’ and ‘<span class="file">.f95</span>’ continue to indicate
‘free-form’ Fortran code.
</p>
<p>Legal FORTRAN 77 code is also legal fixed-form Fortran 9x; however
this change legitimizes the use of later features, in particular
to replace features marked ‘obsolescent’ in Fortran 90 and
‘deleted’ in Fortran 2018 which <code>gfortran</code> 8.x and
later warn about.
</p>
</li>
<li><p> Packages containing files in the ‘<span class="file">src</span>’ directory with
extensions ‘<span class="file">.f90</span>’ or ‘<span class="file">.f95</span>’ are now linked using the C
or C++ compiler rather than the Fortran 9x compiler. This is
consistent with fixed-form Fortran code and allows mixing of C++
and free-form Fortran on most platforms.
</p>
<p>Consequentially, a package which includes free-form Fortran 9x
code which uses OpenMP should include <span class="samp">SHLIB_OPENMP_CFLAGS</span>
(or the <span class="samp">CXXFLAGS</span> version if they also include C++ code) in
<span class="samp">PKG_LIBS</span> rather than <span class="samp">SHLIB_OPENMP_FCFLAGS</span> —
fortunately on almost all current platforms they are the same
flag.
</p>
</li>
<li><p> Macro <span class="samp">PKG_FFLAGS</span> will be used for the compilation of
both fixed-form and free-form Fortran code unless
<span class="samp">PKG_FCFLAGS</span> is also set (in ‘<span class="file">src/Makevars</span>’ or