Details
Date 2008-08-10
Version 0.20.0 Beta
Summary AndAlso/OrElse short-circuiting operators and many other improvements in this release.

Most important changes:

  • AndAlso/OrElse short-circuiting operators
  • updated FreeImage support for v3.10
  • 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
  • Many improvements to gfx functions (SCREEN, PCOPY, LINE, CIRCLE)
  • Many improvements to run-time functions (VAL, STR, GET#, LINE INPUT, LEN, DIR)
  • improved dialect support (removed dialect dependencies from the rtlib, added IMAGEINFO, and #lang directive)
  • GOSUB now allowed in fblite (with OPTION GOSUB)
  • SSE/SSE2 support for floating point math (using -fpu sse command line option)


Please see the changelog for a complete list of updates.
Changelog Version 0.20.0 Beta:

[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)




Copyright © 2004-2008 The FreeBASIC development team.