Releases: rust-marker/marker
v0.5.0
v0.4.3
I apologize for the re-release, nothing changed, I just messed up the release
Fixed
- #326: Use rustc's default way of discovering the system root directory, unless
MARKER_SYSROOT
is specified
v0.4.3-rc
v0.4.2
v0.4.1
v0.4.0
The v0.4.0 milestone contains a full list of all changes.
Added
- #306: The
LintPass
trait now as a newcheck_crate
method. - #294: Items and fields now provide information about their visibility
Fixed
- #306: Rustc's driver no longer ICEs on spans from compiler generated code.
Breaking Changes
- #278: Moved the
span()
method from the inherent impl toHasSpan
trait forClosureParam
,FnParam
,StructFieldPat
. - #278: The trait
TyData
no longer has ownspan()
method, but instead requiresHasSpan
as a supertrait. - #278: All public methods that took
&Span
as a parameter now takeimpl HasSpan
. This is a minor breaking change, as&Span
implementsHasSpan
, but if you relied on type inference based on the function parameter type, then making a method generic may break your code. - #288: Lint identifiers use the lint crate name as a new infix, to prevent name collisions across lint crates.
- #306: The items of a
Crate
are now wrapped in aModItem
, that is the root module of the crate. - #309: Renamed
CallExpr::operand
toCallExpr::func
- #309: Renamed
RefPat::pattern()
->RefPat::pat()
- #309: Renamed
OrPat::patterns()
->RefPat::pats()
v0.3.0
This version introduces precompiled binaries and CI templates. This version also tried to combine all breaking changes, to make v0.3.0
a solid baseline for new additions.
The v0.3.0 milestone contains a full list of all changes.
Added
- #232: Add scope config for visitors and
for_each_expr
tomarker_utils
- #239: GitHub releases now provide precompiled binaries of
cargo-marker
andmarker_rustc_driver
. - #252: Marker now provides install scripts for linux, macos and windows
- #259: Introduced a GitHub Action for installing and running Marker
Breaking Changes
- #256: Renamed
AstContext
->MarkerContext
- #256: Moved
marker_api::ast::common::span
->marker_api::span
- #241: Renamed
QuestionMarkExpr
->TryExpr
- #244:
StmtKind
andPatKind
no longer wrapKind*
directly - #245:
emit_lint()
takes less arguments and returns aDiagnosticBuilder
instance - #263: Updated the
ui_test
used bymarker_uitest
fromv0.11.7
tov0.21.2
- #260: Moved
AstContext::{body, item, lint_level_at}
to the newAstMap
struct accessible viaMarkerContext::ast()
- #265: Removed the
CallableData
trait - #268: Moved semantic types and generics to the new
marker_api::sem
module - #268: Moved common items, like IDs, to the new
marker_api::common
module - #268: Removed the
Sem
andSyn
prefix from types and generics - #268:
marker_api::prelude
no longer contains the semantic and syntacticTyKind
enums - #268:
marker_api::prelude
now imports thesem
andast
names - #268: The
marker_api::ast
module has been flattened - #268: The
marker_api::lint
andmarker_api::interface
are now private
Internal
Marker v0.2
Additions
- Support
.await
andasnyc
expressions - Started The Marker Book
Fixes
cargo marker
now works with lower toolchain versions- Fixed errors due to drifts in the used toolchain
- Fixed the question mark operator resugar
Span
s now properly represent macro expansions
Breaking changes
FnItem<'ast>
andClosureExpr<'ast>
no longer implementCallableData
- Some
Span
methods have been renamed
See the v0.2.0 milestone for a full list of all changes
Marker v0.1.1
Marker's first release intended for user testing.
Features
This version is far from done, but it already includes most critical AST nodes required for linting. This is an incomplete list of supported elements:
- Items
- Generics
- Statements
- Expressions
- Patterns
- Types
Marker should be able to handle all stable features, except async
and await
expressions. (See: #174)
Installation
You can install Marker with cargo, like this:
cargo install cargo_marker
# Automatically setup the toolchain and driver
cargo marker setup --auto-install-toolchain
To run Marker simply specify a lint crate in your Cargo.toml
file, like this:
[workspace.metadata.marker.lints]
marker_lints = "0.1.0"
And run:
cargo marker
This should give you the usual Checking ...
output of Cargo.
Development
You might want to check out Marker's lint crate template to test the API yourself.
Feedback
This release is intended to collect feedback of any kind. If you encounter any bugs, have any thoughts or suggestions, please create an issue or reach out to me directly.
Happy linting everyone! 🦀 🖊️ 🎉