1Changed in xts 0.12.1:
2
3o  Various function could change the tclass of xts objects. This would happen
4   in calls to reclass(), period.apply(), and for logical operations on
5   POSIXct indexes. Thanks to Tom Andrews for the report and testing, and to
6   Panagiotis Cheilaris for contributing test cases (#322, #323).
7
8o  plot.xts() now supports y-axis labels via 'ylab'. Thanks to Jasen Mackie
9   for the suggestion and PR (#333, #334).
10
11o  The API header has been updated to fix the signatures of do_merge_xts() and
12   is_xts, which did not return a SEXP as required of functions callable by
13   .Call(). Thanks to Tomas Kalibera for the report (#317), and Dirk
14   Eddelbuettel for the PR (#337). This is a breaking change, but is required
15   to avoid the potential for a segfault.
16
17o  Michael Chirico added an internal isUTC() function to recognize many UTC-
18   equivalent time zones (#319).
19
20o  first() now operates correctly on non-xts objects when 'n = -1'. Previously
21   it would always return the last two values. Thanks to GitHub user vxg20
22   for the report (#325).
23
24o  The .xts() constructor would create an xts object with row names if 'x' had
25   row names. This shouldn't happen, because xts objects do not have or
26   support row names (#298).
27
28o  Claymore Marshall added many examples of time-of-day subsetting to
29   ?subset.xts. He also fixed a bug in time-of-day subsetting where subsetting
30   by hour only returned wrong results (#304, #326, #328).
31
32Changed in xts 0.12-0:
33
34o  All the index-attributes have been removed from the xts object and are now
35   only attached to the index itself (#245). We took great care to maintain
36   backward compatibility, and throw warnings when deprecated functions are
37   called and when index-attributes are found on the xts object. But there
38   still may be some breaking changes lurking in edge cases.
39
40   o @SamoPP found one edge case (#297) where an error was thrown when index()
41     was called on an xts object with an index that had no tclass attribute.
42   o ...which led Joshua to find that the index setting functions did not
43     always copy index attributes (#305).
44
45o  Several binary operations (e.g. +, -, !=, <, etc.) on variations of
46   uncommon xts objects with other xts, matrix, or vector objects, could
47   result in malformed xts objects (#295). Some examples of the types of
48   uncommon xts objects: no dim attribute, zero-width, zero-length.
49
50o  Calling as.matrix() on an xts object without a dim attribute no longer
51   throws an error (#294).
52
53o  merge.xts() now honors check.names = FALSE (#293).
54
55o  The possible values for major.ticks, minor.ticks, and grid.ticks.on in the
56   Details section of ?plot.xts have been corrected. Thanks to Harvey Smith
57   (@harvey131) for the report and patch (#291).
58
59o  as.zoo.xts() is now only registered for zoo versions prior to 1.8-5. Methods
60   to convert an object to another class should reside in the package that
61   implements the target class. Thanks to Kurt Hornik for the report (#287).
62
63o  .parseISO8601() no longer has a potential length-1 logical error. Thanks to
64   Kurt Hornik for the report (#280).
65
66o  endpoints() now honors k > 0 when on = "quarters". Thanks to @alkment for
67   the report (#279).
68
69o  Performance for the period.XYZ() functions (sum, prod, min, max) is much
70   faster (#278). Thanks to Harvey Smith (@harvey131) for the report and
71   examples.
72
73o  merge.xts() now creates shorter column names when passed unnamed objects.
74   This is now consistent with zoo (#248).
75
76o  Time-of-day performance is ~200x faster, thanks to StackOverflow
77   user3226167 (#193).
78
79Changed in xts 0.11-2:
80
81o  The to.period() family of functions now use the index timezone when
82   converting intraday index values to daily values (or lower frequency).
83   Thanks to Garrett See and Gabor Grothendieck for the reports (#53, #277).
84
85o  Make column names for merge() results with unnamed objects shorter and more
86   like zoo (#248). This also makes na.fill() much faster (#259).
87   BREAKING: This may break existing code for integer unnamed objects.
88
89o  Fix subset when 'index(x)' and 'i' contain duplicates. Thanks to Stack
90   Overflow user 'scs' (https://stackoverflow.com/users/4024268/scs) for the
91   report, and Philippe Verspeelt for debugging (#275).
92
93o  Fix if-statement in xts constructor that may use a logical with length > 1.
94   Thanks to @HughParsonage for the report and PR (#270, #272).
95
96o  Register shift.time.xts() method. Thanks to Philippe Verspeelt for the
97   report and PR (#268, #273).
98
99o  Conditionally register S3 methods for as.timeSeries.xts() and as.fts.xts()
100   when their respective packages are available (as requested by CRAN). Note
101   that this means these two functions are no longer exported. This may break
102   some existing code that calls the methods directly, though 'best practice'
103   is to let method dispatch determine which method to invoke.
104
105Changed in xts 0.11-1:
106
107o  Fix regression in .xts() that caused 'tclass' argument/attribute to be
108   incorrectly set to POSIXct regardless of user-provided value. Thanks to
109   @Eluvias for the report and Tom Andrews for the PR (#249, #250).
110
111o  Fix performance regression when xts object is subset by a date-time vector.
112   Thanks to Tom Andrews for the report, and the PR to fix the bug in my patch
113   (#251, #263, #264).
114
115o  Restore behavior from 0.10-2 so subsetting an empty xts object by a date-
116   time vector returns an empty xts object instead of throwing an error.
117   Thanks to @alkment for the report (#252).
118
119o  Add ability for merge.xts() to handle multiple character or complex xts
120   objects. Thanks to Ken Williams for the report (#44).
121
122o  Add ability to use "quarters" to specify tick/grid mark locations on plots.
123   This ran but produced an incorrect result in 0.10-2 and threw an error in
124   0.11-0. Thanks to Marc Weibel for the report (#256).
125
126o  Fix illegal read reported by valgrind. Thanks to Tom Andrews for the report
127   and PR (#236, #264).
128
129Changed in xts 0.11-0:
130
131o  Fix make.index.unique() to always return a unique and sorted index. Thanks
132   to Chris Katsulis for the report and example (#241).
133
134o  Add window.xts() method and completely refactor the internal binary search
135   function it depends on. Thanks to Corwin Joy for the PR, tests, review, and
136   patience (#100, #240).
137
138o  Better axis tick mark locations for plots. Thanks to Dirk Eddelbuettel for
139   the report (#246). Also incorporate axTicksByTime2() into axTicksByTime() to
140   reduce code duplication from the migration of quantmod::chart_Series() to
141   xts::plot.xts() (#74).
142
143o  Add details to plot.xts() parameters that are periodicity, now that RStudio
144   has argument completion. Thanks to Evelyn Mitchell for the PR (#154).
145
146o  periodicity() now warns instead of errors if the xts object contains less
147   than 2 observations (#230).
148
149o  first() and last() now keep dims when they would otherwise be dropped by a
150   regular row subset. This is consistent with head() and tail(). Thanks to
151   Davis Vaughan for the report (#226).
152
153o  Fix subset when ISO8601 string is outside the valid range, so it returns no
154   data instead of all rows (#96).
155
156o  Avoid partial name matches from parse.side() (inside .parseISO8601())
157   results that are passed to firstof() and lastof(). Thanks to @gp2x for the
158   report and the patch (#231).
159
160o  na.locf.xts() now loops over columns of multivariate objects in C code,
161   instead of in R. This should improve speed and memory performance. Thanks to
162   Chris Katsulis and Tom Andrews for their reports and patches (#232, #233,
163   #234, #235, #237).
164
165o  Change plot.xts() default 'pch = 0' (rectangles) to 'pch = 1' (circles) so
166   it looks more like base and zoo plots (#203).
167
168Changed in xts 0.10-2:
169
170o  na.locf.xts() and na.omit.xts() now support character xts objects. Thanks to
171   Ken Williams and Samo Pahor for the reports (#42).
172
173o  na.locf.xts() now honors 'x' and 'xout' arguments by dispatching to the next
174   method (#215). Thanks to Morten Grum for the report.
175
176o  coredata.xts() now functions the same as coredata.zoo() on zero-length
177   objects, and only removes xts-related attributes (#223). Thanks to Vincent
178   Guyader for the report.
179
180o  plot.xts() no longer ignores 'col.up' and 'col.dn' when 'type="h"' (#224).
181   Thanks to Charlie Friedemann for the report. This was inadvertently broken
182   as part of the fix for #210.
183
184Changed in xts 0.10-1:
185
186o  'ylim' values passed to 'addSeries' and 'addPolygon' via '...' are now
187   captured and honored (#220).
188
189o  'addPolygon' now checks for ylim of zeros, as 'addSeries' does (#164).
190
191o  The 'base::as.Date.numeric' method is no longer over-ridden. The exported,
192   but not registered, method in zoo should prevent any change in behavior.
193
194o  Series added to an existing plot are now given the same index values as
195   the main panel (#216). There still may be some weird behavior if the new
196   data does not have observations within the timespan of the main panel data,
197   but no observations on the same timestamps.
198
199o  Existing 'par' values are now captured and reset before returning from
200   plotting functions (#217).
201
202o  User-defined 'col' values are now honored when 'type="h"' (#210).
203
204o  Values passed to plotting functions are now copied from the calling
205   environment. This enables plotting arguments to be objects passed
206   through multiple layers of function calls.
207
208o  indexFormat is now generic, consistent with indexFormat<- (#188).
209
210o  Calling as.matrix() on a zero-width xts object now behaves consistently
211   with zoo, and no longer throws an error (#130).
212
213o  Fix weird result in merge.xts() when 'fill' argument is NULL or a zero-
214   length vector (#261).
215
216o  Fixed bug in endpoints() due to sub-second representation error via using
217   integer division (%/%) with non- integer arguments (#202).
218
219o  endpoints() gained sub-second accuracy on Windows (#202).
220
221o  plot.xts() no longer errors when called on an object containing a constant
222   value. It chooses ylim values +/-20% from the series value (#156).
223
224o  plot.xts() now places y-axis labels in the same location on the plot,
225   regardless of data periodicity (#85).
226
227o  rbind.xts() now throws an error if passed an xts object with different
228   number of observations in the index and data (e.g., zero-width) (#98).
229
230Changed in xts 0.10-0:
231
232Major changes include:
233o  A new plot.xts() that is incompatible with earlier versions of plot.xts().
234o  Moved development from R-Forge to GitHub.
235o  New xts FAQ.
236
237Other, less disruptive changes include:
238
239o  merge.xts() now throws an error if the index contains non-finite values
240   (#174).
241
242o  Constructors xts() and .xts() now ensure order.by and index arguments do not
243   contain non-finite values. Many xts functions, most notably merge.xts(),
244   expect all index values to be finite. Missing index values usually indicate
245   an error, and always occurred at the end of the index (#173, #194, #199).
246
247o  Fixed bug in endpoints() when called on sparse data that have the same month
248   and day, but different years (#169).
249
250o  Fixed bug in [.xts did not do the same checks on logical xts objects as it
251   does for all other data types (#163).
252
253o  Fixed bug that caused split.xts() to error if 'f' is a character vector with
254   more than 1 element (#134).
255
256o  Fixed bug that crashed R if 'k' argument to lag.xts() was not an integer and
257   would be NA when coerced to integer (#152).
258
259o  period.apply() now checks to ensure the object's index is unique and sorted,
260   and sets INDEX <- sort(unique(INDEX)) if it is not. It also ensures INDEX
261   starts with 0 and ends with NROW(x) (#171).
262
263o  All references to the 'its' package have been removed, since it is now
264   archived on CRAN at the request of its maintainer.
265
266o  Fixed bug that crashed R when merge.xts() was called on an empty xts object
267   and more than one non-xts object (#157).
268
269o  Fixed bug that did not set the index's tzone attribute to UTC when
270   index<-.xts or indexClass<- were called and 'value' did not have a tzone
271   attribute (#148).
272
273o  Fixed a bug in endpoints() that caused incorrect results if the index was
274   less than the epoch (#144).
275
276o  Fixed a bug that caused diff.xts() on a logical xts object to return an
277   object with a POSIXct index.
278
279o  index.xts() works even if the package containing the class for the index
280   is not attached (it needs to be loaded, however).
281
282o  [.xts now returns NA if a one-column xts object is subsect by NA, instead
283   of throwing an uninformative error (#97).
284
285o  Fixed bugs that would crash R when [.xts was called a certain way and 'j'
286   contained NA values (#97, #181).
287
288o  Fixed a bug in endpoints() where 1 second would be subtracted for any date
289   in the year 1969. The subtraction is only supposed to occur on
290   1969-12-31 23:59:59.9... to work around behavior in strptime().
291
292o  timeBasedSeq() now honors hour/min/sec 'BY' values (#91).
293
294o  [.xts now throws an error if 'j' is character and not one of the column
295   names. This is consistent with [.zoo and [.matrix (#48).
296
297o  timeBasedSeq() now works correctly when resolution is "days" the sequence
298   includes a daylight saving time change (#67).
299
300o  Explicitly set indexTZ="UTC" for all index classes that do not have a TZ
301   (#66).  indexTZ="GMT" is also allowed.
302
303o  Fixed as.xts() when called on an 'mts' object (#64).
304
305o  Moved development from R-Forge to GitHub.
306
307o  Fixed bug in to.period() that errored when name=NULL (#5937).
308
309o  Fixed bug in .index* functions that did not account for timezones (#5891).
310
311o  Fixed bug that allowed index<-.xts to produce an unsorted index (#5893).
312
313o  Fixed bug so subsetting a zero-width xts object with a zero-length 'i'
314   vector no longer returns an object with column names (#5885).
315
316o  Updated [.xts to handle 'i' containing multiple zeros (e.g. subsetting by a
317   "logical" column of an integer xts object).
318
319o  endpoints() now errors if k < 0.
320
321Changed in xts 0.9-7:
322
323o  Fixed bug that caused logical operators on xts objects to drop the 'tzone'
324   attribute (#2750).
325
326o  Fixed bug that ignored 'which.i' argument to [.xts on zero-width xts
327   objects (#2753).
328
329o  Fixed bug where xts() does not sort 'order.by' if x is missing (#4775).
330
331Changed in xts 0.9-6:
332
333o  Fixed bug where setting dimnames to NULL would break as.xts() (#4794).
334
335o  Added checks to period.sum/prod/min/max to ensure INDEX is in [0,nrow(x)].
336
337o  Fixed missing argument to na_locf() in the C/C++ xtsAPI (Dirk Eddelbuettel).
338
339Changed in xts 0.9-5:
340
341o  Increased zoo dependency version to 1.7-10 for changes in C code.
342
343o  Fixed several minor issues in the C/C++ xtsAPI (Dirk Eddelbuettel).
344
345Changed in xts 0.9-4:
346
347o  Fixed bug where the index was missing the 'tzone' attribute.
348
349o  Fixed to.period() bug when 'indexAt' is "firstof" or "lastof". (bug #2691,
350   patch #2710, thanks to Garrett See)
351
352o  Fixed subsetting bug on zero-width xts objects that returned NA data and an
353   NA index (#2669).
354
355o  xts' merge() method now has 'drop' and 'check.names' arguments to match
356   the zoo merge() method.
357
358o  'index<-' now correctly handles UTC Date objects when resetting index
359   values. '.index<-' behaved correctly.
360
361o  xts' rollapply() method now handles the 'fill' argument.
362
363o  Added several functions to the C/C++ API:
364   - make_index_unique
365   - make_unique
366   - endpoints
367   - do_merge_xts
368   - na_omit_xts
369   - na_locf
370
371o  Fixed xts' rollapply() method when input has one column, but function
372   output has more than one column.
373
374Changed in xts 0.9-3:
375
376o  No user-visible changes.
377
378Changed in xts 0.9-2:
379
380o  Added C/C++ xtsAPI (Dirk Eddelbuettel)
381
382o  Added tzone() and tclass() functions as aliases to indexTZ() and
383   indexClass(), respectively. Eventually will Deprecate/Defunct the former.
384
385Changed in xts 0.9-1:
386
387o  xts() now ignores timezone arguments when order.by is Date class, with a
388   warning.
389
390Changed in xts 0.8-8:
391
392o  Modified str() output to make use of proper ISO-8601 range formating
393
394o  Fixed bug in reclass() when 'tzone' of object is different than system TZ.
395
396o  Fixed bug in xts() that dropped dims when 'x' is a 1-column matrix or
397   data.frame.
398
399o  [.xts no longer warns if 'i' is zero-length.
400
401o  to.period() now checks that 'x' is not zero-length/width.
402
403o  Fixed edge case in Ops.xts where two objects with no common index create
404   an invalid 'xts' object with no index.
405
406o  to.monthly() and to.quarterly() now default to drop.time=TRUE.
407
408o  Internal .drop.time() now changes the index class to Date. This affects
409   the to.period() family of functions.
410
411o  Restore Date index/tclass conversion to POSIXct with a UTC timezone via
412   integer division instead of double-precision division.
413
414Changed in xts 0.8-6:
415
416o  Revert Date index/tclass conversion to POSIXct with a UTC timezone to
417   previous behavior as in 0.8-2.
418
419Changed in xts 0.8-5:
420
421o  A Date index/tclass is now internally converted to POSIXct with a UTC
422   timezone ensure proper conversion regardless of user TZ settings.
423
424o  tclass is now an argument to .xts()
425
426o  Fix endpoints() properly handles millisecond time stamps (and microsecond
427   on not Windows).
428
429o  Subsetting zero-width xts objects now behaves like zoo, with NA values
430   returned for valid row requests.
431
432Changed in xts 0.8-2:
433
434o  Fixed bug in lag() and diff() for character coredata.
435
436o  Fixed subsetting bug that returned a contiguous chunk of data even when
437   a non-contiguous 'i' was provided.
438
439o  Fixed bug that ignored FinCenter/TZ for timeDate index
440
441o  period.apply() now only sets colnames if the number of columns in the input
442   and output are equal.
443
444o  Fixed periodicity() when scale = "yearly"
445
446o  Fixed [.xts when row-subsetting via a POSIXct vector, which returned an
447   object full of NA.
448
449o  Added '...' to axis() call inside of plot.xts() to allow for 'cex.axis'
450   and 'cex.lab' to be passed in.
451
452o  Fixed axes=FALSE issue in plot.xts().
453
454o  Dependency now on 1.7-0 or better of zoo (R-forge at present)
455   This build now links to C code moved from xts to zoo. At present
456   this is only for zoo_lag (used in lag and lagts)
457
458o  Added 'drop' and 'fromLast' arguments to make.index.unique().
459
460o  Added adj.time() and shift.time()
461
462o  Fixed na.locf() bug that would fill trailing NA larger than 'maxgap'
463   observations (#1319)
464
465o  Updated indexFormat() documentation and add an example
466
467Changed in xts 0.8-0:
468
469o  Fix print formatting (#1080)
470
471o  Fix bug related to na.locf() and zero-width objects (#1079)
472
473o  Add .RECLASS = FALSE after '...' for as.xts.*() methods. This makes all
474   as.xts.*() methods one-way (i.e. not reclass-able). Objects converted to
475   xts via try.xts() can still be converted back to their original class
476   via relcass().
477
478o  Fix bug that caused colnames to be dropped if object is subset by time
479   that is not in the index.
480
481Changes in xts 0.7-5:
482
483o  try.xts and reclass now are more efficient on xts objects,
484   no longer appending a .RECLASS attribute. This penalty
485   (copying) is shifted to classes that are internally converted
486   to xts.
487
488Changes in xts 0.7-4:
489
490o  internal attributes of index are now maintaining
491   timezone (tzone), time class (tclass) information.
492
493o  `[.xts` method is now using new C code. This may revert
494   back as character-based objects are not supported. Changed
495   for future code refactoring into zoo, as well as performance
496   gains on integer, double and logical values. Also added in
497   checks for NAs.  drop=TRUE now works correctly in all known
498   applications.
499
500o  (cbind)merge.xts and rbind.xts now copy index attributes
501   to handle internal changes to index characteristics (in C code)
502
503o  indexTZ.Rd updated to provide information regarding internal
504   changes.  Also indexTZ<- is now exported to facilitate
505   timezone changing of xts objects.
506
507Changes in xts 0.7-1:
508
509o  subsecond ISO8601 subsetting on dates
510   before 1970 (epoch) is disabled. This is due to a bug
511   in the R implementation of POSIX handling of fractional
512   seconds pre-1970.  10 microsecond granularity is still
513   functional for all other times. Thanks to Andreas Noack Jensen
514   for the early bug report.
515
516o  new 'tzone' arg in xts constructor and 'tz' in .parseISO8601
517   allows for future support of non-system TZ dependent indexing
518
519o  internal index attribute (numeric) now can have attributes
520   set (tzone is currently the only one used in xts). These should
521   remain during all xts operations. Still experimental.
522
523o  naCheck has been exposed at the C level for use in packages
524   "LinkingTo: xts".  See ?xtsAPI for more details.
525
526Changes in xts 0.7-0:
527
528o  A new NEWS file.
529
530o  print.xts now passes ...
531
532o  endpoints speedup and bug fix (thanks Ismail Onur Filiz)
533
534o  na.omit bug on logical and NaN fixes (thanks Fabrizio Pollastri
535   and Koert Kuipers)
536
537o  fromLast=FALSE for na.locf.xts.  Matching to zoo. (thanks
538   to Sandor Benczik)
539
540o  LGLSXP support in leadingNA (R fun naCheck)
541
542o  fixed logical and NA 'j' subsetting. Thanks Koert Kuipers.
543
544o  as.xts and as.timeSeries fixes for timeSeries changes
545
546o  merge and subset now support dimensionless xts (non-standard).
547   merge segfault fixed when merging all 3 or more zero-width xts objects
548   and only zero-width objects.  Thanks to Koert Kuipers for the report.
549
550o  added which.i to [.xts to return i values found via
551   ISO8601 subset string
552
553o  new lines.xts and plot.xts, similar to methods in zoo
554
555o  lastof now has sec to 10 microsecond precision, and subsec
556   arg to append to secs.
557
558o  xts() further consistency in NROW/index check
559
560o  align.time error checks for positive n= values (thanks Brian Peterson)
561
562o  toPeriod updates in C, almost exported. ~600-1200x faster
563
564o  new lag_xts in C.  Increased speed and index flexibility.
565
566o  endpoints 'days' bug fix
567
568o  .makeISO8601 function to create ISO8601 compliant string
569   from xts objects
570