The Problem

Classic ASP applications written in VBScript are facing an existential threat — not because ASP itself is broken, but because Microsoft is removing VBScript from Windows entirely.

Classic ASP relied on VBScript as its scripting engine. No VBScript means no Classic ASP. For organisations and developers running ASP applications that still work perfectly fine and serve real users, this is a serious problem.

ASPPY is the answer.


Microsoft's VBScript Deprecation Timeline

VBScript (Visual Basic Scripting Edition) is a lightweight scripting language first introduced by Microsoft in 1996. It has been available as a system component in Windows and widely used for automating tasks and controlling applications, as well as embedded within HTML pages — commonly in conjunction with Active Server Pages (ASP).

Microsoft announced a phased deprecation plan in May 2024. The three phases are as follows:

When Phase 3 arrives, all VBScript dynamic link libraries will be removed from Windows, and projects that rely on VBScript will stop functioning entirely.


Why Microsoft Is Removing VBScript

This move is part of a broader strategy to remove Windows and Office features that threat actors use as attack vectors to deliver malware. Attackers have used VBScript in campaigns distributing strains like Lokibot, Emotet, Qbot, and DarkGate.

Microsoft states that technology has advanced over the years, giving rise to more powerful and versatile scripting languages such as JavaScript and PowerShell — languages that offer broader capabilities and are better suited for modern web development and automation tasks.

In short: VBScript is old, unmaintained, and a security liability. Its last stable release (5.8) dates back to 2010 — over fifteen years ago.


The Impact on Classic ASP

Classic ASP applications written in VBScript will stop working once Phase 3 is reached. This affects:

For many businesses, rewriting these applications from scratch in a modern language is not a realistic short-term option. The applications work, they serve users, and a full rewrite is expensive and risky.


What ASPPY Is

ASPPY is a self-contained Classic ASP execution engine that runs independently of the Windows VBScript component. It bundles its own VBScript interpreter, meaning it does not depend on Windows to provide vbscript.dll.

Crucially, ASPPY is built entirely in Python. Python runs on Windows, Linux, and macOS — which means ASPPY does too. This is a fundamental architectural decision that makes ASPPY truly platform-independent. A Classic ASP application can now be hosted on a Linux VPS, a macOS development machine, or a Windows Server, without any changes to the ASP code itself. Linux typically runs Python 10–30% faster than Windows, increasing the performance advantage of ASPPY over Classic ASP/VBScript on IIS.

This means:


Platform Independence — Windows, Linux, Android and macOS

Because ASPPY is built on Python, it is not tied to any operating system. This opens up hosting scenarios that were never previously possible for Classic ASP:

PlatformWeb ServerASPPY
WindowsIIS, Apache, nginx
Linuxnginx, Apache
macOSnginx, Apache
AndroidKSWEB, Servers Ultimate, UserLAnd + nginx

A Classic ASP application that today runs on a Windows Server with IIS can tomorrow be migrated to a Linux cloud instance at a fraction of the hosting cost — with zero changes to the ASP code. Developers on macOS can run and test Classic ASP applications locally without needing a Windows machine or a VM.

Android support is a particularly striking example of just how platform-independent ASPPY is. Python runs on Android via environments like Termux or UserLAnd, and several web server applications are available for Android:

This means a Classic ASP application can technically be developed, tested, or even served from an Android device — something that was never conceivable with native Classic ASP on Windows.

This platform independence is a second major reason ASPPY was created, entirely separate from the VBScript deprecation issue. It fundamentally changes where Classic ASP can run.


How ASPPY Fits Into the IIS Setup

The web.config described in the companion wiki page routes .asp requests to ASPPY via IIS Application Request Routing (ARR). From the browser's perspective, nothing changes — the same URLs, the same responses, the same behaviour. ASPPY is completely invisible.

Browser → IIS (port 80/443)
              │
              ├─ *.php   → PHP via FastCGI
              ├─ *.aspx  → ASP.NET
              ├─ static  → IIS StaticFile module
              └─ *.asp   → ASPPY (port 8080)

On Linux or macOS, nginx or Apache fills the same role as IIS — proxying .asp requests to ASPPY on port 8080 while handling everything else natively.

When Microsoft eventually removes VBScript from Windows in Phase 3, IIS-hosted Classic ASP applications protected by this setup will continue running without interruption.


ASPPY Picks Up Where Classic ASP Left Off

ASPPY is not just a compatibility layer — it also extends Classic ASP with features that developers always wished were there but Microsoft never added.

Extended Request and Response Objects

Classic ASP's Request and Response objects were functional but limited, especially around file handling. ASPPY adds two long-missing capabilities:

New Built-in Modules

ASPPY ships with a set of native modules that address the gaps Classic ASP developers have always worked around with third-party ActiveX components or external tools:

These modules make ASPPY a genuinely capable modern web platform, not simply a preservation effort. Existing Classic ASP code runs unchanged, and new code can take advantage of these modules immediately — no third-party components, no COM registration, no legacy ActiveX dependencies.


Summary

Classic ASP on IIS (native)Classic ASP via ASPPY
Depends on Windows VBScript✅ Yes❌ No
Survives Phase 3 removal❌ No✅ Yes
Runs on Linux and macOS❌ No✅ Yes
Runs on Android❌ No✅ Yes
Built on Python❌ No✅ Yes
Code changes requiredNone
Works with existing IIS setup✅ Yes✅ Yes (via ARR proxy)
Works with nginx / Apache❌ No✅ Yes
Handles static files, PHP, ASPX✅ Yes✅ Yes (proxy handles these)
Request.Files (native upload handling)❌ No✅ Yes
Response.File (native file flushing)❌ No✅ Yes
Built-in ZIP, PDF, image, JSON modules❌ No✅ Yes

ASPPY is not a workaround — it is a forward-compatible replacement engine that lets Classic ASP applications outlive the platform they were built on.