VisionEval/VisionEval-Dev

VisionEval won't run with R 4.2.0

Closed this issue · 2 comments

VisionEval will not run properly on R 4.2.0 because of changes in expectations for logical values used in "if" and "while" tests. The new behavior requires a logical "vector" of length one in tests and certain logical operators (that is, a scalar logical value). The previous behavior allowed a vector of logical (or convertible to logical) values, but only looked at the first element of the vector.

Some of the tests are easy to fix (e.g. if there is potentially a vector, explicitly index it to its first value in the test).

Other if/while tests are going to require deeper surgery on the modules. The original development frequently used the single vertical bar or ampersand ("|" or "&", which do a logical comparison for each element of two vectors) whereas for tests the double symbol "||" or "&&" will only look at the first element - and in 4.2 the formerly silent behavior of that implicit indexing is now accompanied with a warning (which will make it easier to spot locations of failure). We will need to carefully watch the model runs, find the failure points and fix the corresponding tests.

A point of likely misery in attempting to fix these problems is that because "&&" and "||" will "short-circuit" (not evaluate their right-hand side if the value of the resulting expression can be known from the left-hand side), it will be very hard to find all the points of failure for all possible user inputs (and errors or oddities in user inputs) just by running the models. So in addition to fixing what we can, we need to learn to recognize failures that arise from this change in R behavior (which may make earlier attempts to trap and recover from bad or unusual input values ineffective).

As a final pain point, R 4.2.0 has completely changed its underlying build environment (and in my view, the magnitude of that change warranted bumping it to 5.0 instead of 4.2). R no longer has 32-bit versions (which you never wanted to use with VisionEval in any case), and it uses a different libraries at a Windows system level. While there is no obvious trouble with that, ever since I installed 4.2.0 on my main computer I am no longer able to run the 64-bit versions of 4.1.x (I do have another machine that has only the 4.1.x versions).

It is very important to steer clear of R 4.2.0; even installing it can disrupt your earlier R version environments. I'm presuming that problem occurs because of some app or environment variable setting that sends the 4.1.x versions looking for something that is radically different. But uninstalling everything and reinstalling doesn't cure the problem. It may also just be a weirdness of my own Windows 10 environment.

We're going to resolve all that by carefully working over the VisionEval code base to ensure it will run successfully in R 4.2.0 and then probably give up on-going support for the earlier versions.

Fixes are working and in the pipeline

Fixed in development-next push 2023-03-24