Thursday, November 26, 2009

Yabasic 3 beta release (2.9.5)

I can announce, at long last, that a beta release of Yabasic 3 (known as version 2.9.5) is available for download. I want to emphasise very strongly that this release is just that, a beta release. Yabasic is still undergoing intensive development leading up to a stable and full-bodied version 3, and the "to-do" list for Yabasic remains quite long; it can be found in the file "doc/TODO" in the release tar-ball. I encourage you to experiment with Yabasic and test it rigorously, but there are a number of things you should be aware of before you begin to do so.

Firstly, you should be aware of the following changes and additions. (You can find a more complete list of new features in the file "doc/NEWS" in the release tar-ball: please read this file before experimenting with the beta version.)

  • Basic structures. (Not quite completed, but the framework exists and is usable.)
  • Block comments between /* and */ markers.
  • Options, including "explicit" (which causes an error to be reported whenever a variable is used uninitialised).
  • Special variables beginning with the __ prefix.
  • Changes to the way in which files (and libraries) are imported. Note, in particular, the difference between the "import" command and the new "use" command.
  • Minor changes and additions to expression operators (for example, "mod" is now an operator).
  • Some syntactical restrictions have been removed.
  • Some bugs have been fixed.
  • Interface improvements have been made.

The following things have been removed.

  • The commands "goto", "gosub", and "label" and line numbers (perhaps temporarily). See my blog post on the subject; I need to hear more feedback before making a decision.
  • Some functions and commands, particularly those pertaining to terminal and window management.
  • Variables such as time$, date$, and so on.
  • The functions peek (), peek$ (), and poke (). Note that file access peeks and pokes will probably be re-added, since they are fast, useful, and quite conventional.

Most of the system-dependent parts of Yabasic have been removed and will be migrated to modules in the near future. However, I am not confident that Yabasic will compile without errors on Windows systems, and I do not use Windows and therefore cannot test it. Because of this, I am relying on your bug reports and feedback to make Yabasic usable on Windows systems. Please record any changes needed to make Yabasic to run on Windows systems, and send them to me so that I can incorporate them into the next release. I remain committed to ensuring that Yabasic compiles on both Unix and Windows systems without errors or warnings.

On Unix systems, simply unpacking the release tar-ball, moving into the unpacked directory, and typing make at a shell prompt should suffice to build Yabasic. You can, of course, use make install to install Yabasic. On Windows systems, a different approach will be needed, and I would like to hear any suggestions you might have.

Over the next few months, I intend to work with Pedro Sá to implement modules and a universal standard for modular components. Currently, we have SDL and Curses modules planned, but suggestions are very welcome, and contributions highly appreciated.

I would love to receive feedback, bug reports, and feature requests, and you are welcome to e-mail me any time. Keep an eye on yabasic.basicprogramming.org for news, announcements, and releases.

Enjoy!

5 comments:

  1. I am pleased to see the speed of your proces. To be honest, i didnt expect this ready release before spring :)

    The way how you made TYPES to work, is really nice and functional. Types has been something i have waited most. I think it expands possibilities to use yabasic so much, that we cant even imagine them yet.

    I wish you support GOTO, GOSUB and LABEL in future. No hurry yet, but for the sake of having easy as possible porting old codes (made with yab 2.7xxx) for 3.0, i think it would be good to have.

    Also seeing Explicit option, which causes error unless variable is not defined is something i salute with a pleasure.

    Cant wait to get few hours of time later today, so i can have some fun with your release. Thanks Thomas, you are my hero :)

    E.K.Virtanen

    ReplyDelete
  2. Thank you! Yes, at the moment I'm leaning towards re-adding goto, gosub, and label; I don't expect to re-add line number support, though, for a number of reasons.

    Types are still being developed, and I'm glad to hear that you find them useful in their current state...

    Cheers!

    ReplyDelete
  3. Currently i am bit confused, what is the final correct way to build a type.

    == CODE
    dim array(x).var, array(x).var2, arrat(x).var4
    == /CODE

    Is that the final way?

    I dont have a clue how hard that is to create, but i noticed at some file possibility to use "with" statement.

    == CODE
    dim blaa(x) with var$, var2, var3$....
    == /CODE

    That would be awesome, if it's possible.

    One other thing i would like to ask, if its possible. Supporting multiline statements. This is handy specially when coder wants to use long variable names.

    == CODE
    print MyFunction(variable$, variable2$, mid$(text$, var, var2, var4) + chr$(MyOtherFunc(x + y))
    == /CODE

    How about possibility to share that in multiple lines, with some kind of "to be continued at next line" escape character? FB uses "_" for example.

    == CODE
    print MyFunction_
    ....(variable$, variable2$, mid$(text$, var, var2, var4) +_
    ....chr$(MyOtherFunc(x + y))
    == /CODE

    Bad example, but specially IF...THEN structures can easily get freaking long, specially in old-school text games :)

    ReplyDelete
  4. @EKV: That is currently the only way of initialising array structures, but it will change as I continue to work on Yabasic. Ultimately, I want to be able to use "struct...end struct" statements to clearly define a structure, but it's slightly complicated.

    ReplyDelete
  5. @EKV: And yes, I think it would be fairly simple to implement support for splitting a single command over multiple lines. I'll see what I can do.

    ReplyDelete

Note: Only a member of this blog may post a comment.