Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
164742 stories
·
33 followers

#504 Who turned the GIL back on?

1 Share
Topics covered in this episode:
Watch on YouTube

About the show

Sponsored by LongLink: Open-source platform for building and running custom business applications with Python and FastAPI Connect with the hosts

Calvin #1: PyPI's redesigned project pages now warn when provenance changes

  • Live now on pypi.org (Nov 6). Announced in July, shaped by user research, funded by OpenSSF and built by Kabu Creative.
  • New Security tab on every project page shows each release's provenance state and per-file attestations, with a link to the transparency log.
  • Two attestation types: PyPI Publish (uploaded by a Trusted Publisher) and SLSA Build Provenance (ties a file to its source commit, build platform and instructions).
  • "No provenance" isn't a malware flag; it means the file's origin can't be cryptographically verified. That's typical for older releases or projects without Trusted Publishing.
  • Four new provenance warnings: Incomplete (e.g. wheels via Trusted Publishing but sdist via API token), Inconsistent (mixed build systems or repos), Change (different repo or workflow than last release), Loss (stopped publishing attestations).
  • Warnings are meant to catch files that may not have come from the maintainers, such as after an account or publishing-workflow takeover. PyPI says a Change of Provenance "can also indicate a compromised pipeline or account takeover," and an unexpected Loss of Provenance should be treated "with skepticism until verified.”
  • Warnings now sit at the top of the page with yanked, archived and pre-release banners. A quarantine banner overrides all of them. Sidebar metadata is labeled "PyPI data" or "Data verified by PyPI."
  • Release files tab gets search, filters, a per-file provenance column and orange icons for "late" files (uploaded more than 14 days after release). Those only appear on releases from before July 2026, when PyPI started rejecting new files after 14 days.

Michael #2: gilguard catches the import that turns the GIL back on

gilguard catches a nasty free-threading surprise: importing a C extension without declared free-threading support can turn the GIL back on for the rest of the process. Import gilguard first and it raises a detailed error naming the extension, distribution/version, import chain, and the line of your code responsible.

  • A transitive dependency can undo your move to free-threaded Python. Fail at the offending import instead of discovering lost parallelism in a benchmark.
  • Uses import hooks plus CPython's warning path to catch GIL activation; GILEnabledError inherits BaseException, so even except Exception won't swallow it.
  • python -m gilguard audits installed top-level packages in fresh interpreters. Supports targeted modules and JSON output; exits 1 when it finds an offender for CI.
  • The audit misses extensions loaded lazily on first use. Exercise those paths in tests with gilguard installed early; one process can identify only its first GIL-flipping import.
  • GILGUARD_ACTION=warn reports without stopping; off permits standard builds. Default mode raises on standard Python or an already-enabled GIL. PYTHON_GIL=0 prevents activation, so the guard cannot detect offenders there.
  • Published on PyPI as 0.1.0. Install with uv pip install gilguard. Python 3.13+, MIT; no runtime dependencies.

