What is P*?

P* (pronounced P-star) is a programming language specifically designed for web development. P* provides easy in-language support for common tasks in this field.

P* programs are scripts, and they are run by the P* interpreter, which you can download under How to get P*?.

Help needed!

The P* language is still under development, but it already supports many features. Help is needed to develop P* further. If you have experience with C++ and/or web design, don't hesitate to say hello on one of the mailing lists or contact the author at atle@goliathdns.no

Checkout the latest source code on the P* GitHub repository. Maybe you can find an issue there to work on?

Sites running P*

Currently the only known site running P* is this page. Have you created something? Contact me and have it listed here to show off!

Important features built into P*


New automatic type and more!


The new type called auto will automatically set itself to the type you use when first assigning to it. It is particulary useful in foreach loops, where you now can do foreach (auto var; my_array) {....

You can now also define and declare stuff in the global namespace, outside of scenes. You can define structs and functions and also declare global variables.

Template handling have been improved. The blocks LOOP and CONDITION have been removed, and you should instead use the standard blocks if while for foreach. From now on, you must also use pragmas to call other templates and scenes from inside a template.

See the full list of changes in the commit log, and see the updated documentation.

Implementation for pointers


Pointers and references are an important part of many programming languages. In some languages, they are hidden away, and in others you use them actively. P* now supports pointers as a template type, like pointer<int> my_pointer_to_int. You can also use pointers in foreach loops to loop arrays.

Read more in the documentation

Range operator and foreach loop


The range operators .. and ... is now available. They are useful with the foreach loop.

Read more in the documentation

Support and discussion

There are two public mailing lists available. One is for user questions and opinions, and the other is for more technical discussion about development.

Bugs & issues

Please report bugs and missing features on the Github page or by writing to the development mailing list.