Softpedia
 

WINDOWS CATEGORIES:



GLOBAL PAGES >>
SOFTPEDIA REVIEWS >>
MEET THE EDITORS >>
WEEK'S BEST
  • Sticky Password FR...
  • Parallels Workstat...
  • ESET NOD32 Antivir...
  • BitDefender Total ...
  • WinPatrol 24.6.201...
  • PerfectDisk Free D...
  • Adobe Photoshop CS...
  • PerfectDisk Profes...
  • Windows 8 Consumer...
  • Atlantis Word Proc...
  • 7-DAY TOP DOWNLOAD
    #
    Program
    Sticky Password FREE
    [SOFTPEDIA
    EXCLUSIVE] 6.0.2.323

    86,307 downloads
    Nokia PC Suite
    7.1.180.64

    67,553 downloads
    3DP Chip 12.04
    55,927 downloads
    Adobe Flash Player
    11.3.300.250 Beta 3
    / 11.2.202.235

    43,691 downloads
    Samsung PC Studio
    7.2.24.9

    40,950 downloads
    Nero 9 Free
    9.4.12.3d

    38,685 downloads
    Yahoo! Messenger
    11.5.0.192

    32,509 downloads
    Samsung Kies
    2.3.1.12044_18

    31,776 downloads
    Avira Antivir Virus
    Definition File
    Update May 22, 2012

    31,129 downloads
    Internet Download
    Manager 6.11 Build 7

    30,941 downloads
    Home > Windows > Programming > Coding languages > Compilers > FreeBasic > Changelog

    FreeBasic 0.23.0 - Changelog


    What's new in FreeBasic 0.23.0:

    September 7th, 2011

    changed:
    · 'CLOSE #0' now returns an error, instead of closing all open file handles

    Fixed:
    · Bitfields were allowed to be passed to BYREF parameters
    · #3153953: Faulty reoptimisation of constant optimizing in complex nested addition/subtraction expressions
    · #3327533: Internal compiler error trying to parse non-integer bounds in array declarations
    · C emitter: Erroneous '.0' being appended to double floating point literals like '1e-100'
    · C emitter: Hidden UDT result parameters were emitted last rather than first in function declarations
    · Fixed buggy PRINT USING floating-point scaling, now works more consistently across all platforms
    · Built-in defines (__FILE__ & co) didn't use $ to prevent escaping
    · time() crashed when the system time couldn't be retrieved
    · Extra CR printed in -exx runtime error messages



    What's new in FreeBasic 0.22.0:

    May 18th, 2011

    Changed:
    · "No newline at end of file" warning suppressed unless compiling with -w pedantic
    · FIX(n)/INT(n) no longer affect the type/value of integer-type expressions
    · FB_UNIX__ and __FB_PCOS__ are no longer defined when false, allowing #IFDEF to work
    · MID(s,n,0)=t statement was equivalent to MID(s,n)=t; now it more intuitively sets 0 chars (i.e. does nothing) like in QB
    · Allow -1 to be used as array upper bound, at the cost of -2147483648 being disallowed

    Added:
    · Variadic macros: #define a(x, y...) f(x, y)
    · FB_BACKEND__ define, being defined to "gas" or "gcc" corresponding to -gen gas and -gen gcc respectively
    · Support for user-defined operators EXP/LOG/SIN/ASIN/COS/ACOS/TAN/ATN

    Fixed:
    · 3052712: -pp was not emitting the last line of input if it didn't have an EOL marker
    · inc/win/vfw.bi: Some vfw functions need to use cdecl instead of stdcall (weird API), also added #inclib "vfw32"
    · SGN(const_longint) was leaving the upper 32 bits unchanged
    · FRAC(n) was returning not 0 but n, for integer n
    · FIX(n)/FRAC(n) were allowing the unchanged variable n to be passed by reference.
    · SCREEN(x,y) and VIEW|WINDOW SCREEN weren't recognised in lang QB (it was necessary to use __SCREEN)
    · rtlib allocated room for N user file numbers but only allowed N-1 to be used
    · 3089481: -pp didn't distinguish \" escapes from "" sequences
    · 3089424: type parameter error and missing types in commctrl.bi (thanks to vbmrupp)
    · Multiple typedefs in the same line were not being accepted if each had its own type: 'type a as integer, b as integer'
    · Could not typedef to a forward reference with multi-declaration syntax: 'type as Forward Foo'
    · CONST's on PTR's weren't always preserved on typedefs to forward references
    · Using typedefs and forward references, types with more than 8 PTR's could be created, this will now result in an error
    · Forward references solving was faulty, e.g. a forward reference couldn't be solved with a function pointer or another forward reference
    · 3076871: typeof() was not preserving the data type length when used on operation expressions
    · C emitter: -g and -exx
    · C emitter: circular UDT dependencies
    · C emitter: SWAP on pointers
    · C emitter: arrays/fixlen string declarations
    · C emitter: addrof on functions and string literals in variable initializers
    · C emitter: function pointers/string literals/array/fixlen string accesses
    · C emitter: number literals
    · C emitter: comparisons returned 1 and 0 instead of -1 and 0
    · 2099245: mixing signed and unsigned operands (e.g. c1 + uv1) could result in the wrong result type if the first operand was a const
    · Expressions containing constants that differed by "small" amounts (e.g. a*1e-20, a*1e-30) could be assumed to be equal in comparisons
    · QB-compatible SCREEN modes now default to the same number of pages as QB instead of just 1 (e.g. SCREEN 7 now defaults to 8 pages)
    · patch #3108334: GetKey in graphics modes shouldn't wait 20ms if there is a key already in the key buffer (thanks to TeeEmCee for patch)
    · 3153953: Faulty reoptimisation on (i - (j+C1)*C2 + k)
    · 1444576: WINDOWTITLE() does not persist
    · va_first() not taking into account 4 byte parameter alignment
    · ON ... GOTO with more than the supported number of target labels didn't cause an error
    · Specifying 'stdcall' for procedures did not have an effect on DOS and Unix-like systems
    · Symbol data types could be corrupted when unsolved forward references were used in procedure parameters, local variables and such
    · 2973014: Compiler was crashing on function calls with certain number and kind of arguments
    · va_first() now always returns an ANY PTR
    · 3251750: Local UDT FOR..NEXT iterators could be constructed twice (for i as UDT = ...)
    · STR$() in -lang qb didn't prepend ULONGINT's with a space when evaluated at runtime on non-Windows systems
    · PROTECTED members could be accessed from outside the UDT's namespace
    · inc/crt/stdint.bi: uint64_t wasn't unsigned
    · inc/GL/glext.bi: GL{int|sizei}ptr[ARB] typedefs should be integers, not pointers



    What's new in FreeBasic 0.21.1:

    May 18th, 2011

    Changed:
    · Removed the "v" and "b" from the version number in __FB_SIGNATURE__, following the release archive names

    Fixed:
    · 3034516: Remove trailing backslash from #macro line in inc/ode/odemath.bi
    · gfxlib's x11 window didn't detect the mouse being outside the window sometimes because it checked only the mouse's y position.
    · Added some missing FB_UNLOCK()'s to the rtlib



    What's new in FreeBasic 0.21.0:

    May 18th, 2011

    Changed:
    · BLOAD with 32-bpp BMP files now keeps alpha no matter what kind of header is used; fixes custom 32-bpp DRAW STRING fonts - thanks to Sisophon2001 for spotting this (DrV)
    · lang/$lang statements can now override the -lang command-line parameter (-forcelang has been added to allow overriding them) (counting_pine)
    · Remove GNU extensions in install.sh (DrV)
    · update FreeImage header to v3.11.0 and .def file for Win32 (jeffm)
    · gfxlib internal: remove SCREEN_LOCKED flag since the check can be done using the "lock_count" counter instead (jeffm)
    · remove unnecessary (and undocumented) command line options -nostdcall and -stdcall (DrV)
    · lang qb: Allow DEF___ statements anywhere in code (counting_pine)
    · RANDOMIZE (with no parameters) now uses a default seed that changes more than once a second (counting_pine)
    · ImageCreate and internal screen allocation now aligns buffers to multiples of 16 to make working with SSE easier - thanks to 1000101. (yetifoot)
    · COLOR now stores colors strictly in the format for the graphics screen's bit depth, so the default color can be relied upon when working on the screen, but not on images of a different bit depth (counting_pine)
    · lang fb: Multi-line comments are now completely disallowed in single-line comments - thanks to VonGodric for help (counting_pine)
    · DRAW now accepts numbers with multiple signs/whitespace prepended, and recognises relational distances from the x coordinate only, like in QBASIC (counting_pine)
    · PRINT USING internals overhauled: it is now more reliable and behaves more like QBASIC with respect to parsing and printing (counting_pine)
    · 2483518: Disregard letter suffixes on numbers in asm blocks, so things like "je 2f" can work (counting_pine)
    · Updated examples to current FB, thanks to MOD for the patch (dkls)

    Added:
    · "-fpmode FAST|PRECISE" command line option (brybry)
    · certain single-precision math approximations when using "-fpu SSE" and "-fpmode FAST" (brybry)
    · automatic vectorization for floating-point numbers in "-fpu SSE" FPU mode (brybry)
    · "-vec n" command line option to enable level n of vectorization (brybry)
    · "__FB_FPU__" define whose value is the FPU mode ("x87"|"sse") (counting_pine)
    · "__FB_FPMODE__" define whose value is the type of FPU precision ("precise"|"fast") (counting_pine)
    · "__FB_VECTORIZE__" define whose value is the level of vectorization (brybry)
    · FORMAT now supports the "n" character to unambiguously specify minutes, as in VB - e.g. 'format( now(), "nn:ss" )' (counting_pine)
    · display objinfo configuration in -version (DrV)
    · OpenBSD support started (DrV)
    · Darwin support started (DrV)
    · NetBSD support started (DrV)
    · Multi-monitor support for Win32 GDI and OpenGL gfx drivers (DrV)
    · FBC now reports the error codes in verbose mode if there are failures calling programs like the assembler or linker (counting_pine)
    · Warning if an IF statement immediately follows a multi-line ELSE, due to potential confusion with 'ELSEIF' (counting_pine)
    · Warning when using SHL/SHR if a constant shift value is greater than or equal to the number of bits in the type (counting_pine)
    · forcelang command-line parameter, to override #lang/$lang statements in code (replicates -lang's original behavior) (counting_pine)
    · Ellipsis form in array declarations with initializers, ie "dim as integer array(0 to ...) = {1, 2, 3, 4}" (yetifoot)
    · Naked functions - functions without prolog/epilog code, useful for writing small functions in asm (thanks yetifoot)
    · More specific error message for FOR...NEXT variable mismatches, such as "FOR a ... NEXT b" (counting_pine)
    · support for BYREF AS ZSTRING/BYREF AS WSTRING parameters (counting_pine)
    · Warning when BYVAL AS STRING is used instead of BYREF AS ZSTRING (enable with "-w param") (counting_pine)
    · lang qb: __SCREEN keyword for accessing FB's normal SCREEN syntax (counting_pine)
    · PRINT USING now supports "&" for intelligent number formatting (counting_pine)
    · PRINT USING: normal expressions allowed before USING (counting_pine)
    · PRINT USING: support for SPC/TAB (counting_pine)
    · VAL/VALINT/... now support "&..." for octal numbers, e.g. "&123" (counting_pine)
    · Warning if the file doesn't have a newline at the end (counting_pine)
    · Err may now be called as "Err()", like with a normal function (counting_pine)
    · errors for several cases of division by constant zero (dkls)
    · search 32-bit library paths in the linker scripts for Linux and FreeBSD (cha0s)
    · preprocessor-only mode, activated by '-pp' command-line option (dkls)
    · file> command-line option, to read command-line options from files (dkls)
    · FB_UNIX__/__FB_PCOS__ target type specific defines, thanks to segin for the patch

    Fixed:
    · WIDTH was crashing when optional parameter was not specified (DrV)
    · Initialize unix console cursor location to 1,1 if it is unknown (DrV)
    · ImageConvertRow now aborts if given an invalid source bit depth (counting_pine)
    · comparing [u]shorts with pointers was causing the compiler to crash (cha0s)
    · quickly scrolling the mouse wheel was causing double click events in the x11 (linux) gfx driver (spotted by Sisophon2001) (DrV)
    · FBC wasn't warning in some cases where a number literal was too big to fit in a ulongint (counting_pine)
    · PCOPY, "SCREEN , a, v" in consoles weren't throwing an error if the page numbers were 1 more than the highest console page (counting_pine)
    · lang qb: "SCREEN 0" was trying to set the visible page to 8 (counting_pine)
    · 2057952 - lang qb: fixed floating-point type identification issues (counting_pine)
    · 2068874 - objects of arrays with a destructor but no constructor were crashing due to missed NULL ptr checks (cha0s)
    · 2085637 - define was not catching illegal symbol names (cha0s)
    · Backslashes could escape End-of-line characters in string literals (counting_pine)
    · Expressions with side-effects could be optimized away in some cases, e.g. cint(rnd) * 0 (counting_pine)
    · WINDOW was swapping float coordinates using an int value (counting_pine)
    · Faulty optimisation for "IF (a >= a | a



    What's new in FreeBasic 0.20.0b:

    January 23rd, 2009

    Changed:
    · the "-r" compiler switch will now prevent FBC compiling/linking the asm, unless overridden by "-c". Its old behavior is now given by "-R" (counting_pine)
    · update FreeImage header to v3.10 and .def files for Win32 (cha0s)
    · x11 gfx driver: let the window manager pick the window position (DrV)
    · '&' string concatenation will not pad positive numbers, even in lang qb (counting_pine)
    · removed runtime check for dialect in BLOAD/IMAGECREATE/GET so they will respect the dialect where used even if main module is compiled under a different dialect. qb/fblite uses old header and fb uses new-header. (jeffm)
    · lang qb can now use all the OPTIONs fblite can, e.g. OPTION STATIC|BYVAL|... (counting_pine)
    · CVD / CVS may no longer be constant, since binary equivalence cannot be guaranteed at compile-time (counting_pine)
    · binary operator overload resolution logic: Now an operator is only eligible if at least one side of the expression matches the candidate's parameter list exactly, without implicit coercion/casting. (cha0s)
    · the default aspect ratio for CIRCLE is now 1.0 in SCREENRES modes (counting_pine)
    · CIRCLE should get its size from just the horizontal scale of the WINDOW/VIEW viewport - its ratio should be unaffected (counting_pine)
    · DIR may now accept a byref [u]integer for out_attrib (byval integer ptrs are still allowed) (counting_pine)
    · SCREENLOCK/SCREENUNLOCK now keep a reference count internally to allow them to be used inside functions without unlocking a global lock (DrV)
    · linux: only specify linker script path for standalone builds (fixes lib path problems on x86-64) (DrV)
    · removed mini.bi, example, and wrapper (jeffm)
    · BLOAD now supports 15, 16, and 32-bpp BMP files, alpha in 32-bpp BMP files (BITMAPV4/V5HEADER only), arbitrary BI_BITFIELDS bitfields, and OS/2 BMP files (DrV)
    Added:
    · #lang directive and $lang metacommand to set compiler dialect from source code (jeffm)
    · IMAGEINFO function, for retrieving useful information about FB gfx buffers (counting_pine)
    · warning message when string literals aren't closed with a quote (counting_pine)
    · C emitter: GOSUB and ON GOSUB using setjmp/longjmp (jeffm)
    · "-z gosub-setjmp" command line switch will select setjmp/longjmp implementation even if the backend is ASM (jeffm)
    · fblite, qb: OPTION GOSUB, OPTION NOGOSUB to enable/disable GOSUB support. State can be checked with the intrinsic define __FB_OPTION_GOSUB__ (jeffm)
    · #1899251 (feature request) - RETURN without GOSUB runtime error check for both ASM and setjmp/longjump implementations of GOSUB (jeffm)
    · ANDALSO and ORELSE operators (yetifoot)
    · "-R", "-C" switches, to tell FBC to retain the asm and object files (if written), respectively (counting_pine)
    · SSE/SSE2 instructions in x86 emitter for floating point math (Bryan Stoeberl)
    · "-fpu FPU|SSE" command line switch (Bryan Stoeberl)
    · OPTION("FPU|SSE") to specify proc return method (Bryan Stoeberl)
    · CPU check for SSE applications (Bryan Stoeberl)
    · #1515157 (feature request) - GET# returns number of bytes read in 5th byref parameter (jeffm)
    · improved error messages for GET#/PUT# - warn if passing a pointer as source/destination, error if elements is given on string or array (jeffm)

    Fixed:
    · wstring VAL*s were accepting invalid characters in hex/oct/bin numbers (counting_pine)
    · PCOPY wouldn't copy graphics screens higher than the max console page (counting_pine)
    · VAL on non-win32 platforms was only accepting 'e' (not 'd') as an exponent specifier (counting_pine)
    · VAL* was saturating instead of overflowing large numbers in some cases (counting_pine)
    · wstring VAL was truncating hex/oct/bin numbers to 32 bits (counting_pine)
    · constant ASC expressions were returning signed integers instead of uintegers (counting_pine)
    · STR should pad numbers if and only if it is called from a lang qb module, even in multi-module programs (counting_pine)
    · #1933706 - !"a" was not working correctly (yetifoot)
    · #1914051 - Some unhandled escape sequences were being allowed through (yetifoot)
    · #1861363 - gfxlib win32 gdi driver was using the alpha_remover_blitter on depths < 32 bits (jeffm)
    · #1931922 - lang qb: prototypes for overloaded procdefs were not being added correctly (jeffm)
    · lang qb/fblite was allowing dups of unsuffixed variables having different types (jeffm)
    · lang qb: LEN() was allowing UDT's and typedef's (jeffm)
    · GET/PUT were discounting padding at the end of UDTs (counting_pine)
    · escaped strings in unicode sources were crashing the compiler (counting_pine)
    · WRITE wouldn't append a comma or newline to empty strings (counting_pine)
    · serial driver on linux wasn't handling device names correctly (jeffm)
    · #1957281 - PALETTE in Screen 12 should work like in Screen 13 (counting_pine)
    · string literals in #defines couldn't contain double-quotes (counting_pine)
    · Three-digit decimal escape sequences would swallow the next character if it was decimal as well (counting_pine)
    · #1914051 - !"x..", !"X.." escape sequences weren't working properly (counting_pine)
    · #1961732 - LSET wasn't accepting dereferenced vars for the destination (counting_pine)
    · RSET was allowing constants to be modified (counting_pine)
    · CPTR() will generate a warning if casting to anything but pointer, integer, or enum and will generate a pedantic warning when casting to anything but pointer (jeffm)
    · #2004439 - LSET/RSET was not deleting temporary string descriptors for the destination (jeffm)
    · #1914763 - LINE INPUT to a WSTRING variable on an ascii text file was failing if last line of file had no end of line character (jeffm)
    · #1979795 - GETMOUSE in Win32 GFX driver was not clearing the status of the XBUTTON's correctly (jeffm)
    · #2016487 - inc/win/vfw.bi - Changed "Delete" to "Delete__" and ported the remaining IC* AVI* and MCI* defines (jeffm)
    · "TYPE FOO : AS INTEGER BAR : END TYPE" wasn't allowed because a bitfield value was expected to follow "BAR : " (counting_pine)
    · Casting ops that called a function (e.g. CSNG("..."), CLNG/CVL ) weren't necessarily returning the exact desired type (counting_pine)
    · #1872418 - Win32 GFX updater thread was calling rtlib string conversion unsafely in the non-threaded version of the rtlib (jeffm)
    · internal: lang qb/fblite - error recovery for duplicate defs could cause a out of bounds array access in symbGetDefType because the temporary name begins with '.' (jeffm)
    · #2038666 - lang qb: variables with the same name as a keyword must have a suffix (jeffm)



    What's new in FreeBasic 0.18.3b:

    January 5th, 2008

    · Changed: lang qb: INTEGER (%) and LONG (&) are now, respectively, 16- and 32-bit wide
    · Changed: lang qb: default numeric literals are now assumed to be INTEGER or SINGLE
    · Changed: lang qb: symbols with the same name as keywords are now allowed: dim left as integer: const dim$ = "" etc
    · Changed: lang qb: all data types and functions/keywords not present in QuickBASIC were removed
    · Changed: allow "3.6e-08f" notation (type specification is accepted after 'e')
    · Changed: ang qb: SLEEP(n) expects seconds
    · Changed: ang qb: INKEY$ returns CHR$(0) as the extended character
    · Changed: PUT ALPHA with alpha paramter = 0 does nothing
    · Changed: update OpenAL (0.0.8) and alut (1.1.0) headers
    · Changed: update OpenAL and alut .def files for Win32
    · Changed: update ODE (0.9) header and import library (Win32), removed examples/libraries/ode
    · Changed: CONDWAIT now takes a second parameter, a mutex, and now operates identically to pthread_cond_wait
    · Changed: INSTR( s1, ANY s2) returns 0 if s1="" or s2="" as per documentation
    · Added: CONST qualifiers
    · Added: CONST member procedures
    · Added: lang qb: STICK(n) and STRIG(n) functions
    · Added: RESET(0|1) procedure to reset stdio handles after redirection
    · Added: headers for ogg and vorbis
    · Added: error when NEXT var does not match FOR var
    · Added: "-w next" warning when variable is specified after NEXT
    · Added: borderless opengl windows on linux
    · Added: allow GFX_NO_FRAME in Win32 OpenGL gfxlib driver
    · Added: added the VK_A-VK_Z and VK_0-VK_9 scancodes in winuser.bi
    · Added: #1816871 - sizeof() is now usable in asm blocks
    · Added: INSTR( wstring, ANY wstring ) was missing from the rtlib
    · Added: rtlib implementation of INSTRREV - (W.I.P.)
    · Added: First version of COM/serial support for DOS, W.I.P.
    · Fixed: self ops defined as global needed to throw an error
    · Fixed: GOTO, GOSUB and RETURN were accepting invalid labels
    · Fixed: SCREENLOCK/SCREENUNLOCK is now properly handled by the DOS gfxlib
    · Fixed: DOS console SETMOUSE was not scaling the coordinates
    · Fixed: parameter type mismatches weren't being caught with bydesc parameters
    · Fixed: more robust solution for solving deadlock on app close if screenlock is called with no screenunlock
    · Fixed: close window fixes in examples
    · Fixed: mouse_init for linux tty was failing
    · Fixed: #1815503 - do nothing if radius




    WindowsGamesDriversMacLinuxScriptsMobileHandheldNews

    SUBMIT PROGRAM   |   ADVERTISE   |   GET HELP   |   SEND US FEEDBACK   |   RSS FEEDS   |   UPDATE YOUR SOFTWARE   |   ROMANIAN FORUM