Est. 2002 Intermediate

GWScript

A C-like proprietary scripting language, also written gws or GW-Script, embedded in the German end-to-end monitoring suite GW-TEL INFRA-XS and used to drive synthetic transactions for load testing, quality assurance and service level management.

Created by Geyer & Weinig EDV-Unternehmensberatung GmbH, a German IT consultancy and monitoring-tool vendor. No individual language designer is publicly credited; the only GWScript author named anywhere in the public record is the person credited in the comment header of a single 2005 code sample, given there as Timo Boll of Geyer und Weinig GmbH

Paradigm Imperative, procedural scripting. The language is embedded rather than standalone: scripts are executed by the INFRA-XS measurement agents, and the vendor has also described building a domain-specific language on top of gws
Typing Static declarations in the C tradition. The single public sample declares variables with an explicit int type before use; no complete type system has been published
First Appeared Commonly catalogued as 2002, a date this page could not independently corroborate. The earliest publicly verifiable GWScript artifact is a code sample dated 20 April 2005. The host product it belongs to, GW-TEL INFRA-XS, is described by its vendor as under continuous development since 1994
Latest Version Not versioned publicly. GWS ships as a component of GW-TEL INFRA-XS; the vendor reportedly announced INFRA-XS 10 in its Insider channel in September 2024

GWScript - written gws or GW-Script by its vendor - is a proprietary, C-like scripting language embedded in GW-TEL INFRA-XS, an end-to-end monitoring suite built by the German firm Geyer & Weinig EDV-Unternehmensberatung GmbH. It exists for one purpose: to describe, step by step, what a synthetic user does to an application, so that the time and outcome of every step can be measured continuously and reported against a service level agreement.

It is a good example of a category of language that is numerically enormous and almost entirely undocumented in public: the vendor scripting language. Thousands of commercial products embed one. They have real syntax, real type systems and real standard libraries, they are written by real programmers for a living, and they leave almost no public trace, because the only people who write them are customers working inside a licensed product. GWScript appears in language catalogues at all only because someone at the company posted a program that sings about beer.

What the Public Record Actually Contains

Honesty about sourcing matters more than usual here, because there is so little to source from. Nearly everything specific that can be said about GWScript syntax comes from a single artifact: a 99 Bottles of Beer implementation published on 20 April 2005, whose comment header names Timo Boll of Geyer und Weinig GmbH as its author and points at the company’s site. That header carries the vendor’s own one-sentence definition of the language, describing GWS as a C-like scripting language used in load testing, quality assurance and service level management.

The other primary source is the vendor’s own writing about the host product, which confirms that gws is an integral component of INFRA-XS and describes what has been built with it. No public grammar, reference manual, interpreter or downloadable toolchain has been located. Nothing on this page should be read as a claim about GWScript’s full feature set; it is a description of a small, verifiable window onto a larger proprietary language.

The 2002 first-appearance date carried by language catalogues, and reproduced in this page’s front matter for consistency with them, could not be corroborated against any primary source. What is verifiable is that GWScript existed and was in use by April 2005, and that its host product dates to the mid-1990s.

The One Public Program

The surviving sample is worth reading closely, because a dozen lines of a language written for a purpose tell you more about that purpose than a marketing page does.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
// GWScript (GWS) is a C-like scripting language used in (load) testing,
// quality assurance and service level management.
// This piece of code uses Windows Notepad as an "output device".

main () {
  int l_bottle_cnt;

  if (execcmd( sysgetenv( "windir" ) + "\\notepad.exe", 512 + 5 ) > 0) {
    for (l_bottle_cnt = 99; l_bottle_cnt > 0; l_bottle_cnt --) {
      kputs( strform( "%d bottle(s) of beer on the wall,\r", l_bottle_cnt ));
      kputs( strform( "%d bottle(s) of beer.\r", l_bottle_cnt ));
      kputs( "Take one down, pass it around,\r" );
      kputs( strform( "%d bottle(s) of beer on the wall.\r\r", l_bottle_cnt - 1 ));
    }
  }
}

Almost every line is evidence of something.

The surface is C. A main() entry point with no return type, a declaration block at the top of the function, int as a primitive, C-style // comments, a three-clause for loop, postfix --, and printf conventions preserved intact in strform down to %d. A C programmer can read this without instruction, which is the entire point of a language aimed at test engineers rather than at compiler enthusiasts.

