Skip to content

Release lintr 3.0.0 #824

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

Closed
21 tasks done
AshesITR opened this issue Jul 2, 2021 · 30 comments
Closed
21 tasks done

Release lintr 3.0.0 #824

AshesITR opened this issue Jul 2, 2021 · 30 comments
Milestone

Comments

@AshesITR
Copy link
Collaborator

AshesITR commented Jul 2, 2021

Prepare for release:

Submit to CRAN:

  • usethis::use_version('major')
  • devtools::submit_cran()
  • Approve email

Wait for CRAN...

  • Accepted 🎉
  • usethis::use_github_release()
  • usethis::use_dev_version()
  • Finish blog post
  • Tweet
  • Add link to blog post in pkgdown news menu
@MichaelChirico
Copy link
Collaborator

Aside: I can tell I've been working on translations too much lately that I read "Polish NEWS" as "🇵🇱 NEWS"

@AshesITR
Copy link
Collaborator Author

AshesITR commented Jul 2, 2021

Feel free to add or remove TODOs, I just used usethis::use_release_issue() to not forget anything.

@AshesITR
Copy link
Collaborator Author

AshesITR commented Jul 3, 2021

I've started a full revdepcheck, will upload the results later.


Edit: I'm having trouble with some packages producing unintelligible error messages.
Can anyone else see if they manage to complete revdepcheck on the 94 packages?

@russHyde
Copy link
Collaborator

russHyde commented Jul 7, 2021

Could you add @AshesITR , @MichaelChirico and @renkun-ken as authors in DESCRIPTION prior to release. You've done really great work on lintr over the past year.

@lorenzwalthert
Copy link

Any ETA on this?

@eitsupi
Copy link
Contributor

eitsupi commented Mar 19, 2022