Calvin #3: pip 26.3: pylock extras, and pip says plainly that untrusted wheels aren't safe

  • pip 26.3 released Nov 2. Its security policy now says pip "has never considered installing untrusted wheels safe," because Python's import system is dynamic, so pip can't guarantee installing a wheel won't execute third-party code (#14412).
  • The change: pip blocks unexpected imports during wheel installation "to avoid loading code from packages being replaced." It loads what it needs for installing and error reporting up front (PR #14247, merged Nov 2: https://github.com/pypa/pip/pull/14247).
  • CLI vs. library use: from the command line, imports stay blocked until pip exits. Code that calls pip programmatically gets warnings after control returns.
  • Rolled out in steps: pip 26.1 started warning ("Unexpected import of '...' after pip install started. pip 26.3 will enforce this behavior change"), and 26.3 turns it into an error. Tracking issue #13842 collected reports before enforcement: https://github.com/pypa/pip/issues/13842
  • What tripped it in the wild: a .pth startup hook at Pradyun Gedam's workplace that registers an atexit handler to report interpreter usage metrics over HTTP (https://github.com/pypa/pip/issues/13842#issuecomment-4613463933), plus warnings involving lark_oapi and rich._emoji_codes.
  • Escape-hatch debate: the author, Damian Shaw (notatallshaw), suggested appending module names to pip._internal.commands.install._EAGER_IMPORTS. Pradyun objected that this requires importing from pip._internal, that importing pip's install command is expensive (about 689 ms with no .pyc files and a cold filesystem cache), and that pip isn't necessarily installed in every environment. Shaw's reply: it "just moves where the import cost is," and turning the warning into an error is "crucial."
  • Interrupted installs: pip now writes recovery metadata and reports recovery failures and where it kept backups. An interrupted uninstall may need manual recovery, and an interrupted --target install can leave a partial target directory.
  • Also in 26.3: -r pylock.toml[extra1,extra2] for extras, --group pylock.toml:docs for non-default groups, --no-binary with pylock files, and pip refuses to follow an HTTP redirect to a file: URL.

Michael #4: All developer tools

HeyUtils is a collection of 306 free developer utilities in 41 categories, with no account or installation required. The full catalog covers data conversion, APIs, networking, DevOps, frontend work and binary protocols. Python developers get model generation and packaging helpers alongside the everyday formatters and decoders worth bookmarking.

  • One bookmark for the tiny jobs that interrupt coding: inspect a payload, compare configs, decode a token or figure out a cron schedule.
  • Data tools include JSON/YAML/TOML conversion, CSV joins, JSONPath and JMESPath testers, a jq playground, and a SQLite viewer with read-only queries.
  • Python-specific options go beyond regex: generate dataclasses or Pydantic models from JSON, check PEP 440 versions, and inspect requirements.txt or pyproject.toml dependencies.
  • The collection also covers JWT/OAuth debugging, DNS and TLS checks, Docker Compose, Kubernetes YAML, GitHub Actions, and frontend helpers such as color contrast checks.
  • Most tools process input locally, according to the site. Network tools make requests after you start them and explain what they send; don't assume every page is offline.
  • Generated models need review: sample data cannot describe a complete validation contract, and dataclass type hints do not validate incoming values.

Extras

Calvin:

  • Coldframe: a stdlib-only honeypot that poses as a supermarket fridge controller** Michael:
  • Announcing new Security Developer at the PSF
    • Brett Smith is joining the PSF as a Security Developer, a new role funded by Anthropic. He'll work with Seth Larson and Mike Fiedler on vulnerability response and PyPI malware removal, with more time for proactive work as the team's workload grows.
      • More paid security capacity for the Python and PyPI infrastructure we depend on every day.
      • The PSF reports 3-4x the volume of reports and CVEs for Python and pip compared with a year ago.
      • Malware published and removed from PyPI is up 60% year over year. That's a workload measure, not a claim that 60% more packages are malicious.
      • Planned work includes scaling PyPI's autonomous quarantine program and streamlining how the Python Security Response Team handles reports.
      • Smith brings software development and Linux administration experience, including work at W3C and Software Freedom Conservancy.

Joke: No papa





Download audio: https://pscrb.fm/rss/p/dts.podtrac.com/redirect.mp3/pythonbytes.fm/episodes/download/504/who-turned-the-gil-back-on.mp3
Read the whole story
alvinashcraft
just a second ago
reply
Pennsylvania, USA
Share this story
Delete

Inside the Microsoft Copilot Harness: Customizing AI Agents

1 Share
From: GitHub
Duration: 14:21
Views: 420

In this episode, Andrea Griffiths sits down with Patrick Nikoletich to unpack the Microsoft Copilot harness. Discover how teams are using the harness for non-coding scenarios, autonomous software factories, and customizing the harness for custom agents. Patrick demos a Dockerized agent worker pool, explains credential-safe inference gateways, and shows how the Agent Host Protocol (AHP) tunnels CLI sessions into isolated containers. Explore what is coming in Copilot harness 2.0, from a Rust rewrite to direct Azure tunneling.

Links mentioned in the episode:

Microsoft Copilot harness: https://gh.io/harness
Microsoft Copilot SDK: https://aka.ms/copilot-harness/sdk/repo
Patrick's demo (harness builder + secure Aspire agent service): https://github.com/patniko/copilot-sdk-aspire
Agent Host Protocol (AHP): https://github.com/microsoft/agent-host-protocol
Local sandbox for agents: https://gh.io/local-sandbox
Copilot SDK workshop: https://github.com/github/copilot-sdk-workshop

#MicrosoftCopilotHarness #AIAgents #GitHub

— CHAPTERS —

00:00 Introduction
01:05 From coding agents and personal assistants to fully autonomous agents
02:55 Designing a secure runtime for flexible agent deployments
04:52 Customizing the harness for three different use cases
08:11 Dockerized worker pools and security architecture
10:07 Agent Host Protocol and CLI tunnels
12:20 Direct Azure tunneling and open source access
13:27 What is coming in Copilot Harness 2.0

Stay up-to-date on all things GitHub by connecting with us:

YouTube: https://gh.io/subgithub
Blog: https://github.blog
X: https://twitter.com/github
LinkedIn: https://linkedin.com/company/github
Insider newsletter: https://resources.github.com/newsletter/
Instagram: https://www.instagram.com/github
TikTok: https://www.tiktok.com/@github

About GitHub
It’s where over 180 million developers create, share, and ship the best code possible. It’s a place for anyone, from anywhere, to build anything—it’s where the world builds software. https://github.com

Read the whole story
alvinashcraft
14 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

Welcome to Uno Platform Studio: The shared Workbench for Developers & AI Agents

1 Share
From: UnoPlatform
Duration: 19:37
Views: 42

Uno Platform Studio provides the Workbench where Developers and AI Agents create, collaborate, validate, and ship .NET applications together.

Learn more:
Uno Platform: https://platform.uno/
Uno Platform Studio: https://platform.uno/studio
Uno Platform Blogs: https://platform.uno/blog/
Uno Platform Docs: https://platform.uno/docs/articles/intro.html
Uno Platform Discord: https://discord.com/invite/XjsmQHdKfq

Read the whole story
alvinashcraft
23 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

Private Database, Public Tools - Securing Azure Database for PostgreSQL Flexible Server Behind MCP

1 Share

Problem statement

Consider an enterprise employee chatbot asked a simple question -

What's the reported average sales per day in Store 1234 for last 3 months and what are the top 3 and bottom 3 products sold by total sales for last 3 months? 

Behind that interaction, an AI agent invokes a Model Context Protocol (MCP) tool, the MCP server queries Azure Database for PostgreSQL flexible server (henceforth, flexible server), and a sales dataset is returned.

The database has private connectivity (VNET injected or accessed via private link), public database access is disabled and connections are encrypted.

Whether the system is secure remains an open question?

An internet facing MCP server creates an application mediated path to private data that path can be entirely legitimate, but its security depends on authentication, authorisation, tool design, database permissions, data handling and operational controls rather than on the database’s network posture.

Now consider a harder scenario - An authenticated employee asks the agent for another employee’s sales profile, a retrieved document contains embedded instructions to extract the whole corporate directory, the agent chains several tool calls, and the MCP application connects to flexible server with a privileged application identity. The database accepts the connection and returns the data. No firewall has been bypassed, the application has simply used its legitimate permissions politely and inappropriately.

Top tip - The governing principle is that private database connectivity protects the database’s network boundary and does not establish the identity, authority or intent of the application accessing it.

Understand the impact area before judging its security

MCP lets AI applications discover and invoke tools exposed by a server. In a flexible server backed enterprise application, such tools might retrieve an employee sales profile, look up a corporate policy, check the status of a support request, create a service request or run a bounded analytical query.

The MCP server sits as an application component between client and database and it receives a tool invocation, validates it, applies application-level authorisation and translates it into a database operation. The request path therefore runs from the employee to the AI application acting as MCP client, over authenticated HTTPS to the MCP server, and from there to flexible server and the underlying business data.

That path contains several distinct trust boundaries as shown below - 

 

Architecturally it is useful to separate three planes with different responsibilities -

  1. A control plane covering MCP server registration, tool discovery, policy management, identity governance and lifecycle
  2. A runtime plane covering authentication, tool invocation, application execution, database access and response delivery
  3. A data plane containing flexible server records, privileges, row level security policies, encryption and data governance.

MCP is not a replacement for flexible server wire protocol or its permission system. A tool invocation must still be translated into an application operation, authenticated database connection, and SQL statement. 

Top tip - These planes should not be treated as a single security boundary and securing only the bottom plane leaves the others exposed.

Architecture pattern 1: Public MCP and Private Flexible Server Can Coexist

What you see here is an authenticated MCP endpoint hosted on Azure App Service (or your preferred container service) that can use outbound VNet integration to reach a privately accessible Flexible Server, so the database is private while the MCP endpoint is publicly reachable. 

There's nothing glaringly wrong here because the two Az services have independently configured network boundaries.

Here Az App Service networking features should be categorzied across - 

a) VNet integration provides outbound connectivity from the application into a virtual network private endpoints provide inbound private connectivity to the application; and access restrictions and public network access settings independently govern the default endpoint. VNet integration does not make inbound access private. 

b) A private MCP deployment requires private ingress and, where appropriate, disabled public application access.

Top tip - Connecting an MCP application to a Az VNet does not make its MCP endpoint private. This pattern is useful when approved clients cannot join your private network.

Architecture pattern 2: Private MCP endpoint and Private Flexible Server

In this pattern, the MCP server is exposed only through private ingress, and communication from MCP to flexible server also remains on the private network path. Neither the MCP endpoint nor the database needs to be directly reachable from the public internet, materially reducing the external network attack surface.

However, private connectivity should be treated as an exposure control, not a security or authorization boundary. Once an application has legitimate network access to MCP, security depends on the identity presented, the MCP tools that identity is authorised to invoke, and the permissions available to those tools at the database layer.

A compromised AI application or a workload identity, malicious prompt or authorised insider could therefore still generate valid looking MCP requests. 

Authentication, fine grained tool authorization, least privilege managed identities, database permissions, input validation and auditability remain essential controls.

 

Top tip - Private networking reduces who can reach the MCP server and identity and authorization determine what a caller can do once they reach it.

Architecture pattern 3: Public AI Gateway, Private MCP backend and Private database

In this pattern, Azure API Management (APIM) or AI Gateway becomes the controlled public entry point.

Client requests terminate at the gateway, where controls such as authentication, authorization, rate limiting, request validation, throttling and logging can be applied before traffic is forwarded to the MCP application over private connectivity.

The MCP application itself remains private and is not directly exposed to the internet.

Communication from MCP to flexible server also follows a private network path, creating a clear separation between the externally reachable API surface, the tool execution layer and the underlying data tier.

This architecture is particularly useful when multiple approved AI clients or agents need access to MCP capabilities but you want a single, governed ingress point rather than exposing each MCP implementation independently.

The critical design requirement is to prevent gateway bypass. Approved AI clients or apps should not be able to discover or reach an alternative public endpoint on the MCP backend. Otherwise, APIM policies can simply be circumvented. 

Top tip - Expose the AI gateway, not the MCP implementation or database. Use APIM to control who can enter and under what conditions, then enforce least privilege again at the MCP tool and data layers.

Secure the caller to row-level boundary in Flexible Server

The most important part explained in above architecture patterns (1/2 and 3) is what happens after an MCP tool has been authorised. MCP should determine which capability the caller may invoke, but flexible server should independently determine what that capability is ultimately allowed to do with data.

The MCP application connects to flexible server using a dedicated runtime identity (workload identity) with deliberately narrow SQL grants (reader permission). That identity should not inherit broad application owner privileges simply because the MCP service is trusted to connect.

Where possible, the runtime role should have access only to the specific schemas, tables, views or functions required by the approved tool including and where appropriate using NOBYPASSRLS.

Equally important, the caller identity and workload execution identity are different security concerns.

The workload identity authenticates the MCP application to flexible server. The verified caller context, such as tenant and object identifiers derived from validated Entra claims, can be propagated separately into the database transaction and used by database policy to constrain the current operation.

This is where RLS (and CLS) becomes especially powerful!

Rather than trusting MCP to remember to add the correct WHERE employee_id = ... predicate to every query, RLS in database can enforce the row boundary itself. Even if the application contains a defect or a tool is invoked unexpectedly, the database still evaluates which rows the transaction is permitted to access.

Complimentary reading for Azure API management JWT validation

Private networking does not prevent data exfiltration

It is a misconception that data cannot leave or exfiltrate because the server has no public endpoint. 

The authorised application can retrieve data and return it through an overly broad tool response to the external AI client, with no firewall bypass at all. 

Preventing this requires per calling identity authorisation, sensitivity aware tool design, minimal response fields (consider flexible server features such as - RLS, CLS, views and locked down schemas), and monitoring for unusual access patterns.

Note that a private database server provides no end-to-end data residency or sovereignty guarantee. 

 

Top tip- The AI platform, model endpoint, logging services and downstream integrations must each be assessed against organisational data governance requirements.

Final takeaway

Private connectivity reduces the externally reachable attack surface. It does not establish trust. Conversely, a carefully governed public endpoint can still provide a strong security boundary when identity, policy enforcement and backend isolation are designed correctly.

Moreover, network placement is only one dimension of the security model. The stronger architectural question is whether the entire invocation path remains controlled, from the AI client > APIM > MCP tool execution > Flexible Server and back!

The goal is not simply to make the database unreachable. It is to make every path to the database intentional, attributable, and observable.

Git Repo

Read the whole story
alvinashcraft
51 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

v7.7.0 Release of PowerShell

1 Share

7.7.0

General Cmdlet Updates and Fixes

  • Add warning for SHA-1 File Catalog (#28358)

Tests

  • Fix the regex in ConsoleHost.Tests.ps1 used to verify help content (#28365)
  • Pin Linux image version to Ubuntu 24.04 for CI tests (#28357)

Build and Packaging Improvements

Update to .NET SDK 11.0.100

  • Fix the resource string WeakCatalogHashAlgorithm (#28368)
  • Update Appx manifest to not allow updates while PS7 is running (#28361)
  • Fix module-only vPack build feed credentials (#28369)
  • Add ability to consume PowerShell modules from internal feed (#28366)
  • Localized file check-in by OneLocBuild Task: Build definition ID 13420: Build ID 2785816 (#28364)
  • Update Microsoft.PowerShell.PSResourceGet to version 1.3.0-rc2 (#28363)
  • Bump github/codeql-action/upload-sarif from 4.38.3 to 4.39.1 (#28359)
  • Bump github/codeql-action from 4.38.3 to 4.39.1 (#28360)

SHA256 Hashes of the release artifacts

  • hashes.sha256
    • 0F0534F42A2776F0C96CB18520B2AE28823376D95A5CF54E636E5828BCE22A47
  • powershell-7.7.0-1.azl4.aarch64.rpm
    • 476DAFB6FEEA87BE791EE7D2A5FABAF81997E2198023ECCF3C2D55F273DE9610
  • powershell-7.7.0-1.azl4.x86_64.rpm
    • FB345A07BC92A366A84CC8466376CD61F06678B8B48FC99229B1B1E40744EB55
  • powershell-7.7.0-1.cm.aarch64.rpm
    • 2AADE3FE7993454A26A6C640C98DB723B594AB1C406D5BF1A6D5A927559F3422
  • powershell-7.7.0-1.cm.x86_64.rpm
    • CE45F6E5B45DDAD194079BDB15C96F89405B5C23C48DEA23FD74802B4206DDAF
  • powershell-7.7.0-1.rh.x86_64.rpm
    • 12368AB08ACF1A85963CBEB581C7EF283730C81787CE854F5F8965CD7D6F7A3A
  • powershell-7.7.0-linux-arm32.tar.gz
    • D05E2BBC7B165E4DB1B7194F92CCB6951E09847D4013F9CC464EAD1C8804A10A
  • powershell-7.7.0-linux-arm64.tar.gz
    • E59C89776EAA59790D44B3EDD14277435225AB08B6E7603763101B89DE83D935
  • powershell-7.7.0-linux-musl-x64.tar.gz
    • 5A6408B1D196E9D6B6D1AF71DAA931834C5FEA07D14A78CF369292C23944E78D
  • powershell-7.7.0-linux-x64-fxdependent.tar.gz
    • 57573B61F79A497E314221BCF62D6D131D04256548ED88E01F671996F1882449
  • powershell-7.7.0-linux-x64-musl-noopt-fxdependent.tar.gz
    • 91AFC09343EAA056E05700FB11D5A816D8CCFD6724140E5271712C36271C6BF9
  • powershell-7.7.0-linux-x64.tar.gz
    • C89D9C682D2C403DFE726F3DF948E359675235A5BD6FAB535776DE69729CA0CB
  • powershell-7.7.0-osx-arm64.pkg
    • A15E395A9749B67501E69E52E07EF53BBB39ED2C97ED18940D5497E9C0E49A2E
  • powershell-7.7.0-osx-arm64.tar.gz
    • 76449F078F30193FCE9CDF6610B77FDA14F4224CAFCBDF230245EC0DAB9EF10D
  • powershell-7.7.0-osx-x64.pkg
    • 550A8AFE52C4D6782BC60B1C26D248A851EF263594758F873BBB92BAA48516DF
  • powershell-7.7.0-osx-x64.tar.gz
    • 61906BF8F407EF5CC263874C904C551D69FBB61D42DBD8F848A461EC47BF68B5
  • PowerShell-7.7.0-win-arm64.zip
    • 5DC7440CD98F0BA786A44D7DB9205DF5058474FD4DB143CAF7171E8375F34F75
  • PowerShell-7.7.0-win-fxdependent.zip
    • A5DB2F28818C5433219F2D687184B88AF48B1275934E32379DC510E3160CC9A9
  • PowerShell-7.7.0-win-fxdependentWinDesktop.zip
    • F9EEDC5DA570347F2C9E3E7BAFB34596B2D695F5AD29120D0D98D86E363596F0
  • PowerShell-7.7.0-win-x64.zip
    • 7C74E03B20A75B59715847439D046A6214B1863EE79B187872980F139BB4A05F
  • PowerShell-7.7.0-win-x86.zip
    • 1723B1EF5FF7791A77638F05B48168331DF84F51C19FBEC7A1321FE924F3463B
  • PowerShell-7.7.0.msixbundle
    • E00C349858C2D273F29485541ECE91617B435ACCDD5E3F156D68D5CB97740022
  • powershell_7.7.0-1.deb_amd64.deb
    • BECB565095BA0569E1B6D18055CE1114A426523145E6E5AC856928F6B9B013C4
  • powershell_7.7.0-1.deb_arm64.deb
    • 5756F51B51DD9D7895B178E80BBB65BD2F481D8C036CB2D5F8C284368F5040A2
Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete

v7.6.10 Release of PowerShell

1 Share

7.6.10

General Cmdlet Updates and Fixes

  • Use GetCurrentPackageFamilyNameNative API instead of path matching to detect MSIX installation (#28313)
  • Add warning for SHA-1 File Catalog (#28311)
  • Ensure all errors are returned for Test-Json with List output format (#28273)

Tests

  • Pin Linux image version to Ubuntu 24.04 for CI tests (#28312)

Build and Packaging Improvements

Update to .NET SDK 10.0.404

  • Fix module-only vPack build feed credentials (#28362)
  • Add ability to consume PowerShell modules from internal feed (#28355)
  • Localized file check-in by OneLocBuild Task: Build definition ID 13420: Build ID 2776908 (#28336)
  • Fix the resource string WeakCatalogHashAlgorithm (#28334)
  • Localized file check-in by OneLocBuild Task: Build definition ID 13420: Build ID 2771893 (#28332)
  • Localized file check-in by OneLocBuild Task: Build definition ID 13420: Build ID 2785816 (#28320)
  • Update Appx manifest to not allow updates while PS7 is running (#28319)
  • Localized file check-in by OneLocBuild Task: Build definition ID 13420: Build ID 2774633 (#28318)
  • Localized file check-in by OneLocBuild Task: Build definition ID 13420: Build ID 2773072 (#28317)
  • Move Store version metadata to the English description (#28316)
  • Install Az.Storage for release storage publishing jobs (#28330)
  • Bump github/codeql-action/upload-sarif from 4.38.2 to 4.39.1 (#28338)
  • Bump actions/upload-artifact from 7.0.1 to 7.0.2 (#28331)
  • Bump github/codeql-action from 4.38.3 to 4.39.1 (#28333)
  • Bump ossf/scorecard-action from 2.4.4 to 2.5.0 (#28335)
  • Bump github/codeql-action/init from 4.38.2 to 4.38.3 (#28315)

SHA256 Hashes of the release artifacts

  • hashes.sha256
    • 8D602422352E207184D587EDF26E1E3962F222F5F99FFFF8C46BB07321AE63F7
  • powershell-7.6.10-1.azl4.aarch64.rpm
    • 639925885E6FB00A3C53A7BF8287863B59BBBEA42DE5DF8FD1CE7F6166301466
  • powershell-7.6.10-1.azl4.x86_64.rpm
    • 2D7898EC9DBA198ECFAB7D9DC4186DB663FE7DACBDA6CA43B30BB02AC814848F
  • powershell-7.6.10-1.cm.aarch64.rpm
    • 04ACC185EE9E44D0D91F435686E06747F1C6153C083E4ED541AEE8455B80DF0F
  • powershell-7.6.10-1.cm.x86_64.rpm
    • 02E2C6D888133442E1EA0FC4D5B28B180253AFCA13D0FC031EA02763A165662C
  • powershell-7.6.10-1.rh.x86_64.rpm
    • 77A2911F740DB71BFD458A0FA9F5C7D134917FC146DAE177FF846D82217AFBCC
  • powershell-7.6.10-linux-arm32.tar.gz
    • C075BE079BDA46DC64053AE7DAAEC4811171FE66227306F1E22ADACCBFBB2CC9
  • powershell-7.6.10-linux-arm64.tar.gz
    • 439432CDECF4418413B9A8F547E3AB4D9B40E8E4258913EC3D15FC92C67A9235
  • powershell-7.6.10-linux-musl-x64.tar.gz
    • 5B31557A9A99471692BA9733E058294FB2EA9E50419AC5ACB74C0FD278C3D9E0
  • powershell-7.6.10-linux-x64-fxdependent.tar.gz
    • 9FF3B97517CC51B33EA313C1CAE056BAC1CDF4892939FE35F9143966A3F43FF4
  • powershell-7.6.10-linux-x64-musl-noopt-fxdependent.tar.gz
    • D40CDAF135DDD8F8ABB585CF93B84D59E0BAE3B9298ED26C122C2371EAC04925
  • powershell-7.6.10-linux-x64.tar.gz
    • E261CABC91C78A9AFE8D1E5F24731AB0D38204735AB2EC94B0AF55102652E10D
  • powershell-7.6.10-osx-arm64.pkg
    • 9EFC6B40AC167BD22C2BEDC3F1AE27F58C2EFCE00FE8014FADAA5855EF57FFE7
  • powershell-7.6.10-osx-arm64.tar.gz
    • FB6F1978C7D3266D4CED9391DE6519D971EF92BD036E5B8BE62F1CCDFBDA9477
  • powershell-7.6.10-osx-x64.pkg
    • 83427523BE0639673D4F7DDFDE9A16B5094C1ED2B41F0F349BF5A08EE2239410
  • powershell-7.6.10-osx-x64.tar.gz
    • AA55BEF6375E7B1A61E860866A38AF5F2366CEB4189293E6B73B7777CB1D7793
  • PowerShell-7.6.10-win-arm64.msi
    • 732AF00C51162ECB6826BA630F19BF6536C3CE7C3B740160660DDCFB51606780
  • PowerShell-7.6.10-win-arm64.zip
    • 1D36ECAC1D8F5AC9577CFDFC426AF41F3E90CBCA6C52445E7DB167F532B3A7AB
  • PowerShell-7.6.10-win-fxdependent.zip
    • A42796EB7DD21726C6F727F2705B9A0DFF65D81708D06A435A8C171662DAEDAB
  • PowerShell-7.6.10-win-fxdependentWinDesktop.zip
    • 8D454607BDBD9A323E0048032B8BFE2F652ED8F8027307A324E837113A20CDDE
  • PowerShell-7.6.10-win-x64.msi
    • 7D8DAEA48B450D4D62FCD1AC4D6FAA7AC2DB5E11ABA5061EE81B7496ADCA8C07
  • PowerShell-7.6.10-win-x64.zip
    • 7D871531806EB1646264E4BBABD9F0C30C23355591BC756BB9909448C29AE166
  • PowerShell-7.6.10-win-x86.msi
    • 11EFFD627102455791C22BC06528633C775803F91FEA295F96FA6386E7E881A6
  • PowerShell-7.6.10-win-x86.zip
    • 221BAD2BA6EFF81F2661C8F467ECA286F89173B0E0C044C858F18DBBEACB9891
  • PowerShell-7.6.10.msixbundle
    • 911E652739E19DE80C325FD0CBCC99B00C865536299ED5813844A4083A6D0268
  • powershell-lts-7.6.10-1.azl4.aarch64.rpm
    • 579971DFAE1DB8212E0CF5EF7C25DD2730A5809A32BA3F575CD67426D8D23F3A
  • powershell-lts-7.6.10-1.azl4.x86_64.rpm
    • DA394D5C4258B717B4B09EC9583AA0879AA088A904BB67F0FE889E3695AFA348
  • powershell-lts-7.6.10-1.cm.aarch64.rpm
    • DABFAACFBD3B7067A1D49BCAD02CA125968D60C2E5E313A6130D48A161215F37
  • powershell-lts-7.6.10-1.cm.x86_64.rpm
    • EC19A47E369A3843D43559D6AD497BAF825310E29C94A9C6CB7E11389ABB2157
  • powershell-lts-7.6.10-1.rh.x86_64.rpm
    • 305C59D1CFE96A665F29BFD5DE34B614F1CDFE79F0F48E431E84CCD14F384092
  • powershell-lts-7.6.10-osx-arm64.pkg
    • BCA534EAE3B9B83B4C50FD75B2ABFDA21FAE4CC4276E55A9BC6F0A6871339D3D
  • powershell-lts-7.6.10-osx-x64.pkg
    • 0E04700E6C7DF2C121CD6B59E1307D408E5101A995E7098F048D96B86DCF84DC
  • PowerShell-LTS-7.6.10.msixbundle
    • C6CAA271D179DAE426B3536FB17569707033519649B471AD52858BF11C46149D
  • powershell-lts_7.6.10-1.deb_amd64.deb
    • 20E9BE2578EC14A092D31DF4B8F5B0DCFA280D3BE277504741974D6F4C762E47
  • powershell-lts_7.6.10-1.deb_arm64.deb
    • 6BF98EE189AEB7A4E8BDB274DC34B6C05E7539B84A2B1B139B3FDBA93B6713F1
  • powershell_7.6.10-1.deb_amd64.deb
    • 81A5A944702B116EA74C88B01BA5F1F46B1CD7C42C36D85E1BAE90DE1230B4D1
  • powershell_7.6.10-1.deb_arm64.deb
    • 7F88934E68E75ADE128334E57DA7C85F289266926A72B591C1524F3342891683
Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories