Artwork by Don

SUMMARY
If a compiler fails to produce best executables, software developer effort to write efficient and secure code may be quickly defeated. From conception, HotBasic is well-built and highly desirable.
NEWS 2007
Dec 29 MILESTONE HotBasic 5.6 adds full support for thread-safe coding in math computing for all operators, array IO, the exclusive FPU object and almost all native numeric functions. An update of the Manual "Threads" topic documents the wider context regarding HotBasic statements and more.

Dec 23 HotBasic 5.5a adds support for user declared functions as arguments in user declared functions. Previously, any other mix of native and user functions could be used as function and function argument. This adds permutation 4, so to speak.

Dec 10 HotFind for Linux released. Get it on Downloads page and stick it in your "doc" directory.

Dec 5 HotBasic Setup 1.4 for Linux released. Get it in Downloads.

Dec 1 HotBasic 5.5 adds UDTs as UDT members. With constructor syntax, UDTs inherit "properties" of member UDTs. Likewise, a Custom Object can inherit "methods" (SUB or FUNCTION items) of member Custom Objects.

Nov 23 HotBasic Doctor 1.1 Manual interface and web browser released. Get it by running HotBasic Setup 1.2 with HotIDE and Manual checked. If hbdoctor.exe 1.1 is launched with a URL argument, it goes straight to the specified web page.

Nov 18 Get HotBasic Setup 1.4 now to automate compiler and development component download and update in a "standard" HotBasic development setup. Want an automated installation that takes you straight to HotIDE running and ready to compile? This is it.

Oct 24 HotBasic 5.4d adds new ASM statements: ASM EXTERN symbol, ASM INCLUDECODE pathname and ASM INCLUDEDATA pathname, where symbol is the name of a procedure in an external module and pathname is a file which is inserted into the .text (code) or .data sections respectively of the .obj module in a HotBasic compile. Although these statements might be viewed as Directives, HotBasic processes them in the .Code section of a source file; that is, wherever you might use other ASM inserts.

Oct 19 HotBasic adds a MD5 encoding function as an MD5.inc file, now upgraded to process string or file input of any length. Get it in Downloads!

Oct 3 MILESTONE HotBasic Linux 5.4c adds $APPTYPE DLL to create .so library files. Now a host of existing bloat-ware libraries written in C on Linux can be done with HotBasic, resulting in as much as a 10x or more performance boost based on a "computing work" index of run-time x ram used. For Linux servers, this means that the same hardware could support an order of magnitude more simultaneous clients which is not small potatoes. That is, it is feasible that HotBasic could save millions of dollars in hardware costs.

Sep 24 HotBasic 5.4c adds support for creation and use of windows in $APPTYPE DLL similar to usage in $APPTYPE GUI.

Sep 22 HotBasic 5.4b adds support for functions in external modules returning floating types SINGLE, DOUBLE and REAL10. Use DECLARE (or CDECL) FUNCTION name LIB ... AS SINGLE, DOUBLE or REAL10 for either HotBasic or third-party modules (.lib, .obj, .dll, etc). Similarly, in $APPTYPE OBJ or DLL, write the functions AS SINGLE, DOUBLE or REAL10 to link or use with main programs in HotBasic or other languages.

Sep 20 HotBasic 5.4a upgrades BEGIN/END THREAD code blocks for thread-safe usage with multiple threads trying to enter an arbitrary selection of multiple THREAD blocks.

Sep 20 HotBasic 5.4 adds further Multi-Threading support with the STACK(index) numeric function and STACK(index,value), STACKALLOC(n) and STACKFREE(n) statements.
STACK(index) reads a value from the application stack where index is an expression for the 4-byte stack position to read. j=STACK(0) reads value at current stack pointer. In a STD SUB/FUNCTION, STACK(1) reads the first argument, STACK(2) reads the second argument, etc.
STACK(index,value) writes value to the index stack position.
STACKALLOC(n) and STACKFREE(n) allocate and free n 4-byte stack locations for "thread-safe" read/write access with the STACK() function and statement.
5.4 also fixes a bug in code for PROPERTY GET.