Thank you for your continued development. I am wondering when a new release is planned.
(It seems that most of what's on the to-do list has been accomplished.)

@MichaelChirico
Copy link
Collaborator

I think #962 is the main blocker before going back into release cycle (checking revdeps, tidying NEWS, etc). @AshesITR any other thoughts?

@MichaelChirico
Copy link
Collaborator

OK, just took another pass at triaging issues for this release. I am pretty happy with what'll be included based on the current milestone. @AshesITR feel free to update. 23 issues left, >1/2 of which have corresponding PRs, a few more are meta-issues related to the release itself. I think we're pretty close.

@MichaelChirico
Copy link
Collaborator

Looking at the milestone, I think we're pretty much at "code freeze" stage -- shall I put out an announcement requesting early testing? Maybe after #1140?

@AshesITR
Copy link
Collaborator Author

SGTM

@MichaelChirico
Copy link
Collaborator

Noting here that Hadley offered to host a release blog post on the tidyverse blog:

https://twitter.com/hadleywickham/status/1528081727259824128

@MichaelChirico
Copy link
Collaborator

MichaelChirico commented Jun 2, 2022

Finally got latest dev working internally and did a full run of 2.0.1 vs. roughly aec989e (I'll just call it 3.0) and am comparing. Note that ~most lints at our HEAD were already cleaned, so the baseline is relatively low. here's a rough summary of the observed changes:

  • ~1% of lints found in 2.0.1 are gone in 3.0
  • ~25% of lints found in 3.0 were not there in 2.0.1
    • ✅ about 10% are on the new missing_argument_linter; a decent number would fit under Add a parameter allow_trailing to missing_argument_linter() #1152
    • ✅ about 10% are thanks to improvements in fixed_regex_linter, e.g. when named arguments are given
    • ✅ about 3% are thanks to improvements in infix_spaces_linter, e.g. function(x=1), y~x, etc.
    • ✅ about 1% are additions to paste_linter for paste0(sep = .)
    • ✅ about 1% are new hits on completely blank lines for trailing_whitespace_linter
    • ✅ about 1% are thanks to improvements in conjunct_test_linter to include assert_that
    • ✅ about 1% are thanks to improvements in trailing_blank_lines_linter to catch missing terminal newlines
    • ✅ about 1% are thanks to improvements in function_left_parentheses_linter to catch usages across >1 line like foo\n()
    • ✅ about 1% are thanks to selectively disabling linters revealing code that was in #nolint regions but violated unrelated rules
    • ✅ residual good things: new hits in package_hooks_linter, expect_null_linter, inner_combine_linter, paren_body_linter, ...
    • 🧐 about 15% are new hits on brace_linter, e.g. function(x) {x[1]}, but some seem OK: Allow { } or {} in brace_linter independently of allow_single_line? #1346
    • 🧐 about 15% are on the new duplicate_argument_linter; a lot seem due to dplyr::mutate(): duplicate_argument_linter should skip on mutate() calls #1345
    • ❌ about 33% are from improvements to unneeded_concatenation_linter that probably go too far: unneeded_concatenation_linter() can throw on valid usages #1344

@MichaelChirico
Copy link
Collaborator

oh, also, the full run took about 20% less time overall. I was working more during the slower run, but not enough to make that big a difference. there's a lot of other overhead to our system that means this figure probably doesn't generalize well, but if anything, I'd guess the typical user will see >20% improvement.

@jimhester
Copy link
Member

latest CRAN communication

package lintr is now scheduled for archival on 2022-06-26, and
archiving this will necessitate also archiving its CRAN strong reverse
dependencies.

from looking at the above this shouldn’t be hard to meet, but we should get this release out sooner rather than later.

@AshesITR
Copy link
Collaborator Author

AshesITR commented Jun 12, 2022

@jimhester I think we're ready for the final steps. Since you are the maintainer, you'll receive the mails from devtools::check_win_devel() et al. Do you want to start them yourself?

I'm running a final revdepcheck to get #832 done and would leave the rest to you if that's fine?

@jimhester
Copy link
Member

Ok, I have finished up the last few things and submitted the package, will update this once it is accepted.

@MichaelChirico
Copy link
Collaborator

MichaelChirico commented Jun 14, 2022

I see us on CRAN! thanks Jim!

Leaving this open while our checks are pending. Only two finished thus far.

@bersbersbers
Copy link

Congratulations!

@russHyde
Copy link
Collaborator

Looks like it's out in the wild now

@MichaelChirico
Copy link
Collaborator

MichaelChirico commented Jun 14, 2022

Hmm looks like we are warning on oldrel:

https://www.r-project.org/nosvn/R.check/r-oldrel-macos-arm64/lintr-00check.html

checking examples ... [1s/1s] WARNING
Found the following significant warnings:

  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
  Warning: 'all.equal.default(<function>)' is deprecated.
Deprecated functions may be defunct as soon as of the next release of
R.
See ?Deprecated.

This despite not warning on GHA: https://github.com/r-lib/lintr/runs/6886795725?check_suite_focus=true 😭

Must be due to this:

lintr/R/with.R

Line 76 in 5a0b54e

#' all.equal(linters_with_defaults(), linters_with_tags("default"))

@jimhester
Copy link
Member

jimhester commented Jun 15, 2022

Seems like the oldrel-mac is lagging, it is only 4.1.1-patched for arm, 4.1.2 for x86, but 4.1.3 is released and is what we are testing against on the CI. (Also note the windows-oldrel on CRAN is OK)

wch/r-source@3506de0 is the relevant commit, which presumably was backported to 4.1.3, but not earlier patch releases.

I don't think we need to do anything about that warning.

@MichaelChirico
Copy link
Collaborator

👍 sounds like we're unlikely to get archived then.

I'm still wondering if we shouldn't revisit the S3 class of Linter() output

@MichaelChirico
Copy link
Collaborator

looks like we're erroring on 3.0.0 -- I can't make heads or tails of what's wrong though:

https://www.r-project.org/nosvn/R.check/r-devel-linux-x86_64-debian-clang/lintr-00check.html

@AshesITR
Copy link
Collaborator Author

Looks to me as if the fixes we do might no longer be necessary in 4.3.0.
I'll try to update my r-devel and take a look.

@AshesITR
Copy link
Collaborator Author

AshesITR commented Jun 20, 2022

I fail to reproduce on R-devel @ Windows 10.

Edit: https://www.r-project.org/nosvn/R.check/r-devel-linux-x86_64-debian-gcc/lintr-00check.html works fine.
Seems related to the session charset (ISO-8859-15).

@MichaelChirico
Copy link
Collaborator

I'm also seeing a timeout on two Windows flavors:

https://cran.r-project.org/web/checks/check_results_lintr.html

Check process probably crashed or hung up for 20 minutes ... killed
Most likely this happened in the example checks (?),
if not, ignore the following last lines of example output:
>
> ### ** Examples
>
> ## Not run:
> ##D # use the default set of linters
> ##D lintr::use_lintr()
> ##D # or try all linters
> ##D lintr::use_lintr(type = "full")
> ##D
> ##D # then
> ##D lintr::lint_dir()
> ## End(Not run)
>
>
>
> ### * <FOOTER>
> ###
> cleanEx()
> options(digits = 7L)
> base::cat("Time elapsed: ", proc.time() - base::get("ptime", pos = 'CheckExEnv'),"\n")
Time elapsed: 6.7 1.79 9.59 NA NA
> grDevices::dev.off()
null device
          1
> ###
> ### Local variables: ***
> ### mode: outline-minor ***
> ### outline-regexp: "\\(> \\)?### [*]+" ***
> ### End: ***
> quit('no')
======== End of example output (where/before crash/hang up occured ?) ========

Not sure what to make of that.

@jimhester
Copy link
Member

We could add something like this on the CI, to test in non-UTF-8 locales

https://github.com/r-lib/fs/blob/e10022f2df4571a8598a4caec4929d4b133566d9/.github/workflows/R-CMD-check.yaml#L37-L42

Hopefully that would reproduce the issue seen on that CRAN flavor.

@MichaelChirico
Copy link
Collaborator

Add link to blog post in pkgdown news menu

what does that entail, exactly 😅

@IndrajeetPatil
Copy link
Collaborator

I think it means adding the following to the _pkgdown.yml:

news:
  releases:
  - text: "Version 3.0.0"
    href: https://www.tidyverse.org/blog/2022/07/lintr-3-0-0/

@MichaelChirico
Copy link
Collaborator

With #1470 the blog post link is finally on the site; closing this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants