-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Exclude non-API calls #135
Exclude non-API calls #135
Conversation
/bindings |
I updated the branch using my forked repo: yutannihilation#15 |
Hmm, strange. |
Oh, Intel mac seems to keep failing... Anyway, I realize checking these list eagerly is unstable and not a good idea. I'll move it to a separate action just for updating nonAPI.txt. |
…tannihilation/libR-sys into refactor/remove-non-API-calls
/bindings |
Okay, sorry for being noisy. This should be ready now, but I don't want to merge this before publishing v0.4.0. Adding APIs should be safe, but removing might not. I'll write the summary in description, but in short,
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you have time to tell us why these things should be hidden, that would be great. But sure, non-api things that are exposed due to C being C, is understandable.
Thanks.
To prevent tragedy like extendr/extendr#424 |
/bindings |
Close #132
The main change of this pull request is preventing the "non-API" calls from being included in the
allowlist
. These "non-API" are APIs that are available but prohibited to use. What does "prohibited" mean? It meansR CMD check
warns, so a package using extendr won't be accepted by CRAN. So, it's better not to expose them.To be clear, (except that there's no guarantee that these APIs can get changed without any announcement) it's not a problem as long as the user doesn't have the ambition to submit their R package to CRAN. Actually, the extendr-engine crate some of these. So we have to keep them exported.
The list of "non-API" symbols can be found in
tools:::nonAPI
. To avoid complexity, this is dumped to a text filenonAPI.txt
outside ofbuild.rs
, and periodically updated by the GitHub Actions CI; when there's any change on the list, the CI automatically creates a pull request like this: yutannihilation#19.