Retro is a concatenative, stack based language with roots in Forth.
It is designed to be small, easily learned, and easily modified to meet specific needs, it has been developed and refined through continual use by a small community over the last decade.
This blog is written in Retro and has served as my primary means of posting things concerning Retro since 2010. The core code for Corpse is included in the Retro releases and can be freely studied and deployed.
The most recent posts are shown below. You can also view a list of all posts.
Right now everything in Parable must be done through the defined HTML based user interface. Before I can add a reasonible I/O model, this needs to change.
The first part of this will involve deciding how to structure inputs and returned values. I'll probably use JSON (since I like this better than XML), but I need to consider all of the structural aspects this entails. Once I do this, I should be able to rewrite/refactor the code to provide a Parable language implementation apart from the Parable user interface.
When this is done I can finally pursue implementing the user interface in a better manner. I would like to be able to adapt multiple interfaces over the language backend, allowing for much more flexibility in terms of optimizing for devices and platform constraints.
I'd also like to leverage the backend bits to allow for implementing other languages. (E.g., one of my kids has been playing with a really limited Logo variant. It'd be nice to give him something more flexible, with the option to expand functionality as he learns more.)
This may have some influences back on Retro. I'm starting to think that it might be nice to have a way to separate the compiler/interpreter away from the listener...
After quite a bit of downtime, I'm finally starting to work on Retro again. (Things have been very hectic in my life lately, with family and work issues; they are finally starting to settle down).
My current focus is on cleaning up the image. I won't be adding new functionality until this is done. The cleanups should be useful though: the kernel can now be built without all the later additions, and it'll be much easier to configure a smaller image for embedded targets once I'm done.
I am also continuing to develop Parable. It's now at a mostly usable state (though I still haven't added I/O apart from the standard development UI). You can grab a compiled snapshot which has everything you need to get started. Note that this currently requires a server with PHP (I haven't yet written the server side pieces in any other languages yet) for saving sessions and rendering the documentation. It now has functional data types and a limited garbage collection system. (If you want full source, do a bzr branch lp:~crc-x/+junk/parable-language)
Retro 11.5 is now out. You can grab the latest sources at http://s3.retroforth.org/download/11.x/retro-11.5.tar.gz or the version control repo of your choice.
core language / standard image ============================== - metacompiler changes - docstring support - create headers during metacompilation - clean ups and refactorings - increased use of & prefix over [ ] - comments on quotation compiler added (tangentstorm) - new functionality - added yield - added d->doc - added describe - added :needs - added libraries - added parable style conditionals (now default) - exposed getc:unfiltered - keymap support - moved functions to internal' vocabulary - quote - string - docstrings now part of standard image - make "smallimage" to get one without them libraries ========= - dissect' now tries to display function names for calls - added havn hashes from Mat2 to hash' examples ======== - autopsy - added words:vectored - added words:byClass - use latest dissect' - block editor - fixed a few issues causing corruption (thanks to docl finding the bugs) - assembler documentation ============= - various fixes vm == - improved python implementation from tangentstorm
Retro 11.5 will be released on March 1, 2013. Any final patches or additions need to be submitted by February 27 to give me time to review and merge in. After this, I will be taking a couple of weeks to finish my current work on Parable, then work on 11.6 will begin.
For 11.6 I am planning to restructure the image to fix some of the more complex layering and provide a cleaner base for embedded users.