| What’s_New

v2.4.3 Jan 2025

  • Updated the XSED editor with new styling, new fonts, and new icon set for menus and toolbar,
    and many new menu items. New icon set includes both 16×16 and 32×32 icons.
    The new menu items include Reload, Rename, Delete, Delete All Project Files,
    Copy to Clipboard > Copy File Path, Copy File Name, Copy Directory Path, Insert Breakpoint.
    Tab control is owner drawn which adds tab colors, tab color bar, close button, and file modified icon.
    Tabs can be dragged to new positions.
    Add/Delete bookmarks by left click on line in bookmark margin.
    Added Monospace filter to Font Selection and Font Size group.
    Added color syntax for function names.
    Improved auto indentation to unindent on END, ENDIF, ELSE, LOOP, NEXT.
  • Added demo programs edit_sync, toolbar_custom_colors, tooltip_tracking, find_replace, and 64-bit console program helloworld64.
  • Added several functions to xsx.x.
  • Added View Hexdump to XSED Run menu (caution: output app_hexdump.txt file can be 6x size of app.x file)
  • Added ability to build debug executable and run GoBug debugger on current program from within XSED.
    XSED menu items added for Build Debug and Run GoBug.
  • Added statements to app.bat to ensure path to xblite.exe compiler is set.
  • FORMAT$ can have * and 0 padding

v2.4.2

  • Minor compiler changes to optimize ASM output.
  • Added support for Go only compiler tools using goasm, golink and gorc together.
    This can be used with -go compiler switch and linking to goxbl.dll. No MS tools are required.
    Using -go compiler swithch and goxbl.dll adds ability to link to Dll’s without need for LIB files.
    Static librairies can also be linked using modified function calls in your program.
    See example programs in \demos\godll folder.
  • winX examples programs have been added to the \demos\winX examples folder.
  • Added demo programs \gui\drawhilbert.x,\console\installed_ram.x.
  • Used Inno Script Studio to create self-installing package instead of a zip file.

v2.4.1

  • Exception functions (XstTry) have been rewritten to handle floating point exceptions.
  • Various compiler fixes.
  • Added XstSequentialParse$, XstBMSearch, and XstRemoveExcessDelimiters$ to Xsx library.
  • DEC files can now use IMPORT statement (recursively).
  • Programs which use m4 now export the preprocessed file as myfile_static.x.
  • The compiler now checks the use of VOID as a function return value and provides an
    error when a VOID function attempts to return a value.
  • Added 25 gdiplus demos in \demo\gdiplus\ folder.
  • Added demos dlgtemplate.x, stickyedge.x, udt.x, rot13.x, makemultifolders.x, floatexception.x,
    xsttry.x, consolemouse.x, version.x, and underflow.x.

v2.4.0

  • Various compiler bug fixes and optimizations.
  • Output .def file has been streamlined and is created only if program
    is compiled as library.
  • Moved all Xst exception functions from xst library to xsx.
  • Added DATA statement for storing string data, eg,
    DATA “abcd”, “123”, “2.56”
    READ a$, b, c#
    See demo program eliza.x
  • Added Xin, a winsock/internet protocol library, including demos using Xin.
  • Moved win32 helper functions XstCenterWindow, HIWORD, LOWORD, MAKELONG,
    and RGB from xst to xsx.
  • Added memory management functions Xmalloc, Xrealloc, Xcalloc, and Xfree.
  • Removed internal call to Xit so all exception handling must be done
    using XstTry.
  • The runtime library xbl.dll is 13% smaller and is now 58 kb.
  • Added dbase III+/IV library, Xdb3.
  • Added ftp library, XinFtp.
  • Added new demo programs talk.x, vbscript.x, easun.x, eliza.x, gol.x,
    ping.x, xsttry.x, writecon.x, sourcesort.x, proplistbox.x, sizer.x,
    comgen.x, picturebox.x, unigui.x, define_guid.x, dma.x, xinclient.x,
    xinhttp.x, xinserver.x, xinsmtp.x, restart.x.
  • Two Pelles C utilities are included in the distribution, polink and polib.
    They can be invoked by using a custom makefile, pelles.xxx. In PROLOG, add:
    MAKEFILE “pelles.xxx”.
  • Any program which exports functions must contain a PROGRAM statement,
    otherwise, it is not required.

v2.3.1

  • Fixed compiler bug in IMPORT statement.
  • Rebuilt all libraries without optimization.
  • Added gui demo program transforms.x.

