The Nexus language will be undergoing some major rethinking. After working with it in its pre-beta state, there are a number of warts that are a direct result of its dynamicity. Most notably the ease in which well-concealed bugs can manifest themselves within a dynamic typing system. A static type system would go a long way in terms of making the language more comprehensive and readable, as well as reducing the occurence of well-concealed bugs. I don't think a dynamic type system is always bad, in fact its quite useful in many cases, this area will require more thought, perhaps a marriage of concepts is possible.
Domain specific languages (DSLs) have been getting quite a bit of press lately, concerning the next best thing in programming paradigms. Language workbenches such as the Meta Programming System are examples of this notion. I just don't think such a drastic shift will take place though, the idea of building an entire application with DSLs is incomprehensible to most people. People naturally like thinking about programming solutions in an object-oriented imperative manner. This way of thinking will continue being the paradigm of choice for some time, but introducing language level constructs that make the task of declaring things (e.g. data structures, UI) more natural is quite intriguing.
I am particularly interested in some of the work that is being done by Gavin King (and folks at RedHat) concerning the Ceylon Project. In particular it supports a block oriented declarative syntax that has many interesting connections with the DSL approach to programming. I will be spending time researching these ideas and thinking about broad stroke changes to the Nexus language.
Another active area of interest in programming languages is the use of language constructs for concurrency. Most languages address this area with a shared-memory concurrency model, with locking provided by monitors. I'm going to spend some time researching alternative language constructs implemented by languages such as, Erlang and Scala.
I've also spent a limited amount of time researching the Parrot VM (a register based VM, specifically targeted for dynamic languages). I'm not sure that now is the time to shift away from the Nexus interpreter. At the moment the Nexus language has a certain level of nimbleness, that is possible because it is implemented on top of home-grown layers. This provides certain degress of freedom, as the language continues to evolve. There will be a time and place when this shift will occur though, whether or not Parrot will be the VM of choice, I don't know.
In short, the Nexus language will continue to evolve in its pre-beta state. Stay tuned for more...
Nexus pre-beta release 0.4.0 has been made available for download. This is the first of several major incremental revisions. This version includes a rewrite of the generational garbage collector, and changes to the assignment syntax.
Nexus is undergoing a major revision. The pre-beta release matured to the point that re-evaluation of fundamental language constructs, and architectural design is now possible. The major revision will primarily focus on the following areas:
Nexus pre-beta release 0.3.0, has been made available for download. This release contains the Nexus GUI library. GUI is an extension module for Nexus that provides an interface to the IUP GUI toolkit. IUP is a portable toolkit for building graphical user interfaces.
Nexus has been successfuly compiled and executed on Linux (Ubuntu). A debian package is targeted for mid 2010.
In the spirit of agile software development practices "release early, release often" a pre-beta release of the Nexus binaries has been made available for download.
Welcome to the Nexus programming language. This is a new project, its just getting started, so excuse its constant state of flux. When licensing details have been worked out I hope to have something available for download. Until then, please feel free to explore, and send me any comments or suggestions.