Est. 1996 Intermediate

MivaScript

Joe Austin's tag-based server-side web language for e-commerce - born in 1993 as LEHTML, commercialised as HTMLScript in 1996, renamed Miva Script on 14 October 1997, compiled to bytecode for the Empresa virtual machine since 2002, and still the language underneath the Miva Merchant shopping cart, with engine 5.52 downloadable in 2026

Created by Joseph (Joe) Austin, with David Haldy (LEHTML, 1993), Ron Ahern (C rewrite) and Jon Burchmore (1997 XML-style redesign); developed since 2007 by Miva Merchant, Inc. (renamed Miva, Inc. in 2013)

Paradigm Procedural, tag-based server-side scripting: HTML-like <Mv...> tags embedded in web pages, with functions, structures, arrays and embedded SQL
Typing Dynamic, weak; variables are untyped, undeclared and case-insensitive, with scope prefixes g. (global), l. (local), s. (system) and d. (database field); numbers use decimal floating point since MivaScript 5.50
First Appeared 1996 (HTMLScript Corporation formed and HTMLScript sold commercially; Perl-based LEHTML predecessor 1993; renamed Miva Script on 14 October 1997)
Latest Version MivaScript / Empresa engine 5.52 (build files published on docs.miva.com dated 13 August 2026); 5.38 documented on mivascript.com (9 January 2023)

MivaScript (also written Miva Script) is a proprietary, tag-based server-side scripting language for building web applications - above all the Miva Merchant e-commerce platform, which has been written in it since 1998. A Miva Script program is an HTML document sprinkled with <Mv...> tags: <MvASSIGN> sets a variable, <MvIF> branches, <MvOPENVIEW> runs a SQL query, <MvFUNCTION> defines a function, and anything inside { ... } in a tag attribute is an expression. Source files (.mv) are compiled by the Miva Script Compiler into bytecode (.mvc) that runs on the Empresa virtual machine, which plugs into Apache, IIS or FastCGI on Linux, Windows or macOS; page templates (.mvt) written in a simplified subset called the Miva Template Language (StoreMorph, MVT) are compiled on the fly by the same engine.

The language began life in 1993 as LEHTML, a Perl hack by David Haldy and Joe Austin for Austin’s San Diego hosting company; it was rewritten in C as HTMLScript, commercialised by HTMLScript Corporation from 1996, redesigned with an XML-style syntax by Jon Burchmore in 1997 and renamed Miva Script on 14 October 1997. It has been compiled rather than interpreted since 2002, gained SQL, MySQL and a template compiler in 2005, and is still maintained: engine 5.52 was published in August 2026, and every release of Miva Merchant up to Miva 26R2 (July 2026) runs on it.

The encyclopedia’s master list files MivaScript as dormant, and that is fair in one sense - it is a single-vendor language whose only significant application is that vendor’s product, it is never used for anything else, and its documentation has been frozen at version 5.38 since January 2023. But it is not dead in the way most languages on this site are: the engine still gets releases, it was moved to decimal floating-point arithmetic in version 5.50, arm64 Linux builds were added, and there is an active developer community around Miva Merchant that writes new Miva Script every day. It is better described as a living but captive language.

History and origins

LEHTML and Volant Turnpike (1993)

Joe Austin’s own account, written in 2013, dates the beginning to 1993, when he and his friend David Haldy wrote “the first version of HTMLScript in the perl programming language, which was called LEHTML (Logic Enhanced HTML)”. It ran under the first NCSA web server that supported CGI. Because Perl could evaluate code at run time, LEHTML had no expression analyser of its own: it simply translated an expression in a page into Perl syntax and handed it to Perl. Austin wrote a wrapper in C “that let it start off as a root process and then downgrade itself immediately to the ownership and permissions of the owner of the script file”, which was what made it safe to offer on Volant Turnpike, the hosting service he ran and later sold to Haldy.

HTMLScript and HTMLScript Corporation (c. 1995-1996)