Sep 19 HotBasic 5.3g (dated Sep 19) adds PROPERTY GET syntax to run code on read of a TYPE/OBJECT member. Property get code is run if a FUNCTION exists named {upper-case TYPE}{member}_Get. For example, for instance x of object abc, if code contains y = x.Rating, then if FUNCTION ABCRating_Get exists, it is run. Simple-to-code syntax! Why? Because HotBabe loves you. Once again, HotBasic puts to shame the obfuscated, bloated syntax of other languages.

Sep 18 HotBasic 5.3g adds PROPERTY SET syntax to run code on value assignment to a TYPE/OBJECT member. Property set code is run if a SUB exists named {upper-case TYPE}{member}_Set. For example, for instance x of object abc, if code contains x.Rating = 10, then if SUB ABCRating_Set exists, it is run. That simple!

Sep 17 Edit-to-Hotbasic 1.1 updates the RapidQ download adding developing support for conversion of C and Delphi code to HotBasic.

Sep 16 RapidQ-to-HotBasic Source Code Editor 1.0 released. Get it in Downloads.

Sep 14 HotBasic 5.3f adds IADD, ISUB, IMUL, IDIV, IMOD, ISHL and ISHR integer numeric functions with arguments as in the statements for these keywords; and IADD and ISUB statements similar to INC and DEC, to complete the symmetry in keyword statements and functions. Examples:
i = IDIV(j,k)
IF IMOD(i,2) THEN 'true if i is odd

Sep 13 HotBasic 5.3e adds IMOD statement for remainder of IDIV: IMOD(i,j) is i=remainder of i/j.
Sep 11 HotBasic 5.3d adds IDIV, IMUL, ISHL and ISHR to INC and DEC to enhance integer math support. Syntax for INC, DEC, IDIV and IMUL is similar: INC(i,j) is i=i+j; DEC(i,j) is i=i-j; IDIV(i,j) is i=i/j; IMUL(i,j) is i=i*j. Note: These new statements should be faster than conventional notation above. INC and DEC already autodetect and implement INTEGER math.
ISHL and ISHR multiply or divide an INTEGER variable by a power of 2 expressed as an immediate value. ISHL(i,4) is i=i*16; ISHR(i,2) is i=i/4. ISHL and ISHR, where applicable, should be faster than equivalent IMUL and IDIV statements.

Sep 10 HotBasic 5.3c upgrades its exclusive FPU Object with four new statements: FPU.add n, FPU.sub n, FPU.mul n and FPU.div n where n (1 to 7) is the index of a loaded FPU value for the operation (add, sub, etc) with the "top" FPU value.
These new statements produce a dramatic speed increase, since constants can be loaded in the FPU before a loop and used as operands within a loop, thereby eliminating the need to load constants for operations over and over with each loop iteration.
Obvious applications are normalizing vectors, multiplying arrays by constants, including numerous common calculations in statistics such as converting raw data to normalized values with x = (x - mean)/sd, where the mean and sd can be loaded just once before the loop starts, and used over and over for each x in the loop.
This FPU upgrade further establishes HotBasic as the only alternative in serious calculation programs in fields spanning statistics, science and industry.

Sep 8 HotBasic 5.3b adds the DOUBLE type to the parsing of the Custom Object .INVOKE statement, which stores a variable number of expression results in a variant array for COM programming coded as string, integer, double or void variants.

Sep 2 Hotbasic.lib updated to include middle mouse button response to native OnMouseDown, OnMouseUp and OnDblClick events.
Aug 19 New section added to Downloads page: Windows-Linux Cross-Platform GUI demos including source code and Windows and Linux executables.

July 18 HotBasic Manual Updater released. Get it in Downloads.

July 11 HotBasic 5.3 upgrades code-generation smartness -- reducing .exe size and increasing .exe speed. Compile-time is also reduced, since HotBasic is self-compiling.

July 2 HotBasic 5.2i is now Vista command-line compatible for the COMMANDCOUNT and COMMAND$() functions, which now ignore double spaces between arguments. This is an important upgrade for developers distributing programs using these functions for use on Vista.

July 1 HotBasic 5.2h now puts link command-line arguments in a file read by the link program. This change essentially allows both long pathnames and large numbers of files to be linked since there is no attempt to pack all that information in the link command-line itself.

June 19 HotBasic 5.2f fixes a glitch in the END ASM statement and adds .data section offsets for variables to the Symbol Table for use in debugger programs.

May 25 HotBasic 5.2e adds name of library, function and resource not found for run-time errors 1, 2 and 5 respectively.

May 16 HotBasic 5.2d adds auto-initialize of any object you DIM/CREATE. If a SUB exists named "{qualified type in upper-case}_Init", its code is run as part of each DIM/CREATE statement. Examples: MYCUSTOMOBJ_Init, MYUDT_Init, FORM_Init, BITMAP_Init, etc. On entry, internal variable hbObj equals the object's address, and if applicable, as in an extended Custom Object, hbHnd has either the window handle or address of the extended object, as usual in Custom Object procedures. Although this "run code on DIM/CREATE" is a completely general new feature, a major use is in Custom Objects where you want to run initialization code when the user dimensions an instance of the object.

May 14 HotBasic 5.2c adds nested $INCLUDE statements where an included file can contain $INCLUDE statements.

Apr 30 HotBasic 5.2b adds the $OPTIMIZE directive for optimization (same as the -o switch). The Linux version introduces $APPTYPE GUI, as shown in this demo
hbxgui.zip updated: 7/22/07.

Apr 2 Fnoware releases HotBasic Debugger, a must-have HotBasic tool, which can be invoked from HotIDE 2.8.

Mar 31 HotBasic 5.2a Linux adds improved CONSOLE.Event detection, including mapping of Ctrl, Shift and Alt keys to Windows VK_ values (16, 17 and 18 respectively) and to .CtrlKeys bits (Please see hotcon.bas in Linux 1 demos on compiler download page). Commander Keene 1.2 updated for both Windows and Linux so that all launched programs start in the working directory of their pathname.

Mar 21 HotBasic 5.2a Linux includes recent updates such as the -O switch and adds a Linux-only -L switch where one or more libraries for static link can be added: "hotx myprog -lm -lc" would add "-lm -lc" to the end of the linker command-line.

Mar 14 HotBasic 5.2a now integrates HotOptimize pre-processing merely by use of the -O switch (optimize), causing automatic call to hotoptim.exe followed by compile of the optimized code. The only requirement is hotoptim.exe (HotOptimize download) in your HotBasic directory.

Mar 14 HotOptimize 0.9c beta released: removes (1) DECLARE/CDECL ... LIB statements for unused API calls and (2) unused SUB and FUNCTION code blocks along with their DECLARE statements.

Feb 14 HotBasic 5.1c adds support for "As INT64" stack arguments. Within-module SUB/FUNCTION procedures have always supported arguments "As INT64". Now, for external modules (.obj, .dll, etc), a DECLARE/CDECL ... LIB statement may have "As INT64" arguments. Like previous support for "As DOUBLE" arguments, INT64 arguments result in two 32-bit values on the stack for the lower and upper parts of the 8 byte values.

Jan 25 HotBasic 5.1a adds support for TYPELIB resources: *.tlb files.

Jan 18, 2007 MILESTONE HotBasic 5.1 adds native multi-threading (MT) support for multi-CPU (e.g., Dual-Core) processing and in general, for launching additional threads. Syntax: ThreadID = CREATETHREAD lpFunc, lpParam where lpFunc is CODEPTR(Function_Name) and lpParam is the address of a variable or UDT with the function's parameters; WAITTHREAD ThreadID statement used when thread completion is required for subsequent code; IDstatus = WAITTHREAD(ThreadID), function returns true if ThreadID is still running; and numeric function CPUCOUNT returning number of host processors.  MT and/or multi-CPU code may also need HB's BEGIN/END THREAD code blocks, which permit only one thread at a time to enter.
5.1 also adds (1) BYTESWAP statement, ByteSwap i, and numeric function, j = ByteSwap(i); (2) $ARRAYPOS ON/OFF directive (OFF is default for greater speed; ON helps in debugging and causes, with each array read/write, (a) .Position update and (b) subscript out of bounds run-time error checking (ON was default in prior versions). Other code improvements further increase array read/write speed.

HotBasic News 2006 Continued
HotBasic News 2005 Continued
HotBasic News 2004 Continued
HotBasic News 2004 Continued
HotBasic News 2003 Continued
HotBasic News 2003

Copyright © 2003-2008 James J Keene PhD
HotBasic™ is a trademark of James J Keene
Original Publication: May 29, 2003

Back to HotBasic Home Page.



HotBabe:
Miss Compiler 2006