pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/devel/R-bit64



Module Name:    pkgsrc
Committed By:   mef
Date:           Mon Jun  1 21:58:19 UTC 2026

Modified Files:
        pkgsrc/devel/R-bit64: Makefile distinfo

Log Message:
(devel/R-bit64) Updated 4.6.0.1 to 4.8.0

# bit64 4.8.2 (2025-05-19)
--------------------------

## BUG FIXES

1. Fix some potential segfaults from shellsort algorithms (#315). The
culprit code has been faulty for many years, but only newly caught by
CRAN's rigorous environment with extensive new test coverage.

1. `==` and other comparators (`!=`, `>`, `<`, `>=`, `<=`) correctly
match integer behavior when comparing integer64 and character/factor,
e.g. `as.integer64(1) == "1"` (#323).

# bit64 4.8.0 (2025-04-19)
--------------------------

## NOTICE OF PLANNED BREAKING CHANGES

1. The remaining S3 methods will be un-exported in the next release:

   `[<-.integer64`, `abs.integer64`, `all.integer64`, `any.integer64`,
   `as.character.integer64`, `as.data.frame.integer64`,
   `as.double.integer64`, `as.integer.integer64`,
   `as.integer64.character`, `as.integer64.double`,
   `as.integer64.integer`, `as.integer64.logical`, `c.integer64`,
   `format.integer64`, `is.na.integer64`, `log.integer64`,
   `max.integer64`, `min.integer64`, `print.integer64`,
   `rank.integer64`, `rep.integer64`, `seq.integer64`,
   `str.integer64`, `sum.integer64`, `unique.integer64`

   All of these have observed downstream calls directly. If the call
   is in a CRAN/Bioconductor package, I'll be reaching out to help
   migrate onto the generic. This will probably take at least a year,
   so don't expect this to induce a CRAN release _per se_ until 2027
   (although you should certainly aim to slip this in to your next
   release in the meantime).

1. When integer64 and character are combined, the result will be
character. This prevents loss of information, e.g. in
`c(as.integer64(1L), "a")` and `c(as.integer64(1L),
"999999999999999999999999")`. Use the option
`bit64.promoteInteger64ToCharacter` set to `TRUE` to try this in
advance for `c.integer64`, `cbind.integer64`, `rbind.integer64`,
`[.integer64<-`, `[[.integer64<-`, `union`, `intersect`, `setdiff`,
and `is.element`.

1. `keep.names` will be removed from `as.integer64()` methods,
e.g. `double`. Allowing `keep.names` is inconsistent with other vector
coercions like `as.integer()`, `as.double()`, `as.character()`,
... which strip names. Therefore, starting from the next release, it
will be a warning to use this argument; users should just add code to
retain the names if so desired.

## BREAKING CHANGES

1. {bit64} no longer `Depends` on {bit}; instead it `Imports` it. Here
I copy the advice from 4.6.0-1 about how to adapt to this as a user
depending on {bit64} if it affects you:

   Users relying on Depends in scripts can (1) write `library(bit)` to
   attach {bit} explicitly or (2) namespace-qualify all {bit} calls
   with `bit::`.

   Package authors relying on Depends can (1) add `import(bit)` to
   make the full {bit} namespace available or (2) namespace-qualify
   all {bit} calls with `bit::`; adding {bit} to `Imports:` or
   `Suggests:` will also be necessary.

1. The following S3 methods were directly removed from the NAMESPACE:

   `-.integer64`, `:.default`, `:.integer64`, `!.integer64`,
   `!=.integer64`, `[.integer64`, `[[.integer64`, `[[<-.integer64`,
   `*.integer64`, `/.integer64`, `&.integer64`, `%/%.integer64`,
   `%%.integer64`, `%in%.default`, `%in%.integer64`, `^.integer64`,
   `+.integer64`, `<.integer64`, `<=.integer64`, `==.integer64`,
   `>.integer64`, `>=.integer64`, `|.integer64`,
   `all.equal.integer64`, `as.bitstring.integer64`,
   `as.integer64.bitstring`, `as.integer64.factor`,
   `as.integer64.integer64`, `as.integer64.NULL`, `as.list.integer64`,
   `as.logical.integer64`, `cbind.integer64`, `ceiling.integer64`,
   `cummax.integer64`, `cummin.integer64`, `cumprod.integer64`,
   `cumsum.integer64`, `diff.integer64`, `duplicated.integer64`,
   `floor.integer64`, `hashdup.cache_integer64`,
   `hashfin.cache_integer64`, `hashfun.integer64`,
   `hashmap.integer64`, `hashmaptab.integer64`,
   `hashmapuni.integer64`, `hashmapupo.integer64`,
   `hashpos.cache_integer64`, `hashrev.cache_integer64`,
   `hashrin.cache_integer64`, `hashtab.cache_integer64`,
   `hashuni.cache_integer64`, `hashupo.cache_integer64`,
   `is.double.default`, `is.double.integer64`, `is.finite.integer64`,
   `is.infinite.integer64`, `is.nan.integer64`, `is.sorted.integer64`,
   `is.vector.integer64`, `keypos.integer64`, `length<-.integer64`,
   `log10.integer64`, `log2.integer64`, `match.default`,
   `match.integer64`, `mean.integer64`, `median.integer64`,
   `mergeorder.integer64`, `mergesort.integer64`,
   `mergesortorder.integer64`, `na.count.integer64`,
   `nties.integer64`, `nunique.integer64`, `nvalid.integer64`,
   `order.default`, `order.integer64`, `orderdup.integer64`,
   `orderfin.integer64`, `orderkey.integer64`, `ordernut.integer64`,
   `orderpos.integer64`, `orderqtl.integer64`, `orderrnk.integer64`,
   `ordertab.integer64`, `ordertie.integer64`, `orderuni.integer64`,
   `orderupo.integer64`, `prank.integer64`, `print.bitstring`,
   `prod.integer64`, `qtile.integer64`, `quantile.integer64`,
   `quickorder.integer64`, `quicksort.integer64`,
   `quicksortorder.integer64`, `radixorder.integer64`,
   `radixsort.integer64`, `radixsortorder.integer64`,
   `ramorder.integer64`, `ramsort.integer64`,
   `ramsortorder.integer64`, `range.integer64`, `rank.default`,
   `rbind.integer64`, `round.integer64`, `scale.integer64`,
   `shellorder.integer64`, `shellsort.integer64`,
   `shellsortorder.integer64`, `sign.integer64`, `signif.integer64`,
   `sort.integer64`, `sortfin.integer64`, `sortnut.integer64`,
   `sortorderdup.integer64`, `sortorderkey.integer64`,
   `sortorderpos.integer64`, `sortorderrnk.integer64`,
   `sortordertab.integer64`, `sortordertie.integer64`,
   `sortorderuni.integer64`, `sortorderupo.integer64`,
   `sortqtl.integer64`, `sorttab.integer64`, `sortuni.integer64`,
   `sqrt.integer64`, `summary.integer64`, `tiepos.integer64`,
   `trunc.integer64`, `unipos.integer64`

   Previously, it was noted that this release would feature a warning
   to nudge towards correcting direct calls, but that has proven
   infeasible -- R's evaluation rules are simply too complex to
   warrant an expensive haystack search for the generic in the call
   stack each time a method is invoked. In some cases it is also not
   possible, period.

   Because there was no recorded direct usage for any of these, I am
   opting to just rip the band-aid off and un-export them in this
   release as opposed to waiting a full cycle more to do so.

1. `as.integer64.integer64` returns a plain `integer64` vector
stripped of any attributes. This is consistent with R-like behavior,
e.g. `as.integer.integer`.

1. `%/%` matches base R/Knuth behavior of taking the `floor()` of a
result, where previously truncation was towards zero. For example,
`as.integer64(-10L) %/% as.integer64(7L)` now gives `-2L`, not
`-1L`. This is consistent with `-10L %/% 7L` in base R. Consequently,
`%%` is also affected, e.g. `as.integer64(-10L) %% as.integer64(7L)`
now gives `4L`, not `-3L`, consistent with `-10L %% 7L` in base R.

## NEW FEATURES

1. `anyNA` gets an `integer64` method. Thanks @hcirellu.

1. `table` now gets a generic function and `table.integer64` is
extended by `base::table` parameters `exclude` and `useNA`
(#59). Thanks @hcirellu. Note that as of now, for multiple inputs like
`table(x, y, z)`, the efficient `table.integer64` implementation is
only invoked if _all_ of `x`, `y`, and `z` can be losslessly coerced
to `integer64`. If, say, `y` is a character vector, the default method
will be applied, leading to `x` being coerced to `character` (and then
`factor`), which can result in unexpected ordering of the results when
negative numbers are included. To get around this, do coercion
yourself first (either coerce all inputs to `integer64` to get the
fast implementation, or coerce the `integer64` input(s) to `factor`
with the desired ordering).

1. The `seq()` method for `integer64` has been overhauled to better
match features from the default method.  - The motivation is #47,
where `seq(as.integer64(1L), 11L, length.out=6L)` calculated `by=`
incorrectly to give `1:6` instead of `c(1L, 3L, ..., 9L, 11L)`.  -
`length.out=` was also sometimes ignored, for example
`seq(to=as.integer64(5L), length.out=0L)` will now always just give
`integer64()`.  - `seq(a, a, by=by)` is no longer an error.  - We
match the default method behavior of assuming `from=1` and `to=1` if
needed in order to support usage like `seq(as.integer64(10L), by=-1L)`
and `seq(by=as.integer64(3L), length.out=8L)`.  - `seq(a, a,
length.out=n)` will give `rep(a, n)`, not `seq(a, by=1,
length.out=n)`.

1. Coercion to/from integer64 is expanded greatly (includes
#199). Thanks @hcirellu.
   - `as.Date`, `as.POSIXct`, `as.POSIXlt`, `as.complex`, and `as.raw`
     get an `integer64` method.
   - `as.integer64` gets `Date`, `POSIXct`, `POSIXlt`, `complex`,
     `raw`, and `difftime` methods.

1. `as.integer64.character`:

   - Supports hexadecimal (base 16) input when prefixed with "0x" or
     "-0x", e.g. `as.integer64("0x7FFFFFFFFFFFFFFF")`. Thanks
     @hcirellu for a PR which completes work begun by @marcpaterno.

   - Ignores leading/trailing whitespace (as does `as.integer()`;
     #232).

1. `sortcache`, `sortordercache` and `ordercache` get a new argument
`na.last`.

1. `matrix`, `array`, `%*%` and `as.matrix` get an `integer64` method
(#45). Thanks @hcirellu.

1. `factor`, `as.factor`, `ordered`, and `as.ordered` support
`integer64` input correctly, i.e. the levels are sorted according to
`integer64` values. Thanks @hcirellu.

1. A replacement in an integer64 vector or array using `[<-` or `[[<-`
with a complex or POSIXct leads to an R consistent coercion of the
integer64 object to a complex or POSIXct object and not just an
error. Thanks @hcirellu.

1. `union`, `setdiff`, `intersect`, `setequal` and `is.element` get an
overload to work correctly with `integer64` (#182).

1. The methods of the 'Ops' group (e.g. `+`, `&`, `==`) now support
dispatch for both arguments so that e.g. `difftime * integer64` works
consistent with R (#179). Thanks @hcirellu. Note that this relies on
`chooseOpsMethod()` and thus R 4.3.0.

1. `c.integer64`, `cbind.integer64` and `rbind.integer64` now support
combining with lists and recursion as `base::c`, `base::cbind` and
`base::rbind` do (#252). In addition, by setting the option
`bit64.promoteInteger64ToCharacter=TRUE` the methods return character
if integer64 and character are combined. Thanks @hcirellu.

## BUG FIXES

1. `min.integer64`, `max.integer64` and `range.integer64` now support
`na.rm=TRUE` correctly when combining across multiple inputs like
`min(x, NA_integer64_, na.rm=TRUE)` (#142).

1. `as.integer64.integer64` is consistent with `as.integer.integer` in
terms of returning a plain integer64 vector (i.e., stripped of
attributes; #188). Thanks @hcirellu.

1. `log(integer64(), base=integer64(1))` no longer warns, consistent
with `log(integer(), base=integer())` (#93).

1. `sortfin(integer64(), 1:10)` no longer segfaults (#164).

1. `orderfin(as.integer64(10:1), 1:3, 8:11)` enforces that `table` be
sorted by `order` instead of segfaulting (#166).

1. `ordertab()` no longer segfaults when `nunique` is smaller than the actual number of unique values (#168).

1. `as.integer64.character` now returns `NA` for out of range values,
with warning, e.g. `as.integer64("22222222222222222222")`
(#175). Thanks @hcirellu.

1. `quicksort()` and others no longer segfault on trivial cases
(e.g. sorting 0 or 1 item, #220).

1. `as.integer64(2^63)` returns `NA_integer64_` more consistently
(e.g. on ARM), consistent with `as.integer(2^31)` (#19). Thanks
@dipterix.

1. `[.integer64` now runs faster and correctly regarding `NA` and
arrays (#176). Thanks @hcirellu.

1. `integer64() %in% 1L` no longer warns (#265). Thanks @hcirellu.

1. `match.integer64(..., method="orderpos")` and
`duplicated.integer64(..., method="orderdup")` no longer fail with
"object 's' not found" (#58).

1. `median(NA_integer64_, na.rm=FALSE)` and `median(integer64())` now
return `NA_integer64_`, aligning its behavior with
`median(NA_integer_)`, #185. Previously the former threw an error
while the latter gave an incorrect result. Thanks @ben-schwen for the
report and the PR.

## NOTES

1. {bit64} no longer prints any start-up messages through an
`.onAttach()` hook (#106). Thanks @hadley for the request.

1. The R version dependency has been bumped from 3.4.0 (2017) to 3.5.0
(2018).

1. From R 4.6.0, R's {utils} package has its own 'bitstring' class
which is basically compatible with that shipped by {bit64} for many
years. `as.bitstring()` only makes a simple adjustment, namely, for
`as.bitstring()` to add two new attributes (`nbits` and
`type`). Everything else should continue to work as before.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 pkgsrc/devel/R-bit64/Makefile
cvs rdiff -u -r1.6 -r1.7 pkgsrc/devel/R-bit64/distinfo

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/devel/R-bit64/Makefile
diff -u pkgsrc/devel/R-bit64/Makefile:1.8 pkgsrc/devel/R-bit64/Makefile:1.9
--- pkgsrc/devel/R-bit64/Makefile:1.8   Mon Feb  3 13:36:23 2025
+++ pkgsrc/devel/R-bit64/Makefile       Mon Jun  1 21:58:19 2026
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.8 2025/02/03 13:36:23 mef Exp $
+# $NetBSD: Makefile,v 1.9 2026/06/01 21:58:19 mef Exp $
 
 R_PKGNAME=     bit64
-R_PKGVER=      4.6.0-1
+R_PKGVER=      4.8.2
 CATEGORIES=    devel
 
 MAINTAINER=    minskim%NetBSD.org@localhost

Index: pkgsrc/devel/R-bit64/distinfo
diff -u pkgsrc/devel/R-bit64/distinfo:1.6 pkgsrc/devel/R-bit64/distinfo:1.7
--- pkgsrc/devel/R-bit64/distinfo:1.6   Mon Feb  3 13:36:23 2025
+++ pkgsrc/devel/R-bit64/distinfo       Mon Jun  1 21:58:19 2026
@@ -1,5 +1,5 @@
-$NetBSD: distinfo,v 1.6 2025/02/03 13:36:23 mef Exp $
+$NetBSD: distinfo,v 1.7 2026/06/01 21:58:19 mef Exp $
 
-BLAKE2s (R/bit64_4.6.0-1.tar.gz) = aa6d0f8fb97fa06d85ef53124532f001f923f80e4df8439f1b0035e34702ca76
-SHA512 (R/bit64_4.6.0-1.tar.gz) = 64de14794f1f035c6f32863b87c1bddfb431062fc655be78d454b825a3cb7344374b9e4142778a69f50ad6c7a8ab4e9451fcf571cddd08029dd54a25facbd317
-Size (R/bit64_4.6.0-1.tar.gz) = 142045 bytes
+BLAKE2s (R/bit64_4.8.2.tar.gz) = be585de3fecf64dde42d4ef039c7c39dd22aa15be613aeb87b27b5f366403c52
+SHA512 (R/bit64_4.8.2.tar.gz) = 027d962b1b99baf5ddca8bd845fa51f3d12cd4a958ba18649354c185475270f7407d5bf3b4e4952a7fda6705c26a3423b015cfbf41616349fd55a10d7eef9890
+Size (R/bit64_4.8.2.tar.gz) = 171594 bytes



Home | Main Index | Thread Index | Old Index