One of the tests of a good programming language, in my humble opinion, is the ability to be lean and fast. Microsoft VisualBasic is an example of a bad programming language, as even the simple 'Hello World' test application compiles into an executable the size of Ben Nevis, and takes longer to execute than the last ice age.
PROSE, on the other hand, will rely on internal APIs that pull the entire networked world into a little 'global village' at the fingertips of the developer, and this requires a core engine that is small, fast, and bullet-proof.
The engine at the heart of PROSE will control access to all data, code and interface objects through a hierarchical tree structure called the 'nexus'. The nexus will rely on tree APIs which use hash tables for their branches, with linking mechanisms to allow objects to be addressed by multiple paths. This multi-pathing can be used, for example, to assist in the communication over networks, or nodes in hardware clusters. The programmer need not write his own DMP (dynamic multi-pathing) code as this is already provided in the PROSE core engine. Nodes in the nexus can be dynamically attached to hardware drivers, and the rest is simply a question of routing data around the tree.
The tree hierarchy and hash table APIs are already evolving and taking good shape. Under development recently has been what's called an 'extended hash'. This is a hash table ideal for branches within a tree, because it can start with a small number of data buckets and will grow dynamically in size as more data is added. This allows a single branch in a tree to scale to millions of data items, or be as small as 10, without taking up a disproportionate amount of system RAM.
Hash tables cannot ordinarily increase the number of configured buckets within them, because their hashing algorithms used for identifying buckets will fall out of alignment. Usually you must specify a number of buckets during initialisation, and this number cannot change once created.
With an 'extended hash', buckets are converted into sub-hash tables if they fill up too much. This allows a table to expand well beyond its original configured size.
Also new to the code this week, the core APIs that control these underlying structures have had statistics code written into them, and a new tool 'protest' is available for running test patterns against the APIs to test their speed and memory footprints.
PROSE will be in need of one or two extra developers over the coming months, to help speed up the prototyping & debugging pre-alpha phases of the project. If you are a technical author, documenting the new libIvor APIs (e.g. for the extended hash table) and libprose APIs would be a good start, as the man pages on SourceForge for these are now out of date - the calling symantics have changed in version 0.4.0.
Note the latest version is 0.4.0, which is in CVS. When it's *doing* something, I'll create a new tarball.
- PROSE is a hierarchical programming language in the design and prototyping stage, which is designed to enable fast development of small and large-scale networked applications.
Read more about PROSE at http://prose.sourceforge.net