Volant Turnpike’s users liked LEHTML enough that Austin and Ron Ahern reimplemented its syntax in C with a real expression analyser. Austin called the result HTMLScript, registered the name with the USPTO and formed HTMLScript Corporation with Troy McCasland and Derek Finley; Wikipedia dates the language to 1995 and the company to 1996, and the earliest archived HTMLScript home page - tagline “The Document is the Application”, borrowed in spirit from Sun’s “The Network is the Computer” - is from December 1996. Miva’s own corporate history likewise begins the company in 1996, which is why this encyclopedia uses 1996 as the year of first appearance: it is the year the language was first sold under a name that has a continuous line to today’s product.

Two design decisions from this period are worth recording. HTMLScript had no loops - no WHILE, no FOR - because, in Austin’s words, “servers did not have much processing power back then, and even one program that ‘ran away’ was enough to bring the whole server down. So, I did not implement a loop, which made it impossible for an HTMLScript server process to run away.” And it had a macro facility for self-executing code, which “was powerful, but it eventually had some security issues that had to be fixed when Ivo Truxa discovered ways to exploit it”. Loops arrived with the 1997 redesign, and macros were removed when the language became compiled in 2002.

Wally Owen took over development while Austin, McCasland and Finley did sales, marketing and support; Jeff Huber, a power user, ended up running most user support. The first big licence went to CyberSource, which used HTMLScript to build the Netscape Software Store and needed a version that spoke the native API of Netscape’s server - a server that “started springing memory leaks galore” under load. Austin hired Jon Burchmore to fix them.

From language to shopping cart: Big Boys Toys, KoolKat and the hosting bundle

Austin wrote a sample shopping cart called Big Boys Toys, and noticed that people were modifying the free sample to sell things rather than buying the language: “There was far more money in e-commerce then in the scripting language.” Roque Napoli wrote a proper catalogue-based store, KoolKat, and ValueWeb - specifically an executive named John Enright - became the first large host to bundle it with hosting accounts, under a bundle-licence scheme Austin adapted from his time at Imspace Systems and McCasland pitched to “every single hosting company he could find”. Austin credits ValueWeb and McCasland with essentially inventing the hosted e-commerce account.

Miva Script and Miva Merchant (1997-1998)

In 1997 Burchmore rewrote HTMLScript with a syntax he and Austin developed “with the help of some people from SoftQuad, using the emerging XML standard” - the <MvIF EXPR="{ ... }"> style the language has kept ever since. The new engine still accepted the old HTMLScript syntax. Burchmore then wrote KoolKat’s replacement, which became Miva Merchant.

The name changed on 14 October 1997. “HTMLScript” was a marketing problem - people who did not know what HTML was tried to pronounce it as a word - so Austin and Finley went looking for a new one. In the foreign-language section of a San Diego bookstore, with his visiting German friend Boris Slawik, Austin picked up How to Read and Write Egyptian Hieroglyphics, whose first example word was “cat”: a milk basin (“mee”) followed by a quail (“waa”). Since KoolKat had been marketed as “an electronic (cat)alog” it seemed a neat fit, and when Slawik could not pronounce “waa” and kept saying “va”, Miva was born; Austin registered miva.com and filed the trademark that day. According to Wikipedia the company was formally renamed Miva Corporation in 1998, the year Miva Merchant 1.0 shipped; versions 2.0 and 3.0 followed in 1999 and 2000 and Miva Merchant 4 in 2001. (Miva’s own “History of Miva Merchant” video compresses this: it dates HTMLScript to 1995 and places the rename to MivaScript in 1998, alongside Merchant 1.0; Austin’s first-hand account of 14 October 1997 is followed here.)

Design and features

Tags, expressions and output

Miva Script is embedded in HTML. Everything that is not a <Mv...> tag is sent to the browser as-is (subject to the file’s STANDARDOUTPUTLEVEL, which controls whether plain text and HTML outside tags are emitted); everything inside { } in a tag attribute is an expression. Tags come in paired form (<MvIF>...</MvIF>, <MvWHILE>...</MvWHILE>, <MvFUNCTION>...</MvFUNCTION>) and stand-alone form (<MvASSIGN>, <MvEVAL>, <MvSKIP>). A minimal program:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<MIVA STANDARDOUTPUTLEVEL = "text,html">

<MvASSIGN NAME = "g.name" VALUE = "World">
<MvEVAL EXPR = "{ 'Hello, ' $ g.name $ '!' }">

<MvIF EXPR = "{ s.tm_hour LT 12 }">
    Good Morning.<br>
<MvELSE>
    Good Afternoon.<br>
</MvIF>

The expression language is its own small thing: $ concatenates strings, comparison operators are spelled EQ, NE, LT, LE, GT, GE (and AND, OR, NOT), ROUND and CRYPT are operators, and a large library of built-in functions - gettoken(), substring(), indexof(), slugify(), miva_array_sort(), crypto_evp_sign(), gdImageCreate() and hundreds more - is called from inside braces.

Variables and scope

Variables are untyped, undeclared and case-insensitive, and every name carries a scope prefix:

PrefixScope
g.global - visible for the whole request
l.local - inside an <MvFUNCTION>
s.system - read-only values such as s.tm_hour, s.remote_addr, s.documentroot
alias.d.fielda field of the current record of an open database view

Arrays use square brackets and structures use colons, so g.users[1]:firstname is the firstname member of the first element of g.users; <MvASSIGN> can address the same thing with INDEX and MEMBER attributes. Later versions added <MvREFERENCE> and <MvREFERENCEARRAY> for by-reference aliases and the VAR keyword in parameter lists for by-reference function arguments.

Functions

1
2
3
4
5
<MvFUNCTION NAME = "add" PARAMETERS = "num1, num2" STANDARDOUTPUTLEVEL = "">
    <MvFUNCTIONRETURN VALUE = "{ l.num1 + l.num2 }">
</MvFUNCTION>

<MvASSIGN NAME = "l.grand_total" VALUE = "{ add(l.subtotal, l.shipping_charges) }">

Functions in other compiled files are called with <MvDO FILE="..." NAME="l.result" VALUE="{ some_function(...) }">, which is the mechanism by which Miva Merchant’s modules are loaded: the store core MvDOs into a module’s .mvc and calls entry points with agreed names.

Databases: xBase, MivaSQL, MySQL and beyond

Wikipedia singles out as “one of the distinguishing features of Miva Script” its native support for dBase III-style .dbf tables with a proprietary .mvx index format. <MvOPEN>, <MvFIND>, <MvSKIP>, <MvGO>, <MvADD>, <MvUPDATE> and <MvDELETE> navigate and modify such tables record by record, which is how every Miva Merchant store up to version 4 stored its products and orders. Empresa 5 (2005) added SQL: MivaSQL is a SQL access layer over the same xBase files, and native connectors exist for MySQL (the database Miva Merchant 5 was rebuilt around), PostgreSQL (from engine 5.24) and, historically, Oracle and ODBC (ODBC support was later dropped). The idiom in a Merchant module is:

1
2
3
4
5
6
7
8
<MvOPENVIEW NAME = "Merchant" VIEW = "Products"
            QUERY = "SELECT * FROM Products WHERE code = ?"
            FIELDS = "l.product_code">
<MvWHILE EXPR = "{ NOT Products.d.EOF }">
    &mvte:Products:d:name;<br>
    <MvSKIP NAME = "Merchant" VIEW = "Products">
</MvWHILE>
<MvCLOSEVIEW NAME = "Merchant" VIEW = "Products">

Batteries for a web server

