This package contains a collection of operator overloads for use with UFO vectors: R API of the UFO native vectors, and UFO sandboxed R vectors.
The package provides operators and helper functions for UFO vectors:
-
, +
, !
*
, +
, -
, %%
, /
, %/%
<
, <=
, >
, >=
, >
, >=
, ==
, !=
, |
, &
[
, [<-
ufo_subscript
ufo_mutate
Warning: UFOs are under active development. Some bugs are to be expected, and some features are not yet fully implemented.
Check if your operating system restricts who can call userfaultfd
:
cat /proc/sys/vm/unprivileged_userfaultfd
0 means only privileged users can call userfaultfd
and UFOs will only work
for privileged users. To allow unprivileged users to call userfaultfd
:
sysctl -w vm.unprivileged_userfaultfd=1
Before building, retrievew the code of a submodule:
git submodule update --init --recursive
To update the submodule, pull it.
cd include/ufo_r && git pull origin main && cd ../..
Install the package with R. This compiles and properly install the package.
R CMD INSTALL --preclean .
You can also build the project with debug symbols by setting (exporting) the
UFO_DEBUG
environmental variable to 1
.
UFO_DEBUG=1 R CMD INSTALL --preclean .
Check the package and display all errors:
_R_CHECK_TESTS_NLINES_=0 R CMD check .
syscall/userfaultfd: Operation not permitted
error initializing User-Fault file descriptor: Invalid argument
Error: package or namespace load failed for ‘ufos’:
.onLoad failed in loadNamespace() for 'ufos', details:
call: .initialize()
error: Error initializing the UFO framework (-1)
The user has insufficient privileges to execute a userfaultfd system call.
One likely culprit is that a global sysctl
knob vm.unprivileged_userfaultfd
to
control whether userfaultfd is allowed by unprivileged users was added to kernel
settings. If /proc/sys/vm/unprivileged_userfaultfd
is 0
, do:
sysctl -w vm.unprivileged_userfaultfd=1
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.