bit64 package to better support long integers.pjrt_buffer(), pjrt_scalar(), and as_array() gain a check
argument (default FALSE). When TRUE, the call errors instead of
silently losing information: on input if data contains NAs, on
output if the materialized R vector contains a value that's
indistinguishable from NA or that has wrapped through the integer
container.as_array() on a ui32 buffer now returns a bit64::integer64
instead of a base integer, so values >= 2^31 round-trip losslessly
rather than wrapping to negative.buffer_copy() function to copy buffer between devices.pjrt_register_custom_call() allows external packages to register C/C++
XLA FFI handlers with the PJRT plugin. Registration is deferred until the
plugin loads, so handlers can be registered during .onLoad().pjrt_device() now returns cached PJRTDevice instances, so repeated calls
for the same device yield objects with stable identity (useful for hashing
and caching, e.g. in {anvil}'s JIT).protoc compiler from the same installation
as the linked protobuf library, preventing version mismatches when multiple
protobuf versions are installed.cpu:1) now targets
that device instead of silently falling back to cpu:0.Operations such as host <-> device transfers and program execution were previously only synchronous. Now, they are asynchronous which has considerable performance benefits, especially on GPU. Specifically:
pjrt_buffer() and pjrt_execute() return immediately, but the returned buffer is not
necessarily ready. To await a transfer or computation of a buffer, use
await(). However, this is handled within PJRT, so this function never has to
be called by a user.as_array() is still synchronous, but there is now the asynchronous version
as_array_async() but this is rarely needed.
If used, it returns a PJRTArrayPromise object which can be converted to
an R array/vector via value().PJRTBuffer or PJRTArrayPromise is ready, use
is_ready().dtype support for PJRTBuffers via the tengen::dtype S3 generic. "bool" is now accepted as an alias for "i1"/"pred".DataType objects in the dtype parameter of pjrt_buffer().device argument in pjrt_compile().pjrt_execute().cuda12.8 package, which now only
requires compatible drivers to be installed.PJRTBuffer now uses "bool" instead of "pred" to avoid
discrepancies with {anvl}.