diff --git a/doc/release-notes/rl-2511.section.md b/doc/release-notes/rl-2511.section.md index 50e65cba6c21..29200658df18 100644 --- a/doc/release-notes/rl-2511.section.md +++ b/doc/release-notes/rl-2511.section.md @@ -60,8 +60,6 @@ - `go-mockery` has been updated to v3. For migration instructions see the [upstream documentation](https://vektra.github.io/mockery/latest/v3/). If v2 is still required `go-mockery_v2` has been added but will be removed on or before 2029-12-31 in-line with it's [upstream support lifecycle](https://vektra.github.io/mockery/ -- NixOS display manager modules now strictly use tty1, where many of them previously used tty7. Options to configure display managers' VT have been dropped. A configuration with a display manager enabled will not start `getty@tty1.service`, even if the system is forced to boot into `multi-user.target` instead of `graphical.target`. - - [private-gpt](https://github.com/zylon-ai/private-gpt) service has been removed by lack of maintenance upstream. ## Other Notable Changes {#sec-nixpkgs-release-25.11-notable-changes} diff --git a/nixos/doc/manual/release-notes/rl-2511.section.md b/nixos/doc/manual/release-notes/rl-2511.section.md index eefc6d7f4cdd..dce9eed1f083 100644 --- a/nixos/doc/manual/release-notes/rl-2511.section.md +++ b/nixos/doc/manual/release-notes/rl-2511.section.md @@ -133,6 +133,8 @@ - [private-gpt](https://github.com/zylon-ai/private-gpt) service has been removed by lack of maintenance upstream. +- NixOS display manager modules now strictly use tty1, where many of them previously used tty7. Options to configure display managers' VT have been dropped. A configuration with a display manager enabled will not start `getty@tty1.service`, even if the system is forced to boot into `multi-user.target` instead of `graphical.target`. + ## Other Notable Changes {#sec-release-25.11-notable-changes} diff --git a/nixos/modules/services/search/meilisearch.nix b/nixos/modules/services/search/meilisearch.nix index e8c6c3e7cdc6..f8e7bb573ca9 100644 --- a/nixos/modules/services/search/meilisearch.nix +++ b/nixos/modules/services/search/meilisearch.nix @@ -237,6 +237,45 @@ in WorkingDirectory = "%S/meilisearch"; RuntimeDirectory = "meilisearch"; RuntimeDirectoryMode = "0700"; + + ProtectSystem = "strict"; + ProtectHome = true; + ProtectClock = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectControlGroups = true; + PrivateTmp = true; + PrivateMounts = true; + PrivateUsers = true; + PrivateDevices = true; + RestrictRealtime = true; + RestrictNamespaces = true; + RestrictSUIDSGID = true; + LockPersonality = true; + MemoryDenyWriteExecute = true; + + ProcSubset = "pid"; + ProtectProc = "invisible"; + + NoNewPrivileges = true; + + # Meilisearch does not support listening on AF_UNIX sockets, + # so we currently restrict it to only AF_INET and AF_INET6. + RestrictAddressFamilies = [ + "AF_INET" + "AF_INET6" + ]; + + CapabilityBoundingSet = ""; + SystemCallArchitectures = "native"; + SystemCallFilter = [ + "@system-service" + "~@privileged @resources" + ]; + + UMask = "0077"; }; }; }; diff --git a/pkgs/by-name/gh/gh/package.nix b/pkgs/by-name/gh/gh/package.nix index 157125cca416..d50bb232cbd7 100644 --- a/pkgs/by-name/gh/gh/package.nix +++ b/pkgs/by-name/gh/gh/package.nix @@ -10,13 +10,13 @@ buildGoModule rec { pname = "gh"; - version = "2.76.1"; + version = "2.76.2"; src = fetchFromGitHub { owner = "cli"; repo = "cli"; tag = "v${version}"; - hash = "sha256-5m7BIjJqggQZYwxfUlsU+WBw6BxK0PBQYOSrw3I7gLA="; + hash = "sha256-tIA2zFXGmnaTuhO6UNzlk01/20CPg5RQ4Kz1UMmbTGc="; }; vendorHash = "sha256-NXyqWeiESkLVb2Bb88MoD+4ssvfOy0HGHFAOrT83t0c="; diff --git a/pkgs/by-name/gi/givaro/package.nix b/pkgs/by-name/gi/givaro/package.nix index 957f94c56109..610f6d397713 100644 --- a/pkgs/by-name/gi/givaro/package.nix +++ b/pkgs/by-name/gi/givaro/package.nix @@ -2,7 +2,6 @@ lib, stdenv, fetchFromGitHub, - fetchpatch, automake, autoconf, libtool, @@ -11,41 +10,16 @@ }: stdenv.mkDerivation rec { pname = "givaro"; - version = "4.2.0"; + version = "4.2.1"; src = fetchFromGitHub { owner = "linbox-team"; repo = "givaro"; tag = "v${version}"; - sha256 = "sha256-KR0WJc0CSvaBnPRott4hQJhWNBb/Wi6MIhcTExtVobQ="; + sha256 = "sha256-vSkWmKqpbVk1qdsqCU7qF7o+YgV5YRc9p4mlgl6yrto="; }; patches = [ - # Pull upstream fix for gcc-13: - # https://github.com/linbox-team/givaro/pull/218 - (fetchpatch { - name = "gcc-13.patch"; - url = "https://github.com/linbox-team/givaro/commit/c7744bb133496cd7ac04688f345646d505e1bf52.patch"; - hash = "sha256-aAA5o8Va10v0Pqgcpx7qM0TAZiNQgXoR6N9xecj7tDA="; - }) - (fetchpatch { - name = "clang-16.patch"; - url = "https://github.com/linbox-team/givaro/commit/a81d44b3b57c275bcb04ab00db79be02561deaa2.patch"; - hash = "sha256-sSk+VWffoEjZRTJcHRISLHPyW6yuvI1u8knBOfxNUIE="; - }) - # https://github.com/linbox-team/givaro/issues/226 - (fetchpatch { - name = "gcc-14.patch"; - url = "https://github.com/linbox-team/givaro/commit/b0cf33e1d4437530c7e4b3db90b6c80057a7f2f3.patch"; - includes = [ "src/kernel/integer/random-integer.h" ]; - hash = "sha256-b2Q8apP9ueEqIUtibTeP47x6TlroRzLgAxuv5ZM1EUw="; - }) - # https://github.com/linbox-team/givaro/issues/232 - (fetchpatch { - name = "clang-19.patch"; - url = "https://github.com/linbox-team/givaro/commit/a18baf5227d4f3e81a50850fe98e0d954eaa3ddb.patch"; - hash = "sha256-IR0IHhCqbxgtsST30vxM9ak1nGtt0apxcLUQ1kS1DHw="; - }) # skip gmp version check for cross-compiling, our version is new enough ./skip-gmp-check.patch ]; diff --git a/pkgs/by-name/hy/hydra/package.nix b/pkgs/by-name/hy/hydra/package.nix index 1e5c1d91ab9b..5ec48a6624b0 100644 --- a/pkgs/by-name/hy/hydra/package.nix +++ b/pkgs/by-name/hy/hydra/package.nix @@ -130,14 +130,14 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "hydra"; - version = "0-unstable-2025-06-15"; + version = "0-unstable-2025-07-17"; # nixpkgs-update: no auto update src = fetchFromGitHub { owner = "NixOS"; repo = "hydra"; - rev = "ed500ca4345f7edaa6c3d84027a7599d38b15a29"; - hash = "sha256-Mxz4n40VKxA2ILtIHX6fObgcy2WlgsM+ERfpjuVJ0BU="; + rev = "b812bb5017cac055fa56ffeac5440b6365830d67"; + hash = "sha256-XmoecWRUvUX8jf0U0cGyP4AfLHb0D2D4Ec69jqwrWVI="; }; outputs = [ diff --git a/pkgs/by-name/im/immich-public-proxy/package.nix b/pkgs/by-name/im/immich-public-proxy/package.nix index 516547bc9c0b..532f7df53b74 100644 --- a/pkgs/by-name/im/immich-public-proxy/package.nix +++ b/pkgs/by-name/im/immich-public-proxy/package.nix @@ -8,17 +8,17 @@ }: buildNpmPackage rec { pname = "immich-public-proxy"; - version = "1.11.5"; + version = "1.12.1"; src = fetchFromGitHub { owner = "alangrainger"; repo = "immich-public-proxy"; tag = "v${version}"; - hash = "sha256-jSAQbACWEt/gyZbr4sOM17t3KZoxPOM0RZFbsLZfcRM="; + hash = "sha256-m0E7YNdN2K81AwyBBBKZNrZaNis+qakdViVih+1Wk2E="; }; sourceRoot = "${src.name}/app"; - npmDepsHash = "sha256-av+XKzrTl+8xizYFZwCTmaLNsbBnusf03I1Uvkp0sF8="; + npmDepsHash = "sha256-GtX2mRfw4eo3WKfxdMoOAryQKHddFPcVCuXhHmLA/Oc="; # patch in absolute nix store paths so the process doesn't need to cwd in $out postPatch = '' diff --git a/pkgs/by-name/li/linbox/package.nix b/pkgs/by-name/li/linbox/package.nix index fe715967282b..9ddefae70028 100644 --- a/pkgs/by-name/li/linbox/package.nix +++ b/pkgs/by-name/li/linbox/package.nix @@ -2,7 +2,6 @@ lib, stdenv, fetchFromGitHub, - fetchpatch, autoreconfHook, givaro, pkg-config, @@ -16,41 +15,15 @@ assert (!blas.isILP64) && (!lapack.isILP64); stdenv.mkDerivation rec { pname = "linbox"; - version = "1.7.0"; + version = "1.7.1"; src = fetchFromGitHub { owner = "linbox-team"; repo = "linbox"; rev = "v${version}"; - sha256 = "sha256-mW84a98KPLqcHMjX3LIYTmVe0ngUdz6RJLpoDaAqKU8="; + sha256 = "sha256-WUSQI9svxbrDTtWBjCF2XMhRFdKwCht8XBmJIJ3DR1E="; }; - patches = [ - (fetchpatch { - url = "https://github.com/linbox-team/linbox/commit/4be26e9ef0eaf36a9909e5008940e8bf7dc625b6.patch"; - sha256 = "PX0Tik7blXOV2vHUq92xMxaADkNoNGiax4qrjQyGK6U="; - }) - (fetchpatch { - name = "gcc-14.patch"; - url = "https://github.com/linbox-team/linbox/commit/b8f2d4ccdc0af4418d14f72caf6c4d01969092a3.patch"; - includes = [ - "linbox/matrix/sparsematrix/sparse-ell-matrix.h" - "linbox/matrix/sparsematrix/sparse-ellr-matrix.h" - ]; - hash = "sha256-sqwgHkECexR2uX/SwYP7r9ZGHnGG+i4RXtfnvWsVQlk="; - }) - (fetchpatch { - name = "clang-19.patch"; - url = "https://github.com/linbox-team/linbox/commit/4f7a9bc830696b2f2c0219feaa74e85202700412.patch"; - hash = "sha256-DoKh8/+2WPbMhN9MhpKmQ5sKmizD9iE81zS/XI0aM9Q="; - }) - (fetchpatch { - name = "clang-19.patch"; - url = "https://github.com/linbox-team/linbox/commit/4a1e1395804d4630ec556c61ba3f2cb67e140248.patch"; - hash = "sha256-sCe/8hb27RuMxU1XXWsVU5gaGk2V+T6Ee7yrC5G5Hsc="; - }) - ]; - nativeBuildInputs = [ autoreconfHook pkg-config diff --git a/pkgs/by-name/ve/veloren/fix-on-rust-stable.patch b/pkgs/by-name/ve/veloren/fix-on-rust-stable.patch index ea7354119e57..26b0bb48e14d 100644 --- a/pkgs/by-name/ve/veloren/fix-on-rust-stable.patch +++ b/pkgs/by-name/ve/veloren/fix-on-rust-stable.patch @@ -1,440 +1,1819 @@ -commit 0829b00ec1a14c8248e1aadca22b132a1b21c40f +commit eca36e8293bef85493657f514cf37119bb27e2e0 Author: rnhmjoj -Date: Mon Aug 5 00:34:55 2024 +0200 +Date: Wed Jul 30 16:34:18 2025 +0200 - update toolchain to `2024-05-14` - - Backport of 6ec900cf to v0.16.0 + Update toolchain -diff --git a/.cargo/config b/.cargo/config.toml -similarity index 100% -rename from .cargo/config -rename to .cargo/config.toml -diff --git a/Cargo.lock b/Cargo.lock -index d0f84803..6f90da69 100644 ---- a/Cargo.lock -+++ b/Cargo.lock -@@ -45,17 +45,6 @@ version = "0.4.8" - source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "0453232ace82dee0dd0b4c87a59bd90f7b53b314f3e0f61fe2ee7c8a16482289" - --[[package]] --name = "ahash" --version = "0.7.8" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" --dependencies = [ -- "getrandom 0.2.12", -- "once_cell", -- "version_check", --] -- - [[package]] - name = "ahash" - version = "0.8.11" -@@ -4538,16 +4527,6 @@ dependencies = [ - "ttf-parser", - ] - --[[package]] --name = "packed_simd" --version = "0.3.9" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "1f9f08af0c877571712e2e3e686ad79efad9657dbf0f7c3c8ba943ff6c38932d" --dependencies = [ -- "cfg-if 1.0.0", -- "num-traits", --] -- - [[package]] - name = "parking" - version = "2.2.0" -@@ -5870,8 +5849,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - - [[package]] - name = "shred" --version = "0.15.0" --source = "git+https://github.com/amethyst/shred.git?rev=5d52c6fc390dd04c12158633e77591f6523d1f85#5d52c6fc390dd04c12158633e77591f6523d1f85" -+version = "0.16.1" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "656294f5bdcf6d33f0cf89e88a72b58595e3fca0e77e4a4b9e9026179757fb1e" - dependencies = [ - "ahash 0.8.11", - "arrayvec", -@@ -5884,8 +5864,9 @@ dependencies = [ - - [[package]] - name = "shred-derive" --version = "0.6.3" --source = "git+https://github.com/amethyst/shred.git?rev=5d52c6fc390dd04c12158633e77591f6523d1f85#5d52c6fc390dd04c12158633e77591f6523d1f85" -+version = "0.7.0" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "69760b786f8b40361c10663eb63c81fa7d828008527d26aa7595b99c53ab3a8d" - dependencies = [ - "proc-macro2 1.0.79", - "quote 1.0.35", -@@ -6019,10 +6000,9 @@ dependencies = [ - [[package]] - name = "specs" - version = "0.20.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "a60eabdfd5a80e458c3e7bcc9f1076d6ce3cc8ddb71d69691f00fc0de735a635" -+source = "git+https://github.com/amethyst/specs.git?rev=4e2da1df29ee840baa9b936593c45592b7c9ae27#4e2da1df29ee840baa9b936593c45592b7c9ae27" - dependencies = [ -- "ahash 0.7.8", -+ "ahash 0.8.11", - "crossbeam-queue", - "hibitset", - "log", -@@ -6904,9 +6884,9 @@ dependencies = [ - - [[package]] - name = "vek" --version = "0.16.1" -+version = "0.17.0" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "c85158043f3bc1fac596d59a77e07948da340b9951b451ed4cb4a8c480aa2157" -+checksum = "cb40015035f83ba23d647e647f8be060d0f6f99b7c7687989fbca3e3d65e7234" - dependencies = [ - "approx 0.5.1", - "num-integer", -@@ -6936,7 +6916,7 @@ dependencies = [ - "specs", - "tokio", - "tracing", -- "vek 0.16.1", -+ "vek 0.17.0", - "veloren-client-i18n", - "veloren-common", - "veloren-common-base", -@@ -7007,7 +6987,7 @@ dependencies = [ - "tracing", - "tracing-subscriber", - "uuid", -- "vek 0.16.1", -+ "vek 0.17.0", - "veloren-common-assets", - "veloren-common-base", - "veloren-common-i18n", -@@ -7092,7 +7072,7 @@ dependencies = [ - "specs", - "sum_type", - "tracing", -- "vek 0.16.1", -+ "vek 0.17.0", - "veloren-common", - ] - -@@ -7116,7 +7096,7 @@ dependencies = [ - "timer-queue", - "toml 0.8.12", - "tracing", -- "vek 0.16.1", -+ "vek 0.17.0", - "veloren-common", - "veloren-common-assets", - "veloren-common-base", -@@ -7136,7 +7116,7 @@ dependencies = [ - "rayon", - "specs", - "tracing", -- "vek 0.16.1", -+ "vek 0.17.0", - "veloren-common", - "veloren-common-base", - "veloren-common-ecs", -@@ -7208,7 +7188,7 @@ dependencies = [ - "serde", - "slotmap", - "tracing", -- "vek 0.16.1", -+ "vek 0.17.0", - "veloren-common", - "veloren-world", - ] -@@ -7251,7 +7231,7 @@ dependencies = [ - "strum 0.24.1", - "tokio", - "tracing", -- "vek 0.16.1", -+ "vek 0.17.0", - "veloren-common", - "veloren-common-base", - "veloren-common-ecs", -@@ -7272,7 +7252,7 @@ dependencies = [ - "lazy_static", - "rand 0.8.5", - "specs", -- "vek 0.16.1", -+ "vek 0.17.0", - "veloren-common", - "veloren-common-dynlib", - "veloren-rtsim", -@@ -7368,7 +7348,7 @@ dependencies = [ - "tokio", - "tracing", - "treeculler", -- "vek 0.16.1", -+ "vek 0.17.0", - "veloren-client", - "veloren-client-i18n", - "veloren-common", -@@ -7396,7 +7376,7 @@ version = "0.10.0" - dependencies = [ - "bytemuck", - "lazy_static", -- "vek 0.16.1", -+ "vek 0.17.0", - "veloren-common", - "veloren-common-dynlib", - ] -@@ -7452,7 +7432,6 @@ dependencies = [ - "num 0.4.1", - "num-traits", - "ordered-float 3.9.2", -- "packed_simd", - "rand 0.8.5", - "rand_chacha 0.3.1", - "rayon", -@@ -7465,7 +7444,7 @@ dependencies = [ - "svg_fmt", - "tracing", - "tracing-subscriber", -- "vek 0.16.1", -+ "vek 0.17.0", - "veloren-common", - "veloren-common-base", - "veloren-common-dynlib", -diff --git a/Cargo.toml b/Cargo.toml -index c8d02902..02521745 100644 ---- a/Cargo.toml -+++ b/Cargo.toml -@@ -1,5 +1,3 @@ --cargo-features = ["named-profiles", "profile-overrides"] -- - [workspace] - resolver = "2" - members = [ -@@ -141,7 +139,7 @@ crossbeam-channel = { version = "0.5"} - ordered-float = { version = "3", default-features = true } - num = { version = "0.4" } - num-traits = { version = "0.2" } --vek = { version = "0.16.1", features = ["serde"] } -+vek = { version = "0.17.0", features = ["serde"] } - itertools = { version = "0.10" } - - serde = { version = "1.0.118", features = ["derive"] } -@@ -158,7 +156,7 @@ sha2 = "0.10" - hex = "0.4.3" - - [patch.crates-io] --shred = { git = "https://github.com/amethyst/shred.git", rev = "5d52c6fc390dd04c12158633e77591f6523d1f85" } -+specs = { git = "https://github.com/amethyst/specs.git", rev = "4e2da1df29ee840baa9b936593c45592b7c9ae27" } - # This is needed because of: - # * an issue with spirv & naga in wgpu 0.18 (I assume this is fixed upstream but not in 0.18) - # * an issue with uint in uniforms for gl. (potentially fixed in 0.19?) -diff --git a/client/i18n/src/error.rs b/client/i18n/src/error.rs -index 99f47bad..37eaa097 100644 ---- a/client/i18n/src/error.rs -+++ b/client/i18n/src/error.rs -@@ -45,6 +45,7 @@ pub enum ResourceErr { - #[allow(dead_code)] // false-positive - err: String, - }, -+ #[allow(dead_code)] // false-positive - BundleError(String), - } - +diff --git a/common/net/src/lib.rs b/common/net/src/lib.rs +index 671aa074d..78cfdcb96 100644 +--- a/common/net/src/lib.rs ++++ b/common/net/src/lib.rs +@@ -1,5 +1,5 @@ + #![allow(incomplete_features)] +-#![feature(generic_const_exprs, const_fn_floating_point_arithmetic)] ++#![feature(generic_const_exprs)] + pub mod msg; + pub mod sync; + pub mod synced_components; +diff --git a/common/systems/src/mount.rs b/common/systems/src/mount.rs +index ed1b7f3c4..9acf953ec 100644 +--- a/common/systems/src/mount.rs ++++ b/common/systems/src/mount.rs +@@ -67,7 +67,7 @@ impl<'a> System<'a> for Sys { + if !matches!(body, Some(Body::Humanoid(_))) { + let actions = c + .actions +- .extract_if(|action| match action { ++ .extract_if(.., |action| match action { + ControlAction::StartInput { input: i, .. } + | ControlAction::CancelInput(i) => matches!( + i, +@@ -164,7 +164,7 @@ impl<'a> System<'a> for Sys { + let inputs = controllers.get_mut(entity).map(|c| { + let actions: Vec<_> = c + .actions +- .extract_if(|action| match action { ++ .extract_if(.., |action| match action { + ControlAction::StartInput { input: i, .. } + | ControlAction::CancelInput(i) => { + matches!(i, InputKind::Jump | InputKind::Fly | InputKind::Roll) +diff --git a/network/examples/fileshare/main.rs b/network/examples/fileshare/main.rs +index 015e46e9e..fc8db3a0d 100644 +--- a/network/examples/fileshare/main.rs ++++ b/network/examples/fileshare/main.rs +@@ -1,4 +1,3 @@ +-#![feature(async_closure)] + //!run with + //! (cd network/examples/fileshare && RUST_BACKTRACE=1 cargo run + //! --profile=release -Z unstable-options -- --trace=info --port 15006) diff --git a/rtsim/src/lib.rs b/rtsim/src/lib.rs -index 11477390..ef62db65 100644 +index ef62db65e..000831da3 100644 --- a/rtsim/src/lib.rs +++ b/rtsim/src/lib.rs -@@ -7,7 +7,8 @@ +@@ -2,7 +2,6 @@ + never_type, + try_blocks, + trait_alias, +- control_flow_enum, + let_chains, binary_heap_drain_sorted, fn_traits, - unboxed_closures, -- tuple_trait -+ tuple_trait, -+ trait_upcasting - )] - - pub mod ai; -diff --git a/rust-toolchain b/rust-toolchain -index f1273305..e426a2f8 100644 ---- a/rust-toolchain -+++ b/rust-toolchain -@@ -1 +1 @@ --nightly-2024-01-17 -+nightly-2024-05-14 -diff --git a/server/agent/src/lib.rs b/server/agent/src/lib.rs -index 420bd5ff..4a927c74 100644 ---- a/server/agent/src/lib.rs -+++ b/server/agent/src/lib.rs +diff --git a/voxygen/benches/meshing_benchmark.rs b/voxygen/benches/meshing_benchmark.rs +index 2cfe9563a..929d62b17 100644 +--- a/voxygen/benches/meshing_benchmark.rs ++++ b/voxygen/benches/meshing_benchmark.rs +@@ -146,7 +146,7 @@ pub fn criterion_benchmark(c: &mut Criterion) { + for x in 1..GEN_SIZE - 1 { + for y in 1..GEN_SIZE - 1 { + let (volume, range) = sample(Vec2::new(x, y)); +- meshing_benches.bench_function(&format!("Terrain mesh {}, {}", x, y), move |b| { ++ meshing_benches.bench_function(format!("Terrain mesh {}, {}", x, y), move |b| { + b.iter(|| { + generate_mesh( + black_box(&volume), +diff --git a/voxygen/src/lib.rs b/voxygen/src/lib.rs +index 70ca5dd10..143791d2f 100644 +--- a/voxygen/src/lib.rs ++++ b/voxygen/src/lib.rs +@@ -9,7 +9,6 @@ + #![feature( + extract_if, + trait_alias, +- option_get_or_insert_default, + map_try_insert, + slice_as_chunks, + let_chains, +diff --git a/voxygen/src/panic_handler.rs b/voxygen/src/panic_handler.rs +index a2c0ee381..9cecff787 100644 +--- a/voxygen/src/panic_handler.rs ++++ b/voxygen/src/panic_handler.rs @@ -1,4 +1,4 @@ --#![feature(exclusive_range_pattern, let_chains)] -+#![feature(let_chains)] - #![allow( - clippy::needless_pass_by_ref_mut //until we find a better way for specs +-use std::{panic, panic::PanicInfo, path::PathBuf}; ++use std::{panic, panic::PanicHookInfo, path::PathBuf}; + use tracing::error; + + pub fn set_panic_hook(log_filename: String, logs_dir: PathBuf) { +@@ -113,7 +113,7 @@ enum PotentialPanicCause { + GraphicsCardIncompatibleWithRenderingBackend, + } + +-fn potential_cause(panic_info: &PanicInfo) -> Option { ++fn potential_cause(panic_info: &PanicHookInfo) -> Option { + let location = panic_info + .location() + .map_or("".to_string(), |x| x.file().to_string()) +diff --git a/voxygen/src/scene/figure/cache.rs b/voxygen/src/scene/figure/cache.rs +index d5251b53a..e654a288b 100644 +--- a/voxygen/src/scene/figure/cache.rs ++++ b/voxygen/src/scene/figure/cache.rs +@@ -406,7 +406,8 @@ where + item_key: Option, + ) -> (FigureModelEntryLod<'c>, &'c Skel::Attr) + where +- for<'a> &'a Skel::Body: Into, ++ Skel::Attr: 'c, ++ Skel::Attr: for<'a> From<&'a Skel::Body>, + Skel::Body: Clone + Send + Sync + 'static, + ::Spec: Send + Sync + 'static, + { +@@ -443,7 +444,7 @@ where + opaque, + bounds, + vertex_range, +- }) = Arc::get_mut(recv).take().and_then(|cell| cell.take()) ++ }) = Arc::get_mut(recv).and_then(|cell| cell.take()) + { + let model_entry = atlas.create_figure( + renderer, +@@ -641,6 +642,7 @@ where + sprite_render_state: &Arc, + ) -> (TerrainModelEntryLod<'c>, &'c Skel::Attr) + where ++ Skel::Attr: 'c, + for<'a> &'a Skel::Body: Into, + Skel::Body: Clone + Send + Sync + 'static, + ::Spec: Send + Sync + 'static, +@@ -669,7 +671,7 @@ where + sprite_instances, + blocks_of_interest, + blocks_offset, +- }) = Arc::get_mut(recv).take().and_then(|cell| cell.take()) ++ }) = Arc::get_mut(recv).and_then(|cell| cell.take()) + { + let model_entry = atlas.create_terrain( + renderer, + +commit 97378a437847b8860e548de3ce70c2c53f9347f6 +Author: rnhmjoj +Date: Wed Jul 30 00:23:35 2025 +0200 + + Fix wasmtime-wasi build + +diff --git a/Cargo.lock b/Cargo.lock +index f751793bc..593f05ec1 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -1,6 +1,6 @@ + # This file is automatically @generated by Cargo. + # It is not intended for manual editing. +-version = 3 ++version = 4 + + [[package]] + name = "ab_glyph" +@@ -197,9 +197,9 @@ dependencies = [ + + [[package]] + name = "anyhow" +-version = "1.0.89" ++version = "1.0.98" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" ++checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" + + [[package]] + name = "anymap2" +@@ -248,9 +248,9 @@ dependencies = [ + + [[package]] + name = "arbitrary" +-version = "1.3.2" ++version = "1.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" ++checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" + + [[package]] + name = "arr_macro" +@@ -350,7 +350,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -518,7 +518,7 @@ dependencies = [ + "regex", + "rustc-hash 1.1.0", + "shlex", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -622,6 +622,9 @@ name = "bumpalo" + version = "3.16.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" ++dependencies = [ ++ "allocator-api2", ++] + + [[package]] + name = "bytemuck" +@@ -640,7 +643,7 @@ checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -980,7 +983,7 @@ dependencies = [ + "heck 0.5.0", + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -1337,19 +1340,34 @@ dependencies = [ + ] + + [[package]] +-name = "cranelift-bforest" +-version = "0.113.1" ++name = "cranelift-assembler-x64" ++version = "0.117.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "540b193ff98b825a1f250a75b3118911af918a734154c69d80bcfcf91e7e9522" ++checksum = "d2b83fcf2fc1c8954561490d02079b496fd0c757da88129981e15bfe3a548229" ++dependencies = [ ++ "cranelift-assembler-x64-meta", ++] ++ ++[[package]] ++name = "cranelift-assembler-x64-meta" ++version = "0.117.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "c7496a6e92b5cee48c5d772b0443df58816dee30fed6ba19b2a28e78037ecedf" ++ ++[[package]] ++name = "cranelift-bforest" ++version = "0.117.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "73a9dc0a8d3d49ee772101924968830f1c1937d650c571d3c2dd69dc36a68f41" + dependencies = [ + "cranelift-entity", + ] + + [[package]] + name = "cranelift-bitset" +-version = "0.113.1" ++version = "0.117.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c7cb269598b9557ab942d687d3c1086d77c4b50dcf35813f3a65ba306fd42279" ++checksum = "573c641174c40ef31021ae4a5a3ad78974e280633502d0dfc6e362385e0c100f" + dependencies = [ + "serde", + "serde_derive", +@@ -1357,11 +1375,12 @@ dependencies = [ + + [[package]] + name = "cranelift-codegen" +-version = "0.113.1" ++version = "0.117.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "46566d7c83a8bff4150748d66020f4c7224091952aa4b4df1ec4959c39d937a1" ++checksum = "2d7c94d572615156f2db682181cadbd96342892c31e08cc26a757344319a9220" + dependencies = [ + "bumpalo", ++ "cranelift-assembler-x64", + "cranelift-bforest", + "cranelift-bitset", + "cranelift-codegen-meta", +@@ -1370,43 +1389,47 @@ dependencies = [ + "cranelift-entity", + "cranelift-isle", + "gimli", +- "hashbrown 0.14.5", ++ "hashbrown 0.15.4", + "log", ++ "pulley-interpreter", + "regalloc2", + "rustc-hash 2.0.0", ++ "serde", + "smallvec", + "target-lexicon", + ] + + [[package]] + name = "cranelift-codegen-meta" +-version = "0.113.1" ++version = "0.117.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2df8a86a34236cc75a8a6a271973da779c2aeb36c43b6e14da474cf931317082" ++checksum = "beecd9fcf2c3e06da436d565de61a42676097ea6eb6b4499346ac6264b6bb9ce" + dependencies = [ ++ "cranelift-assembler-x64", + "cranelift-codegen-shared", ++ "pulley-interpreter", + ] + + [[package]] + name = "cranelift-codegen-shared" +-version = "0.113.1" ++version = "0.117.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "cf75340b6a57b7c7c1b74f10d3d90883ee6d43a554be8131a4046c2ebcf5eb65" ++checksum = "0f4ff8d2e1235f2d6e7fc3c6738be6954ba972cd295f09079ebffeca2f864e22" + + [[package]] + name = "cranelift-control" +-version = "0.113.1" ++version = "0.117.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2e84495bc5d23d86aad8c86f8ade4af765b94882af60d60e271d3153942f1978" ++checksum = "001312e9fbc7d9ca9517474d6fe71e29d07e52997fd7efe18f19e8836446ceb2" + dependencies = [ + "arbitrary", + ] + + [[package]] + name = "cranelift-entity" +-version = "0.113.1" ++version = "0.117.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "963c17147b80df351965e57c04d20dbedc85bcaf44c3436780a59a3f1ff1b1c2" ++checksum = "eb0fd6d4aae680275fcbceb08683416b744e65c8b607352043d3f0951d72b3b2" + dependencies = [ + "cranelift-bitset", + "serde", +@@ -1415,9 +1438,9 @@ dependencies = [ + + [[package]] + name = "cranelift-frontend" +-version = "0.113.1" ++version = "0.117.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "727f02acbc4b4cb2ba38a6637101d579db50190df1dd05168c68e762851a3dd5" ++checksum = "9fd44e7e5dcea20ca104d45894748205c51365ce4cdb18f4418e3ba955971d1b" + dependencies = [ + "cranelift-codegen", + "log", +@@ -1427,15 +1450,15 @@ dependencies = [ + + [[package]] + name = "cranelift-isle" +-version = "0.113.1" ++version = "0.117.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "32b00cc2e03c748f2531eea01c871f502b909d30295fdcad43aec7bf5c5b4667" ++checksum = "f900e0a3847d51eed0321f0777947fb852ccfce0da7fb070100357f69a2f37fc" + + [[package]] + name = "cranelift-native" +-version = "0.113.1" ++version = "0.117.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "bbeaf978dc7c1a2de8bbb9162510ed218eb156697bc45590b8fbdd69bb08e8de" ++checksum = "7617f13f392ebb63c5126258aca8b8eca739636ca7e4eeee301d3eff68489a6a" + dependencies = [ + "cranelift-codegen", + "libc", +@@ -1647,7 +1670,7 @@ checksum = "1234e1717066d3c71dcf89b75e7b586299e41204d361db56ec51e6ded5014279" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -1697,7 +1720,7 @@ dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", + "strsim", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -1708,7 +1731,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" + dependencies = [ + "darling_core", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -1884,7 +1907,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -2044,7 +2067,7 @@ dependencies = [ + "heck 0.5.0", + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -2065,7 +2088,7 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -2086,7 +2109,7 @@ dependencies = [ + "darling", + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -2112,12 +2135,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + + [[package]] + name = "errno" +-version = "0.3.9" ++version = "0.3.13" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" ++checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" + dependencies = [ + "libc", +- "windows-sys 0.52.0", ++ "windows-sys 0.59.0", + ] + + [[package]] +@@ -2377,7 +2400,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -2484,7 +2507,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -2651,7 +2674,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" + dependencies = [ + "fallible-iterator", +- "indexmap 2.5.0", ++ "indexmap 2.10.0", + "stable_deref_trait", + ] + +@@ -2860,16 +2883,14 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + dependencies = [ + "ahash 0.8.11", + "allocator-api2", +- "serde", + ] + + [[package]] + name = "hashbrown" +-version = "0.15.1" ++version = "0.15.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" ++checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" + dependencies = [ +- "allocator-api2", + "equivalent", + "foldhash", + "rayon", +@@ -3330,7 +3351,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -3393,12 +3414,12 @@ dependencies = [ + + [[package]] + name = "indexmap" +-version = "2.5.0" ++version = "2.10.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" ++checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" + dependencies = [ + "equivalent", +- "hashbrown 0.14.5", ++ "hashbrown 0.15.4", + "rayon", + "serde", + ] +@@ -3438,7 +3459,7 @@ dependencies = [ + "lazy_static", + "proc-macro2 1.0.89", + "rustc-hash 1.1.0", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -3449,7 +3470,7 @@ checksum = "46d62a0a3b6af04d4eee8e7251cd758ce74b0ed86253d3e4ac8a1b297a75f4a0" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -3505,7 +3526,7 @@ dependencies = [ + "pretty_assertions", + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -3637,9 +3658,9 @@ dependencies = [ + + [[package]] + name = "itoa" +-version = "1.0.11" ++version = "1.0.15" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" ++checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + + [[package]] + name = "ittapi" +@@ -3821,6 +3842,12 @@ version = "0.2.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" + ++[[package]] ++name = "leb128fmt" ++version = "0.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" ++ + [[package]] + name = "levenshtein" + version = "1.0.5" +@@ -3850,7 +3877,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" + dependencies = [ + "cfg-if 1.0.0", +- "windows-targets 0.48.5", ++ "windows-targets 0.52.6", + ] + + [[package]] +@@ -4239,7 +4266,7 @@ dependencies = [ + "bitflags 2.6.0", + "codespan-reporting", + "hexf-parse", +- "indexmap 2.5.0", ++ "indexmap 2.10.0", + "log", + "num-traits", + "petgraph 0.6.5", +@@ -4569,7 +4596,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -4683,7 +4710,7 @@ dependencies = [ + "proc-macro-crate", + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -4695,7 +4722,7 @@ dependencies = [ + "proc-macro-crate", + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -4870,13 +4897,13 @@ dependencies = [ + + [[package]] + name = "object" +-version = "0.36.4" ++version = "0.36.7" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" ++checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" + dependencies = [ + "crc32fast", +- "hashbrown 0.14.5", +- "indexmap 2.5.0", ++ "hashbrown 0.15.4", ++ "indexmap 2.10.0", + "memchr", + ] + +@@ -5051,7 +5078,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" + dependencies = [ + "fixedbitset 0.4.2", +- "indexmap 2.5.0", ++ "indexmap 2.10.0", + ] + + [[package]] +@@ -5288,7 +5315,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30" + dependencies = [ + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -5354,13 +5381,13 @@ dependencies = [ + + [[package]] + name = "pulley-interpreter" +-version = "26.0.1" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "df33e7f8a43ccc7f93b330fef4baf271764674926f3f4d40f4a196d54de8af26" ++checksum = "cb0ecb9823083f71df8735f21f6c44f2f2b55986d674802831df20f27e26c907" + dependencies = [ + "cranelift-bitset", + "log", +- "sptr", ++ "wasmtime-math", + ] + + [[package]] +@@ -5660,19 +5687,20 @@ dependencies = [ + "quote 1.0.37", + "refinery-core", + "regex", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] + name = "regalloc2" +-version = "0.10.2" ++version = "0.11.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "12908dbeb234370af84d0579b9f68258a0f67e201412dd9a2814e6f45b2fc0f0" ++checksum = "dc06e6b318142614e4a48bc725abbf08ff166694835c43c9dae5a9009704639a" + dependencies = [ +- "hashbrown 0.14.5", ++ "allocator-api2", ++ "bumpalo", ++ "hashbrown 0.15.4", + "log", + "rustc-hash 2.0.0", +- "slice-group-by", + "smallvec", + ] + +@@ -5883,9 +5911,9 @@ dependencies = [ + + [[package]] + name = "rustix" +-version = "0.38.40" ++version = "0.38.44" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "99e4ea3e1cdc4b559b8e5650f9c8e5998e3e5c1343b4eaf034565f32318d63c0" ++checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" + dependencies = [ + "bitflags 2.6.0", + "errno", +@@ -5893,7 +5921,7 @@ dependencies = [ + "libc", + "linux-raw-sys", + "once_cell", +- "windows-sys 0.52.0", ++ "windows-sys 0.59.0", + ] + + [[package]] +@@ -6197,22 +6225,22 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + + [[package]] + name = "serde" +-version = "1.0.210" ++version = "1.0.219" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" ++checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" + dependencies = [ + "serde_derive", + ] + + [[package]] + name = "serde_derive" +-version = "1.0.210" ++version = "1.0.219" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" ++checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -6245,7 +6273,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -6277,10 +6305,10 @@ checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" + dependencies = [ + "base64 0.22.1", + "chrono", +- "hashbrown 0.15.1", ++ "hashbrown 0.15.4", + "hex", + "indexmap 1.9.3", +- "indexmap 2.5.0", ++ "indexmap 2.10.0", + "serde", + "serde_derive", + "serde_json", +@@ -6297,7 +6325,7 @@ dependencies = [ + "darling", + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -6458,12 +6486,6 @@ dependencies = [ + "autocfg", + ] + +-[[package]] +-name = "slice-group-by" +-version = "0.3.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" +- + [[package]] + name = "slotmap" + version = "1.0.7" +@@ -6697,7 +6719,7 @@ dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", + "rustversion", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -6813,9 +6835,9 @@ dependencies = [ + + [[package]] + name = "syn" +-version = "2.0.79" ++version = "2.0.87" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" ++checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +@@ -6851,7 +6873,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -6889,9 +6911,9 @@ dependencies = [ + + [[package]] + name = "target-lexicon" +-version = "0.12.16" ++version = "0.13.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" ++checksum = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a" + + [[package]] + name = "tempfile" +@@ -6932,7 +6954,7 @@ checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -7070,7 +7092,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -7131,7 +7153,7 @@ version = "0.19.15" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" + dependencies = [ +- "indexmap 2.5.0", ++ "indexmap 2.10.0", + "toml_datetime", + "winnow 0.5.40", + ] +@@ -7142,7 +7164,7 @@ version = "0.22.22" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" + dependencies = [ +- "indexmap 2.5.0", ++ "indexmap 2.10.0", + "serde", + "serde_spanned", + "toml_datetime", +@@ -7209,7 +7231,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -7283,6 +7305,17 @@ dependencies = [ + "cc", + ] + ++[[package]] ++name = "trait-variant" ++version = "0.1.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "70977707304198400eb4835a78f6a9f928bf41bba420deb8fdb175cd965d77a7" ++dependencies = [ ++ "proc-macro2 1.0.89", ++ "quote 1.0.37", ++ "syn 2.0.87", ++] ++ + [[package]] + name = "treeculler" + version = "0.4.0" +@@ -7525,7 +7558,7 @@ dependencies = [ + "authc", + "byteorder", + "clap", +- "hashbrown 0.15.1", ++ "hashbrown 0.15.4", + "hickory-resolver", + "image", + "num 0.4.3", +@@ -7559,7 +7592,7 @@ dependencies = [ + "fluent", + "fluent-bundle", + "fluent-syntax", +- "hashbrown 0.15.1", ++ "hashbrown 0.15.4", + "intl-memoizer", + "serde", + "tracing", +@@ -7583,8 +7616,8 @@ dependencies = [ + "dot_vox", + "enum-map", + "fxhash", +- "hashbrown 0.15.1", +- "indexmap 2.5.0", ++ "hashbrown 0.15.4", ++ "indexmap 2.10.0", + "itertools 0.13.0", + "kiddo", + "lazy_static", +@@ -7621,7 +7654,7 @@ version = "0.10.0" + dependencies = [ + "assets_manager", + "dot_vox", +- "hashbrown 0.15.1", ++ "hashbrown 0.15.4", + "image", + "lazy_static", + "ron", +@@ -7676,7 +7709,7 @@ dependencies = [ + name = "veloren-common-i18n" + version = "0.1.0" + dependencies = [ +- "hashbrown 0.15.1", ++ "hashbrown 0.15.4", + "rand", + "serde", + ] +@@ -7687,7 +7720,7 @@ version = "0.10.0" + dependencies = [ + "bincode", + "flate2", +- "hashbrown 0.15.1", ++ "hashbrown 0.15.4", + "image", + "num-traits", + "serde", +@@ -7706,7 +7739,7 @@ dependencies = [ + "bincode", + "bytes", + "futures", +- "hashbrown 0.15.1", ++ "hashbrown 0.15.4", + "hex", + "num_cpus", + "rayon", +@@ -7758,7 +7791,7 @@ dependencies = [ + "criterion", + "crossbeam-channel", + "futures-util", +- "hashbrown 0.15.1", ++ "hashbrown 0.15.4", + "lazy_static", + "lz-fear", + "prometheus", +@@ -7786,7 +7819,7 @@ dependencies = [ + "bitflags 2.6.0", + "bytes", + "criterion", +- "hashbrown 0.15.1", ++ "hashbrown 0.15.4", + "prometheus", + "rand", + "tokio", +@@ -7813,7 +7846,7 @@ dependencies = [ + "atomic_refcell", + "enum-map", + "fxhash", +- "hashbrown 0.15.1", ++ "hashbrown 0.15.4", + "itertools 0.13.0", + "rand", + "rand_chacha", +@@ -7841,7 +7874,7 @@ dependencies = [ + "drop_guard", + "enum-map", + "futures-util", +- "hashbrown 0.15.1", ++ "hashbrown 0.15.4", + "humantime", + "itertools 0.13.0", + "lazy_static", +@@ -7957,7 +7990,7 @@ dependencies = [ + "gilrs", + "glyph_brush", + "guillotiere", +- "hashbrown 0.15.1", ++ "hashbrown 0.15.4", + "iced_native", + "iced_winit", + "image", +@@ -8063,7 +8096,7 @@ dependencies = [ + "fixed", + "flate2", + "fxhash", +- "hashbrown 0.15.1", ++ "hashbrown 0.15.4", + "image", + "indicatif", + "itertools 0.13.0", +@@ -8164,7 +8197,7 @@ dependencies = [ + "once_cell", + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + "wasm-bindgen-shared", + ] + +@@ -8198,7 +8231,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + "wasm-bindgen-backend", + "wasm-bindgen-shared", + ] +@@ -8211,63 +8244,64 @@ checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" + + [[package]] + name = "wasm-encoder" +-version = "0.218.0" ++version = "0.224.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "22b896fa8ceb71091ace9bcb81e853f54043183a1c9667cf93422c40252ffa0a" ++checksum = "1ab7a13a23790fe91ea4eb7526a1f3131001d874e3e00c2976c48861f2e82920" + dependencies = [ + "leb128", ++ "wasmparser 0.224.1", + ] + + [[package]] + name = "wasm-encoder" +-version = "0.220.0" ++version = "0.236.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ebf48234b389415b226a4daef6562933d38c7b28a8b8f64c5c4130dad1561ab7" ++checksum = "3108979166ab0d3c7262d2e16a2190ffe784b2a5beb963edef154b5e8e07680b" + dependencies = [ +- "leb128", +- "wasmparser 0.220.0", ++ "leb128fmt", ++ "wasmparser 0.236.0", + ] + + [[package]] + name = "wasmparser" +-version = "0.218.0" ++version = "0.224.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b09e46c7fceceaa72b2dd1a8a137ea7fd8f93dfaa69806010a709918e496c5dc" ++checksum = "04f17a5917c2ddd3819e84c661fae0d6ba29d7b9c1f0e96c708c65a9c4188e11" + dependencies = [ +- "ahash 0.8.11", + "bitflags 2.6.0", +- "hashbrown 0.14.5", +- "indexmap 2.5.0", ++ "hashbrown 0.15.4", ++ "indexmap 2.10.0", + "semver 1.0.23", + "serde", + ] + + [[package]] + name = "wasmparser" +-version = "0.220.0" ++version = "0.236.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e246c2772ce3ebc83f89a2d4487ac5794cad6c309b2071818a88c7db7c36d87b" ++checksum = "16d1eee846a705f6f3cb9d7b9f79b54583810f1fb57a1e3aea76d1742db2e3d2" + dependencies = [ + "bitflags 2.6.0", +- "indexmap 2.5.0", ++ "indexmap 2.10.0", ++ "semver 1.0.23", + ] + + [[package]] + name = "wasmprinter" +-version = "0.218.0" ++version = "0.224.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0ace089155491837b75f474bf47c99073246d1b737393fe722d6dee311595ddc" ++checksum = "0095b53a3b09cbc2f90f789ea44aa1b17ecc2dad8b267e657c7391f3ded6293d" + dependencies = [ + "anyhow", + "termcolor", +- "wasmparser 0.218.0", ++ "wasmparser 0.224.1", + ] + + [[package]] + name = "wasmtime" +-version = "26.0.1" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "51e762e163fd305770c6c341df3290f0cabb3c264e7952943018e9a1ced8d917" ++checksum = "809cc8780708f1deed0a7c3fcab46954f0e8c08a6fe0252772481fbc88fcf946" + dependencies = [ + "addr2line", + "anyhow", +@@ -8279,11 +8313,10 @@ dependencies = [ + "encoding_rs", + "fxprof-processed-profile", + "gimli", +- "hashbrown 0.14.5", +- "indexmap 2.5.0", ++ "hashbrown 0.15.4", ++ "indexmap 2.10.0", + "ittapi", + "libc", +- "libm", + "log", + "mach2", + "memfd", +@@ -8302,8 +8335,9 @@ dependencies = [ + "smallvec", + "sptr", + "target-lexicon", +- "wasm-encoder 0.218.0", +- "wasmparser 0.218.0", ++ "trait-variant", ++ "wasm-encoder 0.224.1", ++ "wasmparser 0.224.1", + "wasmtime-asm-macros", + "wasmtime-cache", + "wasmtime-component-macro", +@@ -8313,6 +8347,7 @@ dependencies = [ + "wasmtime-fiber", + "wasmtime-jit-debug", + "wasmtime-jit-icache-coherence", ++ "wasmtime-math", + "wasmtime-slab", + "wasmtime-versioned-export-macros", + "wasmtime-winch", +@@ -8322,18 +8357,18 @@ dependencies = [ + + [[package]] + name = "wasmtime-asm-macros" +-version = "26.0.1" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "63caa7aebb546374e26257a1900fb93579171e7c02514cde26805b9ece3ef812" ++checksum = "236964b6b35af0f08879c9c56dbfbc5adc12e8d624672341a0121df31adaa3fa" + dependencies = [ + "cfg-if 1.0.0", + ] + + [[package]] + name = "wasmtime-cache" +-version = "26.0.1" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c7192f71e3afe32e858729454d9d90d6e927bd92427d688a9507d8220bddb256" ++checksum = "7a5d75ac36ee28647f6d871a93eefc7edcb729c3096590031ba50857fac44fa8" + dependencies = [ + "anyhow", + "base64 0.21.7", +@@ -8351,14 +8386,14 @@ dependencies = [ + + [[package]] + name = "wasmtime-component-macro" +-version = "26.0.1" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d61a4b5ce2ad9c15655e830f0eac0c38b8def30c74ecac71f452d3901e491b68" ++checksum = "2581ef04bf33904db9a902ffb558e7b2de534d6a4881ee985ea833f187a78fdf" + dependencies = [ + "anyhow", + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + "wasmtime-component-util", + "wasmtime-wit-bindgen", + "wit-parser", +@@ -8366,15 +8401,15 @@ dependencies = [ + + [[package]] + name = "wasmtime-component-util" +-version = "26.0.1" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "35e87a1212270dbb84a49af13d82594e00a92769d6952b0ea7fc4366c949f6ad" ++checksum = "9a7108498a8a0afc81c7d2d81b96cdc509cd631d7bbaa271b7db5137026f10e3" + + [[package]] + name = "wasmtime-cranelift" +-version = "26.0.1" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7cb40dddf38c6a5eefd5ce7c1baf43b00fe44eada11a319fab22e993a960262f" ++checksum = "abcc9179097235c91f299a8ff56b358ee921266b61adff7d14d6e48428954dd2" + dependencies = [ + "anyhow", + "cfg-if 1.0.0", +@@ -8387,26 +8422,27 @@ dependencies = [ + "itertools 0.12.1", + "log", + "object", ++ "pulley-interpreter", + "smallvec", + "target-lexicon", + "thiserror", +- "wasmparser 0.218.0", ++ "wasmparser 0.224.1", + "wasmtime-environ", + "wasmtime-versioned-export-macros", + ] + + [[package]] + name = "wasmtime-environ" +-version = "26.0.1" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8613075e89e94a48c05862243c2b718eef1b9c337f51493ebf951e149a10fa19" ++checksum = "8e90f6cba665939381839bbf2ddf12d732fca03278867910348ef1281b700954" + dependencies = [ + "anyhow", + "cpp_demangle", + "cranelift-bitset", + "cranelift-entity", + "gimli", +- "indexmap 2.5.0", ++ "indexmap 2.10.0", + "log", + "object", + "postcard", +@@ -8416,17 +8452,17 @@ dependencies = [ + "serde_derive", + "smallvec", + "target-lexicon", +- "wasm-encoder 0.218.0", +- "wasmparser 0.218.0", ++ "wasm-encoder 0.224.1", ++ "wasmparser 0.224.1", + "wasmprinter", + "wasmtime-component-util", + ] + + [[package]] + name = "wasmtime-fiber" +-version = "26.0.1" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "77acabfbcd89a4d47ad117fb31e340c824e2f49597105402c3127457b6230995" ++checksum = "ba5c2ac21f0b39d72d2dac198218a12b3ddeb4ab388a8fa0d2e429855876783c" + dependencies = [ + "anyhow", + "cc", +@@ -8439,21 +8475,21 @@ dependencies = [ + + [[package]] + name = "wasmtime-jit-debug" +-version = "26.0.1" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f02a0118d471de665565ed200bc56673eaa10cc8e223dfe2cef5d50ed0d9d143" ++checksum = "74812989369947f4f5a33f4ae8ff551eb6c8a97ff55e0269a9f5f0fac93cd755" + dependencies = [ ++ "cc", + "object", +- "once_cell", + "rustix", + "wasmtime-versioned-export-macros", + ] + + [[package]] + name = "wasmtime-jit-icache-coherence" +-version = "26.0.1" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "da47fba49af72581bc0dc67c8faaf5ee550e6f106e285122a184a675193701a5" ++checksum = "3f180cc0d2745e3a5df5d02231cd3046f49c75512eaa987b8202363b112e125d" + dependencies = [ + "anyhow", + "cfg-if 1.0.0", +@@ -8462,27 +8498,36 @@ dependencies = [ + ] + + [[package]] +-name = "wasmtime-slab" +-version = "26.0.1" ++name = "wasmtime-math" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "770e10cdefb15f2b6304152978e115bd062753c1ebe7221c0b6b104fa0419ff6" ++checksum = "f5f04c5dcf5b2f88f81cfb8d390294b2f67109dc4d0197ea7303c60a092df27c" ++dependencies = [ ++ "libm", ++] ++ ++[[package]] ++name = "wasmtime-slab" ++version = "30.0.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "fe9681707f1ae9a4708ca22058722fca5c135775c495ba9b9624fe3732b94c97" + + [[package]] + name = "wasmtime-versioned-export-macros" +-version = "26.0.1" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "db8efb877c9e5e67239d4553bb44dd2a34ae5cfb728f3cf2c5e64439c6ca6ee7" ++checksum = "dd2fe69d04986a12fc759d2e79494100d600adcb3bb79e63dedfc8e6bb2ab03e" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] + name = "wasmtime-wasi" +-version = "26.0.1" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f16c8d87a45168131be6815045e6d46d7f6ddf65897c49444ab210488bce10dc" ++checksum = "4ce639c7d398586bc539ae9bba752084c1db7a49ab0f391a3230dcbcc6a64cfd" + dependencies = [ + "anyhow", + "async-trait", +@@ -8497,7 +8542,6 @@ dependencies = [ + "futures", + "io-extras", + "io-lifetimes", +- "once_cell", + "rustix", + "system-interface", + "thiserror", +@@ -8505,22 +8549,36 @@ dependencies = [ + "tracing", + "url", + "wasmtime", ++ "wasmtime-wasi-io", + "wiggle", + "windows-sys 0.59.0", + ] + + [[package]] +-name = "wasmtime-winch" +-version = "26.0.1" ++name = "wasmtime-wasi-io" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4f7a267367382ceec3e7f7ace63a63b83d86f4a680846743dead644e10f08150" ++checksum = "bdcad7178fddaa07786abe8ff5e043acb4bc8c8f737eb117f11e028b48d92792" ++dependencies = [ ++ "anyhow", ++ "async-trait", ++ "bytes", ++ "futures", ++ "wasmtime", ++] ++ ++[[package]] ++name = "wasmtime-winch" ++version = "30.0.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5a9c8eae8395d530bb00a388030de9f543528674c382326f601de47524376975" + dependencies = [ + "anyhow", + "cranelift-codegen", + "gimli", + "object", + "target-lexicon", +- "wasmparser 0.218.0", ++ "wasmparser 0.224.1", + "wasmtime-cranelift", + "wasmtime-environ", + "winch-codegen", +@@ -8528,13 +8586,13 @@ dependencies = [ + + [[package]] + name = "wasmtime-wit-bindgen" +-version = "26.0.1" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4bef2a726fd8d1ee9b0144655e16c492dc32eb4c7c9f7e3309fcffe637870933" ++checksum = "9a5531455e2c55994a1540355140369bb7ec0e46d2699731c5ee9f4cf9c3f7d4" + dependencies = [ + "anyhow", + "heck 0.5.0", +- "indexmap 2.5.0", ++ "indexmap 2.10.0", + "wit-parser", + ] + +@@ -8549,24 +8607,24 @@ dependencies = [ + + [[package]] + name = "wast" +-version = "220.0.0" ++version = "236.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4e708c8de08751fd66e70961a32bae9d71901f14a70871e181cb8461a3bb3165" ++checksum = "11d6b6faeab519ba6fbf9b26add41617ca6f5553f99ebc33d876e591d2f4f3c6" + dependencies = [ + "bumpalo", +- "leb128", ++ "leb128fmt", + "memchr", + "unicode-width 0.2.0", +- "wasm-encoder 0.220.0", ++ "wasm-encoder 0.236.0", + ] + + [[package]] + name = "wat" +-version = "1.220.0" ++version = "1.236.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "de4f1d7d59614ba690541360102b995c4eb1b9ed373701d5102cc1a968b1c5a3" ++checksum = "cc31704322400f461f7f31a5f9190d5488aaeafb63ae69ad2b5888d2704dcb08" + dependencies = [ +- "wast 220.0.0", ++ "wast 236.0.0", + ] + + [[package]] +@@ -8909,9 +8967,9 @@ checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" + + [[package]] + name = "wiggle" +-version = "26.0.1" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b0f25588cf5ea16f56c1af13244486d50c5a2cf67cc0c4e990c665944d741546" ++checksum = "c5a4ea7722c042a659dc70caab0b56d7f45220e8bae1241cf5ebc7ab7efb0dfb" + dependencies = [ + "anyhow", + "async-trait", +@@ -8924,28 +8982,28 @@ dependencies = [ + + [[package]] + name = "wiggle-generate" +-version = "26.0.1" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "28ff23bed568b335dac6a324b8b167318a0c60555199445fcc89745a5eb42452" ++checksum = "3f786d9d3e006152a360f1145bdc18e56ea22fd5d2356f1ddc2ecfcf7529a77b" + dependencies = [ + "anyhow", + "heck 0.5.0", + "proc-macro2 1.0.89", + "quote 1.0.37", + "shellexpand 2.1.2", +- "syn 2.0.79", ++ "syn 2.0.87", + "witx", + ] + + [[package]] + name = "wiggle-macro" +-version = "26.0.1" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7f13be83541aa0b033ac5ec8a8b59c9a8d8b32305845b8466dd066e722cb0004" ++checksum = "ceac9f94f22ccc0485aeab08187b9f211d1993aaf0ed6eeb8aed43314f6e717c" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + "wiggle-generate", + ] + +@@ -8991,9 +9049,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + + [[package]] + name = "winch-codegen" +-version = "26.0.1" ++version = "30.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "07ab957fc71a36c63834b9b51cc2e087c4260d5ff810a5309ab99f7fbeb19567" ++checksum = "7dbd4e07bd92c7ddace2f3267bdd31d4197b5ec58c315751325d45c19bfb56df" + dependencies = [ + "anyhow", + "cranelift-codegen", +@@ -9001,7 +9059,8 @@ dependencies = [ + "regalloc2", + "smallvec", + "target-lexicon", +- "wasmparser 0.218.0", ++ "thiserror", ++ "wasmparser 0.224.1", + "wasmtime-cranelift", + "wasmtime-environ", + ] +@@ -9108,7 +9167,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -9119,7 +9178,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -9459,20 +9518,20 @@ dependencies = [ + + [[package]] + name = "wit-parser" +-version = "0.218.0" ++version = "0.224.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0d3d1066ab761b115f97fef2b191090faabcb0f37b555b758d3caf42d4ed9e55" ++checksum = "e3477d8d0acb530d76beaa8becbdb1e3face08929db275f39934963eb4f716f8" + dependencies = [ + "anyhow", + "id-arena", +- "indexmap 2.5.0", ++ "indexmap 2.10.0", + "log", + "semver 1.0.23", + "serde", + "serde_derive", + "serde_json", + "unicode-xid 0.2.6", +- "wasmparser 0.218.0", ++ "wasmparser 0.224.1", + ] + + [[package]] +@@ -9672,7 +9731,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + "synstructure", + ] + +@@ -9694,7 +9753,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +@@ -9714,7 +9773,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + "synstructure", + ] + +@@ -9743,7 +9802,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" + dependencies = [ + "proc-macro2 1.0.89", + "quote 1.0.37", +- "syn 2.0.79", ++ "syn 2.0.87", + ] + + [[package]] +diff --git a/common/state/Cargo.toml b/common/state/Cargo.toml +index d786873af..934e288a3 100644 +--- a/common/state/Cargo.toml ++++ b/common/state/Cargo.toml +@@ -35,8 +35,8 @@ toml = { version = "0.8", optional = true } + tar = { version = "0.4.37", optional = true } + bincode = { workspace = true, optional = true } + timer-queue = "0.1.0" +-wasmtime = { version = "26.0.1", optional = true , features = ["component-model", "async"] } +-wasmtime-wasi = { version = "26.0.1", optional = true } ++wasmtime = { version = "30.0.2", optional = true , features = ["component-model", "async"] } ++wasmtime-wasi = { version = "30.0.2", optional = true } + async-trait = { workspace = true } + bytes = "^1" + futures = "0.3.30" +diff --git a/common/state/src/lib.rs b/common/state/src/lib.rs +index 11f8175a4..3d76f8f27 100644 +--- a/common/state/src/lib.rs ++++ b/common/state/src/lib.rs +@@ -1,7 +1,7 @@ + //! This crate contains the [`State`] and shared between + //! server (`veloren-server`) and the client (`veloren-client`) + +-#![feature(maybe_uninit_uninit_array, maybe_uninit_array_assume_init)] ++#![feature(maybe_uninit_array_assume_init)] + + #[cfg(feature = "plugins")] pub mod plugin; + mod special_areas; +diff --git a/common/state/src/plugin/module.rs b/common/state/src/plugin/module.rs +index 72d4f9904..3189c909c 100644 +--- a/common/state/src/plugin/module.rs ++++ b/common/state/src/plugin/module.rs +@@ -10,7 +10,7 @@ use wasmtime::{ + component::{Component, Linker}, + Config, Engine, Store, + }; +-use wasmtime_wasi::WasiView; ++use wasmtime_wasi::IoView; + + pub(crate) mod types_mod { + wasmtime::component::bindgen!({ +@@ -180,9 +180,10 @@ struct WasiHostCtx { + registered_bodies: HashMap, + } + +-impl wasmtime_wasi::WasiView for WasiHostCtx { ++impl wasmtime_wasi::IoView for WasiHostCtx { + fn table(&mut self) -> &mut wasmtime::component::ResourceTable { &mut self.preview2_table } +- ++} ++impl wasmtime_wasi::WasiView for WasiHostCtx { + fn ctx(&mut self) -> &mut wasmtime_wasi::WasiCtx { &mut self.preview2_ctx } + } + +@@ -276,7 +277,7 @@ impl information::HostEntity for WasiHostCtx { + + struct InfoStream(String); + +-impl wasmtime_wasi::HostOutputStream for InfoStream { ++impl wasmtime_wasi::OutputStream for InfoStream { + fn write(&mut self, bytes: bytes::Bytes) -> wasmtime_wasi::StreamResult<()> { + tracing::info!("{}: {}", self.0, String::from_utf8_lossy(bytes.as_ref())); + Ok(()) +@@ -288,13 +289,13 @@ impl wasmtime_wasi::HostOutputStream for InfoStream { + } + + #[wasmtime_wasi::async_trait] +-impl wasmtime_wasi::Subscribe for InfoStream { ++impl wasmtime_wasi::Pollable for InfoStream { + async fn ready(&mut self) {} + } + + struct ErrorStream(String); + +-impl wasmtime_wasi::HostOutputStream for ErrorStream { ++impl wasmtime_wasi::OutputStream for ErrorStream { + fn write(&mut self, bytes: bytes::Bytes) -> wasmtime_wasi::StreamResult<()> { + tracing::error!("{}: {}", self.0, String::from_utf8_lossy(bytes.as_ref())); + Ok(()) +@@ -306,14 +307,14 @@ impl wasmtime_wasi::HostOutputStream for ErrorStream { + } + + #[wasmtime_wasi::async_trait] +-impl wasmtime_wasi::Subscribe for ErrorStream { ++impl wasmtime_wasi::Pollable for ErrorStream { + async fn ready(&mut self) {} + } + + struct LogStream(String, tracing::Level); + + impl wasmtime_wasi::StdoutStream for LogStream { +- fn stream(&self) -> Box { ++ fn stream(&self) -> Box { + if self.1 == tracing::Level::INFO { + Box::new(InfoStream(self.0.clone())) + } else { +diff --git a/voxygen/src/lib.rs b/voxygen/src/lib.rs +index a9273e7c8..70ca5dd10 100644 +--- a/voxygen/src/lib.rs ++++ b/voxygen/src/lib.rs +@@ -14,7 +14,6 @@ + slice_as_chunks, + let_chains, + generic_const_exprs, +- maybe_uninit_uninit_array, + maybe_uninit_array_assume_init, + closure_lifetime_binder )] -diff --git a/server/src/persistence/models.rs b/server/src/persistence/models.rs -index df148742..70baed42 100644 ---- a/server/src/persistence/models.rs -+++ b/server/src/persistence/models.rs -@@ -1,5 +1,6 @@ - pub struct Character { - pub character_id: i64, -+ #[allow(dead_code)] - pub player_uuid: String, - pub alias: String, - pub waypoint: Option, -@@ -16,6 +17,7 @@ pub struct Item { + +commit d585b16256152fff3eaa69ec2b5b75dbe1c53f7a +Author: Isse +Date: Thu Jan 23 12:32:17 2025 +0100 + + Don't use vek::repr_simd + +diff --git a/common/Cargo.toml b/common/Cargo.toml +index b11b5ad6f..4515fadbd 100644 +--- a/common/Cargo.toml ++++ b/common/Cargo.toml +@@ -32,7 +32,7 @@ serde = { workspace = true, features = ["rc"] } + + # Util + enum-map = { workspace = true, features = ["serde"] } +-vek = { workspace = true, features = ["repr_simd"] } ++vek = { workspace = true } + chrono = { workspace = true } + chrono-tz = { workspace = true } + itertools = { workspace = true } +diff --git a/common/src/comp/ori.rs b/common/src/comp/ori.rs +index 567332430..93ab1f49a 100644 +--- a/common/src/comp/ori.rs ++++ b/common/src/comp/ori.rs +@@ -364,6 +364,7 @@ impl From> for Ori { + fn from(quat: Quaternion) -> Self { Self::new(quat) } } - pub struct Body { -+ #[allow(dead_code)] - pub body_id: i64, - pub variant: String, - pub body_data: String, -@@ -38,6 +40,7 @@ pub struct Pet { - } - - pub struct AbilitySets { -+ #[allow(dead_code)] - pub entity_id: i64, - pub ability_sets: String, - } -diff --git a/voxygen/src/credits.rs b/voxygen/src/credits.rs -index 2de54687..be49ac97 100644 ---- a/voxygen/src/credits.rs -+++ b/voxygen/src/credits.rs -@@ -7,6 +7,7 @@ use std::path::PathBuf; - - // See best practices for attribution: https://wiki.creativecommons.org/wiki/Best_practices_for_attribution - -+#[allow(dead_code)] - #[derive(Clone, Deserialize)] - pub struct Art { - /// Name of the art. -diff --git a/voxygen/src/hud/mod.rs b/voxygen/src/hud/mod.rs -index e62250ca..6be79389 100755 ---- a/voxygen/src/hud/mod.rs -+++ b/voxygen/src/hud/mod.rs -@@ -1,3 +1,4 @@ -+#![allow(non_local_definitions)] // because of WidgetCommon derive - mod animation; - mod bag; - mod buffs; -diff --git a/voxygen/src/render/renderer/rain_occlusion_map.rs b/voxygen/src/render/renderer/rain_occlusion_map.rs -index bdc44f98..68026806 100644 ---- a/voxygen/src/render/renderer/rain_occlusion_map.rs -+++ b/voxygen/src/render/renderer/rain_occlusion_map.rs -@@ -11,7 +11,6 @@ pub struct RainOcclusionMapRenderer { - - pub terrain_pipeline: rain_occlusion::RainOcclusionPipeline, - pub figure_pipeline: rain_occlusion::RainOcclusionFigurePipeline, -- pub layout: rain_occlusion::RainOcclusionLayout, - } - - pub enum RainOcclusionMap { -@@ -31,13 +30,10 @@ impl RainOcclusionMap { - if let (Some(terrain_pipeline), Some(figure_pipeline), Some(depth)) = - (directed, figure, view) - { -- let layout = rain_occlusion::RainOcclusionLayout::new(device); -- - Self::Enabled(RainOcclusionMapRenderer { - depth, - terrain_pipeline, - figure_pipeline, -- layout, - }) - } else { - Self::Disabled(Self::create_dummy_tex(device, queue)) -diff --git a/voxygen/src/render/renderer/shadow_map.rs b/voxygen/src/render/renderer/shadow_map.rs -index 7b5ab16e..b15a2da3 100644 ---- a/voxygen/src/render/renderer/shadow_map.rs -+++ b/voxygen/src/render/renderer/shadow_map.rs -@@ -12,7 +12,6 @@ pub struct ShadowMapRenderer { - pub terrain_directed_pipeline: shadow::ShadowPipeline, - pub figure_directed_pipeline: shadow::ShadowFigurePipeline, - pub debug_directed_pipeline: shadow::ShadowDebugPipeline, -- pub layout: shadow::ShadowLayout, - } - - pub enum ShadowMap { -@@ -43,8 +42,6 @@ impl ShadowMap { - { - let (point_depth, directed_depth) = shadow_views; - -- let layout = shadow::ShadowLayout::new(device); -- - Self::Enabled(ShadowMapRenderer { - directed_depth, - point_depth, -@@ -53,8 +50,6 @@ impl ShadowMap { - terrain_directed_pipeline, - figure_directed_pipeline, - debug_directed_pipeline, -- -- layout, - }) - } else { - let (dummy_point, dummy_directed) = Self::create_dummy_shadow_tex(device, queue); -diff --git a/voxygen/src/ui/widgets/mod.rs b/voxygen/src/ui/widgets/mod.rs -index e7ce5ee8..622e7e9e 100644 ---- a/voxygen/src/ui/widgets/mod.rs -+++ b/voxygen/src/ui/widgets/mod.rs -@@ -1,3 +1,4 @@ -+#![allow(non_local_definitions)] // because of WidgetCommon derive - pub mod ghost_image; - pub mod image_frame; - pub mod image_slider; -diff --git a/world/Cargo.toml b/world/Cargo.toml -index 92bd288f..6ff2e79e 100644 ---- a/world/Cargo.toml -+++ b/world/Cargo.toml -@@ -7,11 +7,11 @@ edition = "2021" - [features] - use-dyn-lib = ["common-dynlib"] - be-dyn-lib = [] --simd = ["vek/platform_intrinsics", "packed_simd"] -+simd = ["vek/platform_intrinsics"] - bin_compression = ["lz-fear", "deflate", "flate2", "image/jpeg", "num-traits", "fallible-iterator", "rstar", "cli"] - cli = ["clap", "signal-hook", "indicatif"] - --default = ["simd"] -+default = [] - - [dependencies] - common = { package = "veloren-common", path = "../common" } -@@ -36,7 +36,6 @@ tracing = { workspace = true } - rand = { workspace = true } - rand_chacha = { workspace = true } - arr_macro = "0.2.1" --packed_simd = { version = "0.3.9", optional = true } - rayon = { workspace = true } - serde = { workspace = true } - ron = { workspace = true } -diff --git a/world/src/site2/gen.rs b/world/src/site2/gen.rs -index 59c57766..0800ccee 100644 ---- a/world/src/site2/gen.rs -+++ b/world/src/site2/gen.rs -@@ -1415,18 +1415,6 @@ impl<'a, const N: usize> PrimitiveTransform for [PrimitiveRef<'a>; N] { ++/* + impl From> for Ori { + fn from( + vek::quaternion::repr_simd::Quaternion { x, y, z, w }: vek::quaternion::repr_simd::Quaternion, +@@ -371,16 +372,19 @@ impl From> for Ori { + Self::from(Quaternion { x, y, z, w }) } } ++*/ --pub trait PrimitiveGroupFill { -- fn fill_many(self, fills: [Fill; N]); --} -- --impl PrimitiveGroupFill for [PrimitiveRef<'_>; N] { -- fn fill_many(self, fills: [Fill; N]) { -- for i in 0..N { -- self[i].fill(fills[i].clone()); -- } -- } --} -- - pub trait Structure { - #[cfg(feature = "use-dyn-lib")] - const UPDATE_FN: &'static [u8]; + impl From for Quaternion { + fn from(Ori(q): Ori) -> Self { q } + } + ++/* + impl From for vek::quaternion::repr_simd::Quaternion { + fn from(Ori(Quaternion { x, y, z, w }): Ori) -> Self { + vek::quaternion::repr_simd::Quaternion { x, y, z, w } + } + } ++*/ + + impl From for Dir { + fn from(ori: Ori) -> Self { ori.look_dir() } +@@ -390,17 +394,21 @@ impl From for Vec3 { + fn from(ori: Ori) -> Self { ori.look_vec() } + } + ++/* + impl From for vek::vec::repr_simd::Vec3 { + fn from(ori: Ori) -> Self { vek::vec::repr_simd::Vec3::from(ori.look_vec()) } + } ++*/ + + impl From for Vec2 { + fn from(ori: Ori) -> Self { ori.look_dir().to_horizontal().unwrap_or_default().xy() } + } + ++/* + impl From for vek::vec::repr_simd::Vec2 { + fn from(ori: Ori) -> Self { vek::vec::repr_simd::Vec2::from(ori.look_vec().xy()) } + } ++*/ + + // Validate at Deserialization + #[derive(Copy, Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +diff --git a/voxygen/anim/src/plugin/mod.rs b/voxygen/anim/src/plugin/mod.rs +index 224cc644e..534f6426d 100644 +--- a/voxygen/anim/src/plugin/mod.rs ++++ b/voxygen/anim/src/plugin/mod.rs +@@ -5,7 +5,8 @@ use super::{ + Skeleton, + }; + use common::comp; +-use vek::quaternion::repr_simd::Quaternion; ++// use vek::quaternion::repr_simd::Quaternion; ++use vek::Quaternion; + + pub type Body = comp::plugin::Body; + +diff --git a/voxygen/anim/src/vek.rs b/voxygen/anim/src/vek.rs +index a056cd664..b4ded62a9 100644 +--- a/voxygen/anim/src/vek.rs ++++ b/voxygen/anim/src/vek.rs +@@ -1,8 +1,10 @@ ++/* + pub use ::vek::{ + geom::repr_simd::*, mat::repr_simd::column_major::Mat4, ops::*, quaternion::repr_simd::*, + transform::repr_simd::*, transition::*, vec::repr_simd::*, + }; +-/*pub use ::vek::{ ++*/ ++pub use ::vek::{ + bezier::repr_c::*, geom::repr_c::*, mat::repr_c::column_major::Mat4, ops::*, + quaternion::repr_c::*, transform::repr_c::*, transition::*, vec::repr_c::*, +-};*/ ++}; +diff --git a/voxygen/src/scene/math.rs b/voxygen/src/scene/math.rs +index 6caf30b7d..7ca3d7953 100644 +--- a/voxygen/src/scene/math.rs ++++ b/voxygen/src/scene/math.rs +@@ -1,9 +1,10 @@ + use core::{iter, mem}; + use hashbrown::HashMap; + use num::traits::Float; ++/* + pub use vek::{geom::repr_simd::*, mat::repr_simd::column_major::Mat4, ops::*, vec::repr_simd::*}; +-//pub use vek::{geom::repr_c::*, mat::repr_c::column_major::Mat4, ops::*, +-// vec::repr_c::*}; ++*/ ++pub use vek::{geom::repr_c::*, mat::repr_c::column_major::Mat4, ops::*, vec::repr_c::*}; + + pub fn aabb_to_points(bounds: Aabb) -> [Vec3; 8] { + [ diff --git a/pkgs/by-name/ve/veloren/package.nix b/pkgs/by-name/ve/veloren/package.nix index ab795710baa5..b0e59713be0b 100644 --- a/pkgs/by-name/ve/veloren/package.nix +++ b/pkgs/by-name/ve/veloren/package.nix @@ -14,9 +14,9 @@ let # Note: use this to get the release metadata # https://gitlab.com/api/v4/projects/10174980/repository/tags/v{version} - version = "0.16.0"; - date = "2023-03-30-03:28"; - rev = "80fe5ca64b40fbf3e0e393a44f8880a79a6a5380"; + version = "0.17.0"; + date = "2024-12-28-12:49"; + rev = "a1be5a7bece7af43ebd76910eb0020c1cf3c0798"; in rustPlatform.buildRustPackage { @@ -27,7 +27,7 @@ rustPlatform.buildRustPackage { owner = "veloren"; repo = "veloren"; inherit rev; - hash = "sha256-h2hLO227aeK2oEFfdGMgmtMkA9cn9AgQ9w6myb+8W8c="; + hash = "sha256-AnmXn4GWzxu27FUyQIIVnANtu3sr0NIi7seN7buAtL8="; }; cargoPatches = [ @@ -35,7 +35,7 @@ rustPlatform.buildRustPackage { ./fix-assets-path.patch ]; - cargoHash = "sha256-3XHuAgue0Id1oxCJ8NLZ4wYjMfND+C1iIW+AnMKXd54="; + cargoHash = "sha256-Uj0gFcStWhIS+GbM/Hn/vD2PrA0ftzEnMnCwV0n0g7g="; postPatch = '' # Force vek to build in unstable mode @@ -61,10 +61,11 @@ rustPlatform.buildRustPackage { env = { # Enable unstable features, see https://gitlab.com/veloren/veloren/-/issues/264 RUSTC_BOOTSTRAP = true; + RUSTC_BREAK_ON_ICE = true; # Set version info, required by veloren-common NIX_GIT_TAG = "v${version}"; - NIX_GIT_HASH = "${lib.substring 0 7 rev}/${date}"; + NIX_GIT_HASH = "${lib.substring 0 8 rev}/${date}"; # Save game data under user's home directory, # otherwise it defaults to $out/bin/../userdata diff --git a/pkgs/development/compilers/go/binary.nix b/pkgs/development/compilers/go/binary.nix index d1d31681654b..2e02355dceec 100644 --- a/pkgs/development/compilers/go/binary.nix +++ b/pkgs/development/compilers/go/binary.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation { homepage = "https://go.dev/"; license = lib.licenses.bsd3; teams = [ lib.teams.golang ]; - platforms = lib.platforms.darwin ++ lib.platforms.linux; + platforms = lib.platforms.darwin ++ lib.platforms.freebsd ++ lib.platforms.linux; badPlatforms = [ # Support for big-endian POWER < 8 was dropped in 1.9, but POWER8 users have less of a reason to run in big-endian mode than pre-POWER8 ones # So non-LE ppc64 is effectively unsupported, and Go SIGILLs on affordable ppc64 hardware diff --git a/pkgs/development/libraries/mesa/common.nix b/pkgs/development/libraries/mesa/common.nix index 18f999dd8359..9dca76dc44a4 100644 --- a/pkgs/development/libraries/mesa/common.nix +++ b/pkgs/development/libraries/mesa/common.nix @@ -5,14 +5,14 @@ # nix build .#legacyPackages.x86_64-darwin.mesa .#legacyPackages.aarch64-darwin.mesa rec { pname = "mesa"; - version = "25.1.6"; + version = "25.1.7"; src = fetchFromGitLab { domain = "gitlab.freedesktop.org"; owner = "mesa"; repo = "mesa"; rev = "mesa-${version}"; - hash = "sha256-SHYYezt2ez9awvIATEC6wVMZMuJUsOYXxlugs1Q6q7U="; + hash = "sha256-dseMHUifLsszSAGCaZwgOwhj0/yfbRlBVVHQz25NdjY="; }; meta = { diff --git a/pkgs/kde/misc/ktextaddons/default.nix b/pkgs/kde/misc/ktextaddons/default.nix index 7296d8b22fe7..c845e53b9109 100644 --- a/pkgs/kde/misc/ktextaddons/default.nix +++ b/pkgs/kde/misc/ktextaddons/default.nix @@ -9,11 +9,11 @@ }: mkKdeDerivation rec { pname = "ktextaddons"; - version = "1.6.0"; + version = "1.7.0"; src = fetchurl { url = "mirror://kde/stable/ktextaddons/ktextaddons-${version}.tar.xz"; - hash = "sha256-2YRlBaUvl72mTq0ZMDK8KVc+wxSB9HO+PFhvW4Mh7Nw="; + hash = "sha256-7JtimpC0shZgaGfoA08UszRDQgwreybz/UFNjB+jyuQ="; }; extraBuildInputs = [ diff --git a/pkgs/os-specific/linux/acer-wmi-battery/default.nix b/pkgs/os-specific/linux/acer-wmi-battery/default.nix new file mode 100644 index 000000000000..5eac3ff6a1a3 --- /dev/null +++ b/pkgs/os-specific/linux/acer-wmi-battery/default.nix @@ -0,0 +1,46 @@ +{ + stdenv, + lib, + fetchFromGitHub, + kernel, +}: + +let + release = "0.1.0-unstable-2025-04-24"; + +in +stdenv.mkDerivation { + pname = "acer-wmi-battery"; + version = "${kernel.version}-${release}"; + + src = fetchFromGitHub { + owner = "frederik-h"; + repo = "acer-wmi-battery"; + rev = "0889d3ea54655eaa88de552b334911ce7375952f"; + hash = "sha256-mI6Ob9BmNfwqT3nndWf3jkz8f7tV10odkTnfApsNo+A="; + }; + + postPatch = '' + substituteInPlace Makefile \ + --replace-fail '/lib/modules/$(shell uname -r)/build' ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build + ''; + + enableParallelBuilding = true; + + installPhase = '' + runHook preInstall + + find . -name '*.ko' -exec xz -f {} \; + install -Dm444 -t $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/platform/x86 *.ko.xz + + runHook postInstall + ''; + + meta = { + description = "Driver for the Acer WMI battery health control interface"; + homepage = "https://github.com/frederik-h/acer-wmi-battery"; + license = lib.licenses.gpl2Only; + platforms = lib.platforms.linux; + maintainers = with lib.maintainers; [ peterhoeg ]; + }; +} diff --git a/pkgs/os-specific/windows/default.nix b/pkgs/os-specific/windows/default.nix index 3e291917ed11..8647fa39d78a 100644 --- a/pkgs/os-specific/windows/default.nix +++ b/pkgs/os-specific/windows/default.nix @@ -48,5 +48,7 @@ lib.makeScope newScope ( pthreads = callPackage ./pthread-w32 { }; libgnurx = callPackage ./libgnurx { }; + + sdk = callPackage ./msvcSdk { }; } ) diff --git a/pkgs/os-specific/windows/msvcSdk/default.nix b/pkgs/os-specific/windows/msvcSdk/default.nix new file mode 100644 index 000000000000..f3144e9b14c4 --- /dev/null +++ b/pkgs/os-specific/windows/msvcSdk/default.nix @@ -0,0 +1,124 @@ +{ + lib, + config, + stdenvNoCC, + xwin, + testers, + llvmPackages, +}: +let + version = (builtins.fromJSON (builtins.readFile ./manifest.json)).info.productSemanticVersion; + + hashes = (builtins.fromJSON (builtins.readFile ./hashes.json)); + + host = stdenvNoCC.hostPlatform; + arch = + if host.isx86_64 then + "x86_64" + else if host.isAarch64 then + "aarch64" + else if host.isx86_32 then + "x86" + else if host.isAarch32 then + "aarch" + else + throw "Unsupported system"; +in +if !config.microsoftVisualStudioLicenseAccepted then + throw '' + Microsoft Software License Terms are not accepted with config.microsoftVisualStudioLicenseAccepted. + Please read https://visualstudio.microsoft.com/license-terms/mt644918/ and if you agree, change your + config to indicate so. + '' +else + stdenvNoCC.mkDerivation (finalAttrs: { + inherit version; + pname = "msvc-sdk"; + dontUnpack = true; + + strictDeps = true; + nativeBuildInputs = [ xwin ]; + + outputHashAlgo = "sha256"; + outputHashMode = "recursive"; + outputHash = hashes.${arch}; + + __structuredAttrs = true; + xwinArgs = [ + "--accept-license" + "--cache-dir=xwin-out" + "--manifest=${./manifest.json}" + "--arch=${arch}" + "splat" + "--preserve-ms-arch-notation" + ]; + + buildPhase = '' + runHook preBuild + + xwin "''${xwinArgs[@]}" + mkdir "$out" + mv xwin-out/splat/* "$out" + + runHook postBuild + ''; + + dontFixup = true; + dontInstall = true; + + passthru = { + updateScript = ./update.nu; + tests = { + hello-world = testers.runCommand { + name = "hello-msvc"; + + nativeBuildInputs = [ + llvmPackages.clang-unwrapped + llvmPackages.bintools-unwrapped + ]; + + script = '' + set -euo pipefail + + cat > hello.c <<- EOF + #include + + int main(int argc, char* argv[]) { + printf("Hello world!\n"); + return 0; + } + EOF + + clang-cl --target=x86_64-pc-windows-msvc -fuse-ld=lld \ + /vctoolsdir ${finalAttrs.finalPackage}/crt \ + /winsdkdir ${finalAttrs.finalPackage}/sdk \ + ./hello.c -v + + if test ! -f hello.exe; then + echo "hello.exe not found!" + exit 1 + else + touch $out + fi + ''; + }; + }; + }; + + meta = { + description = "MSVC SDK and Windows CRT for cross compiling"; + homepage = "https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/"; + maintainers = [ lib.maintainers.RossSmyth ]; + license = { + deprecated = false; + fullName = "Microsoft Software License Terms"; + shortName = "msvc"; + spdxId = "unknown"; + url = "https://www.visualstudio.com/license-terms/mt644918/"; + }; + platforms = lib.platforms.all; + # The arm manifest is missing critical pieces. + broken = stdenvNoCC.hostPlatform.isAarch; + sourceProvenance = [ lib.sourceTypes.binaryNativeCode ]; + }; + }) diff --git a/pkgs/os-specific/windows/msvcSdk/hashes.json b/pkgs/os-specific/windows/msvcSdk/hashes.json new file mode 100644 index 000000000000..725df500ba65 --- /dev/null +++ b/pkgs/os-specific/windows/msvcSdk/hashes.json @@ -0,0 +1,4 @@ +{ + "x86_64": "sha256-s3iaz9SkV8H1j3rQ1ZWKe9I1o/42+buqxCnGAoA17j8=", + "x86": "sha256-ZiFms3GWhTrEcE6/nf3pUjpdux5PRI3AtOzxofk93pk=" +} diff --git a/pkgs/os-specific/windows/msvcSdk/manifest.json b/pkgs/os-specific/windows/msvcSdk/manifest.json new file mode 100644 index 000000000000..52a9f130cca8 --- /dev/null +++ b/pkgs/os-specific/windows/msvcSdk/manifest.json @@ -0,0 +1,1246 @@ +{ + "manifestVersion": "1.1", + "info": { + "id": "VisualStudio.17.Release/17.14.10+36327.8", + "buildBranch": "d17.14", + "buildVersion": "17.14.36327.8", + "commitId": "9c44947270e1855daef3c04c366aea2e90d9b7e8", + "communityOrLowerFlightId": "eafa266867f74eb", + "localBuild": "build-lab", + "manifestName": "VisualStudio.17.Release", + "manifestType": "channel", + "productDisplayVersion": "17.14.10", + "productLine": "Dev17", + "productLineVersion": "2022", + "productMilestone": "RTW", + "productMilestoneIsPreRelease": "False", + "productName": "Visual Studio", + "productPatchVersion": "10", + "productPreReleaseMilestoneSuffix": "1.0", + "productSemanticVersion": "17.14.10+36327.8", + "professionalOrGreaterFlightId": "4bfa166bd6094b0", + "qBuildSessionId": "8f5f40fc-b90a-ea8e-46c5-2c40390680d0" + }, + "channelItems": [ + { + "id": "Microsoft.VisualStudio.Manifests.VisualStudio", + "version": "17.14.36327.8", + "type": "Manifest", + "payloads": [ + { + "fileName": "VisualStudio.vsman", + "sha256": "219fcc842c9f5a431105a409e8f9642ceeebd285a3d6a1c1502cf1761cc564e0", + "size": 31342440, + "url": "https://download.visualstudio.microsoft.com/download/pr/fd84d0bb-e8dd-4174-b4ad-b2556426fe65/219fcc842c9f5a431105a409e8f9642ceeebd285a3d6a1c1502cf1761cc564e0/VisualStudio.vsman" + } + ] + }, + { + "id": "Microsoft.VisualStudio.Product.BuildTools", + "version": "17.14.36327.8", + "type": "ChannelProduct", + "icon": { + "mimeType": "image/svg+xml", + "base64": "PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjQgMjQiPg0KICA8ZGVmcz4NCiAgICA8c3R5bGU+LmNscy0xe2ZpbGw6IzVlNDM4Zjt9LmNscy0ye29wYWNpdHk6MC4xO2lzb2xhdGlvbjppc29sYXRlO30uY2xzLTN7ZmlsbDp1cmwoI2xpbmVhci1ncmFkaWVudCk7fS5jbHMtNHtmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50LTIpO30uY2xzLTV7ZmlsbDojYzE4ZWYxO308L3N0eWxlPg0KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50IiB4MT0iMy42MTIiIHkxPSItMTUuMzUyIiB4Mj0iMTkuNTc1IiB5Mj0iMS4zNjkiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIDQpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM3MjUyYWEiLz4NCiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzcyNTJhYSIvPg0KICAgIDwvbGluZWFyR3JhZGllbnQ+DQogICAgPGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtMiIgeDE9IjguODQ0IiB5MT0iMzguNjc5IiB4Mj0iMTMuODcxIiB5Mj0iMzMuMjE2IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTIyKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjYWU3ZmUyIi8+DQogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM5YTcwZDQiLz4NCiAgICA8L2xpbmVhckdyYWRpZW50Pg0KICA8L2RlZnM+DQogIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTQuNCwyMC4zbC00LTNhLjkxMS45MTEsMCwwLDEtLjQtLjh2LTlhLjkxMS45MTEsMCwwLDEsLjQtLjhsNC0zYS45MTEuOTExLDAsMCwwLS40Ljh2MTVBLjkxMS45MTEsMCwwLDAsNC40LDIwLjNaIi8+DQogIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTEuMSwxNy4yYS41MTcuNTE3LDAsMCwxLS40LjIuMzY2LjM2NiwwLDAsMS0uMy0uMWgwbDQsM2EuOTExLjkxMSwwLDAsMS0uNC0uOFYxMy44WiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0uNCw2LjdoMGEuNS41LDAsMCwxLC42OTMuMDlMMS4xLDYuOCw0LDEwLjJWNC41YS45MTEuOTExLDAsMCwxLC40LS44WiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yMy42LDQuMkExLjQyMywxLjQyMywwLDAsMCwyMyw0YS45MDguOTA4LDAsMCwwLS43LjNsLS4xLjFMMTgsOC40LDE0LjMsMTIsOS45LDE2LjIsNS44LDIwLjFsLS4xLjFhLjkwOC45MDgsMCwwLDEtLjcuMywxLjQyMywxLjQyMywwLDAsMS0uNi0uMmwtNC0zYTEuMDcxLDEuMDcxLDAsMCwwLDEuNC0uMUw0LDE0LjYsNi4yLDEyLDkuOCw3LjgsMTYuMi40QS45MTEuOTExLDAsMCwxLDE3LDBhMS40MjMsMS40MjMsMCwwLDEsLjYuMloiLz4NCiAgPHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjEwLjIgNy40IDkuOCA3LjggNi4yIDEyIDUuOSAxMi40IDkuNSAxNi42IDkuNSAxNi42IDkuOCAxNi4yIDE0LjMgMTIgMTQuNiAxMS43IDEwLjIgNy40Ii8+DQogIDxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTIzLjYsMTkuOGwtNiw0Yy0uMSwwLS4yLjEtLjMuMWgwYS45LjksMCwwLDEtMS0uM0w5LjksMTYuMiw2LjIsMTIsNCw5LjQsMS44LDYuOEExLjIwOCwxLjIwOCwwLDAsMCwuNCw2LjdsNC0zQTEuNDIzLDEuNDIzLDAsMCwxLDUsMy41YS45MDguOTA4LDAsMCwxLC43LjNsLjEuMUw5LjksNy44LDE0LjMsMTJsMy4yLDMuMS41LjUsNC4yLDQuMS4xLjFhLjkwOC45MDgsMCwwLDAsLjcuM1oiLz4NCiAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMjMuNiwxOS44bC02LDRjLS4xLDAtLjIuMS0uMy4xYS43NjIuNzYyLDAsMCwwLC4yLS40VjE1LjFsLjUuNSw0LjIsNC4xLjEuMWEuOTA4LjkwOCwwLDAsMCwuNy4zWiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xNy41LjJhLjM2Ni4zNjYsMCwwLDAtLjMtLjEuNTE3LjUxNywwLDAsMSwuMi40VjguOWwuNi0uNSw0LjItNC4xLjEtLjFBMS40NDgsMS40NDgsMCwwLDEsMjMsNGExLjQyMywxLjQyMywwLDAsMSwuNi4yWiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik0yNCw1VjE5YTEsMSwwLDAsMS0uNDQ1LjgzNWwtNiw0QTEsMSwwLDAsMCwxOCwyM1YxYTEuMDEsMS4wMSwwLDAsMC0uNDYtLjgzNWw2LjAxNSw0QTEuMDA5LDEuMDA5LDAsMCwxLDI0LDVaIi8+DQo8L3N2Zz4=" + }, + "isHidden": true, + "releaseNotes": "https://docs.microsoft.com/en-us/visualstudio/releases/2022/release-notes-v17.14#17.14.10", + "localizedResources": [ + { + "language": "en-us", + "title": "Visual Studio Build Tools 2022", + "description": "The Visual Studio Build Tools allows you to build native and managed MSBuild-based applications without requiring the Visual Studio IDE. There are options to install the Visual C++ compilers and libraries, MFC, ATL, and C++/CLI support.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179911" + }, + { + "language": "zh-cn", + "title": "Visual Studio 生成工具 2022", + "description": "Visual Studio 生成工具允许生成本机和基于 MSBuild 的托管 .NET 应用程序,而不需要 Visual Studio IDE。还可以选择安装 Visual C++ 编译器和库、MFC、ALT 和 C++/CLI 支持。", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179911" + }, + { + "language": "zh-tw", + "title": "Visual Studio Build Tools 2022", + "description": "Visual Studio Build Tools 可讓您建置原生及受控 MSBuild 型工具,而不需要 Visual Studio IDE。選項包括安裝 Visual C++ 編譯器與程式庫、MFC、ATL 及 C++/CLI 支援。", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179911" + }, + { + "language": "cs-cz", + "title": "Visual Studio Build Tools 2022", + "description": "Nástroje Visual Studio Build Tools umožňují vytváření nativních a spravovaných aplikací na bázi platformy MSBuild, aniž by se vyžadovalo prostředí IDE sady Visual Studio. K dispozici jsou i možnosti pro instalaci nástrojů, jako jsou kompilátory a knihovny nebo podpora Visual C++, MFC, ATL a C++/CLI.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179911" + }, + { + "language": "de-de", + "title": "Visual Studio Build Tools 2022", + "description": "Die Visual Studio Build Tools ermöglichen Ihnen die Erstellung nativer und verwalteter MSBuild-basierter Anwendungen, ohne dass die Visual Studio-IDE erforderlich ist. Es stehen Optionen zur Installation von Visual C++-Compilern und -Bibliotheken, MFC, ATL sowie C++/CLI-Unterstützung zur Verfügung.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179911" + }, + { + "language": "es-es", + "title": "Visual Studio Build Tools 2022", + "description": "Visual Studio Build Tools permite compilar aplicaciones nativas y administradas basadas en MSBuild sin el IDE de Visual Studio. Hay opciones para instalar los compiladores y las bibliotecas de Visual C++, MFC, ATL y la compatibilidad con C++/CLI.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179911" + }, + { + "language": "fr-fr", + "title": "Visual Studio Build Tools 2022", + "description": "Visual Studio Build Tools vous permet de générer des applications MSBuild natives et managées sans passer par l'IDE Visual Studio. Il existe des options pour installer les compilateurs et bibliothèques Visual C++, ainsi que la prise en charge d'ATL, de MFC et de C++/CLI.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179911" + }, + { + "language": "it-it", + "title": "Visual Studio Build Tools 2022", + "description": "Visual Studio Build Tools consente di creare applicazioni native e gestite basate su MSBuild senza l'IDE di Visual Studio. Sono disponibili opzioni per installare le librerie e i compilatori Visual C++, MFC, ATL e il supporto C++/CLI.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179911" + }, + { + "language": "ja-jp", + "title": "Visual Studio Build Tools 2022", + "description": "Visual Studio Build Tools では、Visual Studio IDE を必要とせずに、MSBuild ベースのネイティブ マネージド アプリケーションをビルドできます。また、Visual C++ のコンパイラやライブラリ、MFC、ATL、および C++/CLI サポートをインストールするオプションも用意されています。", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179911" + }, + { + "language": "ko-kr", + "title": "Visual Studio Build Tools 2022", + "description": "Visual Studio Build Tools에서는 Visual Studio IDE 없이 네이티브 및 관리 MSBuild 기반 애플리케이션을 빌드할 수 있습니다. Visual C++ 컴파일러 및 라이브러리, MFC, ATL, C++/CLI 지원 등과 같은 도구를 설치하는 옵션이 있습니다.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179911" + }, + { + "language": "pl-pl", + "title": "Visual Studio Build Tools 2022", + "description": "Narzędzia Visual Studio Build Tools umożliwiają tworzenie natywnych i zarządzanych aplikacji opartych na narzędziu MSBuild bez korzystania ze środowiska IDE programu Visual Studio. Dostępne są opcje instalacji narzędzi, takich jak kompilatory i biblioteki Visual C++, ATL, MFC oraz obsługa C++/CLI.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179911" + }, + { + "language": "pt-br", + "title": "Ferramentas de Build do Visual Studio 2022", + "description": "As Ferramentas de Build do Visual Studio permitem que você compile aplicativos nativos e gerenciados com base no MSBuild sem precisar do IDE do Visual Studio. Há opções para instalar as bibliotecas e os compiladores do Visual C++, MFC, ATL e suporte C++/CLI.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179911" + }, + { + "language": "ru-ru", + "title": "Visual Studio Build Tools 2022", + "description": "Visual Studio Build Tools позволяет осуществлять сборку собственных и управляемых приложений на базе MSBuild без использования среды Visual Studio IDE. Существуют разные варианты установки компиляторов и библиотек Visual C++, ATL, MFC и поддержки C++/CLI.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179911" + }, + { + "language": "tr-tr", + "title": "Visual Studio Derleme Araçları 2022", + "description": "Visual Studio Derleme Araçları, MSBuild tabanlı yerel ve yönetilen uygulamaları Visual Studio IDE kullanmanız gerekmeden derlemenizi sağlar. Visual C++ derleyicileri ile kitaplıkları, MFC, ATL ve C++/CLI desteğini yükleyebilirsiniz.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179911" + } + ] + }, + { + "id": "Microsoft.VisualStudio.Product.Community", + "version": "17.14.36327.8", + "type": "ChannelProduct", + "chip": "x64", + "productArch": "arm64", + "icon": { + "mimeType": "image/svg+xml", + "base64": "PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjQgMjQiPg0KICA8ZGVmcz4NCiAgICA8c3R5bGU+LmNscy0xe2ZpbGw6IzVlNDM4Zjt9LmNscy0ye29wYWNpdHk6MC4xO2lzb2xhdGlvbjppc29sYXRlO30uY2xzLTN7ZmlsbDp1cmwoI2xpbmVhci1ncmFkaWVudCk7fS5jbHMtNHtmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50LTIpO30uY2xzLTV7ZmlsbDojYzE4ZWYxO308L3N0eWxlPg0KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50IiB4MT0iMy42MTIiIHkxPSItMTUuMzUyIiB4Mj0iMTkuNTc1IiB5Mj0iMS4zNjkiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIDQpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM3MjUyYWEiLz4NCiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzcyNTJhYSIvPg0KICAgIDwvbGluZWFyR3JhZGllbnQ+DQogICAgPGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtMiIgeDE9IjguODQ0IiB5MT0iMzguNjc5IiB4Mj0iMTMuODcxIiB5Mj0iMzMuMjE2IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTIyKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjYWU3ZmUyIi8+DQogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM5YTcwZDQiLz4NCiAgICA8L2xpbmVhckdyYWRpZW50Pg0KICA8L2RlZnM+DQogIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTQuNCwyMC4zbC00LTNhLjkxMS45MTEsMCwwLDEtLjQtLjh2LTlhLjkxMS45MTEsMCwwLDEsLjQtLjhsNC0zYS45MTEuOTExLDAsMCwwLS40Ljh2MTVBLjkxMS45MTEsMCwwLDAsNC40LDIwLjNaIi8+DQogIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTEuMSwxNy4yYS41MTcuNTE3LDAsMCwxLS40LjIuMzY2LjM2NiwwLDAsMS0uMy0uMWgwbDQsM2EuOTExLjkxMSwwLDAsMS0uNC0uOFYxMy44WiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0uNCw2LjdoMGEuNS41LDAsMCwxLC42OTMuMDlMMS4xLDYuOCw0LDEwLjJWNC41YS45MTEuOTExLDAsMCwxLC40LS44WiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yMy42LDQuMkExLjQyMywxLjQyMywwLDAsMCwyMyw0YS45MDguOTA4LDAsMCwwLS43LjNsLS4xLjFMMTgsOC40LDE0LjMsMTIsOS45LDE2LjIsNS44LDIwLjFsLS4xLjFhLjkwOC45MDgsMCwwLDEtLjcuMywxLjQyMywxLjQyMywwLDAsMS0uNi0uMmwtNC0zYTEuMDcxLDEuMDcxLDAsMCwwLDEuNC0uMUw0LDE0LjYsNi4yLDEyLDkuOCw3LjgsMTYuMi40QS45MTEuOTExLDAsMCwxLDE3LDBhMS40MjMsMS40MjMsMCwwLDEsLjYuMloiLz4NCiAgPHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjEwLjIgNy40IDkuOCA3LjggNi4yIDEyIDUuOSAxMi40IDkuNSAxNi42IDkuNSAxNi42IDkuOCAxNi4yIDE0LjMgMTIgMTQuNiAxMS43IDEwLjIgNy40Ii8+DQogIDxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTIzLjYsMTkuOGwtNiw0Yy0uMSwwLS4yLjEtLjMuMWgwYS45LjksMCwwLDEtMS0uM0w5LjksMTYuMiw2LjIsMTIsNCw5LjQsMS44LDYuOEExLjIwOCwxLjIwOCwwLDAsMCwuNCw2LjdsNC0zQTEuNDIzLDEuNDIzLDAsMCwxLDUsMy41YS45MDguOTA4LDAsMCwxLC43LjNsLjEuMUw5LjksNy44LDE0LjMsMTJsMy4yLDMuMS41LjUsNC4yLDQuMS4xLjFhLjkwOC45MDgsMCwwLDAsLjcuM1oiLz4NCiAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMjMuNiwxOS44bC02LDRjLS4xLDAtLjIuMS0uMy4xYS43NjIuNzYyLDAsMCwwLC4yLS40VjE1LjFsLjUuNSw0LjIsNC4xLjEuMWEuOTA4LjkwOCwwLDAsMCwuNy4zWiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xNy41LjJhLjM2Ni4zNjYsMCwwLDAtLjMtLjEuNTE3LjUxNywwLDAsMSwuMi40VjguOWwuNi0uNSw0LjItNC4xLjEtLjFBMS40NDgsMS40NDgsMCwwLDEsMjMsNGExLjQyMywxLjQyMywwLDAsMSwuNi4yWiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik0yNCw1VjE5YTEsMSwwLDAsMS0uNDQ1LjgzNWwtNiw0QTEsMSwwLDAsMCwxOCwyM1YxYTEuMDEsMS4wMSwwLDAsMC0uNDYtLjgzNWw2LjAxNSw0QTEuMDA5LDEuMDA5LDAsMCwxLDI0LDVaIi8+DQo8L3N2Zz4=" + }, + "releaseNotes": "https://docs.microsoft.com/en-us/visualstudio/releases/2022/release-notes-v17.14#17.14.10", + "supportsDownloadThenUpdate": true, + "localizedResources": [ + { + "language": "en-us", + "title": "Visual Studio Community 2022", + "description": "Powerful IDE, free for students, open-source contributors, and individuals", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "zh-cn", + "title": "Visual Studio Community 2022", + "description": "功能强大的 IDE,供学生、开放源代码参与者和个人免费使用", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "zh-tw", + "title": "Visual Studio Community 2022", + "description": "功能強大的 IDE、免費供學生、開放原始碼參與者及個人使用", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "cs-cz", + "title": "Visual Studio Community 2022", + "description": "Výkonné integrované vývojové prostředí (IDE), zdarma pro studenty, open source přispěvatele a jednotlivce", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "de-de", + "title": "Visual Studio Community 2022", + "description": "Leistungsstarke IDE, kostenlos für Studenten, Open-Source-Mitwirkende und Einzelpersonen", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "es-es", + "title": "Visual Studio Community 2022", + "description": "IDE con un gran potencial, gratis para estudiantes, colaboradores de código abierto y personas", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "fr-fr", + "title": "Visual Studio Community 2022", + "description": "IDE puissant, gratuit pour les étudiants, les contributeurs open source et les particuliers", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "it-it", + "title": "Visual Studio Community 2022", + "description": "Potente IDE gratuito per studenti, collaboratori open-source e singoli utenti", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "ja-jp", + "title": "Visual Studio Community 2022", + "description": "学生、オープンソースの共同作成者、個人用の無料で強力な IDE", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "ko-kr", + "title": "Visual Studio Community 2022", + "description": "학생, 오픈 소스 기여자 및 개인에게 무료로 제공되는 강력한 IDE", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "pl-pl", + "title": "Visual Studio Community 2022", + "description": "Zaawansowane środowisko IDE — bezpłatne dla uczniów i studentów, współautorów oprogramowania open source oraz indywidualnych osób", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "pt-br", + "title": "Visual Studio Community 2022", + "description": "IDE avançado, gratuito para estudantes, colaboradores de software livre e indivíduos", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "ru-ru", + "title": "Visual Studio Community 2022", + "description": "Мощная интегрированная среда разработки, бесплатная для студентов, участников проектов с открытым кодом и отдельных пользователей.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "tr-tr", + "title": "Visual Studio Community 2022", + "description": "Güçlü IDE, öğrenciler için ücretsiz, açık kaynak katkıda bulunanları ve bireyler", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + } + ], + "requirements": { + "supportedOS": "10.0.22000", + "functors": { + "architecture": "arm64" + } + } + }, + { + "id": "Microsoft.VisualStudio.Product.Community", + "version": "17.14.36327.8", + "type": "ChannelProduct", + "chip": "x64", + "productArch": "x64", + "icon": { + "mimeType": "image/svg+xml", + "base64": "PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjQgMjQiPg0KICA8ZGVmcz4NCiAgICA8c3R5bGU+LmNscy0xe2ZpbGw6IzVlNDM4Zjt9LmNscy0ye29wYWNpdHk6MC4xO2lzb2xhdGlvbjppc29sYXRlO30uY2xzLTN7ZmlsbDp1cmwoI2xpbmVhci1ncmFkaWVudCk7fS5jbHMtNHtmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50LTIpO30uY2xzLTV7ZmlsbDojYzE4ZWYxO308L3N0eWxlPg0KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50IiB4MT0iMy42MTIiIHkxPSItMTUuMzUyIiB4Mj0iMTkuNTc1IiB5Mj0iMS4zNjkiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIDQpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM3MjUyYWEiLz4NCiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzcyNTJhYSIvPg0KICAgIDwvbGluZWFyR3JhZGllbnQ+DQogICAgPGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtMiIgeDE9IjguODQ0IiB5MT0iMzguNjc5IiB4Mj0iMTMuODcxIiB5Mj0iMzMuMjE2IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTIyKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjYWU3ZmUyIi8+DQogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM5YTcwZDQiLz4NCiAgICA8L2xpbmVhckdyYWRpZW50Pg0KICA8L2RlZnM+DQogIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTQuNCwyMC4zbC00LTNhLjkxMS45MTEsMCwwLDEtLjQtLjh2LTlhLjkxMS45MTEsMCwwLDEsLjQtLjhsNC0zYS45MTEuOTExLDAsMCwwLS40Ljh2MTVBLjkxMS45MTEsMCwwLDAsNC40LDIwLjNaIi8+DQogIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTEuMSwxNy4yYS41MTcuNTE3LDAsMCwxLS40LjIuMzY2LjM2NiwwLDAsMS0uMy0uMWgwbDQsM2EuOTExLjkxMSwwLDAsMS0uNC0uOFYxMy44WiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0uNCw2LjdoMGEuNS41LDAsMCwxLC42OTMuMDlMMS4xLDYuOCw0LDEwLjJWNC41YS45MTEuOTExLDAsMCwxLC40LS44WiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yMy42LDQuMkExLjQyMywxLjQyMywwLDAsMCwyMyw0YS45MDguOTA4LDAsMCwwLS43LjNsLS4xLjFMMTgsOC40LDE0LjMsMTIsOS45LDE2LjIsNS44LDIwLjFsLS4xLjFhLjkwOC45MDgsMCwwLDEtLjcuMywxLjQyMywxLjQyMywwLDAsMS0uNi0uMmwtNC0zYTEuMDcxLDEuMDcxLDAsMCwwLDEuNC0uMUw0LDE0LjYsNi4yLDEyLDkuOCw3LjgsMTYuMi40QS45MTEuOTExLDAsMCwxLDE3LDBhMS40MjMsMS40MjMsMCwwLDEsLjYuMloiLz4NCiAgPHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjEwLjIgNy40IDkuOCA3LjggNi4yIDEyIDUuOSAxMi40IDkuNSAxNi42IDkuNSAxNi42IDkuOCAxNi4yIDE0LjMgMTIgMTQuNiAxMS43IDEwLjIgNy40Ii8+DQogIDxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTIzLjYsMTkuOGwtNiw0Yy0uMSwwLS4yLjEtLjMuMWgwYS45LjksMCwwLDEtMS0uM0w5LjksMTYuMiw2LjIsMTIsNCw5LjQsMS44LDYuOEExLjIwOCwxLjIwOCwwLDAsMCwuNCw2LjdsNC0zQTEuNDIzLDEuNDIzLDAsMCwxLDUsMy41YS45MDguOTA4LDAsMCwxLC43LjNsLjEuMUw5LjksNy44LDE0LjMsMTJsMy4yLDMuMS41LjUsNC4yLDQuMS4xLjFhLjkwOC45MDgsMCwwLDAsLjcuM1oiLz4NCiAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMjMuNiwxOS44bC02LDRjLS4xLDAtLjIuMS0uMy4xYS43NjIuNzYyLDAsMCwwLC4yLS40VjE1LjFsLjUuNSw0LjIsNC4xLjEuMWEuOTA4LjkwOCwwLDAsMCwuNy4zWiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xNy41LjJhLjM2Ni4zNjYsMCwwLDAtLjMtLjEuNTE3LjUxNywwLDAsMSwuMi40VjguOWwuNi0uNSw0LjItNC4xLjEtLjFBMS40NDgsMS40NDgsMCwwLDEsMjMsNGExLjQyMywxLjQyMywwLDAsMSwuNi4yWiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik0yNCw1VjE5YTEsMSwwLDAsMS0uNDQ1LjgzNWwtNiw0QTEsMSwwLDAsMCwxOCwyM1YxYTEuMDEsMS4wMSwwLDAsMC0uNDYtLjgzNWw2LjAxNSw0QTEuMDA5LDEuMDA5LDAsMCwxLDI0LDVaIi8+DQo8L3N2Zz4=" + }, + "releaseNotes": "https://docs.microsoft.com/en-us/visualstudio/releases/2022/release-notes-v17.14#17.14.10", + "supportsDownloadThenUpdate": true, + "localizedResources": [ + { + "language": "en-us", + "title": "Visual Studio Community 2022", + "description": "Powerful IDE, free for students, open-source contributors, and individuals", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "zh-cn", + "title": "Visual Studio Community 2022", + "description": "功能强大的 IDE,供学生、开放源代码参与者和个人免费使用", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "zh-tw", + "title": "Visual Studio Community 2022", + "description": "功能強大的 IDE、免費供學生、開放原始碼參與者及個人使用", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "cs-cz", + "title": "Visual Studio Community 2022", + "description": "Výkonné integrované vývojové prostředí (IDE), zdarma pro studenty, open source přispěvatele a jednotlivce", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "de-de", + "title": "Visual Studio Community 2022", + "description": "Leistungsstarke IDE, kostenlos für Studenten, Open-Source-Mitwirkende und Einzelpersonen", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "es-es", + "title": "Visual Studio Community 2022", + "description": "IDE con un gran potencial, gratis para estudiantes, colaboradores de código abierto y personas", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "fr-fr", + "title": "Visual Studio Community 2022", + "description": "IDE puissant, gratuit pour les étudiants, les contributeurs open source et les particuliers", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "it-it", + "title": "Visual Studio Community 2022", + "description": "Potente IDE gratuito per studenti, collaboratori open-source e singoli utenti", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "ja-jp", + "title": "Visual Studio Community 2022", + "description": "学生、オープンソースの共同作成者、個人用の無料で強力な IDE", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "ko-kr", + "title": "Visual Studio Community 2022", + "description": "학생, 오픈 소스 기여자 및 개인에게 무료로 제공되는 강력한 IDE", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "pl-pl", + "title": "Visual Studio Community 2022", + "description": "Zaawansowane środowisko IDE — bezpłatne dla uczniów i studentów, współautorów oprogramowania open source oraz indywidualnych osób", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "pt-br", + "title": "Visual Studio Community 2022", + "description": "IDE avançado, gratuito para estudantes, colaboradores de software livre e indivíduos", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "ru-ru", + "title": "Visual Studio Community 2022", + "description": "Мощная интегрированная среда разработки, бесплатная для студентов, участников проектов с открытым кодом и отдельных пользователей.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + }, + { + "language": "tr-tr", + "title": "Visual Studio Community 2022", + "description": "Güçlü IDE, öğrenciler için ücretsiz, açık kaynak katkıda bulunanları ve bireyler", + "license": "https://go.microsoft.com/fwlink/?LinkId=2179811" + } + ], + "requirements": { + "supportedOS": "6.1.1", + "functors": { + "architecture": "x64" + }, + "conditions": { + "expression": "not Win10ThresholdBuildNumber", + "conditions": [ + { + "registryKey": "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", + "id": "Win10ThresholdBuildNumber", + "registryValue": "CurrentBuildNumber", + "registryData": "[10240.0,14393.0)" + } + ] + } + } + }, + { + "id": "Microsoft.VisualStudio.Product.Enterprise", + "version": "17.14.36327.8", + "type": "ChannelProduct", + "chip": "x64", + "productArch": "arm64", + "icon": { + "mimeType": "image/svg+xml", + "base64": "PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjQgMjQiPg0KICA8ZGVmcz4NCiAgICA8c3R5bGU+LmNscy0xe2ZpbGw6IzVlNDM4Zjt9LmNscy0ye29wYWNpdHk6MC4xO2lzb2xhdGlvbjppc29sYXRlO30uY2xzLTN7ZmlsbDp1cmwoI2xpbmVhci1ncmFkaWVudCk7fS5jbHMtNHtmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50LTIpO30uY2xzLTV7ZmlsbDojYzE4ZWYxO308L3N0eWxlPg0KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50IiB4MT0iMy42MTIiIHkxPSItMTUuMzUyIiB4Mj0iMTkuNTc1IiB5Mj0iMS4zNjkiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIDQpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM3MjUyYWEiLz4NCiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzcyNTJhYSIvPg0KICAgIDwvbGluZWFyR3JhZGllbnQ+DQogICAgPGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtMiIgeDE9IjguODQ0IiB5MT0iMzguNjc5IiB4Mj0iMTMuODcxIiB5Mj0iMzMuMjE2IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTIyKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjYWU3ZmUyIi8+DQogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM5YTcwZDQiLz4NCiAgICA8L2xpbmVhckdyYWRpZW50Pg0KICA8L2RlZnM+DQogIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTQuNCwyMC4zbC00LTNhLjkxMS45MTEsMCwwLDEtLjQtLjh2LTlhLjkxMS45MTEsMCwwLDEsLjQtLjhsNC0zYS45MTEuOTExLDAsMCwwLS40Ljh2MTVBLjkxMS45MTEsMCwwLDAsNC40LDIwLjNaIi8+DQogIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTEuMSwxNy4yYS41MTcuNTE3LDAsMCwxLS40LjIuMzY2LjM2NiwwLDAsMS0uMy0uMWgwbDQsM2EuOTExLjkxMSwwLDAsMS0uNC0uOFYxMy44WiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0uNCw2LjdoMGEuNS41LDAsMCwxLC42OTMuMDlMMS4xLDYuOCw0LDEwLjJWNC41YS45MTEuOTExLDAsMCwxLC40LS44WiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yMy42LDQuMkExLjQyMywxLjQyMywwLDAsMCwyMyw0YS45MDguOTA4LDAsMCwwLS43LjNsLS4xLjFMMTgsOC40LDE0LjMsMTIsOS45LDE2LjIsNS44LDIwLjFsLS4xLjFhLjkwOC45MDgsMCwwLDEtLjcuMywxLjQyMywxLjQyMywwLDAsMS0uNi0uMmwtNC0zYTEuMDcxLDEuMDcxLDAsMCwwLDEuNC0uMUw0LDE0LjYsNi4yLDEyLDkuOCw3LjgsMTYuMi40QS45MTEuOTExLDAsMCwxLDE3LDBhMS40MjMsMS40MjMsMCwwLDEsLjYuMloiLz4NCiAgPHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjEwLjIgNy40IDkuOCA3LjggNi4yIDEyIDUuOSAxMi40IDkuNSAxNi42IDkuNSAxNi42IDkuOCAxNi4yIDE0LjMgMTIgMTQuNiAxMS43IDEwLjIgNy40Ii8+DQogIDxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTIzLjYsMTkuOGwtNiw0Yy0uMSwwLS4yLjEtLjMuMWgwYS45LjksMCwwLDEtMS0uM0w5LjksMTYuMiw2LjIsMTIsNCw5LjQsMS44LDYuOEExLjIwOCwxLjIwOCwwLDAsMCwuNCw2LjdsNC0zQTEuNDIzLDEuNDIzLDAsMCwxLDUsMy41YS45MDguOTA4LDAsMCwxLC43LjNsLjEuMUw5LjksNy44LDE0LjMsMTJsMy4yLDMuMS41LjUsNC4yLDQuMS4xLjFhLjkwOC45MDgsMCwwLDAsLjcuM1oiLz4NCiAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMjMuNiwxOS44bC02LDRjLS4xLDAtLjIuMS0uMy4xYS43NjIuNzYyLDAsMCwwLC4yLS40VjE1LjFsLjUuNSw0LjIsNC4xLjEuMWEuOTA4LjkwOCwwLDAsMCwuNy4zWiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xNy41LjJhLjM2Ni4zNjYsMCwwLDAtLjMtLjEuNTE3LjUxNywwLDAsMSwuMi40VjguOWwuNi0uNSw0LjItNC4xLjEtLjFBMS40NDgsMS40NDgsMCwwLDEsMjMsNGExLjQyMywxLjQyMywwLDAsMSwuNi4yWiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik0yNCw1VjE5YTEsMSwwLDAsMS0uNDQ1LjgzNWwtNiw0QTEsMSwwLDAsMCwxOCwyM1YxYTEuMDEsMS4wMSwwLDAsMC0uNDYtLjgzNWw2LjAxNSw0QTEuMDA5LDEuMDA5LDAsMCwxLDI0LDVaIi8+DQo8L3N2Zz4=" + }, + "releaseNotes": "https://docs.microsoft.com/en-us/visualstudio/releases/2022/release-notes-v17.14#17.14.10", + "supportsDownloadThenUpdate": true, + "localizedResources": [ + { + "language": "en-us", + "title": "Visual Studio Enterprise 2022", + "description": "Scalable, end-to-end solution for teams of any size", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "zh-cn", + "title": "Visual Studio Enterprise 2022", + "description": "面向任何规模团队提供的可缩放、端到端解决方案", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "zh-tw", + "title": "Visual Studio Enterprise 2022", + "description": "可擴展,且適用於任何規模小組的全方位解決方案", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "cs-cz", + "title": "Visual Studio Enterprise 2022", + "description": "Škálovatelné a kompletní řešení pro týmy libovolné velikosti", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "de-de", + "title": "Visual Studio Enterprise 2022", + "description": "Skalierbare End-to-End-Lösung für Teams jeder Größe", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "es-es", + "title": "Visual Studio Enterprise 2022", + "description": "Solución integral escalable para equipos de cualquier tamaño", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "fr-fr", + "title": "Visual Studio Enterprise 2022", + "description": "Solution scalable de bout en bout pour les équipes de toutes tailles", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "it-it", + "title": "Visual Studio Enterprise 2022", + "description": "Soluzione end-to-end scalabile per team di qualsiasi dimensione", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "ja-jp", + "title": "Visual Studio Enterprise 2022", + "description": "あらゆる規模のチーム向けのスケーラブルなエンドツーエンド ソリューション", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "ko-kr", + "title": "Visual Studio Enterprise 2022", + "description": "모든 규모의 팀에 사용할 수 있는 확장 가능한 엔드투엔드 솔루션", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "pl-pl", + "title": "Visual Studio Enterprise 2022", + "description": "Skalowalne, kompleksowe rozwiązanie dla zespołów dowolnej wielkości", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "pt-br", + "title": "Visual Studio Enterprise 2022", + "description": "Solução escalonável e de ponta a ponta para equipes de qualquer tamanho", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "ru-ru", + "title": "Visual Studio Enterprise 2022", + "description": "Комплексное масштабируемое решение для команд любого размера.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "tr-tr", + "title": "Visual Studio Enterprise 2022", + "description": "Her boyuttaki takımlar için ölçeklenebilir, uçtan uca çözüm", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + } + ], + "requirements": { + "supportedOS": "10.0.22000", + "functors": { + "architecture": "arm64" + } + } + }, + { + "id": "Microsoft.VisualStudio.Product.Enterprise", + "version": "17.14.36327.8", + "type": "ChannelProduct", + "chip": "x64", + "productArch": "x64", + "icon": { + "mimeType": "image/svg+xml", + "base64": "PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjQgMjQiPg0KICA8ZGVmcz4NCiAgICA8c3R5bGU+LmNscy0xe2ZpbGw6IzVlNDM4Zjt9LmNscy0ye29wYWNpdHk6MC4xO2lzb2xhdGlvbjppc29sYXRlO30uY2xzLTN7ZmlsbDp1cmwoI2xpbmVhci1ncmFkaWVudCk7fS5jbHMtNHtmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50LTIpO30uY2xzLTV7ZmlsbDojYzE4ZWYxO308L3N0eWxlPg0KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50IiB4MT0iMy42MTIiIHkxPSItMTUuMzUyIiB4Mj0iMTkuNTc1IiB5Mj0iMS4zNjkiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIDQpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM3MjUyYWEiLz4NCiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzcyNTJhYSIvPg0KICAgIDwvbGluZWFyR3JhZGllbnQ+DQogICAgPGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtMiIgeDE9IjguODQ0IiB5MT0iMzguNjc5IiB4Mj0iMTMuODcxIiB5Mj0iMzMuMjE2IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTIyKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjYWU3ZmUyIi8+DQogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM5YTcwZDQiLz4NCiAgICA8L2xpbmVhckdyYWRpZW50Pg0KICA8L2RlZnM+DQogIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTQuNCwyMC4zbC00LTNhLjkxMS45MTEsMCwwLDEtLjQtLjh2LTlhLjkxMS45MTEsMCwwLDEsLjQtLjhsNC0zYS45MTEuOTExLDAsMCwwLS40Ljh2MTVBLjkxMS45MTEsMCwwLDAsNC40LDIwLjNaIi8+DQogIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTEuMSwxNy4yYS41MTcuNTE3LDAsMCwxLS40LjIuMzY2LjM2NiwwLDAsMS0uMy0uMWgwbDQsM2EuOTExLjkxMSwwLDAsMS0uNC0uOFYxMy44WiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0uNCw2LjdoMGEuNS41LDAsMCwxLC42OTMuMDlMMS4xLDYuOCw0LDEwLjJWNC41YS45MTEuOTExLDAsMCwxLC40LS44WiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yMy42LDQuMkExLjQyMywxLjQyMywwLDAsMCwyMyw0YS45MDguOTA4LDAsMCwwLS43LjNsLS4xLjFMMTgsOC40LDE0LjMsMTIsOS45LDE2LjIsNS44LDIwLjFsLS4xLjFhLjkwOC45MDgsMCwwLDEtLjcuMywxLjQyMywxLjQyMywwLDAsMS0uNi0uMmwtNC0zYTEuMDcxLDEuMDcxLDAsMCwwLDEuNC0uMUw0LDE0LjYsNi4yLDEyLDkuOCw3LjgsMTYuMi40QS45MTEuOTExLDAsMCwxLDE3LDBhMS40MjMsMS40MjMsMCwwLDEsLjYuMloiLz4NCiAgPHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjEwLjIgNy40IDkuOCA3LjggNi4yIDEyIDUuOSAxMi40IDkuNSAxNi42IDkuNSAxNi42IDkuOCAxNi4yIDE0LjMgMTIgMTQuNiAxMS43IDEwLjIgNy40Ii8+DQogIDxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTIzLjYsMTkuOGwtNiw0Yy0uMSwwLS4yLjEtLjMuMWgwYS45LjksMCwwLDEtMS0uM0w5LjksMTYuMiw2LjIsMTIsNCw5LjQsMS44LDYuOEExLjIwOCwxLjIwOCwwLDAsMCwuNCw2LjdsNC0zQTEuNDIzLDEuNDIzLDAsMCwxLDUsMy41YS45MDguOTA4LDAsMCwxLC43LjNsLjEuMUw5LjksNy44LDE0LjMsMTJsMy4yLDMuMS41LjUsNC4yLDQuMS4xLjFhLjkwOC45MDgsMCwwLDAsLjcuM1oiLz4NCiAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMjMuNiwxOS44bC02LDRjLS4xLDAtLjIuMS0uMy4xYS43NjIuNzYyLDAsMCwwLC4yLS40VjE1LjFsLjUuNSw0LjIsNC4xLjEuMWEuOTA4LjkwOCwwLDAsMCwuNy4zWiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xNy41LjJhLjM2Ni4zNjYsMCwwLDAtLjMtLjEuNTE3LjUxNywwLDAsMSwuMi40VjguOWwuNi0uNSw0LjItNC4xLjEtLjFBMS40NDgsMS40NDgsMCwwLDEsMjMsNGExLjQyMywxLjQyMywwLDAsMSwuNi4yWiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik0yNCw1VjE5YTEsMSwwLDAsMS0uNDQ1LjgzNWwtNiw0QTEsMSwwLDAsMCwxOCwyM1YxYTEuMDEsMS4wMSwwLDAsMC0uNDYtLjgzNWw2LjAxNSw0QTEuMDA5LDEuMDA5LDAsMCwxLDI0LDVaIi8+DQo8L3N2Zz4=" + }, + "releaseNotes": "https://docs.microsoft.com/en-us/visualstudio/releases/2022/release-notes-v17.14#17.14.10", + "supportsDownloadThenUpdate": true, + "localizedResources": [ + { + "language": "en-us", + "title": "Visual Studio Enterprise 2022", + "description": "Scalable, end-to-end solution for teams of any size", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "zh-cn", + "title": "Visual Studio Enterprise 2022", + "description": "面向任何规模团队提供的可缩放、端到端解决方案", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "zh-tw", + "title": "Visual Studio Enterprise 2022", + "description": "可擴展,且適用於任何規模小組的全方位解決方案", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "cs-cz", + "title": "Visual Studio Enterprise 2022", + "description": "Škálovatelné a kompletní řešení pro týmy libovolné velikosti", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "de-de", + "title": "Visual Studio Enterprise 2022", + "description": "Skalierbare End-to-End-Lösung für Teams jeder Größe", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "es-es", + "title": "Visual Studio Enterprise 2022", + "description": "Solución integral escalable para equipos de cualquier tamaño", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "fr-fr", + "title": "Visual Studio Enterprise 2022", + "description": "Solution scalable de bout en bout pour les équipes de toutes tailles", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "it-it", + "title": "Visual Studio Enterprise 2022", + "description": "Soluzione end-to-end scalabile per team di qualsiasi dimensione", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "ja-jp", + "title": "Visual Studio Enterprise 2022", + "description": "あらゆる規模のチーム向けのスケーラブルなエンドツーエンド ソリューション", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "ko-kr", + "title": "Visual Studio Enterprise 2022", + "description": "모든 규모의 팀에 사용할 수 있는 확장 가능한 엔드투엔드 솔루션", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "pl-pl", + "title": "Visual Studio Enterprise 2022", + "description": "Skalowalne, kompleksowe rozwiązanie dla zespołów dowolnej wielkości", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "pt-br", + "title": "Visual Studio Enterprise 2022", + "description": "Solução escalonável e de ponta a ponta para equipes de qualquer tamanho", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "ru-ru", + "title": "Visual Studio Enterprise 2022", + "description": "Комплексное масштабируемое решение для команд любого размера.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "tr-tr", + "title": "Visual Studio Enterprise 2022", + "description": "Her boyuttaki takımlar için ölçeklenebilir, uçtan uca çözüm", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + } + ], + "requirements": { + "supportedOS": "6.1.1", + "functors": { + "architecture": "x64" + }, + "conditions": { + "expression": "not Win10ThresholdBuildNumber", + "conditions": [ + { + "registryKey": "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", + "id": "Win10ThresholdBuildNumber", + "registryValue": "CurrentBuildNumber", + "registryData": "[10240.0,14393.0)" + } + ] + } + } + }, + { + "id": "Microsoft.VisualStudio.Product.Professional", + "version": "17.14.36327.8", + "type": "ChannelProduct", + "chip": "x64", + "productArch": "arm64", + "icon": { + "mimeType": "image/svg+xml", + "base64": "PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjQgMjQiPg0KICA8ZGVmcz4NCiAgICA8c3R5bGU+LmNscy0xe2ZpbGw6IzVlNDM4Zjt9LmNscy0ye29wYWNpdHk6MC4xO2lzb2xhdGlvbjppc29sYXRlO30uY2xzLTN7ZmlsbDp1cmwoI2xpbmVhci1ncmFkaWVudCk7fS5jbHMtNHtmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50LTIpO30uY2xzLTV7ZmlsbDojYzE4ZWYxO308L3N0eWxlPg0KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50IiB4MT0iMy42MTIiIHkxPSItMTUuMzUyIiB4Mj0iMTkuNTc1IiB5Mj0iMS4zNjkiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIDQpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM3MjUyYWEiLz4NCiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzcyNTJhYSIvPg0KICAgIDwvbGluZWFyR3JhZGllbnQ+DQogICAgPGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtMiIgeDE9IjguODQ0IiB5MT0iMzguNjc5IiB4Mj0iMTMuODcxIiB5Mj0iMzMuMjE2IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTIyKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjYWU3ZmUyIi8+DQogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM5YTcwZDQiLz4NCiAgICA8L2xpbmVhckdyYWRpZW50Pg0KICA8L2RlZnM+DQogIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTQuNCwyMC4zbC00LTNhLjkxMS45MTEsMCwwLDEtLjQtLjh2LTlhLjkxMS45MTEsMCwwLDEsLjQtLjhsNC0zYS45MTEuOTExLDAsMCwwLS40Ljh2MTVBLjkxMS45MTEsMCwwLDAsNC40LDIwLjNaIi8+DQogIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTEuMSwxNy4yYS41MTcuNTE3LDAsMCwxLS40LjIuMzY2LjM2NiwwLDAsMS0uMy0uMWgwbDQsM2EuOTExLjkxMSwwLDAsMS0uNC0uOFYxMy44WiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0uNCw2LjdoMGEuNS41LDAsMCwxLC42OTMuMDlMMS4xLDYuOCw0LDEwLjJWNC41YS45MTEuOTExLDAsMCwxLC40LS44WiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yMy42LDQuMkExLjQyMywxLjQyMywwLDAsMCwyMyw0YS45MDguOTA4LDAsMCwwLS43LjNsLS4xLjFMMTgsOC40LDE0LjMsMTIsOS45LDE2LjIsNS44LDIwLjFsLS4xLjFhLjkwOC45MDgsMCwwLDEtLjcuMywxLjQyMywxLjQyMywwLDAsMS0uNi0uMmwtNC0zYTEuMDcxLDEuMDcxLDAsMCwwLDEuNC0uMUw0LDE0LjYsNi4yLDEyLDkuOCw3LjgsMTYuMi40QS45MTEuOTExLDAsMCwxLDE3LDBhMS40MjMsMS40MjMsMCwwLDEsLjYuMloiLz4NCiAgPHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjEwLjIgNy40IDkuOCA3LjggNi4yIDEyIDUuOSAxMi40IDkuNSAxNi42IDkuNSAxNi42IDkuOCAxNi4yIDE0LjMgMTIgMTQuNiAxMS43IDEwLjIgNy40Ii8+DQogIDxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTIzLjYsMTkuOGwtNiw0Yy0uMSwwLS4yLjEtLjMuMWgwYS45LjksMCwwLDEtMS0uM0w5LjksMTYuMiw2LjIsMTIsNCw5LjQsMS44LDYuOEExLjIwOCwxLjIwOCwwLDAsMCwuNCw2LjdsNC0zQTEuNDIzLDEuNDIzLDAsMCwxLDUsMy41YS45MDguOTA4LDAsMCwxLC43LjNsLjEuMUw5LjksNy44LDE0LjMsMTJsMy4yLDMuMS41LjUsNC4yLDQuMS4xLjFhLjkwOC45MDgsMCwwLDAsLjcuM1oiLz4NCiAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMjMuNiwxOS44bC02LDRjLS4xLDAtLjIuMS0uMy4xYS43NjIuNzYyLDAsMCwwLC4yLS40VjE1LjFsLjUuNSw0LjIsNC4xLjEuMWEuOTA4LjkwOCwwLDAsMCwuNy4zWiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xNy41LjJhLjM2Ni4zNjYsMCwwLDAtLjMtLjEuNTE3LjUxNywwLDAsMSwuMi40VjguOWwuNi0uNSw0LjItNC4xLjEtLjFBMS40NDgsMS40NDgsMCwwLDEsMjMsNGExLjQyMywxLjQyMywwLDAsMSwuNi4yWiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik0yNCw1VjE5YTEsMSwwLDAsMS0uNDQ1LjgzNWwtNiw0QTEsMSwwLDAsMCwxOCwyM1YxYTEuMDEsMS4wMSwwLDAsMC0uNDYtLjgzNWw2LjAxNSw0QTEuMDA5LDEuMDA5LDAsMCwxLDI0LDVaIi8+DQo8L3N2Zz4=" + }, + "releaseNotes": "https://docs.microsoft.com/en-us/visualstudio/releases/2022/release-notes-v17.14#17.14.10", + "supportsDownloadThenUpdate": true, + "localizedResources": [ + { + "language": "en-us", + "title": "Visual Studio Professional 2022", + "description": "Professional IDE best suited to small teams", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "zh-cn", + "title": "Visual Studio Professional 2022", + "description": "为小型团队量身定制的专业 IDE", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "zh-tw", + "title": "Visual Studio Professional 2022", + "description": "最適合小型小組的專業 IDE", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "cs-cz", + "title": "Visual Studio Professional 2022", + "description": "Profesionální integrované vývojové prostředí (IDE), které nejlépe vyhovuje malým týmům", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "de-de", + "title": "Visual Studio Professional 2022", + "description": "Professionelle IDE, optimal für kleine Teams", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "es-es", + "title": "Visual Studio Professional 2022", + "description": "IDE profesional ideal para equipos pequeños", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "fr-fr", + "title": "Visual Studio Professional 2022", + "description": "IDE professionnel, mieux adapté aux petites équipes", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "it-it", + "title": "Visual Studio Professional 2022", + "description": "IDE professionale ideale per piccoli team", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "ja-jp", + "title": "Visual Studio Professional 2022", + "description": "小規模チームに最適なプロフェッショナルな IDE", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "ko-kr", + "title": "Visual Studio Professional 2022", + "description": "소규모 팀에 가장 적합한 전문 IDE", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "pl-pl", + "title": "Visual Studio Professional 2022", + "description": "Profesjonalne środowisko IDE najlepiej dopasowane do małych zespołów", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "pt-br", + "title": "Visual Studio Professional 2022", + "description": "IDE profissional mais adequado para equipes pequenas", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "ru-ru", + "title": "Visual Studio Professional 2022", + "description": "Профессиональная интегрированная среда разработки, оптимально подходящая для небольших команд.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "tr-tr", + "title": "Visual Studio Professional 2022", + "description": "Küçük takımlar için en uygun profesyonel IDE", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + } + ], + "requirements": { + "supportedOS": "10.0.22000", + "functors": { + "architecture": "arm64" + } + } + }, + { + "id": "Microsoft.VisualStudio.Product.Professional", + "version": "17.14.36327.8", + "type": "ChannelProduct", + "chip": "x64", + "productArch": "x64", + "icon": { + "mimeType": "image/svg+xml", + "base64": "PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjQgMjQiPg0KICA8ZGVmcz4NCiAgICA8c3R5bGU+LmNscy0xe2ZpbGw6IzVlNDM4Zjt9LmNscy0ye29wYWNpdHk6MC4xO2lzb2xhdGlvbjppc29sYXRlO30uY2xzLTN7ZmlsbDp1cmwoI2xpbmVhci1ncmFkaWVudCk7fS5jbHMtNHtmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50LTIpO30uY2xzLTV7ZmlsbDojYzE4ZWYxO308L3N0eWxlPg0KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50IiB4MT0iMy42MTIiIHkxPSItMTUuMzUyIiB4Mj0iMTkuNTc1IiB5Mj0iMS4zNjkiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIDQpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM3MjUyYWEiLz4NCiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzcyNTJhYSIvPg0KICAgIDwvbGluZWFyR3JhZGllbnQ+DQogICAgPGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtMiIgeDE9IjguODQ0IiB5MT0iMzguNjc5IiB4Mj0iMTMuODcxIiB5Mj0iMzMuMjE2IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTIyKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjYWU3ZmUyIi8+DQogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM5YTcwZDQiLz4NCiAgICA8L2xpbmVhckdyYWRpZW50Pg0KICA8L2RlZnM+DQogIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTQuNCwyMC4zbC00LTNhLjkxMS45MTEsMCwwLDEtLjQtLjh2LTlhLjkxMS45MTEsMCwwLDEsLjQtLjhsNC0zYS45MTEuOTExLDAsMCwwLS40Ljh2MTVBLjkxMS45MTEsMCwwLDAsNC40LDIwLjNaIi8+DQogIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTEuMSwxNy4yYS41MTcuNTE3LDAsMCwxLS40LjIuMzY2LjM2NiwwLDAsMS0uMy0uMWgwbDQsM2EuOTExLjkxMSwwLDAsMS0uNC0uOFYxMy44WiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0uNCw2LjdoMGEuNS41LDAsMCwxLC42OTMuMDlMMS4xLDYuOCw0LDEwLjJWNC41YS45MTEuOTExLDAsMCwxLC40LS44WiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yMy42LDQuMkExLjQyMywxLjQyMywwLDAsMCwyMyw0YS45MDguOTA4LDAsMCwwLS43LjNsLS4xLjFMMTgsOC40LDE0LjMsMTIsOS45LDE2LjIsNS44LDIwLjFsLS4xLjFhLjkwOC45MDgsMCwwLDEtLjcuMywxLjQyMywxLjQyMywwLDAsMS0uNi0uMmwtNC0zYTEuMDcxLDEuMDcxLDAsMCwwLDEuNC0uMUw0LDE0LjYsNi4yLDEyLDkuOCw3LjgsMTYuMi40QS45MTEuOTExLDAsMCwxLDE3LDBhMS40MjMsMS40MjMsMCwwLDEsLjYuMloiLz4NCiAgPHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjEwLjIgNy40IDkuOCA3LjggNi4yIDEyIDUuOSAxMi40IDkuNSAxNi42IDkuNSAxNi42IDkuOCAxNi4yIDE0LjMgMTIgMTQuNiAxMS43IDEwLjIgNy40Ii8+DQogIDxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTIzLjYsMTkuOGwtNiw0Yy0uMSwwLS4yLjEtLjMuMWgwYS45LjksMCwwLDEtMS0uM0w5LjksMTYuMiw2LjIsMTIsNCw5LjQsMS44LDYuOEExLjIwOCwxLjIwOCwwLDAsMCwuNCw2LjdsNC0zQTEuNDIzLDEuNDIzLDAsMCwxLDUsMy41YS45MDguOTA4LDAsMCwxLC43LjNsLjEuMUw5LjksNy44LDE0LjMsMTJsMy4yLDMuMS41LjUsNC4yLDQuMS4xLjFhLjkwOC45MDgsMCwwLDAsLjcuM1oiLz4NCiAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMjMuNiwxOS44bC02LDRjLS4xLDAtLjIuMS0uMy4xYS43NjIuNzYyLDAsMCwwLC4yLS40VjE1LjFsLjUuNSw0LjIsNC4xLjEuMWEuOTA4LjkwOCwwLDAsMCwuNy4zWiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xNy41LjJhLjM2Ni4zNjYsMCwwLDAtLjMtLjEuNTE3LjUxNywwLDAsMSwuMi40VjguOWwuNi0uNSw0LjItNC4xLjEtLjFBMS40NDgsMS40NDgsMCwwLDEsMjMsNGExLjQyMywxLjQyMywwLDAsMSwuNi4yWiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik0yNCw1VjE5YTEsMSwwLDAsMS0uNDQ1LjgzNWwtNiw0QTEsMSwwLDAsMCwxOCwyM1YxYTEuMDEsMS4wMSwwLDAsMC0uNDYtLjgzNWw2LjAxNSw0QTEuMDA5LDEuMDA5LDAsMCwxLDI0LDVaIi8+DQo8L3N2Zz4=" + }, + "releaseNotes": "https://docs.microsoft.com/en-us/visualstudio/releases/2022/release-notes-v17.14#17.14.10", + "supportsDownloadThenUpdate": true, + "localizedResources": [ + { + "language": "en-us", + "title": "Visual Studio Professional 2022", + "description": "Professional IDE best suited to small teams", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "zh-cn", + "title": "Visual Studio Professional 2022", + "description": "为小型团队量身定制的专业 IDE", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "zh-tw", + "title": "Visual Studio Professional 2022", + "description": "最適合小型小組的專業 IDE", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "cs-cz", + "title": "Visual Studio Professional 2022", + "description": "Profesionální integrované vývojové prostředí (IDE), které nejlépe vyhovuje malým týmům", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "de-de", + "title": "Visual Studio Professional 2022", + "description": "Professionelle IDE, optimal für kleine Teams", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "es-es", + "title": "Visual Studio Professional 2022", + "description": "IDE profesional ideal para equipos pequeños", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "fr-fr", + "title": "Visual Studio Professional 2022", + "description": "IDE professionnel, mieux adapté aux petites équipes", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "it-it", + "title": "Visual Studio Professional 2022", + "description": "IDE professionale ideale per piccoli team", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "ja-jp", + "title": "Visual Studio Professional 2022", + "description": "小規模チームに最適なプロフェッショナルな IDE", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "ko-kr", + "title": "Visual Studio Professional 2022", + "description": "소규모 팀에 가장 적합한 전문 IDE", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "pl-pl", + "title": "Visual Studio Professional 2022", + "description": "Profesjonalne środowisko IDE najlepiej dopasowane do małych zespołów", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "pt-br", + "title": "Visual Studio Professional 2022", + "description": "IDE profissional mais adequado para equipes pequenas", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "ru-ru", + "title": "Visual Studio Professional 2022", + "description": "Профессиональная интегрированная среда разработки, оптимально подходящая для небольших команд.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "tr-tr", + "title": "Visual Studio Professional 2022", + "description": "Küçük takımlar için en uygun profesyonel IDE", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + } + ], + "requirements": { + "supportedOS": "6.1.1", + "functors": { + "architecture": "x64" + }, + "conditions": { + "expression": "not Win10ThresholdBuildNumber", + "conditions": [ + { + "registryKey": "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", + "id": "Win10ThresholdBuildNumber", + "registryValue": "CurrentBuildNumber", + "registryData": "[10240.0,14393.0)" + } + ] + } + } + }, + { + "id": "Microsoft.VisualStudio.Product.TeamExplorer", + "version": "17.14.36327.8", + "type": "ChannelProduct", + "chip": "x64", + "productArch": "x64", + "icon": { + "mimeType": "image/svg+xml", + "base64": "PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjQgMjQiPg0KICA8ZGVmcz4NCiAgICA8c3R5bGU+LmNscy0xe2ZpbGw6IzVlNDM4Zjt9LmNscy0ye29wYWNpdHk6MC4xO2lzb2xhdGlvbjppc29sYXRlO30uY2xzLTN7ZmlsbDp1cmwoI2xpbmVhci1ncmFkaWVudCk7fS5jbHMtNHtmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50LTIpO30uY2xzLTV7ZmlsbDojYzE4ZWYxO308L3N0eWxlPg0KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50IiB4MT0iMy42MTIiIHkxPSItMTUuMzUyIiB4Mj0iMTkuNTc1IiB5Mj0iMS4zNjkiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIDQpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM3MjUyYWEiLz4NCiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzcyNTJhYSIvPg0KICAgIDwvbGluZWFyR3JhZGllbnQ+DQogICAgPGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtMiIgeDE9IjguODQ0IiB5MT0iMzguNjc5IiB4Mj0iMTMuODcxIiB5Mj0iMzMuMjE2IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTIyKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjYWU3ZmUyIi8+DQogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM5YTcwZDQiLz4NCiAgICA8L2xpbmVhckdyYWRpZW50Pg0KICA8L2RlZnM+DQogIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTQuNCwyMC4zbC00LTNhLjkxMS45MTEsMCwwLDEtLjQtLjh2LTlhLjkxMS45MTEsMCwwLDEsLjQtLjhsNC0zYS45MTEuOTExLDAsMCwwLS40Ljh2MTVBLjkxMS45MTEsMCwwLDAsNC40LDIwLjNaIi8+DQogIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTEuMSwxNy4yYS41MTcuNTE3LDAsMCwxLS40LjIuMzY2LjM2NiwwLDAsMS0uMy0uMWgwbDQsM2EuOTExLjkxMSwwLDAsMS0uNC0uOFYxMy44WiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0uNCw2LjdoMGEuNS41LDAsMCwxLC42OTMuMDlMMS4xLDYuOCw0LDEwLjJWNC41YS45MTEuOTExLDAsMCwxLC40LS44WiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yMy42LDQuMkExLjQyMywxLjQyMywwLDAsMCwyMyw0YS45MDguOTA4LDAsMCwwLS43LjNsLS4xLjFMMTgsOC40LDE0LjMsMTIsOS45LDE2LjIsNS44LDIwLjFsLS4xLjFhLjkwOC45MDgsMCwwLDEtLjcuMywxLjQyMywxLjQyMywwLDAsMS0uNi0uMmwtNC0zYTEuMDcxLDEuMDcxLDAsMCwwLDEuNC0uMUw0LDE0LjYsNi4yLDEyLDkuOCw3LjgsMTYuMi40QS45MTEuOTExLDAsMCwxLDE3LDBhMS40MjMsMS40MjMsMCwwLDEsLjYuMloiLz4NCiAgPHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjEwLjIgNy40IDkuOCA3LjggNi4yIDEyIDUuOSAxMi40IDkuNSAxNi42IDkuNSAxNi42IDkuOCAxNi4yIDE0LjMgMTIgMTQuNiAxMS43IDEwLjIgNy40Ii8+DQogIDxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTIzLjYsMTkuOGwtNiw0Yy0uMSwwLS4yLjEtLjMuMWgwYS45LjksMCwwLDEtMS0uM0w5LjksMTYuMiw2LjIsMTIsNCw5LjQsMS44LDYuOEExLjIwOCwxLjIwOCwwLDAsMCwuNCw2LjdsNC0zQTEuNDIzLDEuNDIzLDAsMCwxLDUsMy41YS45MDguOTA4LDAsMCwxLC43LjNsLjEuMUw5LjksNy44LDE0LjMsMTJsMy4yLDMuMS41LjUsNC4yLDQuMS4xLjFhLjkwOC45MDgsMCwwLDAsLjcuM1oiLz4NCiAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMjMuNiwxOS44bC02LDRjLS4xLDAtLjIuMS0uMy4xYS43NjIuNzYyLDAsMCwwLC4yLS40VjE1LjFsLjUuNSw0LjIsNC4xLjEuMWEuOTA4LjkwOCwwLDAsMCwuNy4zWiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xNy41LjJhLjM2Ni4zNjYsMCwwLDAtLjMtLjEuNTE3LjUxNywwLDAsMSwuMi40VjguOWwuNi0uNSw0LjItNC4xLjEtLjFBMS40NDgsMS40NDgsMCwwLDEsMjMsNGExLjQyMywxLjQyMywwLDAsMSwuNi4yWiIvPg0KICA8cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik0yNCw1VjE5YTEsMSwwLDAsMS0uNDQ1LjgzNWwtNiw0QTEsMSwwLDAsMCwxOCwyM1YxYTEuMDEsMS4wMSwwLDAsMC0uNDYtLjgzNWw2LjAxNSw0QTEuMDA5LDEuMDA5LDAsMCwxLDI0LDVaIi8+DQo8L3N2Zz4=" + }, + "isHidden": true, + "releaseNotes": "https://docs.microsoft.com/en-us/visualstudio/releases/2022/release-notes-v17.14#17.14.10", + "localizedResources": [ + { + "language": "en-us", + "title": "Visual Studio Team Explorer 2022", + "description": "Interact with Team Foundation Server and Visual Studio Team Services without a Visual Studio developer toolset", + "license": "https://go.microsoft.com/fwlink/?LinkId=2229259" + }, + { + "language": "zh-cn", + "title": "Visual Studio 团队资源管理器 2022", + "description": "无需 Visual Studio 开发人员工具集,即可与 Team Foundation Server 和 Visual Studio Team Services 进行交互", + "license": "https://go.microsoft.com/fwlink/?LinkId=2229259" + }, + { + "language": "zh-tw", + "title": "Visual Studio Team Explorer 2022", + "description": "與 Team Foundation Server 和 Visual Studio Team Services 互動而不使用 Visual Studio 開發人員工具", + "license": "https://go.microsoft.com/fwlink/?LinkId=2229259" + }, + { + "language": "cs-cz", + "title": "Visual Studio Team Explorer 2022", + "description": "Interakce s Team Foundation Serverem a službou Visual Studio Team Services bez sady vývojářských nástrojů, které nabízí Visual Studio", + "license": "https://go.microsoft.com/fwlink/?LinkId=2229259" + }, + { + "language": "de-de", + "title": "Visual Studio Team Explorer 2022", + "description": "Interagieren Sie mit Team Foundation Server und Visual Studio Team Services ohne eine Visual Studio-Entwicklertoolset.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2229259" + }, + { + "language": "es-es", + "title": "Visual Studio Team Explorer 2022", + "description": "Interactúe con Team Foundation Server y Visual Studio Team Services sin un conjunto de herramientas de desarrollador de Visual Studio", + "license": "https://go.microsoft.com/fwlink/?LinkId=2229259" + }, + { + "language": "fr-fr", + "title": "Visual Studio Team Explorer 2022", + "description": "Interagissez avec Team Foundation Server et Visual Studio Team Services sans l'ensemble d'outils de développement Visual Studio", + "license": "https://go.microsoft.com/fwlink/?LinkId=2229259" + }, + { + "language": "it-it", + "title": "Visual Studio Team Explorer 2022", + "description": "Consente di interagire con Team Foundation Server e Visual Studio Team Services senza usare un set di strumenti di sviluppo di Visual Studio", + "license": "https://go.microsoft.com/fwlink/?LinkId=2229259" + }, + { + "language": "ja-jp", + "title": "Visual Studio Team Explorer 2022", + "description": "Visual Studio 開発者ツールセットを使用せずに Team Foundation Server および Visual Studio Team Services と対話します", + "license": "https://go.microsoft.com/fwlink/?LinkId=2229259" + }, + { + "language": "ko-kr", + "title": "Visual Studio 팀 탐색기 2022", + "description": "Visual Studio 개발자 도구 집합 없이 Team Foundation Server 및 Visual Studio Team Services 조작", + "license": "https://go.microsoft.com/fwlink/?LinkId=2229259" + }, + { + "language": "pl-pl", + "title": "Visual Studio Team Explorer 2022", + "description": "Interakcja z serwerem Team Foundation Server i usługami Visual Studio Team Services bez korzystania z zestawu narzędzi dewelopera programu Visual Studio", + "license": "https://go.microsoft.com/fwlink/?LinkId=2229259" + }, + { + "language": "pt-br", + "title": "Visual Studio Team Explorer 2022", + "description": "Interaja com o Team Foundation Server e o Visual Studio Team Services sem um conjunto de ferramentas de desenvolvedor do Visual Studio", + "license": "https://go.microsoft.com/fwlink/?LinkId=2229259" + }, + { + "language": "ru-ru", + "title": "Visual Studio Team Explorer 2022", + "description": "Взаимодействие с Team Foundation Server и Visual Studio Team Services без набора инструментов разработчика Visual Studio", + "license": "https://go.microsoft.com/fwlink/?LinkId=2229259" + }, + { + "language": "tr-tr", + "title": "Visual Studio Takım Gezgini 2022", + "description": "Visual Studio geliştirici araç seti olmadan Team Foundation Server ve Visual Studio Team Services ile etkileşim kurun", + "license": "https://go.microsoft.com/fwlink/?LinkId=2229259" + } + ], + "requirements": { + "supportedOS": "6.1.1", + "functors": { + "architecture": "x64" + }, + "conditions": { + "expression": "not Win10ThresholdBuildNumber", + "conditions": [ + { + "registryKey": "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", + "id": "Win10ThresholdBuildNumber", + "registryValue": "CurrentBuildNumber", + "registryData": "[10240.0,14393.0)" + } + ] + } + } + }, + { + "id": "Microsoft.VisualStudio.Product.TestAgent", + "version": "17.14.36327.8", + "type": "ChannelProduct", + "icon": { + "mimeType": "image/svg+xml", + "base64": "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MCA0MCI+DQogIDxzdHlsZT4uaWNvbi1jYW52YXMtdHJhbnNwYXJlbnR7b3BhY2l0eTowO2ZpbGw6I2Y2ZjZmNn0uYnJhbmQtdnNpZGV7ZmlsbDojODY1ZmM1fTwvc3R5bGU+DQogIDxwYXRoIGNsYXNzPSJpY29uLWNhbnZhcy10cmFuc3BhcmVudCIgZD0iTTQwIDQwSDBWMGg0MHY0MHoiIGlkPSJjYW52YXMiLz4NCiAgPHBhdGggY2xhc3M9ImJyYW5kLXZzaWRlIiBkPSJNMzAuMjIxLS4wMDJMMTMuODg3IDE2LjE2IDQuMDUyIDguNzQ2IDAgMTAuMTAyVjI5LjlsNC4wNTIgMS4zNTYgOS44MzUtNy40MTQgMTYuMzM0IDE2LjE2TDQwIDM1Ljg0MlY0LjE1OGwtOS43NzktNC4xNnpNNC4wNTIgMjUuODlWMTQuMTExTDEwLjAwNCAyMGwtNS45NTIgNS44OXpNMzAgMjguNDcyTDE4Ljk4MyAyMCAzMCAxMS41Mjh2MTYuOTQ0eiIvPg0KPC9zdmc+" + }, + "isHidden": true, + "releaseNotes": "https://docs.microsoft.com/en-us/visualstudio/releases/2022/release-notes-v17.14#17.14.10", + "localizedResources": [ + { + "language": "en-us", + "title": "Visual Studio Test Agent 2022", + "description": "Supports running automated tests and load tests remotely", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "zh-cn", + "title": "Visual Studio 测试代理 2022", + "description": "支持运行自动测试和远程下载测试", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "zh-tw", + "title": "Visual Studio Test Agent 2022", + "description": "支援在遠端執行自動化的測試與負載測試", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "cs-cz", + "title": "Visual Studio Test Agent 2022", + "description": "Podporuje vzdálené spouštění automatizovaných a zátěžových testů.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "de-de", + "title": "Visual Studio-Test-Agent 2022", + "description": "Unterstützt die Remoteausführung von automatisierten Tests und Auslastungstests.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "es-es", + "title": "Visual Studio Test Agent 2022", + "description": "Admite la ejecución de pruebas automatizadas y pruebas de carga de forma remota.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "fr-fr", + "title": "Agent de test Visual Studio 2022", + "description": "Prend en charge l'exécution de tests automatisés et de tests de charge à distance", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "it-it", + "title": "Visual Studio agente di test 2022", + "description": "Supporta l'esecuzione di test automatizzati e test di carico in remoto", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "ja-jp", + "title": "Visual Studio Test Agent 2022", + "description": "自動テストとロード テストのリモートでの実行をサポートする", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "ko-kr", + "title": "Visual Studio 테스트 에이전트 2022", + "description": "자동화된 테스트 및 부하 테스트 원격 실행을 지원합니다.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "pl-pl", + "title": "Visual Studio Test Agent 2022", + "description": "Obsługuje zdalne uruchamianie zautomatyzowanych testów i testów obciążeniowych", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "pt-br", + "title": "Agente de Teste do Visual Studio 2022", + "description": "Dá suporte à execução de testes automatizados e carrega testes remotamente", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "ru-ru", + "title": "Агент тестирования Visual Studio 2022", + "description": "Поддерживает удаленное выполнение автоматических тестов и нагрузочных тестов", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "tr-tr", + "title": "Visual Studio Test Aracısı 2022", + "description": "Otomatik testler çalıştırmayı ve testleri uzaktan yüklemeyi destekler", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + } + ] + }, + { + "id": "Microsoft.VisualStudio.Product.TestController", + "version": "17.14.36327.8", + "type": "ChannelProduct", + "icon": { + "mimeType": "image/svg+xml", + "base64": "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MCA0MCI+DQogIDxzdHlsZT4uaWNvbi1jYW52YXMtdHJhbnNwYXJlbnR7b3BhY2l0eTowO2ZpbGw6I2Y2ZjZmNn0uYnJhbmQtdnNpZGV7ZmlsbDojODY1ZmM1fTwvc3R5bGU+DQogIDxwYXRoIGNsYXNzPSJpY29uLWNhbnZhcy10cmFuc3BhcmVudCIgZD0iTTQwIDQwSDBWMGg0MHY0MHoiIGlkPSJjYW52YXMiLz4NCiAgPHBhdGggY2xhc3M9ImJyYW5kLXZzaWRlIiBkPSJNMzAuMjIxLS4wMDJMMTMuODg3IDE2LjE2IDQuMDUyIDguNzQ2IDAgMTAuMTAyVjI5LjlsNC4wNTIgMS4zNTYgOS44MzUtNy40MTQgMTYuMzM0IDE2LjE2TDQwIDM1Ljg0MlY0LjE1OGwtOS43NzktNC4xNnpNNC4wNTIgMjUuODlWMTQuMTExTDEwLjAwNCAyMGwtNS45NTIgNS44OXpNMzAgMjguNDcyTDE4Ljk4MyAyMCAzMCAxMS41Mjh2MTYuOTQ0eiIvPg0KPC9zdmc+" + }, + "isHidden": true, + "releaseNotes": "https://docs.microsoft.com/en-us/visualstudio/releases/2022/release-notes-v17.14#17.14.10", + "localizedResources": [ + { + "language": "en-us", + "title": "Visual Studio Load Test Controller 2022", + "description": "Distribute automated tests to multiple machines", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "zh-cn", + "title": "Visual Studio Load Test Controller 2022", + "description": "将自动测试分发到多台计算机", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "zh-tw", + "title": "Visual Studio Load Test Controller 2022", + "description": "將自動化的測試散發至多部電腦", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "cs-cz", + "title": "Visual Studio Load Test Controller 2022", + "description": "Distribuce automatizovaných testů na více počítačů", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "de-de", + "title": "Visual Studio Load Test Controller 2022", + "description": "Verteilt automatisierte Tests auf mehrere Computer.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "es-es", + "title": "Microsoft Test Controller para Visual Studio 2022", + "description": "Distribuye pruebas automatizadas a varias máquinas.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "fr-fr", + "title": "Visual Studio Load Test Controller 2022", + "description": "Distribuer des tests automatisés à plusieurs machines", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "it-it", + "title": "Visual Studio Load Test Controller 2022", + "description": "Consente di distribuire i test automatizzati in più computer", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "ja-jp", + "title": "Visual Studio Load Test Controller 2022", + "description": "自動テストを複数のマシンに配布する", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "ko-kr", + "title": "Visual Studio Load Test Controller 2022", + "description": "자동화된 테스트를 여러 컴퓨터에 배포합니다.", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "pl-pl", + "title": "Visual Studio Load Test Controller 2022", + "description": "Dystrybuuj zautomatyzowane testy na wielu maszynach", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "pt-br", + "title": "Visual Studio Load Test Controller 2022", + "description": "Distribuir testes automatizados para vários computadores", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "ru-ru", + "title": "Visual Studio Load Test Controller 2022", + "description": "Распределение автоматических тестов на несколько компьютеров", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + }, + { + "language": "tr-tr", + "title": "Visual Studio Yük Testi Denetleyicisi 2022", + "description": "Otomatik testleri birden fazla makineye dağıt", + "license": "https://go.microsoft.com/fwlink/?LinkId=2180117" + } + ] + }, + { + "id": "VisualStudio.17.Release", + "version": "17.14.36327.8", + "type": "Channel", + "localizedResources": [ + { + "language": "en-us", + "title": "Current", + "description": "The Current channel includes the latest features and fixes that are ready for production use.", + "channelSuffix": "" + }, + { + "language": "zh-cn", + "title": "Current", + "description": "当前频道包括已可供生产使用的最新功能和修补程序。", + "channelSuffix": "" + }, + { + "language": "zh-tw", + "title": "Current", + "description": "目前通道包含可供生產環境使用的最新功能和修正程式。", + "channelSuffix": "" + }, + { + "language": "cs-cz", + "title": "Current", + "description": "Aktuální kanál zahrnuje nejnovější funkce a opravy, které jsou připravené k použití v produkčním prostředí.", + "channelSuffix": "" + }, + { + "language": "de-de", + "title": "Current", + "description": "Der aktuelle Kanal enthält die neuesten Features und Fixes, die für die Produktion bereit sind.", + "channelSuffix": "" + }, + { + "language": "es-es", + "title": "Current", + "description": "El canal actual incluye las características y correcciones más recientes que están listas para el uso de producción.", + "channelSuffix": "" + }, + { + "language": "fr-fr", + "title": "Current", + "description": "Le canal actuel inclut les dernières fonctionnalités et correctifs prêts pour une utilisation en production.", + "channelSuffix": "" + }, + { + "language": "it-it", + "title": "Current", + "description": "Il Canale corrente include le funzionalità e le correzioni più recenti pronte per l'uso in produzione.", + "channelSuffix": "" + }, + { + "language": "ja-jp", + "title": "Current", + "description": "現在のチャネルには、運用環境で使用する準備が整っている最新の機能と修正が含まれています。", + "channelSuffix": "" + }, + { + "language": "ko-kr", + "title": "Current", + "description": "현재 채널에는 프로덕션용으로 사용할 준비가 된 최신 기능과 수정 사항이 포함되어 있습니다.", + "channelSuffix": "" + }, + { + "language": "pl-pl", + "title": "Current", + "description": "Bieżący kanał obejmuje najnowsze funkcje i poprawki, które są gotowe do użycia w środowisku produkcyjnym.", + "channelSuffix": "" + }, + { + "language": "pt-br", + "title": "Current", + "description": "O canal Atual inclui os recursos e correções mais recentes que estão prontos para uso de produção.", + "channelSuffix": "" + }, + { + "language": "ru-ru", + "title": "Current", + "description": "Актуальный канал включает последние функции и исправления, готовые к использованию в рабочей среде.", + "channelSuffix": "" + }, + { + "language": "tr-tr", + "title": "Current", + "description": "Geçerli kanal, üretim kullanımı için hazır olan en son özellikleri ve düzeltmeleri içerir.", + "channelSuffix": "" + } + ] + }, + { + "id": "VisualStudio.17.Release.Bootstrappers.Setup", + "version": "3.14.2082.286130193", + "type": "Bootstrapper", + "installerVersion": "3.14.2082.42463", + "payloads": [ + { + "fileName": "vs_Setup.exe", + "sha256": "4e6f2345ffe48d7978d9dc239008ce9d49f107c548c9c04eed997b22c2706fa3", + "size": 4469024, + "url": "https://download.visualstudio.microsoft.com/download/pr/fd84d0bb-e8dd-4174-b4ad-b2556426fe65/4e6f2345ffe48d7978d9dc239008ce9d49f107c548c9c04eed997b22c2706fa3/vs_Setup.exe" + } + ] + } + ], + "signature": { + "signInfo": { + "signatureMethod": "sha256RSA_cng", + "digestMethod": "sha256", + "digestValue": "qUUfinnWy9j/vZ3sjUpT+qiJ2E6vjwYVl97HyPPMRoQ=", + "canonicalization": "" + }, + "signatureValue": "RMBQmisqHpU6tRAoJAgeAsJxabSYi+NdquccW/6tY2zo+NyZ28Nw0JkeqUEXwcKbEU/+SwhnDo+sQuVYYilVs7Q5role/SIBgxedocuffJxEDROkXjEhx5i7LGyg7hPwHGhgpdY6kfcBe6pQBgUUafWosH1zwS7qo/wDTP8qAiDiG/jCGDQ4sZtARHAKVPFJk4HjdQeKIkeErOH/r0WUBT5zFK8fmw4cvZhaC3ctxLuj5BK8EurkMZPn7mS7MfqJxozS4wFMpkdmlBzjx+S5CX3Ko9jIFRveHsIa+6GS0RTHzmjJQML8Gp6SMWesMX1Q13nTq4WhkiBLjQWE07vKkQ==", + "keyInfo": { + "keyValue": { + "rsaKeyValue": { + "modulus": "7XpKjCg5837MnNU9UKR3xba/q5Iq/JXcyzypjF20Q6LlVwLLwX3ehPNrT4+GM2kpbhg0KF9zaTCqKCnlRY4zUat+8sk/4dUEyzAfHaZrGf+9FDPlP7GMb7dT1lsS4zDSF6swfD4xuoux9mBYJOGDoXxknpL581td3SwLX4w9MIsERD7wjZYpUc+16BXXuSjtNXhYlnrXoePKlDqlGgJCM5wuFwd7BXdS1lJrqVxytOUHyUpp3ovamSQWE7fGYQKxg4e50J/mNYzgN6AYglCeJ9QjGlnQ4a4HTLrtNuqFgG3wt6a6pFJ/C1qdvB/tki3rTRuSkGWcL8t2XJ+/j0BpeQ==", + "exponent": "AQAB" + } + }, + "x509Data": [ + "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" + ] + }, + "counterSign": { + "x509Data": [ + "MIIHKDCCBRCgAwIBAgITMwAAAgAL16p/GyoXVgABAAACADANBgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDAeFw0yNDA3MjUxODMxMjFaFw0yNTEwMjIxODMxMjFaMIHTMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjo1MjFBLTA1RTAtRDk0NzElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK9V2mnSpD9k5Lp6Exee9/7ReyiTPQ6Ir93HL9upqp1IZr9gzOfYpBE+Fp0X6OW4hSB3Oi6qyHqgoE/X0/xpLOVSjvdGUFtmr4fzzB55dJGX1/yOc3VaKFx23VFJD4mXzV7M1rMJi/VJVqPJs8r/S6fUwLcP6FzmEwMXWEqjgeVM89UNwPLgqTZbpkDQyRg2OnEp9DJWLpF5JQKwoaupfimK5eq/1pzql0pJwAaYIErCd96C96J5g4jfWFAKWcI5zYfTOpA2p3ks+/P2LQ/9qRqcffy1xC6GsxFBcYcoOCnZqFhjWMHUe/4nfNYHjhEevZeXSb+9Uv5h/i8W+i+vdp/LhJgFcOn1bxPnPMI4GGW5WQjTwMpwpw3bkS3ZNY7MAqo6jXN1/1iMwOxhrOB1EuGCKwFMfB9gPeLwzYgPAFmu2fx0sEwsiIHlW5XV2DNgbcTCqt5J3kaE9uzUO2O5/GU2gI3uwZX47vN7KRj/0FmDWdcGM2FRkcjqXQPFpsauVfH+a+B2hvcz3MpDsiaUWcvld0RooIRZrAiVwHDM4ju+h4p8AiIyJpwhShifyGy4x+ie3yV6kT24Ph+q2C2fFwaZlwRR+D02pGVWMQfz/hEGy+SzcNGSDPnrn8QpY1eDvpx5DPs4EsfPtOwVWTwSrJaKHm7JoSHATtO+/ZHoXImDAgMBAAGjggFJMIIBRTAdBgNVHQ4EFgQUgCUk2r4JIyqoHucUDl59+X13dzowHwYDVR0jBBgwFoAUn6cVXQBeYl2D9OXSZacbUzUZ6XIwXwYDVR0fBFgwVjBUoFKgUIZOaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSkuY3JsMGwGCCsGAQUFBwEBBGAwXjBcBggrBgEFBQcwAoZQaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIwUENBJTIwMjAxMCgxKS5jcnQwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMCB4AwDQYJKoZIhvcNAQELBQADggIBACjwhvZ40bSKkPn7hAoMc1jLEDiNx71u7FfT5hFggjlpU7hgiMzYt4m3S2UtG9iAx4NMi67XVbgYtxcVXXrCF7s2MqHyHv2pUwXVeA4Yoy017QezYDp6Oxtdojt7eo8tYT0qrsxi68v9phGQcCLEqEtg/h/txwicTw8oczBaj/qZZbTwAgf0DcGe6vhxsmb97/Hrfq0GIPLBdz07lng4N3Uf85NTWsCf3XxQg2JVjXggQi7zT0AXHjGFxURSoXElMLO5hXSAw4WacasiCg9lg8BcjSBhHs5/p3eJF0bqXjRMfnkqSV8pUQ/tXeOYW+j8ziBewZHD7UbRVtsF4JIy6rU1lpQZL85drjX2Cdwj2VWg8jA2ml4Dvh+g4q7CeCBvYpCHfeNfplg3o5I+WmJ/UDekTn6PxzR4NbYpsKRaFIr6gBbuoq1mRcOVfsi6/BS3O52zGtpRUosc7ves3Zw7DyJs9HOkrW2MoSkpTN7g0YvVFsnUiqpxG7SejJPmLsb86a5LlkCWFn6T77oPsE54qMpFcHNMkVXLHeMTM5550bWQxjElBJfbTFZ3m2EbIcGSMiU7AYC2ZhzO6tkxSv1/feOEpCKsmNtgHLi3tBqqDXwEgiHGbc22f8z+JU9vzdKQ259n3wM42ZISPkK6q/fN5kGVsGXa905NTGBJQ04c9g9D", + "MIIHcTCCBVmgAwIBAgITMwAAABXF52ueAptJmQAAAAAAFTANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMjEwOTMwMTgyMjI1WhcNMzAwOTMwMTgzMjI1WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOThpkzntHIhC3miy9ckeb0O1YLT/e6cBwfSqWxOdcjKNVf2AX9sSuDivbk+F2Az/1xPx2b3lVNxWuJ+Slr+uDZnhUYjDLWNE893MsAQGOhgfWpSg0S3po5GawcU88V29YZQ3MFEyHFcUTE3oAo4bo3t1w/YJlN8OWECesSq/XJprx2rrPY2vjUmZNqYO7oaezOtgFt+jBAcnVL+tuhiJdxqD89d9P6OU8/W7IVWTe/dvI2k45GPsjksUZzpcGkNyjYtcI4xyDUoveO0hyTD4MmPfrVUj9z6BVWYbWg7mka97aSueik3rMvrg0XnRm7KMtXAhjBcTyziYrLNueKNiOSWrAFKu75xqRdbZ2De+JKRHh09/SDPc31BmkZ1zcRfNN0Sidb9pSB9fvzZnkXftnIv231fgLrbqn427DZM9ituqBJR6L8FA6PRc6ZNN3SUHDSCD/AQ8rdHGO2n6Jl8P0zbr17C89XYcz1DTsEzOUyOArxCaC4Q6oRRRuLRvWoYWmEBc8pnol7XKHYC4jMYctenIPDC+hIK12NvDMk2ZItboKaDIV1fMHSRlJTYuVD5C4lh8zYGNRiER9vcG9H9stQcxWv2XFJRXRLbJbqvUAV6bMURHXLvjflSxIUXk8A8FdsaN8cIFRg/eKtFtvUeh17aj54WcmnGrnu3tz5q4i6tAgMBAAGjggHdMIIB2TASBgkrBgEEAYI3FQEEBQIDAQABMCMGCSsGAQQBgjcVAgQWBBQqp1L+ZMSavoKRPEY1Kc8Q/y8E7jAdBgNVHQ4EFgQUn6cVXQBeYl2D9OXSZacbUzUZ6XIwXAYDVR0gBFUwUzBRBgwrBgEEAYI3TIN9AQEwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMBMGA1UdJQQMMAoGCCsGAQUFBwMIMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjEMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQCdVX38Kq3hLB9nATEkW+Geckv8qW/qXBS2Pk5HZHixBpOXPTEztTnXwnE2P9pkbHzQdTltuw8x5MKP+2zRoZQYIu7pZmc6U03dmLq2HnjYNi6cqYJWAAOwBb6J6Gngugnue99qb74py27YP0h1AdkY3m2CDPVtI1TkeFN1JFe53Z/zjj3G82jfZfakVqr3lbYoVSfQJL1AoL8ZthISEV09J+BAljis9/kpicO8F7BUhUKz/AyeixmJ5/ALaoHCgRlCGVJ1ijbCHcNhcy4sa3tuPywJeBTpkbKpW99Jo3QMvOyRgNI95ko+ZjtPu4b6MhrZlvSP9pEB9s7GdP32THJvEKt1MMU0sHrYUP4KWN1APMdUbZ1jdEgssU5HLcEUBHG/ZPkkvnNtyo4JvbMBV0lUZNlz138eW0QBjloZkWsNn6Qo3GcZKCS6OEuabvshVGtqRRFHqfG3rsjoiV5PndLQTHa1V1QJsWkBRH58oWFsc/4Ku+xBZj1p/cvBQUl+fpO+y/g75LcVv7TOPqUxUYS8vwLBgqJ7Fx0ViY1w/ue10CgaiQuPNtq6TPmb/wrpNPgkNWcr4A245oyZ1uEi6vAnQj0llOZ0dFtq0Z4+7X6gMTN9vMvpe784cETRkPHIqzqKOghif9lwY1NNje6CbaUFEMFxBmoQtB1VM1izoXBm8g==", + "MIIF7TCCA9WgAwIBAgIQKMw6Jb+6RKxEmptYa0M5qjANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMTAwNjIzMjE1NzI0WhcNMzUwNjIzMjIwNDAxWjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC5CJ4o5OTsBk5QaLNBxXvrrraOr4G6IkQfZTRpTL5wQBfyFnvief2G7Q059BuorZKQHss9do9a2bWREC48BY2KbSRU5x/tVq2DtFCcFaUXdIhZIPwIxYR202jUbyh4zly481CQRP/jY1++oZoslhUE1gf+HoQh4EIxEcQoNpTPUKRinsnWq3EAslsM5pbUCiSW9f/G1bcb18u3IWKvEtyhXTfjGvsaRpjAm8DnYx8qCJMCfh5qjvKfGInkIoWisYRXQP/1DthvnO3iRTEBzRfpf7CBReOqIUAmoXKqp088AQV+7oNYsV4GY5likXiCtw2TDCRqtBvbJ+xflQQ/k0ow9ZcYs6f5GaeTMx0ByNsiUlzXJclG+aL7h1lDvptisY0thkQaRqx4YX4wCfquicRBKiJmA5E5RZzHiwyoyg0v+1LqDPdjMyOd/rAfrWfWp1ADxgRwY7UssYZaQ7f7rvluKW4hIUEmBozJw+6wwoWTobmF2eYybEtMP9Zdo+W1nXfDnMBVt3QA47g4q4OXUOGaQiQdxsCjMNEaWshSNPdz8ccYHzOteuzLQWDzI5QgwkhFrFxRxi6AwuJ3Fb2Fh+02nZaR7gC1o3Dsn+ONgGiDdrqvXXBSIhbiZvu6s8XC9z4vd6bK3sGmxkhMwzdRI9Mn17hOcJbwoUR2r3jPmuFmEwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU1fZWy4/oolxiaNE9lJBb186aGMQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZIhvcNAQELBQADggIBAKylloy/u66m9tdxh0MxVoj9HDJxWzW31PCR8q834hTx8wImBT4WFH8UurhP+4mysufUCcxtuVs7ZGVwZrfysVrfGgLz9VG4Z215879We+SEuSsem0CcJjT5RxiYadgc17bRv49hwmfEte9gQ44QGzZJ5CDKrafBsSdlCfjN9Vsq0IQz8+8f8vWcC1iTN6B1oN5y3mx1KmYi9YwGMFafQLkwqkB3FYLXi+zA07K9g8V3DB6urxlToE15cZ8PrzDOZ/nWLMwiQXoH8pdCGM5ZeRBV3m8Q5Ljag2ZAFgloI1uXLiaaArtXjMW4umliMoCJnqH9wJJ8eyszGYQqY8UAaGL6n0eNmXpFOqfp7e5pQrXzgZtHVhB7/HA2hBhz6u/5l02eMyPdJgu6Krc/RNyDJ/+9YVkrEbfKT9vFiwwcMa4y+Pi5Qvd/3GGadrFaBOERPWZFtxhxvskkhdbz1LpBNF0SLSW5jaYTSG1LsAd9mZMJYYF0VyaKq2nj5NnHiMwk2OxSJFwevJEU4pbe6wrant1fs1vb1ILsxiBQhyVAOvvH7s3+M+Vuw4QJVQMlOcDpNV1lMaj2v6AJzSnHszYyLtyV84PBWs+LjfbqsyH4pO0eMQ62TBGrYAukEiMiF6M2ZIKRBBLgq28ey1AFYbRA/1mGcdHVM2l8qXOKONdkDPFp" + ], + "timestamp": "2025-07-27-04:42:04", + "counterSignatureMethod": "timeStamp", + "counterSignature": "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" + } + } +} diff --git a/pkgs/os-specific/windows/msvcSdk/update.nu b/pkgs/os-specific/windows/msvcSdk/update.nu new file mode 100755 index 000000000000..f713dad36593 --- /dev/null +++ b/pkgs/os-specific/windows/msvcSdk/update.nu @@ -0,0 +1,48 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i nu -p nushell xwin + +use std/log +use std/dirs + +const MANIFEST_URL = "https://aka.ms/vs/17/release/channel" + +const PATH = "pkgs/os-specific/windows/msvcSdk" + +def replace_hash [ p: path old: string new: string ] { + open $p + | str replace $old $new + | save -f $p +} + +def main [] { + # Ensure the version is actually new + let current_version = nix eval -f "" windows.sdk.version --json | from json + + let new_manifest = http get $MANIFEST_URL | decode | from json + let new_version = $new_manifest.info.productSemanticVersion + + if $current_version == $new_version { + log info "Current Windows SDK manifest matches the newest version, exiting..." + exit 0 + } else { + log info $"Previous version (current_version)\nNew version (new_version)" + } + + $new_manifest | to json | append "\n" | str join | save -f ($PATH | path join manifest.json) + + # TODO: Add arm once it isn't broken + let hashes = ["x86_64", "x86"] | par-each { + |arch| + let dir = mktemp -d + + xwin --accept-license --cache-dir $dir --manifest $"($PATH | path join manifest.json)" --arch $arch splat --preserve-ms-arch-notation + + let hash = nix hash path ($dir | path join splat) + + {arch: $arch, hash: $hash} + } | transpose -r -d + + log info $"New hashes:\n ($hashes)" + + $hashes | to json | append "\n" | str join | save -f ($PATH | path join hashes.json) +} diff --git a/pkgs/top-level/config.nix b/pkgs/top-level/config.nix index a1a50ec17840..c3c78e9d3e80 100644 --- a/pkgs/top-level/config.nix +++ b/pkgs/top-level/config.nix @@ -274,6 +274,18 @@ let } ''; }; + + microsoftVisualStudioLicenseAccepted = mkOption { + type = types.bool; + default = false; + # getEnv part is in check-meta.nix + defaultText = literalExpression ''false || builtins.getEnv "NIXPKGS_ALLOW_UNFREE" == "1"''; + description = '' + If the Microsoft Visual Studio license has been accepted. + + Please read https://www.visualstudio.com/license-terms/mt644918/ and enable this config if you accept. + ''; + }; }; in diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix index 8eecf46610d2..05e6ff2ef64d 100644 --- a/pkgs/top-level/linux-kernels.nix +++ b/pkgs/top-level/linux-kernels.nix @@ -364,6 +364,8 @@ in inherit (pkgs) oci-seccomp-bpf-hook; # added 2022-11 inherit (pkgs) dpdk; # added 2024-03 + acer-wmi-battery = callPackage ../os-specific/linux/acer-wmi-battery { }; + acpi_call = callPackage ../os-specific/linux/acpi-call { }; ajantv2 = callPackage ../os-specific/linux/ajantv2 { };