Log of changes and bugs
This list lets you check the changes introduced with every version
Version 2.89.1, January 30, 2020
Version 2.89.0, December 29, 2020
- Fixed for Problem with system-command after clear screen on MacOS
- Added functions eval and eval$
Version 2.87.1, November 07, 2020
- Fixed for libffi on 32 bit systems
- Updated included header files (windows) of ffi from libffi 3.3
Version 2.87.0, August 12, 2020
- Fixed an edge-case in for-loops
- Allow eof(0) and peek(0) to refer to standard input
Version 2.86.9, June 6, 2020
- Fix formatting of larger numbers with '####' et.al.
Version 2.86.8, May 9, 2020
- Bringing pkg.m4 with us to ease build process
Version 2.86.7, April 4, 2020
- Using pkg-config (if available) to locate libffi
Version 2.86.6, March 8, 2020
- Advancing version for technical reasons
Version 2.86.5, March 8, 2020
- Fix double backslash in string before quote
Version 2.86.4, January 1, 2020
- Fix for do-loop / continue
Version 2.86.2, December 12, 2019
- Another fix for heap-buffer-offerflow found with address sanitizer
Version 2.86.1, December 8, 2019
- Fix for heap-buffer-offerflow
Version 2.86.0, November 28, 2019
- Added new functions bitnot
- Fixes for bit-arithmetic (signes/unsigned)
Version 2.85.0, November 16, 2019
- Added new functions shl, shr and round
- Introduced binary literals preceeded by 0b
- Fixes for hex literals
- The error-command no longer adds a line number
Version 2.84.3, November 3, 2019
- Better debugging for library path
- Clean builds for Windows setup-program
Version 2.84.2, October 6, 2019
- Fixed some potential stackoverflows
- Removed empty dir related with nano
- Tests with tmux only within the Rakefile
Version 2.84.1, July 20, 2019
- Make unload_library after call the default for foreign_functions
- Fixes to docu
- Requiring libffi for build (unless specified other by configure-option)
- explicit error no longer unwinds call-stack
Version 2.84.0, July 12, 2019
- New command foreign_buffer_set_buffer
Version 2.83.3, June 30, 2019
Version 2.83.2, June 30, 2019
- Allow specifying null-pointer for foreign functions
Version 2.83.1, June 26, 2019
- Fix for line-numbers in errors after import
- Updating the manual
Version 2.83.0, April 29, 2019
- Unix: Added a syntax-file for the nano-editor; contributed by Stephan Muesse
- Made parentheses around condition in while and until optional
- Better error messages on misaligned control structures
- New family of functions and commands foreign_* invoke functions from external c-libraries
- Fixes for line-numbers in error messages
- Revised and updated the documentation
Version 2.82.1, March 11, 2019
- Allowing comments after import statement
- Fixes regarding error messages
Version 2.82.0, February 17, 2019
- Advanced version of autoconf and other tools
- Fix in tests
- Fixed nested import of libraries
- Libraries can now be found in the directory of the main file too
- Error messages try to show and mark the offending part of the code
- Hexadecimal numerical literals are supported, e.g. print 0xff
Version 2.81.4, January 27, 2019
- Fixed error with inkey$ and clear screen
- Fixed fatal error with inkey$ and upper case letters
Version 2.81.3, January 13, 2019
- Fixed a compile-problem on macos
- Corrected a rendering problem on www.yabasic.de, which had cut off the bottom-lines of many pages
Version 2.81.2, January 2, 2019
- Fixed a problem under netbsd, which prevented yabasic from finding its own executable
- Fix on macos for curses-initialization e.g. during "clear screen"
- Fix that allows libraries to start with a comment introduced by a hash or a single quote
- Made the prior "Guide into the guts" available again as "Some remarks on changing Yabasic"; see www.yabasic.de
- Document options for unix and windows in the same chapter
Version 2.81.1, November 1, 2018
- Fix: Allow yabasic to run from within a script
Version 2.81.0, October 27, 2018
- New function chomp$
- Added new peek "interpreter_path"
- Fixed a sporadic issue with bound programs
Version 2.80.0, September 8, 2018
- Added functions floor() and ceil()
- Checking for function clock_gettime during configure
Version 2.79.2, May 13, 2018
- No changes over 2.79.1
- Advanced patchlevel to get in line with tagging again
Version 2.79.0, April 21, 2018
- Introduced new peeks "secondsrunning" and "millisrunning"
- Bugfixes regarding the switch statement
Version 2.78.5, April 3, 2018
- Within a bound yabasic-programs the name is correctly set (as returned by peeking "program_name")
- Introduced new string-peeks "program_name" and "program_file_name"
- Bugfixes regarding bound programs and libraries
Version 2.78.4, March 2018, 2018
- Fixed a problem with bound yabasic-programs, that include more than three libraries
- Introduced new peek "secondsrunning"
Version 2.78.3, January 21, 2018
- Fixed a up to 4-times performance penalty, that has been introduced in a previous version
- Brought back "Edit" to the windows context menu
Version 2.78.2, August 27, 2017
- The ran()-function is now guaranteed to return 2**30 different values
Version 2.78.1, August 13, 2017
- No more dump when using color without window open
- Processing of yabasic.xml finds hellip-entity
Version 2.78.0, January 21, 2017
- Allowed for numeric argument after break
- Fixed format of manpage (unix)
- Reworked the switch-statement, added tests
Version 2.77.3, December 29, 2016
- Fixed insecure usage of strcpy
- Better logging for windows installer
- Spelling corrections
Version 2.77.2, December 17, 2016
- Fixes for coloured text under windows as reported by TheMeq
- msvcr140.dll is no longer required under Windows
- Several spelling corrections contributed by ginggs
- Updated and fixed man-page under linux
Version 2.77.1, November 13, 2016
- Adopted the MIT License for yabasic
- Switched to semantic versioning; the new schema is MajorRelease.MinorRelease.Patchlevel
- New peek$ for version, documented all peeks
- Various bugfixes
- Setup program now offers to start the demo
- Redid the development process for yabasic; you may now participate in the development of yabasic itself via github: https://github.com/marcIhm/yabasic. However, the main site for programming in yabasic is still https://www.yabasic.de
Version 2.769, July 4, 2015
- print color under windows handles single argument correctly
- cpu extension sse2 is no longer required, so yabasic should run again on older hardware
Version 2.768, May 25, 2014
- Core dump e.g. under Linux mint related with grafics
- Problems with embedded newlines within the Windows console
- Keys pressed within grafic window are not always reported to inkey$ (Windows-Version)
- Spurios problems with colors under Windows and linux (reported but not fixed yet)
Version 2.767, March 15, 2014
- Fixed a bug which caused yabasic under Windows to freeze on syntax errors
Version 2.766, March 15, 2014
- Fixed some bugs related with ncurses under linux
Version 2.765, January 30, 2014
- Added support for later versions of ncurses and 64 bit Systems
- Avoided forks for inkey$ under Unix
- Fixed a bug related with break and continue
Nine years of hibernation ...
Continued end-user support. But only a few bugfixes and no new features, because:
- Life took over: job, house and family
- A promising volunteer-fork of yabasic, which however did not work out at the end
- 2.760 (July 27, 2005)
Finally full colour support !
- Multiple fonts for the text-command.
- Triangles with the new triangle-command.
- Furthermore, the
Windows-Installer gives better diagnosis in case of an error.
- The configuration-process
for Unix has been updated to the latest version of autoconf.
- 2.750 (May 19, 2004)
- Yabasic finally has an Icon under Windows.
- The str$()-function, may now format numbers like 123,456.56
(or 123.456,56 for german conventions).
- Changed the system()-function under Windows to use the right
- Added a list of commands, grouped by topics to the documentation.
- 2.740 (January 18 2003)
- Implemented the bind-feature.
- More meaningful messages on failing open-calls.
- 2.730 (24 August 2003):
The new documentation is finally finished. It has more than four times
the size of the old documentation (153 pages compared to 36).
- 2.722 (3 January 2003):
Another release, that mostly includes a series of minor bugfixes related
with the new documentation:
- A bug with the functions split() and token()
has been fixed, which caused to coredumps in some cases.
- 2.72 (3 January 2003):
Big changes only in the new documentation. In yabasic itself there have
been mostly cosmetics changes:
- Two argument form of log().
- The special option '--' stops all option processing
- Lots of bugfixes related with: open, import, continue
- 2.71 (18 December 2001):
- The short form of the if-statement now behaves as you expect.
- A new loop: You may put statements between loop and end
- break and continue can be used to control any loop
- The switch-statement is available to check one expression
against many different values.
- 2.70 (August 2001):
- Allowed hex-escapes in string constants (e.g. "\xa").
- Better warnings for forgotten endif, endsub or next.
- Allowed for dumping of stack of subroutine calls.
- Various bugfixes related with: print using,token$() and with printing
to mixed streams
- 2.69 (30 June 2001):
- Implemented logical shortcuts, i.e. conditions within if
or while statements are only evaluated as far as needed.
- New form of the open statement: open "foo" for reading
- New form of the open function: open(a,"foo") intended
for use in if-statements:
if (not open(a,"foo"))
print "Shit !"
- You may now write: a=open("foo","w"):print #a
- 2.68 (2 March 2001): Essentially removed the distinction between
expressions and conditions, i.e. you may write things like
this: okay=(1<10) : if (okay) print "Hallo"
- 2.66 (7 January 2001): Modified instr() to accept an optional
third argument and mid$() to go without its third argument. Added
the rinstr()-Function. Added the bin$() function to convert
decimal into binary numbers and extended dec() to do the other way
around; fixed some errors related with int()/hex() and large numbers.
- 2.65 (21 October 2000): You may specify the directory to search
libraries with the new option librarypath. The seek() function
might now be used within conditions to check for success e.g.: if
(!seek(1,20)) error "Shit !".
Added the command compile
and the function execute() to create code on the fly and to call
a subroutine, whose name is only known at runtime only. E.g. use compile
"sub foo(a):print a:end sub" to create subroutine foo
on the fly and use execute("foo",2) as an alternate way
to say foo(2).
- Release 3: Fixed a bug with the system() function as reported
by Michael Cwickel: Some strange problems with scrolling
under windows surfaced within the system() function, which did not give
correct output in some cases. Corrected some problems with using arraydim()
and arraysize() within subroutines as reported by Arnand Roques.
- 2.64 (15 June 2000): Rewrote the functions token() and
split() and even changed their grammar. This change will affect existing
yabasic-programs, if they use those functions !
- Release 5: Fixed an error with numparams (which contains
the number of parameters passed to a function).
- Release 4: Reintroduced the token$() and split$()
functions, fixed a compile problem under AIX and made Pi
and euler available within libraries.
- 2.63 (10 April 2000): Made the graphic window repaint
itself under Unix, so a covered window will not loose its contents; made
the inkey$ function recognize the state of the shift key, if a mousebutton
is pressed within the graphic window; Removed an error which freezes
yabasic after opening a window under some Unix systems. A special poke
makes the input statement return nonprintable characters. A bug related
with restore/labels and Subroutines has been fixed.
- 2.62 (21 January 2000): Extended the domain of the **-operator,
as suggested by Albert Beissel. Corrected the resolution-pattern
for non local variables, thanks to Tom Ellestad. Added the -e
option, which allows one to execute yabasic code on the fly. Options may now
- 2.61 (29 Dezember 1999): Besides printing grafics, yabasic is
now able to print pure text and listst. You may clear and fill
circles, rectangles, lines and dots in a simple manner. Bitmanipulation
with the new functions and(), or(), eor(). You may move
around within an open file with seek and tell(). Fixed a nasty
bug with local variables, which has been detected by Tom Ellestad.
Bugfix for peek$("library"), thanx again to Tom
- 2.60 (26 October 1999): Array parameters to subroutines
are now optional, you may query the number of parameters
through the local variable numparams. Added the docu$()-array,
which contains any embedded documentation. Removed lot's of errors
related with: ran(), window origin, inkey$,
linenumbers, peek(#). Changed the License
of yabasic: You may now apply the Gnu Public License or
the Artistic License at your own choice.
- 2.59 (12. October 99): Subroutines now support arrays
as parameters and as local or static variables. A dim-statement may now
change the size of an array. You may specify file numbers as variables (e.g.
print #(a) "Hello" ). Builtin support for plotting
(i.e. map(),mapx(),mapy(), arrow and marker) has been removed.
- 2.58 (30. August 99): Added colours to the text console:
You may render text in one of eight colours.
- 2.57 (24. August 99): Yabasic now supports libraries:
Your programs may use readymade subroutines, which are defined in separate
files. Added the error-statement. Allowed for lines consisting of a single
rem (bug reported by Tom Ellestad). Added
the error statement and static variables.
Fixed a lot of bugs.
- 2.56 (14. August 99): Allowed for "_" in
variable names and for continuation lines; Yabasic can now handle more than
9 open files; removed a bug, connected with user defined subroutines.
- 2.55 (3. August 99): Added user defined subroutines.
- 2.54 (17.July 99): Split the single source (yabasic.c)
into five seperate files (main.c, io.c, function.c, symbol.c, graphic.c).
- 2.53 (29. June 99): Yabasic can now receive keys
which have been directed to the grafic window as well as
mouseclicks. Fixed problems with printing under Windows.
- 2.51 (6. June 99): glob$() for globbing strings and
split$() as a variant of the token$()-function.
open can be checked for success. sokoban
game of Hermang Mansilla as part of the standard demo.
- 2.50 (15.May 99): Implemented repeat-until
and while-wend loops
- 2.49 (9.May 99): Added hex$() and
dec() functions, fixed an error with peek$()
- 2.47 (31.Mar 99): Implemented commands for bitmap manipulation.
- 2.46 (12.Mar 99): Added the clear rect-command,
removed a bug related with system$().
- 2.45 (26.Feb 99): Made the grafic window redraw itself
- 2.43 (24.Feb 99): Added the elsif
to the if-clause and made the for-statement
- 2.42 (16. Feb 99): Some improvements on the install-program
for Windows, Fixed an incompatability with AIX.
- 2.41 (31. Jan 99): Numbers are read in as double
instead of float.
- 2.40 (24. Jan 99): Added the print using statement,
fixed bugs related with strings like "\\" and with printing under
- 2.39 (16. Jan 99): Fixed a bug int the Unix
print at command, Improved the diagnostics.
- 2.38 (12. Jan 99): Peeks to get command line arguments
and open for binary files.
- 2.37: Rewrote the demo, added abs(), sig()
and sqr()-functions, created a rpm-package for distributing
the linux-version and removed bugs related with inkey$ and input
- 2.36: Added the token$()-function and
a timeout-argument to the inkey$-function. Removed a bug
in the (Windows) clear screen-function
- 2.35: Poked around in clear screen and
print reverse and changed the Windows setup-program to
avoid a reported problem
- 2.34: Bugfix related with clear-screen
- 2.33: Bugfix related with line-input
- Version 2.32: Added the line-input-statement
- Version 2.31: Switched to VC++, Maintainance
- Version 2.3: Support for plotting
- Version 2.22: Maintainance
- Version 2.21: Four new string-functions ltrim$(), rtrim$(),
date$ and time$
- Version 2.20: peek and poke
- Version 2.19: Handled keyboard-interrupts.
- Version 2.18: Reverse-printing and linenumbers.
- Version 2.17: Fixed problems with very large programs.
- Version 2.16: Rewrote the documentation.
- Version 2.15: Improved inkey$ and system$().
- Version 2.14: Rewrote the input-statement.
- Switched to Version 2.12 and 2.13 Added the eof()-function
and allowed for comparing strings with <,<=,> and >=.
- Switched to Version 2.11 Added system$() system(),
print at(,), min(,) and max(,) commands.
- Switched to Version 2.1
- Added asc(), chr$(), lower$(), upper$(),
and instr(), enhanced mid$(), left$(), right$()
- Implemented an INKEY$-function, which allows yabasic-programs
to receive any pressed key without waiting for a newline.
- Windows: Improved search for default-printer, so that I could get a
printout even under Windows NT.
- Unix: Introduced comment-lines that start with a hash ('#'), allowing
the usual Unix-convention for specifying the interpreter (e.g. #!/usr/bin/yabasic);
thanx to Ken Jordan, who suggested this useful feature.
- Windows: Changed the icon to something more meaningful.
- A serious bug in the close-statement has been fixed.
- Random numbers can be generated, e.g. ran(12)
- Strings can contain control-characters: The usual C-style escape sequences
(e.g. \n, \a, \t) are processed in any string.
- To make the build-process more reliable, I try using the GNU-autconf
package. Hope, this will fix some mysterious problems, I heard of before.
- During the last change I introduced a bug in the str$()-function, making
it expect strings instead of numbers as arguments. This bug has been fixed.
- Simplified internal handling of functions and arrays. This had no impact
on the language, except, that some errors have been introduced and removed
during the process.
- Unified printing under Unix and Windows, added internal variables.
- Windows: Fixed an old, but nasty bug in the installation-program, which
caused strange mixing of pathnames on some systems. Added writing of an
installation-log, allowing (hopefully !) better remote-diagnostics.
- Windows: Added yabasic to the root menu, fixed some bugs in setup.
- Unix & Win95: Allowed for negative steps in For-Next-Loops (at last
- Switched to Version 2.0
- Ported to Windows and changed the name to yabasic ("yet
- The wait-command has been changed to accept fractional delays
(e.g. wait 0.2).
- Fixing the last bug, I intoduced another one, which made it impossible
to parse an expression like a=-b. This has been corrected.
- Fixed an old bug: In earlier versions yabasic accepted only positive
constants on data-lines and as step-part of a for-next-loop.
- Implementation of circle-command.
- Switched to Version 1.2
- Introduced choice of grafics font.
- Added postscript-support.
- Switched to Version 1.1
- Some sort of memory leak has been closed; in fact, no memory has been
freed at all ! This problem has been fixed, so that even heavy string-arithmetics
should not lead to memory-problems any longer.
- The commands pause (or wait) and bell have been implemented.
- The compilation has become more simple by using xmkmf.
- The for-next-loop has been changed, so that only a number will be accepted
- There have been difficulties on some systems in the case of colour resources.
Ron Nicholson has given me a hint to avoid this problem.
- April 1995: Initial Version 1.0 (0.01 would have been better