home of the Kew programming language

High productivity

Kew has a strong dynamic type system that never gets confused about what type an object has - so no more casting and no more declaring the type of everything, cutting bloat.

Kew provides fast automated garbage collection, saving you from managing memory yourself. Kew programs don't leak memory or crash.

Its simple syntax turns you from a typist back into a programmer and its flexible interpreted/compiled use means you can develop quickly without waiting for the compiler, then compile when you want maximum speed.

An interpreter, JIT virtual machine and native code

Kew's modular compilation/interpretation engines support a combination of:

  1. running Kew source code directly as a script with no compilation step
  2. compiling Kew source to machine-independent bytecode that can be distributed safely and run on a Just-In-Time (JIT) virtual machine
  3. compiling Kew source or bytecode to native code (via your system's C compiler) to produce a DLL / shared library

Object-oriented, based on closures

Kew has both objects and blocks, and both form closures. Closures can be used to great effect to produce simple and logical code. There is no inheritance - implementation sharing through lexical scopes and object composition is so simple it makes the complexity and unmaintainability of inheritance unnecessary.

In addition, Kew is designed to support programming in a functional (stateless) style. But it still has variables for when you need them.

Powerful built-in collections and control constructs

Kew has built-in collections, free conversion among its object types and powerful block-based control structures derived from functional programming.

Good security

Kew has built-in security features: armoring, which allows code to safely share internal data with untrusted code; and sandboxing, which allows untrusted code to be run in an environment where all its access to your network and your files is strictly controlled.

Fully reflective

Everything in Kew is a first-class object: there is nothing that cannot be represented as a object or programmed with; even variables, even messages, even the container that runs the program.


Kew has an expressive module system where modules behave like extended blocks that are loaded by other modules. In Kew, all your code is a module, so even a Kew program can be loaded and used as though it were written to be a library!

Exception handling

Exceptions in Kew aren't just limited to reporting a problem and falling out to some code to handle it - they can call on code that fixes the problem in place, allowing the code to carry on.

Kew has first-class continuations (non-local jumps) built-in which allow you to implement Java-style "jumping" exceptions as well, and to jump out of deeply-nested loops in a single bound.

Embeddable and extensible

Kew has a very small core and consequently a very small minimum footprint. Everything else is loaded on top of this, making Kew ideal for low-memory applications. Kew's well-defined C interface and event-driven processing model also makes it suitable for embedding in applications as a scripting language.

Fully buzzword-compliant

Kew is compatible with all current and future industry standards. Available in all sizes. Tear-resistant. Hypo-allergenic. Not harmful to pets.


Best of all, Kew is free. There is no charge to download Kew from the website, no charge for using it, no charge for distributing your programs. You can even sell copies of Kew.

But Kew is free in another sense, too. You are free to see how Kew works, free to change and adapt Kew to suit your needs, and free to share your improvements with other people. I would appreciate it if you would share your improvements with me, but you don't have to.

Copyright 2004 Duncan Pierce, hosted by Logo