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_SYSROOTis 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
LintPasstrait now as a newcheck_cratemethod. - #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 toHasSpantrait forClosureParam,FnParam,StructFieldPat. - #278: The trait
TyDatano longer has ownspan()method, but instead requiresHasSpanas a supertrait. - #278: All public methods that took
&Spanas a parameter now takeimpl HasSpan. This is a minor breaking change, as&SpanimplementsHasSpan, 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
Crateare now wrapped in aModItem, that is the root module of the crate. - #309: Renamed
CallExpr::operandtoCallExpr::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_exprtomarker_utils - #239: GitHub releases now provide precompiled binaries of
cargo-markerandmarker_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:
StmtKindandPatKindno longer wrapKind*directly - #245:
emit_lint()takes less arguments and returns aDiagnosticBuilderinstance - #263: Updated the
ui_testused bymarker_uitestfromv0.11.7tov0.21.2 - #260: Moved
AstContext::{body, item, lint_level_at}to the newAstMapstruct accessible viaMarkerContext::ast() - #265: Removed the
CallableDatatrait - #268: Moved semantic types and generics to the new
marker_api::semmodule - #268: Moved common items, like IDs, to the new
marker_api::commonmodule - #268: Removed the
SemandSynprefix from types and generics - #268:
marker_api::preludeno longer contains the semantic and syntacticTyKindenums - #268:
marker_api::preludenow imports thesemandastnames - #268: The
marker_api::astmodule has been flattened - #268: The
marker_api::lintandmarker_api::interfaceare now private
Internal
Marker v0.2
Additions
- Support
.awaitandasnycexpressions - Started The Marker Book
Fixes
cargo markernow works with lower toolchain versions- Fixed errors due to drifts in the used toolchain
- Fixed the question mark operator resugar
Spans now properly represent macro expansions
Breaking changes
FnItem<'ast>andClosureExpr<'ast>no longer implementCallableData- Some
Spanmethods 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-toolchainTo 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 markerThis 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! 🦀 🖊️ 🎉