Skip to content

Releases: rust-marker/marker

v0.5.0

28 Dec 20:47
Compare
Choose a tag to compare

Added

  • #322: sem::TyKind now implements From<*> for all semantic types.

Breaking Changes

  • #322: Renamed sem::TyKind::FnTy -> sem::TyKind::Fn
  • #322: Renamed sem::TyKind::ClosureTy -> sem::TyKind::Closure
  • #322: Renamed sem::ClosureTy::closure_ty_id -> sem::ClosureTy::def_id
  • #342: Increased minimal rust version to build cargo_marker to 1.70

v0.4.3

28 Dec 21:04
Compare
Choose a tag to compare

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

02 Dec 16:39
Compare
Choose a tag to compare
v0.4.3-rc Pre-release
Pre-release

Fixed

  • #326: Use rustc's default way of discovering the system root directory, unless MARKER_SYSROOT is specified

v0.4.2

25 Nov 13:51
Compare
Choose a tag to compare
  • #320: Disable LTO on release builds to fix the crash on Windows with exit code: 0xc0000005, STATUS_ACCESS_VIOLATION

v0.4.1

24 Nov 20:17
Compare
Choose a tag to compare

Fixed

  • #319: Fix compiling driver from sources outside of the marker repo on Windows

v0.4.0

16 Nov 10:39
Compare
Choose a tag to compare

The v0.4.0 milestone contains a full list of all changes.

Added

  • #306: The LintPass trait now as a new check_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 to HasSpan trait for ClosureParam, FnParam, StructFieldPat.
  • #278: The trait TyData no longer has own span() method, but instead requires HasSpan as a supertrait.
  • #278: All public methods that took &Span as a parameter now take impl HasSpan. This is a minor breaking change, as &Span implements HasSpan, 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 a ModItem, that is the root module of the crate.
  • #309: Renamed CallExpr::operand to CallExpr::func
  • #309: Renamed RefPat::pattern() -> RefPat::pat()
  • #309: Renamed OrPat::patterns() -> RefPat::pats()

v0.3.0

05 Oct 09:10
Compare
Choose a tag to compare

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 to marker_utils
  • #239: GitHub releases now provide precompiled binaries of cargo-marker and marker_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 and PatKind no longer wrap Kind* directly
  • #245: emit_lint() takes less arguments and returns a DiagnosticBuilder instance
  • #263: Updated the ui_test used by marker_uitest from v0.11.7 to v0.21.2
  • #260: Moved AstContext::{body, item, lint_level_at} to the new AstMap struct accessible via MarkerContext::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 and Syn prefix from types and generics
  • #268: marker_api::prelude no longer contains the semantic and syntactic TyKind enums
  • #268: marker_api::prelude now imports the sem and ast names
  • #268: The marker_api::ast module has been flattened
  • #268: The marker_api::lint and marker_api::interface are now private

Internal

  • #231: Significantly improved error handling
  • #239: The release flow was automated. It's now a process of updating the CHANGELOG.md and doing several clicks to trigger the CI job.

Marker v0.2

24 Aug 10:17
v0.2.1
497a279
Compare
Choose a tag to compare

Additions

Fixes

  • cargo marker now 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> and ClosureExpr<'ast> no longer implement CallableData
  • Some Span methods have been renamed

See the v0.2.0 milestone for a full list of all changes

Marker v0.1.1

17 Jul 17:51
v0.1.1
89ea6d2
Compare
Choose a tag to compare

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! 🦀 🖊️ 🎉