Sunday, December 27, 2009

Tentative timetable for Yabasic 3 (stable)

I can make no guarantees about the actual release date for Yabasic 3 (stable). But this is my tentative timetable for development (which, knowing myself, I probably won't stick to).

  • December 31: Begin documentation.
  • January 1–2: Work on modules/plugins, ensuring that they are integrated fully.
  • January 3–7: Implement structures/types. Release version 2.9.8, a test version.
  • January 8–15: Write a comprehensive user manual for Yabasic. Release version 2.9.9, a test version.
  • January 16–18: Develop a Curses module.
  • January 19–February 1: Develop a SDL module.
  • February 2: Release version 3.0.0, a stable version.

Saturday, December 26, 2009

Blog moved

You will notice that the Yabasic blog has been moved from yabasicblog.blogspot.com to yabasic.basicprogramming.org/blog. If you navigate to the former location, you will be redirected to the latter.

The Blogger software is still being used, though—only the hosting location has changed. I've also changed the style of the blog: I hope you enjoy it.

Friday, December 25, 2009

Yabasic and modules

I have not posted here for a little while—as I noted in my last post, I have been on holiday in New Zealand. I am sorry to say that this post will be rather short, as well. But before I start, I'd like to welcome Pedro Sá to the Yabasic blog: he is currently working on implementing modules (or "plugins", if you prefer that terminology) for Yabasic; and he now has posting access here, so I'm looking forward to hearing directly from him about his work so far.

Currently, the modules system works as follows: (1) C functions are imported into Yabasic, using the new csub statement, by a Yabasic library which provides a Yabasic interface to a module; (2) the user imports the library (using use or import); and (3) the user is able to run the C functions in the module through the library interface.

Let's have a look at how that might work in practice.

An extract from the (yet-to-be-created) library sdl.yab might look something like the following:

csub openwindow (x, y, name$) from "sdl"
csub usewindow (window_id) from "sdl"
csub updatewindow () from "sdl"
csub closewindow () from "sdl"
csub color (red, green, blue) from "sdl"
csub circle (x, y, radius) from "sdl"
csub readkey$ () from "sdl"

Then a user might write a program, circle.yab, which looked something like the following:

use "sdl" as "gui"

gui.usewindow (gui.openwindow (100, 100, "Circle"))
gui.color (0, 0, 0)
gui.circle (50, 50, 20)
gui.updatewindow ()
gui.readkey$ ()
gui.closewindow ()

That's a very tentative example, because a lot of development work is currently taking place, so don't start writing your module-using programs just yet!

There have been a few minor hiccups so far, but Pedro has done a good job addressing these issues. Many others have helped out in this process, and I would like to personally express my appreciation to them.

And we would love to hear your suggestions and feedback on modules, because nothing is yet written in stone...

Sunday, December 6, 2009

Thanks—and a new version

I want to thank everyone who has provided feedback on the 2.9.5 release of Yabasic. In most cases, the feedback I have received has been positive, and I'm very grateful for your encouragement and patience despite the imperfections and rough edges that still remain to be ironed out of the interpreter. I have also taken suggestions for improvement into consideration, and I'm currently working on addressing a few issues.

I'm releasing Yabasic 2.9.6 today (you can acquire it from yabasic.basicprogramming.org), which implements a few minor changes:

  • a bug where the first internal command was not properly initialised has been fixed;
  • the inc and dec commands have been added (at least for scalar variables);
  • a bug related to use-statement parsing has been fixed;
  • the special variables __time$ and __date$ have been added (time$ and date$ were removed unnecessarily, so please accept my apologies);
  • the statement select is now a valid alternative (synonym) to switch;
  • output is now flushed properly;
  • the short-if form has been re-added.

I plan to re-add the goto, gosub, and label statements. Line number support, however, will probably not be implemented; it is simply impractical if line numbers cannot be updated properly.

I should note that from December 14 to December 30 I'll be away in New Zealand, and I'm not sure how much Internet access, if any, I will have during this time. Thanks again! I'm pleased and humbled that the Yabasic community is alive and well, and honoured to be working on Yabasic. It has been well worth the effort so far, and will continue to be so long into the future.