Because the language was always meant to be the whole application layer of a shared-hosting store, the engine carries a lot in the box: <MvCALL> for outbound HTTP(S) requests with certificate pinning, <MvSMTP> and <MvPOP> for mail (TLS/STARTTLS with authentication since 5.18), <MvIMPORT>/<MvEXPORT> for flat files, <MvCAPTURE> to capture output into a variable, <MvLOCALIZED> for translations, file-system, tar and XML functions, a full OpenSSL-backed crypto library (Blowfish, RSA, EVP digests and ciphers, X.509 and PKCS#7 handling), the libgd graphics library, a Redis client (5.32) and, from about engine 5.24, asynchronous tasks (<MvASYNCHRONOUS>, miva_async_sleep() and friends).

Compiled, not interpreted

Until 2002 Empresa interpreted Miva Script directly, and the version 3.9x interpreters (the last was 3.9705) were a transitional form that already implemented some version-4 features such as arrays. The Miva Script Compiler, introduced in mid-2002, changed the model: mvc file.mv produces file.mvc, a platform-independent bytecode that the Empresa 4.x virtual machine (and its desktop twin, Mia) executes. Miva promoted two benefits - performance, since code “does not need to be parsed every time the application is executed”, and closure of source code, since merchants could no longer edit (and thereby break) the store’s scripts. No benchmark figures were published for either the 2002 compiler or later releases, so no quantified performance claim can be made here. The compiler is a proper toolchain: alongside mvc there is an assembler (mvasm), a coverage tool (mvcov) and a profiler (mvprof), and options such as -p all warn about unscoped variables.

Compilability required changes: the old HTMLScript syntax and the run-time macro facility - “often considered a security risk”, as Wikipedia puts it - were removed. Miva Merchant 4.14 was the first compiled release; from that version the store’s complete source was no longer distributed, and a February 2007 forum thread titled “Open Source MivaScript” shows developers still smarting about it (“Merchant 4.13 and earlier are open source, v4.14 and later are not”). The compiler was originally a paid product; Wikipedia states that it was made free in May 2005, and it has been a free download ever since.

Templates: StoreMorph and MVT

Miva Merchant 5 (2005) introduced a page-template system, StoreMorph, and with it a second language. The Miva Template Language (MVT) is a simplified subset of Miva Script - <mvt:if>, <mvt:foreach>, <mvt:assign>, <mvt:while>, <mvt:item>, later <mvt:do> and <mvt:call> (engine 5.21) - with &mvt:product:name; entities for output. .mvt templates are compiled on the fly by miva_template_compile() inside the engine, so store designers can edit them in the admin interface without a compiler, while module developers extend what templates can do by writing Miva Script. Engine 5.20 (2014) added mvt:foreachcontinue, mvt:foreachstop, mvt:whilecontinue and mvt:whilestop, and backslash escapes in template expressions.

Evolution

PeriodWhat changed
1993LEHTML in Perl, for NCSA httpd CGI, on Volant Turnpike
c. 1995-1996HTMLScript: C reimplementation with its own expression analyser; no loops; macros; HTMLScript Corporation (1996)
1997XML-style redesign by Jon Burchmore; renamed Miva Script 14 October 1997; Miva Merchant written in it
1998-2001Empresa interpreter (to 3.9705); Miva Merchant 1.0-4
2002Script Compiler and Empresa 4 virtual machine; .mvc bytecode; HTMLScript syntax and macros dropped; Miva Merchant 4.14
2005Empresa 5: MySQL, MivaSQL, page-template compiler (StoreMorph); Miva Merchant 5
2007-2008libgd graphics functions (5.07); Miva Merchant 5.5
2010Empresa 5.10: MvFOR, MvFOREACH, continue/stop tags, debug logging
2014Empresa 5.20: HTTP/1.1 chunked encoding, SNI, template loop control; Miva Merchant 9
2015-20195.23-5.33: slugify(), PostgreSQL, FastCGI, asynchronous tasks, X.509/PKCS#7, miva_joinstring(), EVP signing, Redis, MySQL write segregation
2020-2023Miva 10 on the same engine; 5.38 signed macOS binaries
2024-20265.50 decimal floating-point arithmetic (mpdecimal); 5.52 with Ubuntu 22 arm64 builds

The most consequential change of the whole sequence was 2002’s move to compilation, which turned Miva Script from an embedded interpreted language, editable in place, into a compiled one with a closed vendor toolchain; the second was 2005’s SQL and template layers, which are what made the language’s continued existence under three different owners (Miva Corporation, MIVA Inc. and Miva, Inc.) possible. Since then evolution has been incremental and library-driven - one or two engine releases a year adding whatever Miva Merchant needed next: SNI, asynchronous tasks, hardware security modules, Redis, decimal arithmetic.

Corporate history in brief

The language has had one product and three owners. Miva Corporation (HTMLScript Corporation until the Miva rename of October 1997; Wikipedia gives 1998 for the formal change of corporate name) was sold to the pay-per-click search company FindWhat.com, which announced the roughly $8 million deal on 3 September 2003 and closed it in January 2004; FindWhat liked the brand enough to rename itself MIVA, Inc. in June 2005 and ran the San Diego business as its Small Business division. On 6 August 2007 a management group led by Russell Carroll and Rick Wilson (Austin’s former VP of sales) bought that division and formed Miva Merchant, Inc.; MIVA, Inc. itself sold its media business and became Vertro in June 2009. Miva Merchant, Inc. bought the Miva name back and became Miva, Inc. on 3 June 2013. It remains privately held in San Diego, with Rick Wilson as CEO since April 2017, and describes its software as running on “the proprietary Miva Script language”.

Current relevance

In August 2026 the language is in a curious state: fully alive as infrastructure, entirely invisible as a language.

  • Engine and tools are current. According to the docs.miva.com download pages, Empresa 5.52 is a free download for Ubuntu 20 (x64), Ubuntu 22 (arm64), CentOS 6 and 7, macOS x64 and Windows IIS 7 (x86 and x64), plus FastCGI builds for CentOS 7 and Ubuntu 20; the compiler 5.52 for Ubuntu 20, CentOS 6/7, macOS x64 and Windows, and Mia 5.52 for Windows only; the engine files are dated 13 August 2026. MivaScript 5.50 replaced binary with decimal floating point throughout - an unusual and thoughtful change for a language whose entire life is spent adding up prices.
  • The platform is current. Miva 10 (September 2020) and the Miva ‘26 releases (26R1 in April 2026, 26R2 in July 2026) are Miva Script applications, and Miva’s developer documentation, training courses (“MivaLearn”) and forums are about writing Miva Script modules and MVT templates for them.
  • The language reference is not. mivascript.com, the official language site, documents version 5.38 (January 2023); the 5.50 decimal change is described only on the compiler download page. The Wikipedia article, tagged for lack of sources since 2009 and for conflict of interest since 2013, still lists 5.35 as the stable release.
  • Use outside Miva Merchant is negligible. Wikipedia’s understatement is that the language “is significantly less widespread than other popular web languages”; in practice it is used to extend one product. The February 2007 plea to open-source it so that it might “gain traction like PHP” went unanswered, and nothing has changed since.
  • Tooling exists. The Miva IDE extension for Visual Studio Code (and a Sublime Text package), published on GitHub by Miva Professional Services and maintained by Max Hegler of Miva, provides highlighting, completion, hover documentation, go-to-definition and linting for Miva Script and MVT, including warnings about XSS-prone constructs.

Whether that adds up to “dormant” depends on what one is measuring. As a language with a community, a roadmap and users beyond one vendor, MivaScript has been dormant since the early 2000s. As a piece of software, it is maintained more actively than most of the languages on this site.

Why it matters

MivaScript is a fossil record of a road not taken. In 1993-1996, before PHP (1995), ColdFusion (1995) and ASP (1996) settled what server-side scripting would look like, HTMLScript was one of the earliest “logic in the page” languages, with a security model (the setuid wrapper that dropped to the file owner’s permissions, the deliberate absence of loops) designed for the shared-hosting reality of the NCSA-httpd era. Its XML-style tag syntax of 1997 is a direct contemporary of ColdFusion’s CFML and a precursor of the tag-based templating that JSP and later systems adopted, and the .mv -> .mvc compilation model of 2002 anticipated the “compile once, deploy bytecode” approach that PHP accelerators and opcode caches were converging on.

More concretely, it is the language of one of the first hosted e-commerce products. Joe Austin’s observation that “there was far more money in e-commerce than in the scripting language” - and ValueWeb’s decision to bundle KoolKat with hosting accounts in 1997 - describes the business model that Yahoo! Store, osCommerce hosts and eventually Shopify would follow. That Miva Merchant is still shipping on the same language nearly thirty years later, having outlived two corporate parents, makes MivaScript one of the longest-lived proprietary web languages in continuous use - and, for anyone who has ever wondered what a .mvc file on an old shared host is, this is the answer.

Further reading

Timeline

1993
David Haldy and Joseph Austin write LEHTML (Logic Enhanced HTML), a Perl program for the first NCSA web server to support CGI. It has no expression evaluator of its own - expressions are translated into Perl and handed to Perl - and Austin wraps it in a C program that starts as root and immediately drops to the permissions of the script's owner, so that it can be offered safely on his hosting service, Volant Turnpike
1995-1996
Because Volant Turnpike's customers like LEHTML, Austin and Ron Ahern reimplement its syntax in C with a proper expression analyser; Austin names the result HTMLScript, registers the name with the USPTO, and in 1996 forms HTMLScript Corporation with Troy McCasland and Derek Finley. The language deliberately has no WHILE or FOR loop, so that no script can run away on the underpowered shared servers of the day, but it has a 'macro' facility for self-executing code. The first HTMLScript home page (December 1996) carries the tagline 'The Document is the Application'
1997
CyberSource licenses HTMLScript to build the Netscape Software Store, and Austin hires Jon Burchmore to fix the memory leaks the Netscape server API provokes. Austin's sample shopping cart 'Big Boys Toys' proves more popular than the language itself, so Roque Napoli writes KoolKat, a catalogue-based store; ValueWeb bundles it with hosting accounts - according to Austin, effectively the invention of the hosted e-commerce account
1997
Jon Burchmore rewrites HTMLScript with a more consistent, XML-style tag syntax developed with input from SoftQuad; the new engine also still runs old HTMLScript code. On 14 October 1997 the language becomes Miva Script and the company Miva - the name is the Egyptian hieroglyphic word for 'cat' (milk basin 'mee' plus quail 'waa', as pronounced by a German friend who could not say 'waa'), a pun on KoolKat's 'electronic (cat)alog'. Burchmore's replacement for KoolKat becomes Miva Merchant
1998-2001
Miva Corporation ships Miva Merchant 1.0 in 1998, with 2.0 and 3.0 following in 1999 and 2000 and Miva Merchant 4 in 2001. The Empresa engine of this era is an interpreter (last interpreter version 3.9705) for Unix and Windows web servers, and the store's Miva Script source is editable by merchants - a flexibility that makes upgrades fragile
2002
The Miva Script Compiler arrives in mid-2002: .mv source is compiled to platform-independent .mvc bytecode run by Empresa 4.x, which becomes a virtual machine rather than an interpreter. The old HTMLScript syntax and runtime-evaluated macros are dropped. Miva Merchant 4.14 is the first compiled release, and from 4.14 the store's source is no longer shipped in full (a Limited Source Kit is offered instead)
2003-2005
FindWhat.com announces on 3 September 2003 that it will buy Miva Corporation for about $8 million; the deal closes in January 2004 and in June 2005 FindWhat.com renames itself MIVA, Inc., with the San Diego operation becoming its Small Business division. Miva Merchant 5 (2005) is 'a complete overhaul': it is restructured to run on MySQL, and Empresa 5 adds native SQL, the MivaSQL access layer for the old dBase III-style tables, and a page-template compiler for the new StoreMorph template language
2007-2008
On 6 August 2007 a management team led by Russell Carroll (CEO) and Rick Wilson (EVP) buys the Miva Small Business division from MIVA, Inc. and forms Miva Merchant, Inc. Miva Merchant 5.5 follows - Miva's own history video dates it to 2007, while the company's press releases announced it on 1 April 2008 as 'a few short weeks' away and reportedly announced its release on 8 May 2008; the 5.07 engine of the same period adds built-in functions for the whole of the libgd 2.x graphics library (Wikipedia says 5.08)
2010-2011
Empresa 5.10 (14 December 2010) finally gives the language conventional loops - MvFOR and MvFOREACH with FIRST/NEXT/LAST parameters - plus continue/stop tags for every loop construct, by-reference string functions and a debug-logging facility; 5.13 (12 July 2011) adds srandom() and encrypted PEM certificate support. Miva Merchant 5.5 Production Release 8 (June 2011) requires engine 5.10 or later
2013-2014
Miva Merchant, Inc. reacquires the Miva name and trademark and becomes Miva, Inc. again on 3 June 2013. Empresa 5.20 (14 May 2014) - required for Miva Merchant 9 - brings HTTP/1.1 requests with chunked encoding, SSL SNI, MivaSQL LENGTH() and BETWEEN, and loop-control tags for the template language; Miva Merchant 9, 'the most significant redesign in the history of the product', ships on 13 November 2014
2015-2019
Steady engine releases: 5.23 (24 September 2015) adds slugify() and symbolic-link functions; 5.24 adds a PostgreSQL connector, a FastCGI build, the MvASYNCHRONOUS block and miva_csv_encode(); 5.27 (3 March 2017) extends X.509 and PKCS#7 handling; 5.31 (8 March 2018) adds miva_joinstring(); 5.32 adds crypto_evp_sign()/verify() and Redis support; 5.33 (11 February 2019) adds miva_struct_member_callback() and MySQL write segregation (a separate write connection)
2020-2023
Miva 10, described in its press release as 'a complete re-imagination of the Miva admin experience', is released on 23 September 2020, still running on the Miva Script engine. Engine 5.38 (9 January 2023), the version documented on mivascript.com, fixes segmentation faults and asynchronous-task bugs and ships macOS binaries that are signed and notarised
2024-2026
MivaScript 5.50 switches all arithmetic from binary to decimal floating point (IEEE decimal64 via the mpdecimal library: 16 digits, round-half-even), so that numbers and strings convert losslessly and database DECIMAL columns are read without passing through a binary double. By August 2026 engine, Mia and compiler 5.52 are the current downloads (Ubuntu 20/22 including arm64, CentOS 6/7, macOS x64, Windows IIS x86/x64; build files dated 13 August 2026), and Miva 26R2 (21 July 2026) is the latest release of the platform built on it

Notable Uses & Legacy

Miva Merchant / Miva 10 / Miva '26 (1998-present)

The reason the language exists and survives: Jon Burchmore's 1997 replacement for KoolKat became Miva Merchant 1.0 in 1998 and, through versions 4 (2001), 5 (2005), 5.5 (2008), 9 (2014) and 10 (2020) to the 26R2 release of July 2026, the store's core, its admin interface and its module API have all been Miva Script compiled to .mvc bytecode and run by the Empresa engine. Miva, Inc. of San Diego still describes its software as running on 'the proprietary Miva Script language' and publishes Empresa 5.52 for that purpose

KoolKat and the hosted e-commerce bundle (1997)

Roque Napoli's KoolKat, written in HTMLScript after Joe Austin's 'Big Boys Toys' sample cart showed that customers wanted stores rather than a language, was bundled with hosting accounts by ValueWeb (and then SimpleNet and many other hosts) under a bundle-licence scheme Austin devised. That model - an e-commerce application pre-installed with a web-hosting account - is how most early Miva Merchant stores were sold, and why the Empresa engine came to be installed on so many shared-hosting servers

CyberSource's Netscape Software Store (HTMLScript era)

The first big licence for HTMLScript: CyberSource (now part of Visa) licensed the language to build the Netscape Software Store and had HTMLScript Corporation produce a version that ran against the native API of Netscape's web server. Austin recalls that the Netscape server 'started springing memory leaks galore' under load, which is why Jon Burchmore was hired - the hire that led directly to the 1997 redesign of the language

Third-party module and template development

Miva Merchant's extension model is Miva Script: payment, shipping, tax, reporting and UI modules are .mv files compiled with the free Script Compiler and tested on Mia, while store designers work in the StoreMorph/MVT template language that the engine compiles on the fly. The ecosystem has its own tooling - the Miva IDE packages for Visual Studio Code and Sublime Text (syntax highlighting, completion, hover documentation and linting for both Miva Script and MVT, published on GitHub by Miva Professional Services and maintained by Max Hegler of Miva), the mvcov coverage and mvprof profiling tools shipped with the compiler, and Miva's own developer training courses

Miva Mia, the desktop engine (2002-present)

Mia is Empresa packaged as a personal web server for Windows, listening on a local port (typically 8000 or 8080) so that developers can run and debug compiled Miva Script and complete stores offline with the same xBase, MivaSQL and MySQL database support as the server engine. It has been updated in step with every Empresa release since the compiled era began and is at version 5.52 in 2026

Language Influence

Influenced By

HTML XML Perl

Influenced

Miva Template Language (MVT / StoreMorph)

Running Today

Run examples using the official Docker image:

docker pull
Last updated: