PROSE is a cross-platform programming environment designed to simplify the development of small and large-scale networked applications. It will comprise of a scripting language which compiles into bytecode and an execution engine that interprets that bytecode. The execution engine will be designed to communicate easily with other PROSE engines across the network. The inter-networking capabilities will be made available at the bytecode level via virtual nodes in a hierarchical object tree (the 'nexus'). This is a pre-alpha POC release, containing a fully functional assembler and disassembler for an evolving assembly language (PAL), which compiles into a platform-independent bytecode. A bytecode interpreter (the PROSE engine) is also included in this release. At this time there is no scripting language. PROSE can be compiled and run on a variety of UNIX and UNIX-like systems including:
The PAL assembly language and associated bytecode has been improved in this release to handle tree arrays, as well as other new features, which are discussed later on. PAL instructions are described in section 5 man pages which are distributed with this release, and HTML versions of these man pages can be viewed online. This version of PROSE has added the following PAL instructions:
TREE ARRAYS A powerful new construct that allows for the creation and manipulation of arrays of nodes that are organised hierarchically in exactly the same way as the nexus. Tree arrays may be 'imploded', whereby the tree has its own root whose pointer is stored in an attribute, or 'exploded' where the tree shares the same root as the nexus and is just another branch like any other. Bytecode instructions for defining, addressing and setting variables within tree arrays make it simple for higher level languages to implement hash tables or chained hash tables. See the ps_tree(5) man page for further details. POINTER DE-REFERENCING A new bytecode instruction 'attr/addr' reduces the steps required to de-reference a pointer variable. See the attr_addr(5) man page. REGISTER COMPARISON As well as branching on equality or non-equality, bytecode instructions now exist for branching if less than, less than or equal to, greater than, or greater than or equal to. See the reg_jmpeq(5) man page. REGISTER ROLL A new bytecode instruction 'reg/roll' makes it possible to roll values between sets of registers. See the reg_roll(5) man page. MODULE API The module API has been cleaned up, introducing jump tables to make it simpler to define module entry-points and supported data types. The 'vattr' parameter has been added to module configuration files to indicate if a syntax has virtual attribute entry-points. This removes the need to pre-load a module just to determine if it supports virtual attributes. BOOLEAN TYPE The 'psBoolean' variable type has been added to allow for 'TRUE' or 'FALSE' values. NEW ATTRIBUTES ON ROOT NODE Compiler flags have been added to the top-level '.prose' object using the new attributes 'psEnableExtraDebug', 'psRegScan' and 'psWithMemWatch'. OPCODES OPTIMISED Opcodes used by PAL bytecode instructions have been optimised such that there is much greater use of opcode modifiers, freeing up many opcodes for future use. BUG FIXES Release 0.9.1 is a minor update to 0.9.0 to fix a core dump that occurred when 'reg/conv' encounters a legitimate processing error, and to update the 'prism' parser to one produced by bison 2.7. FUTURE RELEASES Future releases will introduce virtual nodes and branches in the nexus that will allow access to external data using the object manipulation commands already available. This will include navigating filesystems, opening/closing files, querying DNS, opening network connections and manipulating databases. Virtual nodes and branches will be extendable using modules to permit any kind of data to be represented through the nexus. Also missing at this time is any glimpse of the future PROSE scripting language. This will have to wait until the PAL bytecode provides enough of the required functionality. COMPATIBILITY While PROSE remains in pre-alpha, it is not possible to guarantee PAL source or binary compatibility between releases. PROSE binary files compiled by earlier versions of PROSE will no longer execute on version 0.9.0 or later engines and will need to be recompiled. This is due to many changes to opcodes as described in the OPCODES OPTIMISED section above.
To learn more about the PROSE Programming Language, visit http://prose.sourceforge.net.
PROSE is released with detailed manual pages that describe how PAL operates,
and how each instruction is used. These manual pages can be read using the
Copyright © 2013, Mark R. Bannister <cambridge@users.sourceforge.net>,
all rights reserved.
|