v.2.3.0

  • XBLite can be installed into any folder on any drive. After unzipping the
    \xblite package into a folder, run the install.exe program in the \xblite\bin folder
    to set the correct environment variables.
  • The compiler library, xcowlite.dll, and the compiler program, xblite.exe, have
    been combined into one program, xblite.exe.
  • The makefile program nmake.exe has been renamed to xmake.exe. This will prevent
    confusion with other versions of nmake.exe which may be installed on one’s computer.
    So it is required to delete all compiler generated make files (*.mak) and re-compile
    all programs.
  • All batch files have been modified to remove references to xblite environment variables.
    These variables are now supported automatically after running the install.exe program.
    So it is required to delete all compiler generated bat files (*.bat) and re-compile
    all programs.
  • The compiler now supports a beta version of a peephole optimizer. Use the -o switch
    when compiling a program to run the optimizer on the output assembly.
  • You can now use variable names directly in inline assembly language code.
    See asmvariable.x in \demo\asm\asmvariable\ folder.
  • The xsed editor has been updated to v1.23 with bug fixes and support for -o peephole
    optimizer switch.
  • The compiler and runtime library xbl.dll have been updated with many new optimizations
    and bug fixes.
  • Added two new custom controls, lcdpanel.x and led.x.
  • Added several new demo programs:
    hanoi.x
    idea.x
    multidim.x
    circlegame.x
    lander.x
    iwebbrowser2.x
  • Added a new library to support unsigned 64-bit arithmetic math operations,
    see \xlibs\u64.x.
  • Updated the html help file to v1.09.

v.2.2.0

  • Added support for line continuation using underscore character “_” at the end
    of a line. See the console demo helloworld.x.
  • Compiler optimizations and bug fixes.
  • PROGRAM statement parameter must match program’s filename, otherwise an error
    will be displayed. This statement is only required for libraries.
  • xsed v1.21 released with many new features and xsed HTML Help manual updated.
  • Added several new demo programs:
    helloworld.x
    fontresource.x
    mbb.x
    filesearch.x
    polygon_rendering.x
    sendkey.x

v.2.1.0

  • Added static libraries for all xblite DLLs, eg, xst_s.lib can be
    imported and will replace the need to link to xbl.dll. All static
    libraries have _s suffix. The utility buildlib.exe can be used to
    create static libraries. Static libraries are linked at compile-time
    by the linker so they are incorporated into the final executable, thus
    removing the need for external DLLs. Special thanks to Greg Heller for
    making this happen!
  • Added the ability to use the m4 macro preprocessor using a -m4 compiler option.
    This allows user defined macros and the ability to include
    external files into your programs.
  • The keyword COMMENT has been removed.
  • The keyword ASM is now used instead of ! as the inline assembly marker.
  • The ? character can be used as an equivalent to using a PRINT statement.
  • New intrinsics ROUND, ROUNDNE, and CEIL have been added.
  • New CSV functions by Alan Gent have been added to Xsx library:
    XstBuildDataArray
    XstLoadCompositeDataArray
    XstLoadData
    XstSaveCompositeDataArray
    XstSaveDataArray
  • New unicode functions by Alan Gent have been added to Xsx library:
    XstAnsiToUnicode
    XstUnicodeToAnsi
  • Two new Xma functions by Alan Gent, Fmod and Fround.
  • The runtime library xbl.dll has been reduced in size to 71kb.
  • Added several new demo programs:
    editsubclass.x – a demo to subclass edit control
    filetree.x – a tree control which displays a file/directory tree
    rtracer.x – raytracing program(s)
    docksplitter.x – a custom splitter control now used in xsed
    fround.x – test of Fround function
    m4test.x – test of using m4 preprocessor
    seive.x – seive algorithm
    printdirect.x – printing direct to printer w/o spooling
    quiner.x – a new quine using ? as PRINT
    unicode.x – demo of XstAnsiToUnicode function
    comparray1.x – demo of new CSV functions
    comparray2.x – “”
  • The xblite distribution has been split into two parts, with the
    compiler, libraries, and demos in one part, and the source code
    in the second part.
  • Fixed bugs in handling longdouble arrays.
  • Updated xsed editor to use new splitter control and added command line
    options to compiler options dialog box.

v.2.0.1

  • Fixed minor compiler bugs
  • Fixed bug in XstGetCPUName
  • Updated template makefiles so they handle all xblite file extensions

FAQ for XBLite v2.0.1
Q. Why is Spasm still part of the distribution?
A. Spasm is still used for building some parts of the instrinsic functions,
contained in the static library xblib.lib. When those functions are all
converted (a painstakingly slow task) we can kiss Spasm goodbye completely.
The use of Spasm vs. GoAsm for that code has no effect whatsoever on the
compiler efficiency or code output – it is not used by the compiler.

Q. Why are xcowlite.dll and xcowlite.x so much smaller?
A. The intrinsic functions were stripped out, and the compiler was
significantly simplified.

Q. What is the xblib.lib library?
A. This is a static library that contains all the intrinsic functions.
It is linked at compile time, there is no xblib.dll.

Q. Are there any new optimizations? Are my programs going to be faster?
A. Yes, but nothing that really uses the power of GoAsm yet, like MMX code.
The goal of this release was more to build a stable compiler that emits
GoAsm code, and I hope we have accomplished that.

Q. What is the most significant optimization?
A. The function prolog is more efficient. To see the difference, compile
and run the benchmark.x program with the former build, and compare it
with the benchmark.x results of the current build. On my P4 the time
to run was about 35% of the previous. On my AMD the results are less
dramatic, but still significant. The reason is that the AMD runs the
“unoptimized” code much better than the Pentium, so the opmization was
not as dramatic on the AMD.

Q. Why are pelles’ utilities polib, polink, & porc included in the \bin folder?
A. These tools can be used to build slightly smaller executables.
Use the template makefile pelles.xxx. In the future, we hope to migrate
to the full suite of GO tools.

v.2.0.0

  • Greg Heller has modified the xblite compiler so that it now emits
    assembly for the 64-bit GoAsm assembler.
  • See http://www.jorgon.freeserve.co.uk/ for details on this 64-bit assembler.
  • The previous xbasic assembler spasm has now been replaced by goasm
  • Assembly files now use *.asm file extensions.
  • Added COMMENT/END COMMENT statement for commenting blocks of code.
  • Added XstCall, XstFileExists, XstStripChars and XstTranslateChars to the xsx library.
  • The compiler has had numerous changes and optimizations made.
  • XSED has been modifed to accept *.asm files and tools menu added to toolbar.
  • Intrinsic functions are now statically linked using xblib.lib.

v.1.4.3

  • Many new improvements to XSED editor.
  • Added EXPLICIT statement.
    Use EXPLICIT in PROLOG, all variables must be explicitly defined by type
    within every function or an error occurs.
  • Added many demos by Michael McElligott, including glfw library demos
    see alphagui.x, avi.x, consoletimer.x, hexviewer.x, keylog.x, quine.x
    progbar.x, rainbow.x, popcharmap.x, and smtpmail.x.
  • Added new functions to image library Xil.
  • Fixed many compiler bugs related to LONGDOUBLE type.
  • Added code profiling utility to profile functions, see \tools\profiler, still a WIP.
  • Modified several DEC files to reflect win32 API type definitions.
    Now use POINT, RECT, MSG, SIZEAPI instead of other variations.
  • Other bugs fixed in xcowlite.x

v.1.4.2

  • New XSED programmers editor for XBLite.
  • Added several new command line switches: -mak, -rc, -bat, -nowinmain, -nodllmain.
  • Added compiler code to trap TYPE and constant errors in *.dec files,
    providing the DEC filename and linenumber. This will cause .dec errors
    to stop the compiler and issue an error with the line no and dec filename.
  • Updated HTML manual.
  • Added new demos lvprogbar.x, rcdata.x, thumbnail.x, benchmark.x,
    piclassic.x, pidigits.x, formatcode.x, uncomment.x., nqueens.x., eval.x.
  • Added a custom wavefile library, Xwav, which creates and plays wav files.
  • Added XprRawTextToPrinter() to Xpr library.

v.1.4.1

  • Corrected errors in make file for xbl.dll.
  • Corrected demos which had errors when running under Win2000 Pro.
  • Modified template files xapp.xxx and xdll.xxx so they work with Win2k.
  • Added new demo programs like.x, finddirs.x, datetimeformat.x,
    threadpool.x, and xbgridfill.x.
  • Modified several demo programs to ensure they work w/ Win2k.

v.1.4.0

  • Extended language with new floating point data type LONGDOUBLE (12 bytes).
  • Added rudimentary math support for LONGDOUBLE type.
  • Added LONGDOUBLE(), LONGDOUBLEAT() intrinsic functions.
  • Added FPU control word functions.
  • Added LONGDOUBLE support functions.
  • Error corrections made to many *.dec files.
  • Updated XBlite manual.

v.1.3.1

  • Modified compiler emitted code.

v.1.3.0

  • Runtime DLL is now named xbl.dll to avoid problems with XBasic xb.dll.
  • Updated XBLite manual.
  • Compiler now emits asm for most intrinsic functions directly into user program.
  • Xst console functions have been moved to Xio console io library.
  • Xst console function have been renamed with Xio prefix.
  • Xio library functions have been rewritten.
  • XBlite created DLLs should now be able to be called by C programs.
  • Start up code for executables is now emitted directly to program by compiler so xstart.o is no longer linked to your executables.
  • Runtime library xbl.dll is 25% smaller.
  • Fixed bug when using C functions with var number of params (…) and user defined types.
  • All GUI demos have been modified to correct minor errors.
  • The code for FORMAT$ intrinsic has been moved to an object file xformat.o and is statically linked to executable when FORMAT$ is used.
  • Many new demos including xbgrid, a XBLite ‘babygrid’ grid control.
  • XBLite programs can now have .x, .xl, or .xbl file extensions.

v.1.2.0

  • Added new Error Handling routines by Ken Minogue.
  • Updated XBLite manual/fixed errors.
  • Added many new demos (too numerous to list).

v.1.1.0

  • Added keywords CONSOLE, MAKEFILE, PACKED.
  • Modified IMPORT statement.
  • Fixed shared variable error.
  • Updated XBLite manual with new keywords.
  • Added new demos: dragndrop.x, lorenz.x,
    puzzle.x, geturl.x, threads.x, statbarprogbar.x.