Deprecating xfun::isFALSE()

Yihui Xie 2023-02-06

Update on 2023-09-07: you probably came to this blog post due to an error related to xfun::isFALSE(), and I strongly recommend that you update all your R packages: update.packages(ask = FALSE, checkBuilt = TRUE) That’s because the error is most likely to be from one of your outdated packages.

Base R has had the function isTRUE() for many years, and I had wished for a few years that there were an isFALSE(), too. I had used identical(x, FALSE) many times before I added it to the first version of the xfun package as the function isFALSE(). The xfun package was first released to CRAN on 2018-01-22.

Three months later (2018-04-23), R 3.5.0 was released, which included a function named isFALSE() in the base package. Apparently another mind was thinking like me (which turned out to be Martin Mächler).


Last year Martin sent a pull request to remove isFALSE() from xfun, which was what I wished to do for a long time, but I couldn’t just remove it, because it was used in quite a few of packages that I maintain. Recently I have removed the usage in them and checked all reverse dependencies of xfun. It seems no other packages would be affected if I deprecate xfun::isFALSE(), which is good news. I’m not sure if it is used in non-package code by anyone, though.

Anyway, I’m announcing the deprecation of xfun::isFALSE() today (I hope it is the first and also the last time that you have heard of this function). For now, it will throw an error during R CMD check if you still use it in a package. In future, it will simply throw an error if base::isFALSE() exists. In the end, I’ll just remove it from xfun, and you should use isFALSE() in base R instead. I wish it won’t have much impact on your code. I apologize if it does.

Had I waited for three more months, I wouldn’t have this trouble. Timing can be funny sometimes.