# Recent Changes

## User-facing Changes

For recent changes in lint's set of features affecting users
of lint, see [](usage/changes.md.html).

## Lint API Changes

For recent changes in lint's internals affecting authors of
lint checks, see [](api-guide/changes.md.html).

## Documentation Changes

2021/03/29: Various updates
  Added separate user and API guides, added a chapter on performance
  tuning, added a section on how to unpublish a lint check, and a few
  other edits here and there.

2021/03/15: Initial version.

<!-- Markdeep: --><style class="fallback">body{visibility:hidden;white-space:pre;font-family:monospace}</style><script src="markdeep.min.js" charset="utf-8"></script><script src="https://morgan3d.github.io/markdeep/latest/markdeep.min.js" charset="utf-8"></script><script>window.alreadyProcessedMarkdeep||(document.body.style.visibility="visible")</script>