But + concatenates strings. sysgetenv("windir") + "\\notepad.exe" builds a path. C-like syntax, higher-level string semantics - the standard bargain of a scripting language that borrows C’s punctuation without inheriting its memory model.

The naming convention is disciplined. l_bottle_cnt carries an l_ prefix for a local. That is a Hungarian-descended house style typical of large, long-lived script libraries maintained by many hands, and it suggests the language is used at a scale where such conventions pay for themselves.

The library reveals the domain. Three of the four called functions are not general-purpose:

FunctionWhat it doesWhat it implies
sysgetenvReads an environment variableScripts are aware of the host they run on and adapt to it
execcmdLaunches a process, taking flags and returning a statusScripts start the application under test, and branch on whether it started
kputsSends characters as keystrokes to the focused windowThe script drives a real GUI as a user would, not an API
strformFormats a string, printf-styleGeneral text handling, in service of the above

kputs is the tell. This is not a language for computing values; it is a language for operating an application. The whole sample is a synthetic transaction in miniature: locate the program, launch it, verify it launched, type into it. Replace Notepad with an SAP GUI or a banking front end, add timing and assertion around each step, and it is a production INFRA-XS measurement.

The failure handling is characteristic. if (execcmd(...) > 0) guards the entire body. A monitoring script that keeps typing into a window that never opened produces not a failed measurement but a corrupt one, so checking the launch is not defensive politeness - it is the difference between a usable data point and a lie in a service level report.

Design Philosophy

Three commitments show through even in so small a sample.

Familiarity over elegance. The audience is QA and operations engineers, not language enthusiasts. Choosing C syntax in the early 2000s meant that anyone who had written C, C++, Java, JavaScript or PHP could start immediately, and it meant the vendor never had to argue for its syntax.

Automation of the human, not the interface. Contemporary alternatives frequently measured protocols: fire an HTTP request, time the response. Driving the actual GUI through keystrokes measures what the user measures, including the client-side rendering, the terminal-server round trip and the fat-client delay that a protocol-level probe never sees. That is a harder engineering problem and a more honest number, and it explains why the language needs process control and input injection in its core library rather than in an add-on.

A substrate, not a finished product. The 2018 DSL work is the clearest statement of intent. Rather than adding a feature to INFRA-XS for adaptive API monitoring, the vendor’s engineers wrote a domain-specific language in gws that reads API metadata and rewrites its own test cases when the interface changes. A language used that way is treated by its own maintainers as a general programming substrate, not as a macro recorder.

Where GWScript Fits

The market GWScript was built for was crowded and is largely forgotten. Mercury Interactive’s LoadRunner scripted virtual users in a C dialect; WinRunner used TSL; Segue SilkTest used 4Test; Compuware and others fielded their own. Each vendor shipped a bespoke language because each needed primitives - virtual user identity, transaction boundaries, GUI object addressing, correlation of dynamic session values - that no general-purpose language of the era supplied.

Two things distinguish GWScript within that group. It came from a small independent German vendor rather than one of the large American test-tool companies, so it was never acquired, absorbed or retired the way most of its contemporaries were. And its centre of gravity was production monitoring and service level management rather than pre-release load testing. A load test script runs for an afternoon before a release; a monitoring script runs every few minutes for a decade. That difference shapes a language’s priorities toward stability, defensive checks and long-term maintainability rather than expressiveness.

Platforms

Only Windows-side operation is documented in the sources reviewed here. The public sample reads the windir environment variable and launches notepad.exe, and the vendor’s own multisession container announcement describes running parallel GUI applications and Citrix terminal sessions on a Windows measurement agent. The vendor markets INFRA-XS more broadly, including monitoring of web, mobile and mainframe applications and deployment in data centres or leading cloud environments, but this page makes no claim about which platforms the GWScript runtime itself executes on beyond the Windows agent evidence above.

Status: Dormant in Public, Alive in Private

Language catalogues classify GWScript as dormant, and by the measures those catalogues apply - public releases, open documentation, community, package ecosystem, visible code - that is correct. There has been essentially nothing since the 2005 sample.

The vendor record says something different. The 2018 article describes active DSL development in gws; INFRA-XS reportedly reached version 10 in September 2024, with Git integration for managing monitoring agents; and the vendor still sells and develops the suite. The language is therefore best described as commercially live and publicly invisible.

That gap is itself the interesting fact. A language can plausibly be written every working day by paid engineers inside licensed enterprise deployments, and still be indistinguishable from a dead language to anyone outside that customer base - because there is no repository to count stars on, no questions to ask on a forum, and no way in.

Why It Matters

GWScript will not appear in a history of programming language design. It contributed no new idea; it deliberately borrowed a syntax that was already twenty years old when it adopted it.

Its interest is as a specimen. It documents what the enormous, unlit portion of the programming language population actually looks like: a competent C-like scripting layer, a standard library shaped entirely by one domain, a naming convention that implies a large maintained codebase, and a total public footprint of about fifteen lines of code, contributed to a joke website, that happen to be the only reason anyone outside its customers knows the language ever existed.

It is also a reminder about how catalogue metadata is made. Because a single anonymous submission in 2005 caught the language, GWScript is enumerated, dated, given a paradigm and a category, and reproduced across derived lists - each of which restates a first-appearance year that, so far as this page could determine, nobody ever published a source for.

Timeline

1994
Geyer & Weinig begins development of the monitoring suite that becomes GW-TEL INFRA-XS. The company states the product has been under continuous development since this year, though it does not date the introduction of the embedded scripting language
1995
The vendor reports the first production deployment of the suite, in the IT infrastructure of a large German corporation, to monitor the service quality and performance of IT business processes from the end user perspective. This is the application domain GWScript would later serve
2002
The year most commonly given in language catalogues for the first appearance of GWScript. This page found no primary source confirming it, and treats the date as approximate
2005
On 20 April, a GWScript implementation of the 99 Bottles of Beer program is published on 99-bottles-of-beer.net, credited in the source header to Timo Boll of Geyer und Weinig GmbH. Its comment header gives the only concise public definition of the language: "GWScript (GWS) is a C-like scripting language used in (load) testing, quality assurance and service level management." This remains the principal publicly accessible sample of GWScript code
2016
The vendor announces the INFRA-XS multisession container, which reportedly runs multiple GUI applications and Citrix terminal sessions in parallel on a single Windows measurement agent with isolated resources. The vendor is reported to describe roughly 8 to 16 parallel measurements per agent as achievable; this is a vendor figure with no published hardware baseline, workload definition or measurement methodology, and should not be read as a benchmark. The feature raises the number of scripted transactions one agent host can carry
2018
The vendor publishes an account of building a domain-specific language inside gws to monitor a customer API that was still in pilot and changing frequently. The DSL reads the API metadata, detects structural or behavioural changes, and adapts the generated test cases without manual intervention. The post is the clearest public evidence that gws is a general enough scripting substrate to host a DSL, and it explicitly calls gws "an integral component of the monitoring software GW-TEL INFRA-XS"
2020
The vendor states that INFRA-XS 8.x customers can migrate to 9.x by a straightforward update installation, indicating that scripted monitoring workflows carry forward across major host-product versions
2024
INFRA-XS 10 is reportedly announced in the vendor Insider channel in September, adding direct support for Git and for hosted services including GitHub, GitLab and Bitbucket for managing monitoring agents, with Mercurial retained but marked outdated. Placing agent content under mainstream version control would be a significant change in how gws scripts are stored and shipped

Notable Uses & Legacy

End-to-end service level monitoring (host product)

GWScript is not adopted independently of GW-TEL INFRA-XS, so its user base is the customer base of that product. The vendor markets the suite to large enterprises and public-sector bodies in the German-speaking market - telecommunications, banking, utilities, SAP-centred service providers and city administrations are the segments it addresses - but no publicly verifiable source confirms which named organisations run GWScript itself, as distinct from licensing the product. Individual customer names circulating in vendor marketing material could not be corroborated for this page and are therefore not listed

Scripted API monitoring and test automation

The vendor documented, in 2018, a gws-hosted domain-specific language written for a publicly funded customer project to monitor an API consumed by many external service providers. Because the interface was expected to change repeatedly during its pilot phase, the DSL was built to consume API metadata and adjust its own test cases automatically

Language Influence

Influenced By

Running Today

Run examples using the official Docker image:

docker pull
Last updated: