Sunday, July 27, 2008

Release 2008.07.27

I've pushed the latest release (2008.07.27) online. This has a few nice improvments, including inlining of primitive words, the latest JavaScript implementation of Ngaro, and lots of internal cleanups.

Due to changes on repo.or.cz, I've been unable to push changes to the GIT repository for a while now. I'm looking for a solution, and hope to be able to resume putting changes into a VCS soon.

The Windows installer has not been updated yet due to hardware problems on the single Windows box I have. I'm hoping to be able to have an updated installer later this week.

The Dashboard widget and Retro Online are now running the latest code with improved reliability and improved interfaces. Users of the Dashboard widget should definitely update as this fixes some resource usage issues and offers significantly greater performance.

Anyway, download the latest snapshot or image and enjoy.

Monday, July 21, 2008

Retro Widget for Apple's Dashboard

I've adapted the 3rd generation of the Javascript implementation of Ngaro to run as a Dashboard widget. It's running a standard image, and works quite nicely.

If this proves useful, I'll look into supporting other widget platforms in the future.

Get the Retro Dashboard Widget

Saturday, July 19, 2008

Misc. Updates

Due to some ongoing health issues, I haven't been as active as I'd like. Hopefully these will be resolved soon and I'll be able to do some serious work on supporting the extended Ngaro VM, expanding the modules, and further improving the documentation.

For now, a few minor updates:
  • I've begun updating http://ngaro.jottit.com using the material from the Retro docs as a base. It can now be edited by anyone, so all those working on Ngaro implementations can contribute.
  • jsvm3: An updated version of the Ngaro in Javascript, this is primarily based on an updated I/O model that allows an even closer approximation of the console builds. This is new, and needs testing.

Monday, July 7, 2008

Improving Performance

While looking over Mat's extensions to Ngaro I had a thought about inlining the handful of words which correspond to Ngaro instructions. A few tests showed enough promise that I've added a new .inline class to Retro.

The primitives will only be inlined if they are not revectored. This ensures that they will behave as closely to normal Forth words as possible. Devectoring a .inline word will restore the original behaviour. This is not intended for user code, and is only useful if you are adding new opcodes to your Ngaro VM.

Anyway, a look at the benchmarks:

Switched VM

Before:
- Recursive FIB (39)... 208.0144 seconds
- Countdown Loop (1,000,000)... 12.228482 seconds
- Nest/Unnest (256 million pairs)... 42.299306 seconds

Now:
- Recursive FIB (39)... 85.860101 seconds
- Countdown Loop (1,000,000)... 12.38329 seconds
- Nest/Unnest (256 million pairs)... 30.796164 seconds

Threaded VM

Before:
- Recursive FIB (39)... 130.537818 seconds
- Countdown Loop (1,000,000)... 8.325312 seconds
- Nest/Unnest (256 million pairs)... 27.092447 second
s

Now:
- Recursive FIB (39)... 51.989871 seconds
- Countdown Loop (1,000,000)... 8.292265 seconds
- Nest/Unnest (256 million pairs)... 17.577663 seconds

I'll update the documentation to cover the new class in the near future. If you don't want to wait for a new release, you can get this code from the GIT repository. See http://repo.or.cz/w/retro.git for details.

Sunday, July 6, 2008

Site Changes

I've begun reworking the layout of the Retro website. This should be completed within the next few days.

Some highlights of the new design so far:

  • Cleaner organization
  • Downloads on the right, will remain easier to spot
  • Automatically updated links to recent discussions on the mailing list and recent commits to the main GIT repository. (Updated hourly)

Coming soon:

  • New documentation page, which will allow downloading the documentation in various formats (text, word doc, pdf, html) as well as viewing it online.
  • The News page will have links to the blogs of those involved in Retro's development, as well as displaying the most recent posts (updated hourly) from each blog.

Possibilities:

  • Web access to the #retro channel on irc.freenode.net