Releases: aspect-build/rules_lint
v2.1.0
Add this to your file:
bazel_dep(name = "aspect_rules_lint", version = "2.1.0")This repo also provides a lint task for the Aspect CLI.
Add this to your MODULE.aspect file:
# AXL dependencies; see https://github.com/aspect-extensions
axl_archive_dep(
name = "aspect_rules_lint",
urls = ["https://github.com/aspect-build/rules_lint/releases/download/v2.1.0/rules_lint-v2.1.0.tar.gz"],
integrity = "sha256-qWqBKcNP3dILV0Jwoa1ovT1NkwcRGej+KC2Fld83UrM=",
strip_prefix = "rules_lint-2.1.0",
dev = True,
auto_use_tasks = True,
)Then, follow the install instructions for
- linting: https://github.com/aspect-build/rules_lint/blob/v2.1.0/docs/linting.md
- formatting: https://github.com/aspect-build/rules_lint/blob/v2.1.0/docs/formatting.md
What's Changed
- fix: Include pyi for ty linting by @adam-singer in #735
- feat: enable clang-tidy to work on individual files by @gergondet-woven in #734
New Contributors
- @adam-singer made their first contribution in #735
- @gergondet-woven made their first contribution in #734
Full Changelog: v2.0.0...v2.1.0
v2.0.0
Add this to your file:
bazel_dep(name = "aspect_rules_lint", version = "2.0.0")This repo also provides a task for the Aspect CLI.
Add this to your MODULE.aspect file:
# AXL dependencies; see https://github.com/aspect-extensions
axl_archive_dep(
name = "aspect_rules_lint",
urls = ["https://github.com/aspect-build/rules_lint/releases/download/v2.0.0/rules_lint-v2.0.0.tar.gz"],
integrity = "sha256-iz6cRBEh1sGZqjY4wIgzqw2jZ08Nvs3gR6JqIBDEtWE=",
strip_prefix = "rules_lint-2.0.0",
dev = True,
auto_use_tasks = True,
)Then, follow the install instructions for
- linting: https://github.com/aspect-build/rules_lint/blob/v2.0.0/docs/linting.md
- formatting: https://github.com/aspect-build/rules_lint/blob/v2.0.0/docs/formatting.md
What's Changed
- chore: cleanup fetch_ APIs by @alexeagle in #672
- feat: Add cue as linter by @fionera in #677
- chore: manual mirror external releases by @hunshcn in #664
- fix: fail_on_violation requires None-check for exit_code by @alexeagle in #678
- refactor: split up giant monorepo example by @alexeagle in #679
- ci: enable shell integration test by @alexeagle in #681
- fix(ci): integration test by @alexeagle in #682
- chore: test on more Bazel versions by @alexeagle in #670
- chore: perform 2.0 todos by @alexeagle in #683
- ci: bazel versions by @alexeagle in #684
- refactor: python by @alexeagle in #686
- fix: toml formatter wasn't provided for macos-aarch64 by @alexeagle in #687
- fix: Handle "no-lint" tag with clang-tidy by @Synss in #689
- fix(ty): check existence of extra search paths before passing to ty by @protocol7 in #688
- fix(ty): short-circuit non-py targets before looking at srcs by @alexeagle in #692
- chore(deps): update MODULE.aspect by @alexeagle in #685
- Bump ty version and use force-exclude by @jimmyt857 in #695
- chore: fix broken links by @alexeagle in #700
- chore(deps): force users past another bazel-lib fix by @alexeagle in #705
- Revert "chore(deps): force users past another bazel-lib fix" by @alexeagle in #706
- fix: ktlint on bazel 9, found in bazel-starters/kotlin by @alexeagle in #709
- feat: Add bandit linter by @Synss in #704
- chore: Update reference link in config.yaml by @b3cramer in #696
- feat: Improve support of hermetic toolchains with clang tidy by @Synss in #597
- fix: typo
b{r,}anditby @Synss in #716 - chore: update install instructions for Aspect CLI by @alexeagle in #718
- fix: bump protobuf to 33.4 since Bazel 9 will do that anyway by @alexeagle in #721
- fix(clippy): Store exit code to respect errors by @blorente in #707
- fix(clippy): declare outputs as siblings of crate_info.output (#719) by @sallustfire in #720
- feat(clippy): Add SARIF conversion support by @blorente in #708
- Fixing the hanging issue. by @thesayyn in #712
- feat(clippy): Add support for
--fixby @blorente in #715 - fix: USE_BAZEL_VERSION environment variable for tests by @alexeagle in #729
- fix(clippy): Enable clippy to work transitively by @blorente in #731
- feat: AXL dependency instructions in release_prep.sh by @alexeagle in #694
- fix(clippy): Handle nested updates in fixer by @blorente in #732
- feat: Add notes to results for shellcheck by @AtoZdevelopment in #730
- fix: add rust_shared_library to DEFAULT_RULE_KINDS by @alexeagle in #733
New Contributors
- @fionera made their first contribution in #677
- @protocol7 made their first contribution in #688
- @jimmyt857 made their first contribution in #695
- @thesayyn made their first contribution in #712
- @AtoZdevelopment made their first contribution in #730
Full Changelog: v1.13.0...v2.0.0
v2.0.0-rc1
Add this to your file:
bazel_dep(name = "aspect_rules_lint", version = "2.0.0-rc1")This repo also provides a task for the Aspect CLI.
Add this to your file:
# AXL dependencies; see https://github.com/aspect-extensions
axl_archive_dep(
name = "aspect_rules_lint",
urls = ["https://github.com/aspect-build/rules_lint/releases/download/vv2.0.0-rc1/rules_lint-vv2.0.0-rc1.tar.gz"],
integrity = sha256-oK830SYeQmCWkTPTpgiP2yM/TPIgiXJ8nm8BsWnpYSg=,
strip_prefix = "rules_lint-v2.0.0-rc1",
dev = True,
auto_use_tasks = True,
)Then, follow the install instructions for
- linting: https://github.com/aspect-build/rules_lint/blob/v2.0.0-rc1/docs/linting.md
- formatting: https://github.com/aspect-build/rules_lint/blob/v2.0.0-rc1/docs/formatting.md
What's Changed
- fix: typo
b{r,}anditby @Synss in #716 - chore: update install instructions for Aspect CLI by @alexeagle in #718
- fix: bump protobuf to 33.4 since Bazel 9 will do that anyway by @alexeagle in #721
- fix(clippy): Store exit code to respect errors by @blorente in #707
- fix(clippy): declare outputs as siblings of crate_info.output (#719) by @sallustfire in #720
- feat(clippy): Add SARIF conversion support by @blorente in #708
- Fixing the hanging issue. by @thesayyn in #712
- feat(clippy): Add support for
--fixby @blorente in #715 - fix: USE_BAZEL_VERSION environment variable for tests by @alexeagle in #729
- fix(clippy): Enable clippy to work transitively by @blorente in #731
- feat: AXL dependency instructions in release_prep.sh by @alexeagle in #694
New Contributors
Full Changelog: v2.0.0-rc0...v2.0.0-rc1
v2.0.0-rc0
Add the to your file:
bazel_dep(name = "aspect_rules_lint", version = "2.0.0-rc0")Then, follow the install instructions for
- linting: https://github.com/aspect-build/rules_lint/blob/v2.0.0-rc0/docs/linting.md
- formatting: https://github.com/aspect-build/rules_lint/blob/v2.0.0-rc0/docs/formatting.md
What's Changed
- Bump ty version and use force-exclude by @jimmyt857 in #695
- chore: fix broken links by @alexeagle in #700
- chore(deps): force users past another bazel-lib fix by @alexeagle in #705
- Revert "chore(deps): force users past another bazel-lib fix" by @alexeagle in #706
- fix: ktlint on bazel 9, found in bazel-starters/kotlin by @alexeagle in #709
- feat: Add bandit linter by @Synss in #704
- chore: Update reference link in config.yaml by @b3cramer in #696
- feat: Improve support of hermetic toolchains with clang tidy by @Synss in #597
New Contributors
- @jimmyt857 made their first contribution in #695
Full Changelog: v2.0.0-beta.1...v2.0.0-rc0
v2.0.0-beta.1
Add the to your file:
bazel_dep(name = "aspect_rules_lint", version = "2.0.0-beta.1")Then, follow the install instructions for
- linting: https://github.com/aspect-build/rules_lint/blob/v2.0.0-beta.1/docs/linting.md
- formatting: https://github.com/aspect-build/rules_lint/blob/v2.0.0-beta.1/docs/formatting.md
What's Changed
- refactor: python by @alexeagle in #686
- fix: toml formatter wasn't provided for macos-aarch64 by @alexeagle in #687
- fix: Handle "no-lint" tag with clang-tidy by @Synss in #689
- fix(ty): check existence of extra search paths before passing to ty by @protocol7 in #688
- fix(ty): short-circuit non-py targets before looking at srcs by @alexeagle in #692
- chore(deps): update MODULE.aspect by @alexeagle in #685
New Contributors
- @protocol7 made their first contribution in #688
Full Changelog: v2.0.0-beta.0...v2.0.0-beta.1
v2.0.0-beta.0
Add the to your file:
bazel_dep(name = "aspect_rules_lint", version = "2.0.0-beta.0")Then, follow the install instructions for
- linting: https://github.com/aspect-build/rules_lint/blob/v2.0.0-beta.0/docs/linting.md
- formatting: https://github.com/aspect-build/rules_lint/blob/v2.0.0-beta.0/docs/formatting.md
What's Changed
- chore: cleanup fetch_ APIs by @alexeagle in #672
- feat: Add cue as linter by @fionera in #677
- chore: manual mirror external releases by @hunshcn in #664
- fix: fail_on_violation requires None-check for exit_code by @alexeagle in #678
- refactor: split up giant monorepo example by @alexeagle in #679
- ci: enable shell integration test by @alexeagle in #681
- fix(ci): integration test by @alexeagle in #682
- chore: test on more Bazel versions by @alexeagle in #670
- chore: perform 2.0 todos by @alexeagle in #683
- ci: bazel versions by @alexeagle in #684
New Contributors
Full Changelog: v1.13.0...v2.0.0-beta.0
v1.13.0
Using Bzlmod with Bazel 6
- Enable with
common --enable_bzlmodin.bazelrc. - Add to your
MODULE.bazelfile:
bazel_dep(name = "aspect_rules_lint", version = "1.13.0")
# Next, follow the install instructions for
# - linting: https://github.com/aspect-build/rules_lint/blob/v1.13.0/docs/linting.md
# - formatting: https://github.com/aspect-build/rules_lint/blob/v1.13.0/docs/formatting.mdUsing WORKSPACE
Paste this snippet into your WORKSPACE.bazel file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "aspect_rules_lint",
sha256 = "78e0d8b35270be83f4ee0895b2327d5165016b7a2c9204ac50c2a9b98852bbe9",
strip_prefix = "rules_lint-1.13.0",
url = "https://github.com/aspect-build/rules_lint/releases/download/v1.13.0/rules_lint-v1.13.0.tar.gz",
)
http_archive(
name = "bazel_lib",
sha256 = "0758ace949a93f709230a8e08ef35c5f0aacae2ff5d219b27da1d21d8233a709",
strip_prefix = "bazel-lib-3.0.0-rc.0",
url = "https://github.com/bazel-contrib/bazel-lib/releases/download/v3.0.0-rc.0/bazel-lib-v3.0.0-rc.0.tar.gz",
)
load("@bazel_lib//lib:repositories.bzl", "bazel_lib_dependencies")
bazel_lib_dependencies()
load(
"@aspect_rules_lint//format:repositories.bzl",
# Fetch additional formatter binaries you need:
"fetch_java_format",
"fetch_ktfmt",
"fetch_swiftformat",
"rules_lint_dependencies",
)
rules_lint_dependencies()
fetch_java_format()
fetch_ktfmt()
fetch_swiftformat()
load("@aspect_rules_lint//lint:checkstyle.bzl", "fetch_checkstyle")
fetch_checkstyle()
load("@aspect_rules_lint//lint:pmd.bzl", "fetch_pmd")
fetch_pmd()
load("@aspect_rules_lint//lint:vale.bzl", "fetch_vale")
fetch_vale()
load("@aspect_rules_lint//lint:ktlint.bzl", "fetch_ktlint")
fetch_ktlint()
load("@aspect_rules_lint//lint:spotbugs.bzl", "fetch_spotbugs")
fetch_spotbugs()
########################
# Optional: multitool provides defaults for some tools such as yamlfmt
# If you do not set up multitool, you must provide these tools yourself
load("@rules_multitool//multitool:multitool.bzl", "multitool")
multitool(
name = "multitool",
lockfiles = [
"@aspect_rules_lint//format:multitool.lock.json",
"@aspect_rules_lint//lint:multitool.lock.json",
],
)
http_archive(
name = "cppcheck_linux",
build_file = "//tools/lint:cppcheck.BUILD",
integrity = "sha256-IqQ3Iofw6LoHh4YcdbN0m3tjg6utCiey7nGaOaPMv/I=",
strip_prefix = "cppcheckpremium-25.8.3",
urls = ["https://files.cppchecksolutions.com/25.8.3/ubuntu-22.04/cppcheckpremium-25.8.3-amd64.tar.gz"],
)
http_archive(
name = "cppcheck_macos",
build_file = "//tools/lint:cppcheck.BUILD",
integrity = "sha256-PEtm/DxKNZNJJuZE+56AZ80R22sZjZoziekAmR7FhNk=",
strip_prefix = "cppcheckpremium",
urls = ["https://files.cppchecksolutions.com/25.8.3/cppcheckpremium-25.8.3-macos-15.tar.gz"],
)What's Changed
- fix: migrate away from aspect_bazel_lib by @malt3 in #666
- fix: remove dep on aspect_bazel_lib by @alexeagle in #668
- chore: add more docs to AXL files by @alexeagle in #663
- fix: Add Stylelint stdout to error output file by @tomsoir in #669
- feat: Implement clippy support by @blorente in #667
- refactor: remove content of WORKSPACE for bzlmod example by @alexeagle in #671
- feat: Add ty as a linter by @whoahbot in #665
- fix: add new bzl_library for 'ty' with dependencies by @alexeagle in #675
New Contributors
- @malt3 made their first contribution in #666
- @tomsoir made their first contribution in #669
- @blorente made their first contribution in #667
- @whoahbot made their first contribution in #665
Full Changelog: v1.12.0...v1.13.0
v1.12.0
Using Bzlmod with Bazel 6
- Enable with
common --enable_bzlmodin.bazelrc. - Add to your
MODULE.bazelfile:
bazel_dep(name = "aspect_rules_lint", version = "1.12.0")
# Next, follow the install instructions for
# - linting: https://github.com/aspect-build/rules_lint/blob/v1.12.0/docs/linting.md
# - formatting: https://github.com/aspect-build/rules_lint/blob/v1.12.0/docs/formatting.mdUsing WORKSPACE
Paste this snippet into your WORKSPACE.bazel file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "aspect_rules_lint",
sha256 = "a8a63bd071a39bd5be1f99d9f258eac674673c98505f9fc5b4c76587f67278cd",
strip_prefix = "rules_lint-1.12.0",
url = "https://github.com/aspect-build/rules_lint/releases/download/v1.12.0/rules_lint-v1.12.0.tar.gz",
)
http_archive(
name = "bazel_lib",
sha256 = "0758ace949a93f709230a8e08ef35c5f0aacae2ff5d219b27da1d21d8233a709",
strip_prefix = "bazel-lib-3.0.0-rc.0",
url = "https://github.com/bazel-contrib/bazel-lib/releases/download/v3.0.0-rc.0/bazel-lib-v3.0.0-rc.0.tar.gz",
)
load("@bazel_lib//lib:repositories.bzl", "bazel_lib_dependencies")
bazel_lib_dependencies()
load(
"@aspect_rules_lint//format:repositories.bzl",
# Fetch additional formatter binaries you need:
"fetch_java_format",
"fetch_ktfmt",
"fetch_swiftformat",
"rules_lint_dependencies",
)
rules_lint_dependencies()
fetch_java_format()
fetch_ktfmt()
fetch_swiftformat()
load("@aspect_rules_lint//lint:checkstyle.bzl", "fetch_checkstyle")
fetch_checkstyle()
load("@aspect_rules_lint//lint:pmd.bzl", "fetch_pmd")
fetch_pmd()
load("@aspect_rules_lint//lint:vale.bzl", "fetch_vale")
fetch_vale()
load("@aspect_rules_lint//lint:ktlint.bzl", "fetch_ktlint")
fetch_ktlint()
load("@aspect_rules_lint//lint:spotbugs.bzl", "fetch_spotbugs")
fetch_spotbugs()
########################
# Optional: multitool provides defaults for some tools such as yamlfmt
# If you do not set up multitool, you must provide these tools yourself
load("@rules_multitool//multitool:multitool.bzl", "multitool")
multitool(
name = "multitool",
lockfiles = [
"@aspect_rules_lint//format:multitool.lock.json",
"@aspect_rules_lint//lint:multitool.lock.json",
],
)
http_archive(
name = "cppcheck_linux",
build_file = "//tools/lint:cppcheck.BUILD",
integrity = "sha256-IqQ3Iofw6LoHh4YcdbN0m3tjg6utCiey7nGaOaPMv/I=",
strip_prefix = "cppcheckpremium-25.8.3",
urls = ["https://files.cppchecksolutions.com/25.8.3/ubuntu-22.04/cppcheckpremium-25.8.3-amd64.tar.gz"],
)
http_archive(
name = "cppcheck_macos",
build_file = "//tools/lint:cppcheck.BUILD",
integrity = "sha256-PEtm/DxKNZNJJuZE+56AZ80R22sZjZoziekAmR7FhNk=",
strip_prefix = "cppcheckpremium",
urls = ["https://files.cppchecksolutions.com/25.8.3/cppcheckpremium-25.8.3-macos-15.tar.gz"],
)What's Changed
- chore: manual mirror ruff releases by @hunshcn in #661
- ci: fix broken mirror action by @hunshcn in #660
- chore: don't run aspect workflows lint job by @alexeagle in #662
- feat: add Standard Ruby linter support by @cgrindel in #652
- chore: test tsconfig input to type-aware eslint by @sallustfire in #619
- fix: combine copts and cxxopts for improved compiler argument handling by @mutalibmohammed in #649
- feat: Add cppcheck lint aspect by @martin4861 in #617
New Contributors
- @mutalibmohammed made their first contribution in #649
- @martin4861 made their first contribution in #617
Full Changelog: v1.11.0...v1.12.0
v1.11.0
Using Bzlmod with Bazel 6
- Enable with
common --enable_bzlmodin.bazelrc. - Add to your
MODULE.bazelfile:
bazel_dep(name = "aspect_rules_lint", version = "1.11.0")
# Next, follow the install instructions for
# - linting: https://github.com/aspect-build/rules_lint/blob/v1.11.0/docs/linting.md
# - formatting: https://github.com/aspect-build/rules_lint/blob/v1.11.0/docs/formatting.mdUsing WORKSPACE
Paste this snippet into your WORKSPACE.bazel file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "aspect_rules_lint",
sha256 = "329cf5ba776a75b70049a5695e9ca29a25113230f4f447aff7102b62afe7c24a",
strip_prefix = "rules_lint-1.11.0",
url = "https://github.com/aspect-build/rules_lint/releases/download/v1.11.0/rules_lint-v1.11.0.tar.gz",
)
http_archive(
name = "bazel_lib",
sha256 = "0758ace949a93f709230a8e08ef35c5f0aacae2ff5d219b27da1d21d8233a709",
strip_prefix = "bazel-lib-3.0.0-rc.0",
url = "https://github.com/bazel-contrib/bazel-lib/releases/download/v3.0.0-rc.0/bazel-lib-v3.0.0-rc.0.tar.gz",
)
load("@bazel_lib//lib:repositories.bzl", "bazel_lib_dependencies")
bazel_lib_dependencies()
load(
"@aspect_rules_lint//format:repositories.bzl",
# Fetch additional formatter binaries you need:
"fetch_java_format",
"fetch_ktfmt",
"fetch_swiftformat",
"rules_lint_dependencies",
)
rules_lint_dependencies()
fetch_java_format()
fetch_ktfmt()
fetch_swiftformat()
load("@aspect_rules_lint//lint:checkstyle.bzl", "fetch_checkstyle")
fetch_checkstyle()
load("@aspect_rules_lint//lint:pmd.bzl", "fetch_pmd")
fetch_pmd()
load("@aspect_rules_lint//lint:vale.bzl", "fetch_vale")
fetch_vale()
load("@aspect_rules_lint//lint:ktlint.bzl", "fetch_ktlint")
fetch_ktlint()
load("@aspect_rules_lint//lint:spotbugs.bzl", "fetch_spotbugs")
fetch_spotbugs()
########################
# Optional: multitool provides defaults for some tools such as yamlfmt
# If you do not set up multitool, you must provide these tools yourself
load("@rules_multitool//multitool:multitool.bzl", "multitool")
multitool(
name = "multitool",
lockfiles = [
"@aspect_rules_lint//format:multitool.lock.json",
"@aspect_rules_lint//lint:multitool.lock.json",
],
)What's Changed
- chore: fix formatting by @alexeagle in #644
- chore(deps): update aspect-cli by @alexeagle in #646
- chore: delete type-checking FAQ from README by @alexeagle in #647
- feat: add RuboCop linter support for Ruby by @cgrindel in #643
- chore(deps): new aspect CLI by @alexeagle in #653
- refactor: single AXL module by @alexeagle in #654
- feat: Add formatting support for C# and F# by @purkhusid in #650
- chore(deps): aspect cli v2025.45.71 by @gregmagolan in #657
- chore(deps): upgrade Aspect CLI to v2025.46.6 by @gregmagolan in #658
New Contributors
- @purkhusid made their first contribution in #650
Full Changelog: v1.10.2...v1.11.0
v1.10.2
Using Bzlmod with Bazel 6
- Enable with
common --enable_bzlmodin.bazelrc. - Add to your
MODULE.bazelfile:
bazel_dep(name = "aspect_rules_lint", version = "1.10.2")
# Next, follow the install instructions for
# - linting: https://github.com/aspect-build/rules_lint/blob/v1.10.2/docs/linting.md
# - formatting: https://github.com/aspect-build/rules_lint/blob/v1.10.2/docs/formatting.mdUsing WORKSPACE
Paste this snippet into your WORKSPACE.bazel file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "aspect_rules_lint",
sha256 = "08ca35553d7dd3fc36589825ab3a2fbea18b71ad4a0d20d6c63493523896efe5",
strip_prefix = "rules_lint-1.10.2",
url = "https://github.com/aspect-build/rules_lint/releases/download/v1.10.2/rules_lint-v1.10.2.tar.gz",
)
http_archive(
name = "bazel_lib",
sha256 = "0758ace949a93f709230a8e08ef35c5f0aacae2ff5d219b27da1d21d8233a709",
strip_prefix = "bazel-lib-3.0.0-rc.0",
url = "https://github.com/bazel-contrib/bazel-lib/releases/download/v3.0.0-rc.0/bazel-lib-v3.0.0-rc.0.tar.gz",
)
load("@bazel_lib//lib:repositories.bzl", "bazel_lib_dependencies")
bazel_lib_dependencies()
load(
"@aspect_rules_lint//format:repositories.bzl",
# Fetch additional formatter binaries you need:
"fetch_java_format",
"fetch_ktfmt",
"fetch_swiftformat",
"rules_lint_dependencies",
)
rules_lint_dependencies()
fetch_java_format()
fetch_ktfmt()
fetch_swiftformat()
load("@aspect_rules_lint//lint:checkstyle.bzl", "fetch_checkstyle")
fetch_checkstyle()
load("@aspect_rules_lint//lint:pmd.bzl", "fetch_pmd")
fetch_pmd()
load("@aspect_rules_lint//lint:vale.bzl", "fetch_vale")
fetch_vale()
load("@aspect_rules_lint//lint:ktlint.bzl", "fetch_ktlint")
fetch_ktlint()
load("@aspect_rules_lint//lint:spotbugs.bzl", "fetch_spotbugs")
fetch_spotbugs()
########################
# Optional: multitool provides defaults for some tools such as yamlfmt
# If you do not set up multitool, you must provide these tools yourself
load("@rules_multitool//multitool:multitool.bzl", "multitool")
multitool(
name = "multitool",
lockfiles = [
"@aspect_rules_lint//format:multitool.lock.json",
"@aspect_rules_lint//lint:multitool.lock.json",
],
)Full Changelog: v1.10.1...v1.10.2