[FR] [IT]

The fastest BASIC compiler for the Mac
Staz Software, Inc

New FB 5 package
  • Freeware package
  • Revised Editor (Universal binaries)
  • Integrated C translator
  • GCC or clang compiler
  • Improved Project Manager
  • Enhanced new header files
  • Streamlined runtime
  • New documentation (in progress)
  • Hundreds of examples
  • Carbon compilation
Old FB 4 package
  • Freeware package
  • Great Editor
  • Integrated super fast Compiler
  • Project Manager
  • Debugger
  • Profiler
  • Program Generator (CASE tool for 68K & PPC)
  • .nib's I.B. files support via programming
  • Rich documentation
  • Abundant examples
  • Open Source Runtimes:
    • Console
    • BASIC Standard
    • Appearance
    • Toolbox
    • BASIC-88
  • Carbon compilation
  • PPC & 68K inline assembly
  • Toolbox and shared libraries access
  • Appli mini: 28 Kbytes
  • Appli maxi: 2 Gbytes
  • System mini: Mac OS 7.6 for FB^3
  • System mini: OS X 10.2 for FB4

European Edition:
  • No more specific European edition
  • Localisation is open to anyone

Web site maintained by
Friendly links:Menu


Download for free
New FutureBASIC & FBtoC at www.4toc.com/fb/
Old FutureBASIC at Staz Software web site

July 2019

FB 6.0.1 & FB 5.8.6

FB 6.0.1 release notes.

  • Project
    • double-clicking an FB file item now opens the file in FB6, rather than FB5.
    • option-clicking a group's expand/collapse triangle expands/collapses all groups
    • two font sizes choices (small & regular) - set via preferences or project contextual menu
    • Find in project now has its own panel (project Find & Replace will be in next release)
  • Document
    • Edit menu Copy removes leading tab characters and replaces divider line attachments with text equivalent before putting on pasteboard

Standalone FBtoC directory: also updated and available at the same link on the FBtoC web page or from the link here

:: CocoaUI changes that may break existing apps ::

The textview statement's subclass parameter has been removed. Syntax is now:

textview tag, rect, scrollViewTag, textContainerRef, wndTag

N.B. to subclass a textview, use the subclass keyword (see CocoaUI Reference)

The view statement's subclass parameter has been removed. Syntax is now:

view tag, rect, wndTag

N.B. to subclass a view, use the subclass keyword (see CocoaUI Reference)

:: CocoaUI Additions and changes ::


parameter removed
The textview statement's subclass parameter has been removed. Use the subclass keyword (see CocoaUI Reference)

View parameter removed
The view statement's subclass parameter has been removed. Use the subclass keyword (see CocoaUI Reference)

Cumulative Release Notes detail the changes and FBers are encouraged to read them

Link to download the new FB version and examples: here

June 2019

FB 5.8.5

FB 5.8.5 requires OS X 10.7+ for CocoaUI apps. Non-CocoaUI apps require 10.6.

All changes/additions for this release are CocoaUI-related.

:: Changes that may break existing apps ::

Function name changed from OutlineItemAddChild to OutlineItemAddChildWithString

Tag value upper limit
Header name changed from Tlbx CocoUI_Contacts.incl to Tlbx Contacts.incl

Window and widget tag values must now be less than 1000000

Cumulative Release Notes detail the changes and FBers are encouraged to read them

Link to download the new FB version and examples: here

April 2019

FB 5.8.4

FB 5.8.4 requires OS X 10.7+ for CocoaUI apps. Non-CocoaUI apps require 10.6.

:: Changes that may break existing apps ::

Header name changed from Tlbx CocoUI_AVKit.incl to Tlbx AVKit.incl

Header name changed from Tlbx CocoUI_Contacts.incl to Tlbx Contacts.incl"

Header name changed from Tlbx CocoUI_ContactsUI.incl to Tlbx ContactsUI.incl

Header name changed from Tlbx CocoUI_CoreLocation.incl to Tlbx CoreLocation.incl

KeyedUnarchiverInitForReadingFromData function name changed to KeyedUnarchiverForReadingFromData

Header name changed from Tlbx CocoUI_MapKit.incl to Tlbx MapKit.incl

Header name changed from Tlbx CocoUI_Metal.incl to Tlbx Metal.incl

Header MTKViewInitWithFrame function name changed to MTKViewWithFrame

Header Header name changed from Tlbx CocoUI_PDFKit.incl to Tlbx PDFKit.incl"

Cumulative Release Notes detail the changes and FBers are encouraged to read them

Link to download the new FB version and examples: here

March 2019

FB 5.8.3

FB 5.8 3 requires OS X 10.7+ for CocoaUI apps. Non-CocoaUI apps require 10.6.

:: General ::

A few minor translator-related changes and many CocoaUI enhancements and changes.:

Changes that may break existing apps

All function names and variable types renamed to have 'AV' prefix.

Cumulative Release Notes detail the changes and FBers are encouraged to read them

Link to download the new FB version and examples: here

January 2019

FB 5.8

FB 5.8 requires OS X 10.7+ for CocoaUI apps. Non-CocoaUI apps require 10.6.

:: General ::

FB's version bump to 5.8.0 reflects a gradual move to exclusively 64-bit builds and includes early steps to update various aspects of internal code. Some specific changes:

  1. FBtoC now accepts and builds CFString constants and DATA statements longer than 255 characters. Key internal data structures and dependent code were switched away from length-limited pascal strings to achieve this. N.B. Literal (CF) strings still have a static character limit of 750 characters.

  2. 32-bit builds are now deprecated and generate a warning to switch to 64-bit builds. Please note: FBtoC/FB will build 64-bit apps exclusively at some future date and will not generate 32-bit apps.

    Users with 32-bit apps have a couple of choices:
    1. Save an FB version that supports 32-bit builds
    2. Update your code to support 64-bit builds

  3. FBtoC now accepts both .xib and .nib files.

  4. Crash using FBtoC's "Make Xcode Project without stripping" caused by early object release is fixed.

  5. FBtoC's unix utility, mkdir(), fails if the path name contains any unacceptable characters; this failure can generate obscure FBtoC crashes. Code now rejects, with an error message, any source path containing characters not in:
    A-Z (upper/lower case) digits 0-9, underscore, hyphen, asterisk, percent symbol, hash symbol, '$' sign, close/open parenthesis, backslash, forward slash and space. Since I haven't found a list of characters mkdir() accepts, it's possible this character list will need amending. From my experience one unacceptable character  is 'ƒ'. If any of the "acceptable" characters are found "unacceptable" by mkdir(), please post on list so FBtoC can be updated. Thank you.

  6. Redundant includes (for FBtoC.h and Runtime.h) removed from FBtoC's internal versions of General.c, Containers.c, FileHandling.c, FileHandlingUtils.h/.m and AppThings.m. Please note: these changes were tailored to FBtoC's needs and were not made to build_goodies versions of these files.

  7. Several internal FBtoC bugs fixed.

Like usual, new demos and other details are listed in the Cumulative Release Notes

Link to download the new FB version and examples: here

November 2018

FB 5.7.120

FB 5.7.120 requires OS X 10.7+ for CocoaUI apps. Non-CocoaUI apps require 10.6

:: General ::

  1. FixSDK updated to prevent fixing or restoring a 10.14 SDK by hiding the Fix/Restore button for it. This update was pushed out on 26-Oct-2018 and updated the FB 5.7.119 download.

:: CocoaUI changes and additions ::

  • Changes that may throw up warnings

    1. TextView
      TextViewTextStorage function's return value changed from CFMutableAttributedStringRef to TextStorageRef. A cast may now be required to silence compiler warning

  • Changes that may break existing apps

    1. FontManager
      FontManagerSetSelectedFont( CTNSFontRef font ) now takes an extra param:
      FontManagerSetSelectedFont( CTNSFontRef font, Boolean isMultiple )

    2. TextView
      The textview statement now has an extra 'subclass' param:
      textview tag, rect, scrollViewTag, textContainerRef, subclass, wndTag

    3. Workspace
      WorkspaceFileTypeConformToType name changed to WorkspaceFileTypeConformsToType  (typo fix)

Link to download the new FB version and examples: here

September 2018

FB 5.7.119

FB 5.7.119 requires OS X 10.7+ for CocoaUI apps. Non-CocoaUI apps require 10.6

:: General ::

  1. Building 64-bit and targeting an 'unfixed' SDK produced a warning sheet (‘missing Quickdraw headers’) when setting FBtoC's BaseSDK. Fixed. Note: as of FB 5.7.117, ‘fixing’ SDKs is not necessary when building 64-bit apps. i.e. unfixed SDKs can be used.

:: CocoaUI changes and additions and new demos ::

Many additions, changes and new demos are detailed in the Release Notes.

:: Changes that may break your app ::

  1. Dictionary
    DictionaryWithContentsOfURL now takes an extra param:
    DictionaryWithContentsOfURL(CFURLRef url, ErrorRef *err) = CFDictionaryRef

    DictionaryWriteToURL last param type changed:
    DictionaryWriteToURL(CFDictionaryRef dict, CFURLRef url, ErrorRef *err) = Boolean

  2. FileManager
    FileManagerURLForTemporaryDirectory name change to match NSFileManager method: FileManagerTemporaryDirectory

  3. Window
    WindowSetFrame now takes two additional params:
    WindowSetFrame(NSInteger tag, CGRect frame, Boolean display, Boolean animate)

Link to download the new FB version and examples: here

August 2018

FB 5.7.118

FB 5.7.118 requires OS X 10.7+ for CocoaUI apps. Non-CocoaUI apps require 10.6

:: General ::

  1. ToolbarItemExists throws up a "duplicate symbol" error due to a function of the same name in Util_Toolbar.incl when building 5.7.117. For now the CocoaUI function is commented out and awaiting a possible later introduction.

  2. Reorganized CocoaUI runtime caused compile errors due to missing declarations in the .h file. Fixed in an updated 5.7.117

  3. Tlbx Dispatch.incl and Tlbx clock_types.incl included in an update 5.7.117

  4. FB Help for time$/TimeCFString and date$/DateCFString updated. Included in an update 5.7.117

  5. Stray unwanted files (build_temp, invisibles ) removed from build. Included in an update 5.7.117

  6. TWM.app replaced with one that doesn't crash on quit. Included in an update 5.7.117

  7. Some of FB's Help menu items were not showing up. Code updated to NSFileManager. Included in an update 5.7.117

:: CocoaUI changes and additions and new demos ::

Many additions, changes and new demos are detailed in the Release Notes.

:: Changes that may break your app ::

  1. Application
    AppSetTimer now returns a CFRunLoopTimerRef so calls to this function must be preceded by "fn"

  2. OperationQueue
    OperationQueueAddOperationWithFunction now takes an extra "obj" param (can be NULL)

  3. Window
    WindowCascadeTopLeftFromPoint now returns a CGPoint value therefore calls to this function must be preceded by "fn"

Link to download the new FB version and examples: here

July 2018

FB 5.7.117

FB 5.7.117 requires OS X 10.7+ for CocoaUI apps. Non-CocoaUI apps require 10.6

:: General ::

  1. FBtoC's "Make Xcode Project..." would warn to add the Quartz.framework manually to the generated Xcode project. FBtoC now asks clang to link against the Quartz.framework which solves the problem and elminates the warning. The include library "Quartz" line of code was removed from Rntm Appearance.incl since the FBtoC change renders it unnecessary. This fix applies to standard FB user app builds too.

  2. The multi-dimensional object array (MDArray.incl) utilities were updated to support multiple indices. See FB Examples (FB_5_7_117_Examples/Non-CocoaUI demos/CoreFoundation/MDArray (multi-dimensional)) for the include and demos.

  3. FB Help Additions and Changes oriented toward CocoaUI
    1. FB's new for..in object iterator loop now documented in the for loop section
    3. FB's dialog function and user-designated event handling function (i.e. fn DoDialog) are detailed more in the dialog(CocoaUI) section.
    5. The on dialog page was updated.

  4. Renamed header, TextServices.tlbx, to Tlbx TextServices.incl

  5. IOKit Headers (OSX IOKitLib.incl, OSX IOSerialKeys.incl, OSX termios.incl) updated

  6. AccessoryView with CocoaUI example in Examples/Non-CocoaUI demos/Files/OSPanel examples fails in 64-bit. Updated to use cocoainit.

  7. New NSLog example shows debugging macro usage. Examples in: Non-CocoaUI demos/Debug/Debugging Macros and /CocoaUI demos/Debug

:: CocoaUI changes and additions (thank you Bernie) ::

Many additions, changes and new demos are detailed in the Release Notes.

:: Changes that may break your app ::

  1. AffineTransform
    AffineTransform function name changed to AffineTransformInit
  2. BezierPath
    BezierPath function name changed to BezierPathInit
  3. IndexSet
    IndexSet function name changed to IndexSetInit
  4. PrintPanel
    PrintPanel function name changed to PrintPanelInit
  5. ProcessInfo
    ProcessInfo function name changed to ProcessInfoInit
  6. TextContainer
    TextContainerInit function name changed to TextContainerWithSize
  7. TextView
    The textview statement change - now takes an extra param
    textview tag, rect, scrollTag,textContainerRef, wndTag

Link to download the new FB version and examples: here

June 2018

FB 5.7.116

FB 5.7.116 requires OS X 10.7+ for CocoaUI apps. Non-CocoaUI apps require 10.6

:: General ::

  1. Fast Enumeration For Loop. Collection types currently supported:
    CFArray, CFMutableArray, CFDictionary, CFMutableDictionary, CFSet, CFMutableSet, OrderedSet, MutableOrderedSet, CountedSet, PointerArray.

  2. Stop statement change (AppThings.c) to use kCFStringEncodingUTF8 for message string.

  3. Bug fix to OPEN "I" to allow 'file not found' reporting with FB's file I/O error handling.

:: CocoaUI changes and additions (thank you Bernie) ::

Many additions, changes and new demos are detailed in theRelease Notes./p>

:: Changes that may break your app ::

  1. BundleExecutableURL name changed due to typo.
  2. GraphicsShowAnimationEffect name changed to NSGraphicsShowAnimationEffect

Link to download the new FB version and examples: here

May 2018

FB 5.7.115

FB 5.7.115 requires OS X 10.7+ for CocoaUI apps. Non-CocoaUI apps require 10.6

:: General ::

  1. CocoaUI scripts palette content updated.

  2. Release Notes pdf rebuilt with an export from Pages instead of TextEdit.

  3. CocoaUI's StringApplyTransform requires macOS 10.12+ but was incorrectly included for any OS version.
    Please note: the FB programmer is still responsible for using an appropriate SDK (10.12+). This fix was also applied and announced on list for an interim 5.7.114 build.

  4. DateCFString/TimeCFString added to runtime. Similar to date$/time$ (now deprecated) but accepts and returns CFStrings instead of pascal strings. FBHelp and 'Examples/Miscellaneous/DateCFString Demo' for more details.

  5. YAST (Yet Another Scrolling TextView) example removed from 'Examples/Text/Scrolling text views' because the bundle it depends on is 32-bit and uses obsolete 'TXN' calls.

  6. FixSDK version 1.2.7 update and miscellaneous fixes:
    • now code signed for Apple's Gatekeeper;
    • import/export alert sheet;
    • alert when 10.6 SDK is missing;
    • non-recursive search of export directory;
    • remembers export directory after exporting a single SDK.

:: CocoaUI changes and additions (thank you Bernie) ::

Many additions, changes and new demos are detailed in the Release Notes.

Please check the Release Notes first before posting a "...it worked in 5.7.114" message. Saves everyone precious time. Thank you!

:: Older Downloads note ::

FB 5.7.110 through FB 5.7.113 inclusive will be removed once FB 5.7.115 is deemed stable.

Link to download the new FB version and examples: here

March 2018

FB 5.7.114*

FB 5.7.114 has some late fixes, described below, which are available by downloading FB again from the FBtoC web site.

  1. CocoaUI scripts palette updated
  2. Release Notes rebuilt for higher quality PDF.
  3. fn StringApplyTransform is now included only when the macOS is 10.12+. Please note: the FB programmer is still responsible for using an appropriate SDK (10.12+) in Build Settings.

FB 5.7.114

FB 5.7.114 requires OS X 10.7+ for CocoaUI apps. Non-CocoaUI apps require 10.6

:: General ::

  1. Building a single source file with compile options -m64 and -DDECARBONATE failed with a NSFileHandle clang error in the FBInforForOpenFile struct inside FBtoC.h. Changing the struct field declartion to void* (makes it consistent with OSX SerialIO.incl) solves it.
  2. TWM as crashing on quit. Hopefully fixed.
  3. Similar fix for RECORD, LOF statements as described in FB 5.7.113's item #2 release notes.
  4. PrintFloat(), PrintTab(), PrintLong(), PrintSpc() runtime functions were excluded for 64-bit builds. Now included for both 32 and 64-bit builds.
    WARNING/N.B.: This change supports PRINT to file and PRINT to buffer for 64-bit builds. PRINT to screen and PRINT to printer are not supported in 64-bit builds.

:: CocoaUI changes (another veritable plethora from Bernie - thank you!) ::

Many additions and changes (please see the Release notes for all details, warnings, reminders etc.)

N.B. Those not reading the Release Notes will miss a lot of good information.

Link to download the new FB version and examples: here

FB 5.7.113

FB 5.7.113 requires OS X 10.7+ for CocoaUI apps. Non-CocoaUI apps require 10.6

:: General ::

  1. Replacement call, PMPrintSettingsSetJobName(), added to Tlbx Printing.incl. PMSetJobNameCFString, now removed by Apple, and commented out of this include;
  2. Long, tight loop in FB file I/O (PRINT#, READ, WRITE etc.) exhausted file descriptors, resulting in I/O failures. Note: see list post [in FB Mailing List] on 28-Feb-2018 File I/O update and news regarding Carbon/Cocoa for more information about the issue and the fix implications.

:: CocoaUI changes (another veritable plethora from Bernie - thank you!) ::

Many additions and changes (please see the Release notes for all details, warnings, reminders etc.)

Link to download the new FB version and examples: here

February 2018

FB 5.7.112

FB 5.7.112 requires OS X 10.7+ for CocoaUI apps. Non-CocoaUI apps require 10.6

:: General ::

  1. FBtoC now accepts up to forty parameters inside a function call. The previous maximum was 16;
  2. _kHIWindowBitTextured added to standard headers inside Tlbx MacWindows.incl.

:: CocoaUI changes  ::

Many additions and changes (please see the Release notes for all details )

Please note the following:

  1. Many of the more recent Util_xxxx.incl files are now integrated into CocoaUI.
    Those includes are no longer required because Tlbx CocoaUI.incl makes them available. Even though they are integrated, the function names have changed slightly. For example, instead of calling fn FM_TrashItemAtURL(url) and using the Util_FileManager.incl, call fn FileManagerTrashItemAtURL(url) and use only Tlbx CocoaUI.incl.
    Impacted Util_xxxx.incl files are shown below and are still available for those not using CocoaUI:


  2. Because of the changes in #1, some apps will break and will need changes. The CocoaUI user will need to:
    • Remove any old include statements (i.e. Util_FileManager.incl)
    • Rename the function calls (FM_Xxx -> FileManagerXxxx, etc.).

  3. A name change for function GraphicsCurrentCGContext. It is now GraphicsContextCurrentCGContext

  4. Examples for the former Util_xxx.incl functions noted in #1 have been updated and copied to FB Examples/Cocoa/CocoaUI Demos

  5. Thank Bernie for all the CocoaUI work; another impressive contribution.

Link to download the new FB version and examples: here

February 2018

FB 5.7.111

FB 5.7.111 requires OS X 10.6 or higher.

:: A short note from Brian ::

Eugen's recent post [in the FB mailing list] and use of fn DictionaryWithObjects (from Util_Dictionary.incl) made it clear FBtoC's 16 parameter limit for function calls needs an increase. In 2007/2008, when FBtoC was built, the sixteen parameter size made sense. Today with more powerful machines, a slightly larger function table does not impact performance and the memory increase is negligible.

For those needing this increase, I've updated the 5.7.111's download and it's available now. The maximum number of parameters is now forty.

January 2018

FB 5.7.111

FB 5.7.111 requires OS X 10.6 or higher.

:: Enhancements ::

  1. Many CocoaUI additions and changes. See Release History Notes for a list of them;
  2. New OSPanelSave accessory view example using CocoaUI now in: Examples/Files/OSPanel examples;
  3. New CocoaUI demos: TextField Arrow Keys; TableView Sort; MiniwindowImage; FontPanel, AboutPanelWithOptions.

:: Note ::

There are no Editor or FBtoC changes in this release.

Link to download the new FB version and examples: here

December 2017

FB 5.7.110

FB 5.7.110 requires OS X 10.6 or higher (and might require 10.7 with some features)

:: Fixes ::

This release addresses several serious failings:

  1. FB's Error window failed to display all errors and warnings
  2. File reads with Line Input would inexplicably fail and only read part of the file but not all.
  3. Some file writes involving one character per write would also see the same failure as #2.
  4. Double clicking an Error window item would show a blank dialog due to a file failure. This is not a total fix but should improve reliability.

:: Additional note ::

FB's I/O commands (like LINE INPUT) would only read or write a partial file and not all of it. This was caused by inappropriate accumulation of file handles (NSFileHandle) which resulted in exhaustion of available file descriptors.
Typically this only occured when FB file I/O was transferring one byte at a time. Fixed (I hope).

Link to

download the new FB version and examples: here

November 2017

FB 5.7.108

FB 5.7.108 requires OS X 10.6 or higher (and requires 10.7 with some features as CocoaUI)

:: Updates ::

  1. Lots of CocoaUI additions and changes - see "CocoaUI changes" in the release notes
  2. New CocoaUI demos for:
    • GCD dispatch
    • TextView Attributed strings
    • TitlebarAccessoryView
    • DragDrop View
    In addition, several CocoaUI demos received bug fixes and updates to reflect current CocoaUI syntax.
  3. FB I/O keyword code (i.e. OPEN, READ/WRITE, LOF, RECORD, APPEND etc. ) updated
    It should deliver more consistent cooperative advisory locking on local storage. Network advisory locking not supported.
    Please look for a separate list post with more operational details.
  4. FBtoC crashes instead of reporting a Bad Factor on 'end fn = r' where 'r' is an undefined record name.
  5. FBtoC's Make Xcode Project (with stripping) now works albeit with UI beachballing.

Please refer to the release notes for details.

CocoaUI continues to be a work in progress.

:: A note from Bernie ::

As with previous releases, one or two things have changed which may break existing apps.
The most likely cause(s) of failure this time around:

  • The TextFieldSetFormat function has had its name changed to ControlSetFormat. Also, the last param of this call is now a long value (was Boolean). Please see ControlFormatter demo in Examples/Cocoa/CocoaUI/ and ‘// format case options’ in the Control.incl header for available constants.
  • TextViewString and TextViewSetString have been renamed to TextString and TextSetString.

btw, a couple of new examples that may be of interest:

  • ~/View/DragDrop View
  • ~/Menu/SpecialMenus

:: Additional note from Brian ::


FB's I/O statements were updated earlier this year(FB version 5.7.99) to 64-bit which meant removing all the Carbon file manager calls (FSReadFork etc.). The Carbon file manager calls handled a lot including advisory locking behind the scenes.


FB's I/O's cooperative advisory locking is limited to direct attached storage (i.e. internal drives and external direct attached drives) because extensive testing and experience of other implementors (see my post HERE for details, another method of accessing network files from FB and lockfile usage suggestions) proved it often doesn't work for files on network drives.

A prime goal of FB's advisory locking is to help the FBer know:

  1. When a file is already being accessed exclusively or in OPEN "N" mode.
  2. Provide error messages when code attempts to access a file inappropriately (e.g. code attempts to WRITE a file opened for input only "I").

FBHelp notes for OPEN "N" describe some of the error numbers and messages. For this release, FB I/O verbs adopt the standard error numbers and corresponding error descriptions (see standard C header: usr/include/sys/errno.h) as provided in the automatically set 'errno' variable. The code below shows how to extract a standard error description using an error number.

include "NSLog.incl"
_EAccess = 13  // Permission denied
_EAgain  = 35 // Resource temporarily unavailable

local fn ErrDescription( ioError as short ) as CFStringRef
 dim as CFStringRef s
  s = (CFStringRef)[NSString stringWithFormat: @"File i/o error # is:%d, %s", ioError, strerror( ioError )];
end fn = s

dim as CFURLRef     url
dim as short        fNum, ioError : ioError = 0 : fNum = 1

url = OSPanelOpen( 0, @"Open plain text file" )

on error end
error = _noErr
open "N",fNum, @url
ioError  = error
error = _noErr

select switch( ioError )
 case 0
  NSLog( @"I/O established in \"N\" mode\r\r" )
 case _EAccess// permission denied. i.e. requested access NOT granted. In this case "I" granted instead of "N"
  NSLog( @"I/O warning: %d, Description: %@", ioError, fn ErrDescription( ioError ))
  NSLog( @"I/O warning: %d, but access granted in \"I\" mode\r\r" )
 case _EAgain  // resource temporarily unavailable - another process has it in "R" mode maybe
  NSLog( @"I/O error: %d, Description: %@", ioError, fn ErrDescription( ioError ))
 case else
  NSLog( @"I/O error: %d, Description: %@", ioError, fn ErrDescription( ioError ))
end select



Link to download the new FB version and examples: here

October 2017

FB 5.7.107

FB 5.7.107 requires OS X 10.6 or higher (and requires 10.7 with some features as CocoaUI)

:: Updates ::

  1. CocoaUI additions, changes and new demos.
  2. Minor editor fix.

Please refer to the 5.7.107 release notes for details.

Please note that existing apps using CocoaUI will probably break with this release.

  1. The following statements have had one or more parameters removed and those attributes are now set by function calls:
  2. TextFieldStringValue no longer exists - use ControlStringValue instead

Link to download the new FB version and examples: here

October 2017

FB 5.7.106

FB 5.7.106 requires OS X 10.6 or higher (and requires 10.7 with some features as CocoaUI)

:: Updates ::

  1. CocoaUI additions, changes and new demos.
  2. Bug fixes, some new headers and demos.
  3. More FB runtime updated to 64-bit.
  4. Other updates.

Most of the FB runtime is either 64-bit or has been supplanted by CocoaUI for the UI interaction in AppThings.c. (release notes list which runtime files are 64/32-bit). Route to buffer and Printing in AppThings.c need a look when there's time.

Please post to the FutureBasic list at associate.com if you encounter an FB statement/command that you think isn't 64-bit and for which you haven't found a replacement. The 64-bit runtime conversion isn't completely finished but it's getting closer.

Please refer to the 5.7.106 release notes for details.


Link to download the new FB version and examples: here

September 2017

FB 5.7.105

FB 5.7.105 requires OS X 10.6 or higher (and might require 10.7 with some features as CocoaUI)

:: Updates ::

  1. Containers now are pointer-based instead of handle-based (SEE NOTE BELOW).
  2. Many CocoaUI additions and changes.
  3. Several important bug fixes.
  4. Other updates.

Please refer to the 5.7.105 release notes for details.

:: NOTE ::

This release's container update could prevent your app from compiling and could cause it to malfunction. Please refer to the 5.7.105 release notes for details.

FBers using containers: READ the release notes before updating your app and adopting the new FB 5.7.105.


Link to download the new FB version and examples: here

August 2017

FB 5.7.104

FB 5.7.104 requires OS X 10.6 or higher (and might require 10.7 with some features)

:: Note ::

This release contains one or two updates which may prevent your app from compiling.

:: Updates ::

  1. Bug fixes.
  2. New project template updated to new window statement syntax.
  3. Run statement now accepts CFString path or CFURL. The old 'path$' syntax is deprecated.
  4. Kill Field statement removed. Those needing to continue with this functionality should either use an older release or use the direct toolbox call: if (h) {if ((HGetState(h) & 0x20) == 0) DisposeHandle(h);}
  5. System() function updated. Many old selectors removed.
  6. New FB header, Util_RunningApplication.incl, provides information about running application(s). See FB Examples/CoreFoundation &Cocoa/Cocoa/Util_RunningApplication.incl example(s)/RunningAppDemo.bas.
  7. TWM updated to version 1.9.14.
  8. New FB Header, Util_UserDefaults.incl, is a functional replacement for Util_CFPrefs.incl.
  9. During a dialog _btnClick event, the button's window number can now be retrieved with dialog(-1).
  10. New reserved words introduced. Note that reserved words cannot be used as variable names and will fail when building with "Bad factor in expression in line xxxx". The most likely new words to cause a failure are: 'imageview', 'panel', 'scrollview', 'slider', 'toolbar' and 'view'. For more information on the new reserved words, see CocoaUI.pdf in FB's Help menu

The Release History Notes detail other additions and changes and everyone is encouraged to read them before installing this release.

Also, thanks to Steve Crossman for his continued web services support.

Link to download the new FB version and examples: here

June 2017

FB 5.7.102

FB 5.7.102 requires OS X 10.6 or higher (and might require 10.7 with some features).

:: A message from Brian ::

Please read the following introduction before downloading and replacing your current FB; it is important to know the impact.

:: Introduction ::

This new release contains several potentially impactful changes. Depending on your code, it may not compile with this FB version. Only some major changes are described here, so please read all of the release history notes (link below) as they may impact your code.

  1. Per previous list announcements, Appearance Window and Window statement have changed and will require code changes in your own source code.

    1. Appearance Window statement is deprecated and the translator warns and suggests moving to the Window statement.
      Note: Appearance Window continues to work with the Quickdraw Rect and is the same as FB 5.7.101. Hopefully, this helps with the transition.

    2. Window statement's parameters are identical to Appearance Window except the rectangle and window attribute have changed.

      1. Rectangle parameter: If used, must be a 'CGRect'; a QuickDraw 'Rect' is no longer accepted. (x1,y1)-(x2-y2) format still available.

      2. Window attributes: Are specified in a standard array instead of OR'ing into an integer. Also, the attribute constant names have changed.

      See FB Help for details on the CGRect and window attributes.

      FB source demonstrating basic window creation with CGRect/Window statement may be found here: NewWindows.bas

      If you have lots of windows and need conversion help, there is a new NWS utility (for new Window Statement) available.
      The include, NWS.incl, is already in the 5.7.102 headers and the demo: NWS Demo clarifies operation.

      Read the NWS.incl header and the demo for more information. It builds a menu with the names of all the windows in your source code and then generates the new code. All you have to do is copy/paste the new code! Thank you to Bernie for building this gem.

  2. Introduced as an option in release 5.7.42 (February 2016), the following statements now require CFString titles and no longer accept pascal strings

    1. Appearance Window
    2. Window
    3. Appearance Button
    4. Button
    5. Apple Menu (*)
    6. Edit Field
    7. Menu
    8. Shutdown

    (*) Apple Menu also accepts CFArray of titles

The Release History Notes detail other additions and changes and everyone is encouraged to read them before installing this release.

Also, thanks to Steve Crossman for his continued web services support.

Link to download the new FB version and examples: here

April 2017

FB 5.7.101

FB 5.7.101 requires OS X 10.6 or higher.

:: New ::

  1. Util_Workspace now a standard FB Header - Bernie
    1. Access to many NSWorkspace options in simple FB functions
    2. See the examples at FBExamples/Files/Util_Workspace examples
  2. Util_Array.incl now a standard FB Header
    1. Useful helper functions call to some of NSArray's methods. Bernie
    2. One cool function is ArrayWIthObjects() and could be used to pass UTIs to the new OSPanelOpen() as Bernie showed on list on 21-April-2017
    3. See the examples at FBExamples/CoreFoundation & Cocoa
  3. Util_Dictionary.incl now a standard FB Header
    1. Useful helper functions call to some of NSDictionary's methods. Bernie
    2. See the examples at FBExamples/CoreFoundation & Cocoa

:: Fixes & Updates::

  1. OSPanelOpen/OSPanelSave's FBHelp received some minor modifications to clarify the type of parameters it accepts. Brian (pushed out in later update to .100 too)
  2. FB 5.7.100 issues files$ deprecation warnings and suggests OSPanelOpen/OSPanelSave. Brian
  3. Files$'s FBHelp updated to issue deprecation warnings. Brian
  4. Minor updates to FBtoCConsole.incl to use OSPanel instead of files$. Bernie
  5. Minor update to MDArray.incl in FBExamples. Bernie
  7. FBtoC printed a double "Warning:". Bernie
  8. Apple's new file alias inclusion in its SDKs generates a Base SDK popup with a nameless first item. Bernie.
  9. Editor file save crashes when user selects Cancel. Bernie
  10. FBtoC crashes trying to execute ShowAlert() and its subordinate [NSAlert runModal]. Needs to run on main thread. Brian
  11. Editor updated to use OSPanel for File==>Open… menu option. Modernizes code and allows it to remember the last directory the FBer opened when used next time. Brian
  12. Minor updates to OSPanel's FB Help to clarify allowFileTypes are file extensions and UTIs and not OSTypes
  13. VAList in FBExamples updated to use the C macros.

Link to download the new FB version and examples: here

April 2017

FB 5.7.100

FB 5.7.100 requires OS X 10.6 or higher.

A message from Brian S.:

This release introduces OSPanel and its new FB keywords, OSOpenPanel and OSSavePanel. Since they are keywords, there are no extra includes to remember and are part of the standard FB runtime. They provide the functional equivalent of the old files$ plus additional features. Here are some (but not all) new features:

  • Designate a starting directory for the panel (dialog)
  • Remembering directory from last open
  • Designate tags
  • Extending a dialog with your own controls
  • Sheet use1

Additionally, the new keywords are very flexible (parentheses and all parameters optional). Plus there are other subordinate new keywords that can be used to prepare the panel's appearance and other related needs.

The best way to learn about all the new keywords is exercise the demos at FBExamples/Files/OSPanel examples and review the FBHelp.

OSPanel is now recommended instead of files$ or the (carbon-based) NavDialog calls and both of the latter are deprecated and should not be used going forward. files$ is available in 5.7.100

Reason for change:
Even though files$ was limited to using CFURLRefs in the last release, it continued to use Carbon-based NavDialog calls for the dialog UI. The change to OSPanel makes all the code Carbon-free.

Sheets attached to FB-created (i.e. appearance window) parent windows may exhibit detachment of the parent window in some specific scenarios and other undesireable window drawing artifacts. Apparently, not every OS releases exhibits this problem but the issue is rooted in a parent Carbon window (i.e. parent Cocoa windows are fine). The demos show two ways of doing sheets both with/without Cocoa windows.

General note:
Several FBers contribute to the update effort and the release notes now identity the persons mostly (approximately 95%+ of the effort ) responsible for the coding effort in each area, even though others not mentioned might have contributed.

:: New ::

  1. OSPanelOpen/OSPanelSave are new built-in FB keywords. They offer more options than files$ but don't use the Carbon framework. Bernie with some nudges from Brian
  2. FBHelp updated to include OSPanelOpen/OSPanelSave. Bernie/Brian
  3. TWM - The Window Maker - builds graphical window and generates FB source - now included in FB5. Bernie

:: Fixes ::

  1. redefined variable’ errors if both Util_FileDirectory.incl & Util_FileManager used in same project/file. Bernie
  2. DEFSTR long incorrectly generates '8' instead of '4', so any functions using the gPSDefStrSize global receive the wrong size. Brian

Link to download the new FB version and examples: here

March 2017

FB 5.7.99

FB 5.7.99 requires OS X 10.6 or higher.

A message from Brian S.:

Please read the following introduction before downloading and replacing your current FB; it is important to know the impact. Download link at the bottom.


Unlike some FB5 releases, this one contains several changes which impact your current FB source code. Depending on your code, it may not compile with this FB version.
Internally, all of FB runtime disk-based file I/O system (with some specific exceptions which will be noted later) was updated and is now 64-bit compatible. In some cases the updates impact the operation and syntax of specific FB file I/O keywords. Most FB file I/O keyword's operation and syntax are exactly the same while a few have slightly different syntax/requirements and behavior. It is important for FBers to understand these impacts, assess the work involved, and decide how/when to implement this new FB release.
Like usual, old releases and the prior release (5.7.97) are available. Hopefully, this moves us closer to a "Future" BASIC. The design goal was to keep the language in familiar territory with the same keywords while upgrading the supporting runtime.


:: Overview of Changes to FB File I/O ::

As usual, the Release History Notes detail the changes but here is an overview.

  1. File-based versions of the OPEN statement (open modes "I", "O", "A", "R" and "N") must specifically use the CFURLRef version. OPEN no longer supports FSSpec or FSRef.
  2. OPEN "N" now provides an automatic read-only open when a file is already open in "N" mode.
    It notifies the code of the automatic selection of "I" mode, when "N" was requested, via FB's standard ERROR functions. See code below at note:1
  3. READ/WRITE FIELD are removed due to use of deprecated Handles and potential links/associations with old code.
    Replacement options were discussed in Jan/Feb 2017 FB list discussions. See this link for a possible replacement strategy:
  4. FB's FILES$ now uses/returns only a CFURLRef for each of the three major options(i.e. selecting a file, a folder, or save location/name)
  5. Util_Files.incl uses outdated (parameter block) file functions. N.B. IF YOUR CODE USES FUNCTIONS FROM THIS INCLUDE, IT WON"T BUILD.
    In all cases this include's functions can either be replaced with similar URL functionality or the functionality is obsolete (Resource fork stuff). If you can't find modern replacements, please ask on the list.
    One replacement example: fn FSSendFileToTrash( sourceObj as ^FSSpec ) can be replaced with one of the new Util_FileManager.incl code. (see FB Examples/Files/Util_FileManager Demos/TrashItemAtURL)
  6. Coding errors can cause crashes because the error isn't found until it runs.
      For example:
    1. A "Bad file descriptor" crash message indicates a file i/o attempt which isn't allowed by the OPEN mode (i.e. opening in mode "I" and trying to write the file)
    2. Using the wrong filedID i.e. opening file #1 for read and then trying to read file #2 when fileID #2 doesn't exist.

The Release History Notes detail many other additions and changes and FBers are strongly encouraged to read and understand their impact.

:: What didn't change in FB File I/O ::

  1. Even though their underlying code changed a lot, most FB file I/O verbs/keywords use the same syntax.
    For example: ErrorCloseWrite#Input#Print#RecordLOFEOFRecLocRead File, Write FileAppend, Open "C" and Open "UNIX" all have the same syntax. Such is the benefit of an abstracted high-level language.
  2. The relative performance and usage recommendations remain the same. For example, using read# with multiple variables generates more code (potentially a lot more) than doing a read file# into a FB record (C structure) or pointer. Read# generates one physical read per variable versus one read for the entire FB Record in Read File#. Here is an example with an FB record reading four variables with Read File vs. Read:

    begin Record myRec
      dim as short   a
      dim as long    b
      dim as Str255  c
      dim as double  d
    end Record
    dim as myRec        aRec

    This FB:          read file #2, @aRec, fileSize

    Generates this C: FBReadFile( 2, (void*)(void*)&aRec, false, fileSize );

    This FB:          read #2, aRec.a,aRec.b,aRec.c;13,aRec.d

    Generates this C: aRec.a = FBReadSwapShort( 2 ); 
      aRec.b = FBReadSwapLong( 2 ); 
      FBReadString( 2, (char*)&aRec.c, 13 );
        aRec.d = FBReadSwapDouble( 2 ); v

  3. This FB release brings lots of new headers, updates and bug fixes. Most timely is the new addition of Util_FileManger to assist with the new OPEN and FILES$. Thank you Bernie.

:: Notes ::

Code below shows interception of an OPEN "N" notification and how to determine if "I" mode was assigned because file is in use.

include "NSlog.incl"

dim as CFURLRef     url
dim as short        ioError : ioError = 0
dim as CFIndex      fileSize 
dim as CFStringRef  s 
dim as dim as       p

s = @"/Users/brians/Desktop/mytextfile2.txt"
url = fn CFURLCreateWithFileSystemPath( NULL, s, _kCFURLPOSIXPathStyle, _false )

on error end
error = _noErr
open "N",1, @url
ioError  = error
error = _noErr
// _opWrErr (-49) file already open with with write permission*/
// in this case another process has the same file open in mode "N"(since this process does not),
// so the runtime opens the file for you in read-only mode (like mode "I") and notifies
// the FBer of this action by sending back the _opWrErr code. Brian 20170303

select switch ( ioError )

case _noErr
   // No problem, your code has the file open in "N"

case _opWrErr
   // other code (or code in another process) already has the file open in "N"
   // so your code now has this file open in "I" mode
   NSLog(@"ioError = %d", ioError )
   fileSize = lof(1,1)
   p = fn malloc( fileSize )
   read file #1, p, fileSize
   s = fn CFStringCreateWithBytes( NULL, #p, fileSize, _kCFStringEncodingMacRoman, _false )
   free( p )
   NSLog (@"%@",s ) 
   CFRelease( s )
   Close #1
end select

CFRelease( url )


:: Additions and Changes ::

  1. FileHandling.c updated to 64-bit - Brian All FB's I/O verbs no longer accept FSSpecs/FSRefs and only accept CFURLRefs. See Jan/Feb 2017 FB list discussions for details.
    1. the file-based version of the OPEN statement must specifically use the CFURLRef version (OPEN UNIX and OPEN "C" excepted because not file-based)
    2. READ/WRITE FIELD are removed and no longer supported due to use of deprecated Handles. Replacement options were discussed in Jan/Feb 2017 FB list discussions.
    3. FB Help's 'Appendix A - File Object Specifiers' updated to reflect removal of FSRef/FSSpec support and sample code updated.
    4. FB's Rename verb now accepts only CFURLRefs. Syntax is: rename urlForCurrentFile urlForNewFile.
    5. FB's Kill now accepts only a CFURLRef for the file name.
    6. FB's files$ now only uses/returns a CFURLRef for each of the three major options listed in FB Help. FB Help updated to reflect changes.
      1. "ConsoleWindow"'s usage of files$ updated to use URL. I don't like it because ConsoleWindow depends on an FSSpec for its TXNSave() use.
      2. New constants for files$ _URLOpen, _URLFolder and _URLSave are preferred over their predecessors _CFURLRefOpen, _CFURLRefFolder and _CFURLRefSave but have the same values.
      3. OPEN/FILES$ changes to Editor source to allow it to build with FB 5.7.99.
      4. FBtoC flags non-CFURLRef files$ usage for the variable but does not check the mode constant;  but runtime honors only valid modes.
        1. Make sure to check files$'s returned fileName for non-zero length. Zero indicates failure and possible bad mode constant.
    7. Apps crashing with a "Bad file descriptor" message indicates a file i/o attempt which isn't allowed by the OPEN mode (i.e. opening in mode "I" and trying to write the file).
    8. A second attempt (either within the app or another app) to OPEN "N" on a file currently/already open in "N" mode has specific new behavior compared to prior FB5 versions:
      1. The second attempt process/code is given read-only access (essentially "I" mode) to the file.
      3. The FB runtime sends a "file already open with with write permission" (_opWrErr) error code which can used by the caller (must be trapped with 'on error' and "error")
      4. Even though opened for "I" after a request for OPEN "N", it must be closed or any subsequential exclusive OPEN requests will fail.
      5. FBers should always check the error status returned by any file OPEN and take appropriate steps.
      6. N.B. OPEN code only provides access; it does not provide any data integrity protection when there are concurrent readers and writers of the same file.
  2. Util_FileManager additions - Bernie
    1. File access functions written with only modern 64-bit code. Eventual replacement for Util_FileDirectory.
    2. Only supports CFURLRefs and does not support FSRefs or FSSpecs.
    3. Several demos available in the FB Examples
    4. Util_FileManager.incl inlcudes Util_PathUtilities.incl and Util_URL.incl
    5. Util_FileDirectory is still available for those who need it but folks should plan to migrate to Util_FileManager.
  3. New/Changed Headers and Examples - Bernie, Steve VV, Brian
    1. A slick multi-dimensional Core Foundation array implementation handles all the details. See: FB_Examples/CoreFoundation and Cocoa/MDArray (multi-dimensional)
    2. Tlbx CFUUID.incl and Tlbx CFStringTokenizer.incl added to Headers
    3. CFMeasurement headers and demo added to FB Examples
    4. Superscript/Subscript demos added to FB Examples
    5. Util_Files.incl uses outdated (parameter block) file functions. N.B. IF YOUR CODE USES FUNCTIONS FROM THIS INCLUDE, IT WON"T BUILD.
  4. Default error function - Brian
    (i.e. when it isn't supplied via 'on error fn yourErrorHandler' in your own code) updated to include:
    1. error string and comment
    2. N.B. Carbon calls GetMacOSStatusErrorString() and GetMacOSStatusCommentString() were NOT used. Cocoa's NSError used  [NSError errorWithDomain:NSOSStatusErrorDomain
  5. NSLog.incl updates - Bernie
    1. silence a clang 'dealloc' warning (accidentally omitted in 5.7.97)
    2. Copy & Copy All items added to text view’s contextual menu
    3. NSLogBeginEditing & NSLogEndEditing. Bernie's explanation follows:
      Multiple NSLog calls in big loops can make it appear that your app is hanging. After issuing NSLogBeginEditing, the NSLog text view is only updated at the point NSLogEndEditing is called.

      // — Example1 ---
      On my machine, this takes about 95 seconds for the text to appear.

      for i = 0 to 150000
        NSLog(@"string %d",i)
      next i

      // — Example 2 ---
      Enclosing the code in an NSLogBeginEditing/NSLogEndEditing pair takes less than 4 seconds.


      for i = 0 to 150000
        NSLog(@"string %d",i)
      next i


    ** REMINDER: there is a header file that needs to be updated for the structure used in FileHandling.c **

:: Fixes - Brian ::

  1. FBtoC Help, inadvertently omitted in 5.7.97, is back again.
  2. Editor scrolls source view to an incorrect line number but FBtoC's line number is accurate (captured value of global in local before doing a dispatch async)
  3. Comparing an FB container to a string constant resulted in string stack failure (changed gFBStk to SInt16 in Runtime.h and General.c so it can go to -1 instead of 65535)
  4. FBtoC's Settings dialog would not show up when requested via the Editor's preference pane option. Thanks to RC and BW for noting and reminding.
  5. Internal: Added source for "Error Codes" app to FB project source

:: Additional note ::

This applies only to fn FM_TrashItemAtURL and not the other functions in the include. The FBer has two choices:

  1. 1. Its current implementation uses a method requiring OS X 10.8+
  2. 2. Another method, which is currently commented out and doesn't have the 10.8+ requirement, is possible but it is deprecated in OS X 10.11.

Once you've decided which constraints are best for you, simply comment out the one you don't want and uncomment the other (or vice-versa).

Consider using the user includes folder if maintaining it yourself.

December 2016

FB 5.7.97

FB 5.7.97 requires OS X 10.6 or higher.

A message from Brian S.:

This release brings us a 64-bit FBtoC app and completes one of the three basic projects(*) FB needs to stay current

:: Updates ::

  1. FBtoC is now a 64-bit app. This means we have a translator that will run even if Apple removes Carbon. Yea!
    Bonus: removal of more runtime code reduced FBtoC's disk size.
  2. Translate/Compile runs on a separate queue/thread (libdispatch driven) to reduce/eliminate FBtoC's previous 'beachball' cursor.
    Note: Macs with fewer than two cores will not see all the benefits of concurrent multi-thread processing but the 'beachball' should be (mostly) gone.
  3. Remaining 'route _toBuffer' and associated Handle management code replaced with CFMutableStringRefs (one for errors and one for code).
  4. NSTabView convenience functions added to Util_UI.incl header.
  5. FBtoC app is codesigned (FB editor is not codesigned).
  6. FBtoC now copies story board files created in Xcode into the app package. See Storyboard Demos in FB Examples/Cocoa.
  7. NSLog.incl minor update silences a clang 'dealloc' warning.
  8. VAList [method 1] updated. Find the new version in the Examples/VAList folder
:: Fixes ::
  1. Long constants (>255 characters) within BeginCxxxx/EndC would be flagged as errors (string too long).
  2. Multiple sucessive invalid ids passed to Edit$ statement in user program overflows gFBStk's maximum value.
  3. fn AddConstantsFromResourcesToSymbolTable incorrectly converted old built-in constants to unsigned long instead of signed long. This resulted in "implicit conversion" compiler warnings.
  4. Building an empty (or with one line like 'print' ) single source file over twenty times would crash. Forty successive tests succeeded without a crash. *Might* be fixed.
  5. fn WriteCodeToURL would crash CFReleaseing a null CFURLRef. The problem is the path passed to WriteCodeToURL() was longer than the 1024 characters allowed, so the conversion to CFURLRef fails. Same potential issue fixed in fn WriteCharToURL too. N.B. please note the path length limitation.

Coding and implementation: Bernie, Brian.

(*) Three basic projects are: 64-bit Editor, 64-bit FBtoC and 64-bit FB runtime

Link to download the new FB version and examples: here

September 2016

FB 5.7.94

FB 5.7.94 requires OS X 10.6 or higher.

Note from Brian S.:

:: Fixes & enhancement::
  1. Translation of an 'xref @' variable now dereferences correctly.
  2. Translation speed improvements. Tend to be more noticeable with larger projects and/or with projects using large files (LOC). See below for more.
  3. New FixSDK app updated to handle Xcode 8 SDK changes. Thanks to Bernie for the research and updates.
  4. More internal updates
:: Testing ::
  1. Testing was limited to OS X 10.11. If you see a problem running this on OS X 10.6+, please post your contribution in the FB mailing list. Until Apple forces otherwise, coding is always 10.6 compatible.
  2. Testing suite is:
    1. FBtoC’s own source
    2. FB Editor source
    3. My old shareware source
    4. Mark’s LabHelper source
    5. Peter’s drafting source
    6. Bernie’s TWM source
    7. Many standalone source snippets
  3. Testing environment is:
    1. 2011 27 inch iMac with external SSD boot drive
    2. 2009 MacBook with standard HDD - only tested here to make sure it runs.
:: Translation Speed ::
  1. This release improves speed by improving buffer logic and reducing overhead for an often-used string conversion function.
  2. For now FBtoC still straddles the Pascal string and CFString world, but as the Pascal/CF conversions decrease, translation times should be better. Straddling requires LOTs of conversions (to/from Pascal to CF) which also impacts speed.
  3. Old FBtoC versions were faster because char (Pascal) string manipulation is faster than CFString. However, char strings have significant limitations and don’t support lots of stuff modern coders need.
:: FBtoC’s Memory Overhead & CPU % ::
  1. At idle after launch is approximately 25 MB
  2. During a build of a large project is approximately 300+ MB
  3. At idle after a build is approximately 225+ MB
  4. During a build of a large project CPU % hits 100% on my quad-core during only the translation phase. Most translations take 7 seconds or less.
  5. Using Core Foundation generally takes more memory resources than using char strings. There is no way for me to change this.

Coding and implementation: Bernie, Brian and Deep

Link to download the new FB version and examples: here

August 2016

FB 5.7.69

FB 5.7.69 requires OS X 10.6 or higher.

A message from Brian S.:

:: Fixes ::

  1. After reporting user code errors, FBtoC would lock up and not finish. Fixed. (thank you to Peter B. for reporting)
  2. Crash when launching FBtoC from desktop (i.e. without the Editor) with no build_goodies/Headers files. Fixed
  3. HexString() incorrectly truncated when honoring some 'defstr' (i.e. byte, word, long) settings. Fixed.
:: FBtoC internal code updated to 64-bit
  1. fn EmitData updated to use CF and remove FB's dynamic array
  2. fn GotoStatement updated and its subordinate fn FixLabel (now named fn FixLabelCreateCF)
  3. fn GosubStatement updated and its subordinate fn FixLabel (now named fn FixLabelCreateCF)
  4. fn ReadQuotedString updated to CF and renamed fn ReadCreateQuotedString
  5. Miscellaneous global pascal strings used in 'Exit' code changed to CF mutable strings - see fn ClearMiscGlobalStrings
  6. Prefix labels for both generated and source (i.e. 'LL' and 'L') changed to CF - see kprefixForLabelFromFBSource/kprefixForGeneratedLabel
  7. All 'Exit' related code updated to CF including fn UniqueLabel
  8. Changes to fn BSComparePStr() and fn BinarySearch() to use CFStrings. Superficial changes at the moment.
  9. Many fn InString calls replaced with fn CFStringFind for slight performance boost.
  10. Some Unix functions, such as fn CopyUnixCommandFirstLineResponse, updated to not use FB runtime
  11. Replaced Handles with CFStrings for fn StringExpressionContinuation and other 'String Expression & Assignment' functions
  12. FSp LongName File Utilities removed and its only active function, fn FSpTrashObject,  moved to Cocoa File Utils.incl
  13. SendTextFragmentToCommentBuffer() updated to Core Foundation
  14. Various 'Copy Resources Phase' FNs changed to CFStringGetCharacterAtIndex() for small speed gains.
  15. Prelexical State: PrelexicalState record changed to use CFStringRef instead of Str255. PushPrelexicalState(), PopPrelexicalState() changed to manage the CFStringRef memory appropriately.

Coding and implementation: Bernie, Brian and Deep

Link to download the new FB version and examples: here

July 2016

FB 5.7.49

FB 5.7.49 requires OS X 10.6 or higher.

A message from Brian S.:

Hello Everyone!
This release is aimed primarily at fixing bugs and most notably those discovered with loaned source code (see #6).
The issue with a corrupted translation after 20 to 30 successive builds is, unfortunately, not fixed.

There are some extra goodies: the replacement string functions (#2) are now FB Headers and easier to use. See the updated example demo at:
/FB_5_7_49_Examples/CoreFoundation/Demo of Replacement String functions for an example.

Here are the release notes:

  1. Tlbx CFSet.incl, Tlbx CFBag.incl and Tlbx AppThings.incl added to Headers
  2. CF replacement functions for right$, left$, mid$, instr and hex$ now easily accessible via new header file, Util_Strings.incl.
  3. Crash converting old project file format to new. Fixed.
  4. Error reporting fn was releasing the error string too early (fn BuildStringAndReportError) which could cause unexplained crashes. Fixed.
  5. Build Settings: edit buttons for 'Path to Developer folder' and 'Compiler Options' were inoperative. Fixed.
  6. Several translation bugs fixed related to def fn using, dynamic arrays and other issues. These were coding errors made while converting FBtoC source.
    Mark (LabHelper X) and Peter’s (Drafting) source were instrumental in identifying issues. Thank you Mark and Peter!
  7. Smart tabs: If the user enters an initial tab value on creation, it failed to select the tab correctly: Fixed.
    appearance button _cTabs,, 2,,, @"Tab 1;Tab 2", @r, _kControlTabLargeNorthProc

Coding and implementation: Bernie, Brian and Deep
Web site resources: Steve Crossman.

The announcement mentions an FB Examples project but thought a quick post might help too:

include "Util_Strings.incl" // this enables the new string functions
include "ConsoleWindow"

window _FBConsoleWndNum, @"String Functions", (5, 50)-(500, 500)

dim as CFStringRef s

s = @"AlphaBravo"

fn ConsolePrintCFType( fn LeftString( s, 5 ) ) // print 'Alpha'
fn ConsolePrintCFType( fn RightString( s, 5) ) // print 'Bravo'
fn ConsolePrintCFType( fn MidString( s, 2, 4) ) // print 'phab'
if ( fn InString( 0, s, @"vo" ) != NSNotFound )
  print "Found"
  print "Not found"
end if

fn ConsolePrintCFType( fn HexString( 15 ) ) // print hex for 15

Link to download the new FB version: here
Link to FB examples: here

May 2016

FB 5.7.48

FB 5.7.48 requires OS X 10.6 or higher.

Thanks to Bernie's prolific coding efforts, tab control and radio group implementation is totally easy.
SmartTabs/SmartRadioGroups are implemented in the FB runtime, so all the messy work is done for you there.

If you'd like to try it, check the example at:
FB_5_7_48_Examples/Controls/SmartTabs+ RadioGroup1

Important: Please Note (N.B.)

FB 5.7.42, in February 2016, announced the next FB release will not support pascal strings in appearance window, appearance button, apple menu and menu statements. That change is still planned but there is no firm schedule yet. Those statements continue to support both pascal and CF strings in 5.7.48 but FBers should be making changes if not done already.

Link to download the new FB version: here
Link to FB examples: here

FB 5.7.47 Rev.2

FB 5.7.47 Rev. 2 requires OS X 10.6 or higher.

This release is available from the FBtoC’s web site and addresses some important (#1, #2, #4) issues in the initial 5.7.47:

  1. read # and write # were not translating correctly causing the build to fail with compile errors. Fixed.
  2. Two 'Quit' items on FBtoC's menu negatively impacted operation. Fixed
  3. Added CFRelease(msg) to STACK_PUSH() to quiet the analyze warning
  4. Build Setting,’Check Array Bounds’, failed to generate compilable C code in some scenarios. Fixed.

Link to download the new FB version: here
Link to FB examples: here

FB 5.7.47

FB 5.7.47 requires OS X 10.6 or higher.

A note from Brian:
This release comes a little earlier than planned (some exciting new code from Bernie not quite ready yet) due to my concern about a nasty bug that occurs after multiple builds. This release is better than 5.7.42 in that regard but there is at least one scenario which hasn’t been solved. My hope is 5.7.47 will be more tolerable.

The major changes in this release are:

  • Bug mentioned above mostly fixed. FBtoC would spew errors after multiple (20+) builds of same project. Stack pointer logic fixed.
  • Major FBtoC internal changes to replace allocated Handles and associated old code with Core Foundation arrays/strings for all code buffers.

:: FB5 Changes ::

  1. New Stack_Push() function replaces older macro because clang was emitting hundreds of warnings about potential unsequenced errors. Function not only avoids any sequence errors but checks stack pointer to make sure it is within the stack array bounds. If not, it alerts the user and quits FBtoC.
  2. FBtoC would spew errors after multiple (20+) builds of same project. Stack pointer not being decremented. Fixed.
  3. Tlbx ControlDefinitions.incl updated to fix errors in GetDataBrowserUserState() and SetDataBrowserUserState()
  4. Four code buffers (declarations, main, functions and comments) converted to CFArrays of CFMutableStrings (formerly arrays of allocated Handles)
  5. Edit Field’s FB Help updated to reflect option to use Core Foundation string in title/text
  6. build_goodies now contains AppThings.m to support new CFString-based FBFullStop()
  7. Project Template (i.e. the default project when File>>>New Project is selected) now uses Core Foundation strings.
  8. DEFINEDINCOCOA constant now recognized
  9. Util_UI.incl header updated
  10. Printing folder added to FB Examples. Contains "Print info using NSPrintInfo" and other Cocoa and Carbon (i.e. "PM") printing examples.
  11. Bug fix: FBtoC crashed in fn SendHandleFragmentToOutputStream when an 'end if' was used to terminate an fn and a local variable wasn’t dimmed.
  12. Getter/Setter for gCurrFileName and other related code updated to use CFString
  13. ChkBounds() updated to use CFString

Link to download the new FB version: here
Link to FB examples: here

February 2016

FB 5.7.42

FB 5.7.42 requires OS X 10.6 or higher.

Thanks to Bernie’s prolific coding efforts, we now have new 'title' syntax for some primary FB Statements.

  1. Completely rewritten version of 'Search Apple Headers' application.
  2. Similar to the Menu statement changes of FB 5.7.39, the following FB statements now accept either Core Foundation(CF) or Pascal title strings:
    • Appearance Button
    • Appearance Window
    • Button
    • Window
    • Apple Menu (also accepts CFArray of titles)
    • Edit Field (FB Help does not reflect this capability yet)
  3. The following helper functions are available to get/set CFString text in the Menu, Appearance Window and Appearance Button statements:
    • For Menus:
      • MenuSetTitle
      • fn MenuCopyTitle
      • MenuItemSetText
      • fn MenuItemCopyText
    • For Windows:
      • WindowSetTitle
      • fn WindowCopyTitle
    • For Buttons:
      • ButtonSetText
      • fn ButtonCopyText
  4. FB Help now reflects #2's syntax.
  5. CFMenuWndBtnTitles demonstrates #2's CFString capabilities and may be found in FB_5_7_42_Examples/Dialogs and Windows/
  6. Deprecated usage (see N.B. next ) based on #2 fixed in:
    • FB Editor code
    • the header FBtoCConsole.incl
    • and (hopefully) all the example code in FB_5_7_42_Examples

Important: Please Note (N.B.)

FB's next release will not support Pascal strings in Appearance Window, Appearance Button, Apple Menu and Menu statements, so FBers are strongly encouraged to upgrade those statements to the new CFString syntax.

Apple has not deprecated Pascal strings (but are discouraged due to limitations) but FB's Runtime Pascal support uses older 32-bit code. The goal is to nudge our code toward 64-bit compatibility as much as possible without disrupting FBers; small incremental runtime changes should make this easier on everyone.

As a reminder, FB 5.7.42 displays a deprecation message during a build/run:
"Warning: Pascal string title is deprecated; use Core Foundation strings instead in line xxx of YourSourceFileName"

Coding and implementation: Bernie, Brian and Deep

Link to download the new FB version: here
Link to FB examples: here

February 2016

FB 5.7.41

FB 5.7.41 requires OS X 10.6 or higher.

  1. Fixed: framework included from /Library/Frameworks not working
  2. Header, Util_UI.incl, added to include Cocoa nib loading & corresponding demo, CocoaNibDemo, added to FB Examples/Cocoa
  3. FB_5_7_41_Examples/CoreFoundation now includes a demo of replacement CoreFoundation/Foundation string functions(i.e. CF functions to replace, left$, right$, mid$, instr, space$, string$)
  4. Help menu now includes links to the FBtoC web page and FutureBASIC mailing list on associate.com
  5. Better help message for first-time users seeing the "Could not get read/write access to preferences" message.

Link to download the new FB version: here
Link to FB examples: here

January 2016

FB 5.7.40

FB 5.7.40 requires OS X 10.6 or higher.

  1. Fixed: FBtoC crashed when launched in OS X 10.7
  2. Added to Tlbx StdCLib.incl: toolbox fn memcpy( ptr dest, ptr src, UInt32 n ) = ptr

Link to download the new FB version: here
Link to FB examples: here

January 2016

FB 5.7.39

FB 5.7.39 requires OS X 10.6 or higher.

Two new items for 5.7.39:

  1. Bernie implemented new CFString/CFArray support for the Menu statement. There is a nice demo in FB Examples/Menus. Thanks Bernie.
  2. Help folder message eliminated for now

Link to download the new FB version: here
Link to FB examples: here

January 2016

FB 5.7.38

FB 5.7.38 requires OS X 10.6 or higher.

Introduction: The following notes don't adequately capture the significant depth and breadth of FB's (mostly all in FBtoC ) changes but hopefully conveys a little of the effort involved.

  • With this release, approximately 50%+ of FBtoC is 64-bit (compare to approximately 10% for 5.7.14)
  • The Editor returns with only minor updates to maintain FBtoC compatibility (Style files, .rsrc resources).
  • FBtoC shrank from 1.1 MB to 915K (Zip deliverable shrank from 6.2 MB to 4.5 MB)
  • Lexical code is the next area for FBtoC 64-bitness.
  • Several FBers are working on a new 64-bit Editor and results are encouraging. Please wish them luck & give thanks; it's a lot of work.
  • Items of interest for FBers:
    • FBHelp's Begin/end globals now describes the possibility to create C static local variables in local functions.
    • Milestone: FBtoC now uses CFString file paths and urls exclusively; there are no FSSpecs.
    • FB's generated apps now includes the NSHighResolutionCapable key set to true in their info.plist
    • Mid$ function updated to honor numChars variable. If numChars is zero, Mid$ returns zero characters and not the whole string as it did before.
    • RUN command updated to accept:
      • a CFString literal
      • a CFString variable
      • CFURLRef variable
      • FB Help for Run command updated to reflect new syntax shown
    • FB Help Appendix A: File object specifiiers updated to recommend CFURLRefs and not FSRefs or FSSpecs.
    • kill resources statement isn't supported and is ignored.
    • FBHelp's Files$ doc corrected for options (2) Selecting a Folder and (3) For Selecting a File Name and Folder where a file may be Saved.
      this was noted by Bernie and RC in a list discussion 18-June-2013.
    • Replaced use of old '.rsrc' resources in editor because FBtoC doesn't process .rsrc files
    • fn CompilerPath, fn CopyUnixCommandFirstLineResponse and some others changed to accept CFString input
    • Support for .rsrc old style resource fork files removed.
      • FBtoC used to combine data from all resource fork files and create an AppName.rsrc with only a data fork. This is now gone
      • Removed copying of 'Localized.rsrc' as it is no longer needed.
      • 'rsrc' resource processing fns removed
  • Major Areas of Code Conversion to 64-bit
    • All file I/O related functions now use Core Foundation or Foundation. This includes all cached file paths, constants and file reads.
    • FB Dynamic arrays replaced with CFMutableArrays
    • All "Output Stream" which is all code to copy resources, include files, build files, manage PCH and more
    • All error handling
    • All TranslateBuild Utilities, including all calls to unix utilities and building buffers for those utilities ( i.e. AppendToBuf() )
    • All FSSpecs removed from all build-related code. Now all CFURLs and CFString file paths.
  • List of all ( mostly ) Enhancements:
    Mostly INTERNAL UPDATES ONLY( blue-colored text indicate items of general interest - reverse chronological order with most recent changes first )
    • FBHelp's Begin/end globals now describes the possibility to create C static local variables in local functions.
    • FB dynamic array sFBRuntimeFunctionsToStrip in Symbol Table Implementation replaced.
    • Dynamic array, sIncludedFileNames in Prelexical State replaced
    • More FBtoC internal code updates
      1. FB dynamic arrays gCRuntimeIncludeFiles, gFrameworks, gFrameworkPlusHeaders and associated processing in "Conditional Inclusion" replaced with CFMutableArrays
      2. Replaced FB string constants in Conditional Inclusion file (and code impacted by them) with CF versions
      3. fn WriteTranslatedCodeToFile now accepts CFString input
      4. ReadSourceFile now accepts CFString input
      5. fn CopyProjectFileURL replaces fn GetProjectSpec
      6. Milestone: FBtoC now uses CFString file paths and urls exclusively; there are no FSSpecs.
      7. Remaining FB dynamic arrays in Write Translation file converted.
      8. FB's generated apps now includes the NSHighResolutionCapable key set to true  in their info.plist
      9. fn RenameOutput and associated arrays converted
      10. Cleanup of fn SendMsgToEditor - seven lines of code reduced to one using Foundation instead of CF
      11. fn EmitData converted - this handles FB's DATA statements and associated READ and RESTORE support
      12. fn WriteTranslatedCodeToFile - more work
      13. fn SaveSourceUserHeaderSearchPaths replaces fn SaveFBSourceFolderReference and uses a CF mutable array instead of an array of FSSpecs
      14. fn SetUpFilePathsForThisProject now uses CFStrings. 
      15. fn WriteTranslatedCodeToFile - updated to use CFStrings and MoveCFStringToRouteBuffer() instead of FB's PRINT
      16. ReadSourceFile processing converted but still accepts Str255 input
      17. WriteCTypeTableFile converted
      18. WriteHandleToFile.(now named: SplitHandleToHeader_C_Line) converted
      19. fn SaveSourceUserHeaderSearchPaths replaces fn SaveFBSourceFolderReference. It saves CFString search paths in a global array sCFSearchPaths
      20. Mid$ function updated to honor numChars variable. If numChars is zero, Mid$ returns zero characters and not the whole string as it did before.
      21. fn LastFileExists/fn BuildTempExists now accept a CFURLRef. Calls using it modified to send CFURLRef.
      22. fn ProcessOpenedFile now accepts CFStrings and passes them to a primary function: fn TranslateAndBuild
      23. FBtoC's Main changed: dictionary now created & sent when this code calls ProcessNotification()
      24. fn WriteErrorsFileForEditor now accepts CFURLRef input
      25. fn PrintErrorMessageToBuffer updated to use CFStrings and new fn MoveCFStringToRouteBuffer
      26. fn WriteErrorsFileForEditor update internally but still receives FSSpec input :-(
      27. All PRINT _toBuffer in fn PrintCompilerMessageToBuffer now uses a CFMutableString. 
      28. The CFString in #27 is moved to the appropriate gFBBuffer via fn MoveCFStringToRouteBuffer which calls FB runtime FBCheckBuffer().
      29. Note: this approach relies on the existing ROUTE _toBuffer +(n)/ ROUTE _toScreen logic and doesn't require the new code to figure out which buffer is the current target of the ROUTE. Also note: Since buffer logic is mostly building and expanding a handle to allocated storage it doesn't impede 64-bit compiles.
      30. For later: update FBCheckBuffer() & associated code to use allocated pointers instead of allocated handles to avoid the older SetHandlexxx calls. 
      31. Fixed crash on a DisposePtr() in fn ReleaseSourceFileText caused by bug in fn TranslateFileRecursive
      32. More work on CompileFiles, CompileSource
      33. More work to replace gUnixPathToSourceFolder(pascal) with gCFUnixPathToSourceFolder(CF)
        Right now fn SetUpFilePathsForThisProject uses CF internally but accepts FSSpecs and Str255. Next step is to have it accept CF input.
      34. fn CompileFiles converted to CFString usage and input
      35. fn CompileSource converted to CFString usage and input
      36. RUN command updated to accept:
        • (a) a CFString literal
        • (b) a CFString variable
        • (c) CFURLRef variable
      37. FB Help for Run command updated to reflect new syntax shown in #36
      38. FB Help Appendix A: File object specifiiers updated to recommend CFURLRefs and not FSRefs or FSSpecs.
      39. fn MakeDSym now accepts CFStrings
      40. Time display and calcs in fn TranslateAndBuild now CF instead of pascal/carbon
      41. fn CopyHelpBookFolderName now accepts, uses and returns CF objects
      42. kill resources statement isn't supported and is ignored. 
      43. fn AddConstantsFromResourcesToSymbolTable is ALMOST 64-bit clean but still passes a pascal string to AddNumericConstToSymbolTable()
      44. cleanup from 5.7.21. More direct use of fn CFStringFromPStr(pascalString) instead of letting returned value go stale before being used.
      45. from 5.7.16 - "all 'shutdown' and 'stop' code converted to call to 'ShowAlert' followed by [NSApp terminate:nil]"-- cleaned up.
      46. fn CopyUNIXPath activated as replacement for older FSSpec-based fn PathForUNIX.
      47. fn CopyObject now both accepts CFString input and processes CFStrings
      48. fn MakeDir now both accepts CFString input and processes CFStrings
      49. fn FileObjectExists now accepts CFStringRef input
      50. fn FileObjectExists reverted back to 'test -e' command because it is less code. Internally uses CFStrings.
      51. Editor's fn ReadTextFile and fn SaveTextFile updated to use new Cocoa ReadFile() and WriteFile(). Still returns a Handle and accepts an FSSpec.
      52. FBHelp's Files$ doc corrected for options (2) Selecting a Folder and (3) For Selecting a File Name and Folder where a file may be Saved. this was noted by Bernie and RC in a list discussion 18-June-2013.
      53. Replaced use of old '.rsrc' resources in editor because FBtoC doesn't process .rsrc files
        • Editor window icons changed from cicn resources to pngs.
        • Menu resources changed to toolbox menu calls (FB menu statements not used but possible for those converting from menu resource use)
        • CFSwapInt16HostToBig() & CFSwapInt16BigToHost() was needed in 2008 but now removed for writing Editor Style Files.incl
        • CFSwapInt16BigToHost() for reading existing version 2 style files remains.
        • FB's Style file I/O using FB's OPEN, READ, WRITE, WRITE FILE, READ FILE changed to Foundation calls
        • Minor update to SystemDirectoryCopyURL() to use signed 'domain' variable and quiet clang warning.
        • fn CompilerPath, fn CopyUnixCommandFirstLineResponse and some others changed to accept CFString input
      54. fn CopyResources now accepts CFURL and CFStringRef input.
        • Support for copying .rsrc old style resource fork files removed.
        • FBtoC used to combine data from all resource fork files and create an AppName.rsrc with only a data fork. This is now gone
        • Removed copying of 'Localized.rsrc' as it is no longer needed.
        • 'rsrc' resource processing fns removed
        • Some other misc small functions updated and added
      55. Editor incorrectly labeled text include files (with extension '.incl') as 'resources' inside data.fbproj (within projectname.fbproj)
        • Happens only if the '.incl' file does not have a file type of 'TEXT'
        • Building a project once cleans up the projectname.fbproj 
        • Editor code that decides whether to write 'include' vs. 'resources' in data.fbproj is fn WriteFileListToProjectDataFork()
      56. All 'shutdown' and 'stop' code converted to call to 'ShowAlert' followed by [NSApp terminate:nil];
      57. fn SendErrorMessageToLogAndEditor, fn SendInformativeMessageToLogAndEditor converted to CFStrings
      58. FBtoC's 'AppendToBuf() upgraded to use CFString input. Used this approach (versus just loading a CFMutableString and passing it around) because all the AppendToBuf() code just uses pointers and doesn't invoke Carbon code. This way the logic is maintained and code can continue to call all the command line utilities (especially the compiler, linker, dsymutil, sed and strip). Other commands like 'rm' and 'mkdir' can be switched out for Cocoa but there is no pressing need for that. Tested with FBtoC/Editor source. Bernie's tests on some large projects also works fine.
      59. Lots of minor stuff just to clean up code, update comments and fix broken code.
      Coding and implementation: Brian & Bernie
      Downloading here: 4toc.com/fb4/

      September 2015

      A Message from Brian Stevens

      Back in 2006/2007 (dawn of FBtoC) Apple deprecated many of the Carbon-based Resource Manager calls (FSpOpenResFile, FSpCreateResFile etc.) but FB retained support because FBtoC aimed at and used Carbon. Eight/Nine years later (2015) FBtoC still supports Apple’s old Resource Manager but FBtoC is (slowly) moving away from Carbon and so changes are needed.

      Why: FBtoC is being updated to eventually allow it to run as 64-bit Carbon-free. Removing old manager support helps achieve this goal.

      What: The next FB version will phase out old resource support as part of an effort to upgrade FBtoC’s code. Old resources are resource files with resource forks containing items such as: MENU, DITL, DLOG, cicn, ALRT, STR#, PICT etc.  They typically have file extensions like '.rsrc' and use Apple’s Resource Manager calls  (FSpOpenResFile, FSpCreateResFile etc.) to read/write/update them.

      Phase 1
      Any .rsrc files in the project or source file directory will not be copied to the application’s bundle and FBtoC will issue a warning message like this:
      Resource file, 'yourResourceFileName.RSRC', with resource fork (typically with file extension: 'rsrc') not copied to yourAppName.app bundle
      Currently, FBtoC uses Apple’s Resource Manager calls to copy those old resource files. Removing the copy allows FBtoC to be free of Resource Manager calls.

      The programmer could manually transfer the resource files into the bundle if the code still expects resources and continue using 

      FBers will have three choices for Phase 1:(best option first)
      (1) Convert all resource fork (.rsrc) resources ('rezycle' is one help conversion tool) and use newer approaches instead of resource manager calls.
      (2) Manually transfer the old resource files into the built app bundle and let the app code continue with Resource Manager calls.
      (3) Use an older FB release that continues to support .rsrc files

      Please note: none of this impacts the ability to include standard data fork-based resources such as .icns, .jpg. .png etc. FBtoC will continue to process and copy those to the bundle as it does now.

      Last minute note: Although it’s possible to copy resource fork resources with other utilities (ditto is one), writing new code to support obsolete formats isn’t consistent with modernizing FBtoC.

      Additionally, the older code merges all project '.rsrc' files into one appName.rsrc file using older resource manager calls.

      August 2015

      FB 5.7.15

      FB 5.7.15 requires OS X 10.6 or higher.

      :: FB5 bug fixes ::

      1. 'Appearance Window' inappropriately overwrote window attributes when the statement omitted window attributes.
      2. Editor and Project Manager window resizing was broken in OS X 10.6.
      3. The hidden grow box change, implemented in 5.7.13, now hides grow boxes only for compositing windows.
      4. Turned off some debugs left on in prior release.
      :: Enhancements ::

      1. OSMajorMinor() returns both major and minor OS version in one call. Example: running in 10.7.5 it returns: major = 10 and minor = 7. Look for a usage example in a later list post.
      2. Tlbx MacWindows.incl header updated with drawer window and other helpful window calls:

          // Drawer Window calls now recognized automatically in FB 5.7.14

        • toolbox fn GetDrawerPreferredEdge( WindowRef inDrawerWindow ) = OptionBits
        • toolbox fn SetDrawerPreferredEdge( WindowRef inDrawerWindow, OptionBits inEdge ) = OSStatus
        • toolbox fn GetDrawerCurrentEdge( WindowRef inDrawerWindow ) = OptionBits
        • toolbox fn GetDrawerState( WindowRef inDrawerWindow ) = WindowDrawerState
        • toolbox fn GetDrawerParent( WindowRef inDrawerWindow ) = WindowRef
        • toolbox fn SetDrawerParent( WindowRef inDrawerWindow, WindowRef inParent ) = OSStatus
        • toolbox fn SetDrawerOffsets( WindowRef inDrawerWindow, CGFloat inLeadingOffset, CGFloat inTrailingOffset ) = OSStatus
        • toolbox fn GetDrawerOffsets( WindowRef inDrawerWindow, CGFloat * outLeadingOffset, CGFloat * outTrailingOffset ) = OSStatus
        • toolbox fn ToggleDrawer( WindowRef inDrawerWindow ) = OSStatus
        • toolbox fn OpenDrawer( WindowRef inDrawerWindow, OptionBits inEdge, Boolean inAsync ) = OSStatus
        • toolbox fn CloseDrawer( WindowRef inDrawerWindow, Boolean inAsync ) = OSStatus
        • // Helpful window-related calls now recogized automatically in FB 5.7.14

        • toolbox fn IsWindowActive( WindowRef inWindow ) = Boolean
        • toolbox fn ActivateWindow( WindowRef inWindow, Boolean inActivate ) = OSStatus
        • toolbox fn CopyWindowTitleAsCFString( WindowRef inWindow, CFStringRef * outString ) = OSStatus
        • toolbox fn HIWindowGetBounds( WindowRef inWindow, WindowRegionCode inRegion, HICoordinateSpace inSpace, HIRect * outBounds ) = OSStatus
        • toolbox fn HIWindowSetBounds( WindowRef inWindow, WindowRegionCode inRegion, HICoordinateSpace inSpace, const HIRect * inBounds ) = OSStatus
        • toolbox fn SetWindowResizeLimits( WindowRef inWindow, const HISize * inMinLimits, const HISize * inMaxLimits ) = OSStatus
        • toolbox fn DetachSheetWindow( WindowRef inSheet ) = OSStatus
        • toolbox fn HIWindowSetToolbarView( WindowRef inWindow, HIViewRef inView ) = OSStatus
        • toolbox fn MacGetNextWindow( WindowRef window ) = WindowRef
      Downloading here: 4toc.com/fb4/
      July 2015

      FB 5.7.14

      FB 5.7.14 requires OS X 10.6 or higher.

      :: FB5 changes ::

      1. Garbled warnings for 'unused functions' and 'unused forward declarations'. Fixed
      2. dim as ptr p1, 2’ caused crash. Fixed
      3. FixSDK app added to FB’s Help menu
      Downloading here: 4toc.com/fb4/
      June 2015

      FB 5.7.13

      FB 5.7.13 requires OS X 10.6 or higher.

      All notes by Brian Stevens:
      5.7.13 includes minor changes and normally we wouldn’t bother with a new release for so few changes. However, FBtoC’s current (numbered 5.8.0) development source is undergoing major changes and it is difficult to know when an FB5 based on it (i.e. the changes subsequent to 5.7.13) will be released, so we’re making 5.7.13 available now.

      :: FB5 changes ::

      1. System(_sysVers) changed to use modern Foundation calls instead of Gestalt(1)
      2. Windows created with FB’s 'Appearance Window' statement now omit the dated visible grow box.
      3. Fix to FilesDollarFunction.c when using NavDialogSetFilterTypeIdentifiers(). Thanks to Steve Van Voorst for the fix suggestion and Bernie Wylde for reminding me.
      4. FB 5.7.13 source released to public(2)
      :: Notes ::

      (1): this call returns exactly what Apple's NSProcessInfo's operatingSystemVersionString provides. It concatenates the major, minor and bugfix version numbers and returns that number as a string: for OS X 10.9.4  major = 10, minor = 9, bugfix = 4, so 1094 would be returned as a SInt32. OS X 10.7.2 returns 1072, OS X 10.10.3 returns 10103 etc. Apple omits the bugfix version if it is zero, so 10.9.0  returns 109 and 10.10.0 returns 1010. This could impact code comparisons if the raw returned valued is used as is.
      This change was prompted by Console log error messages like: "FutureBasic 5[1755]: WARNING: The Gestalt selector gestaltSystemVersion is returning 10.9.3 instead of 10.10.3. Use NSProcessInfo’s operatingSystemVersion property to get correct system version number."

      (2): This source includes some newer non-Carbon code but source is essentially very much the same as 5.7.8 ==> 5.7.12.

      Coding and implementation: Bernie, Brian

      Downloading here: 4toc.com/fb4/
      February 2015

      FB 5.7.12

      FB 5.7.12 requires OS X 10.6 or higher.

      Version 5.7.12 fixes three serious bugs and continues FBtoC’s internal conversion to Core Foundation/Cocoa.

      :: FB5 changes ::

      1. More FBtoC source adopts Core Foundation with specific replacements such as pascal string ==> CFStringRef & FSSpec ==> CFURLRefs.
        • in progress and mostly complete - UNIX source file fns are converted and some feeders and subordinates changed too. Active
        • in progress and mostly complete - ERROR HANDLING source file fns are either converted to Core Foundation or prepared for it. Active
        • in progress - FSSpec replacement with CFURLRef/NSURL started, incomplete and not active
      2. Fixed: 'dim as windowref wr' caused a crash.C
      3. Fixed: 'File Not Found' error when a source file directory name contains a higher ASCII symbol ( in this case 'ƒ' )
      4. Fixed: Typed pointer treated as untyped generates clang ”invalid operands to binary expression” error when used in binary 'and'.

      Coding and implementation: Bernie, Brian and Michele

      Downloading here: 4toc.com/fb4/
      November 2014

      FB 5.7.11

      FB 5.7.11 requires OS X 10.6 or higher.

      :: FB5 changes ::

      • FBtoC’s log window rewritten in Cocoa nib and Objective-C
        • Find bar added for searching the log after the build
      • FBtoC's menus rewritten in Cocoa nib and Objective-C
      • FB5’s command menu now has "Analyze" and "Build" options.
        • Analyze allows for easy one-off clang analyzes regardless of the Build Settings.
        • Build omits the target app launch after the compile/link
        • Superfluous "analyze" and "Launch after build" build settings options removed
      • Tool tips added to the Build Settings window
      • Added: Reminder warning "Compile as 'Objective-C'" is superfluous
      • User is warned of a missing Quickdraw framework when choosing Build Settings' base SDK.
      • Opening an old project is now smarter and checks if a previous path to a developer folder still exists
      • Superfluous FBtoC option "Debug Last App in Xcode" removed.
      • More general FBtoC code cleanup
      • fn FD_SpecialDirectoryCreateCFURL now allows the programmer to check a returned OSStatus for an error
      • Messaging from FBtoC to editor updated to use CFNotificationCenter intead of Apple Events
      • NSLog updates:
        • "Compile as Objective-C" removed from NSLog.incl
        • NSLog window bounds now stored in user app’s preferences instead of com.berniewylde.nslog.plist
        • Requires 10.6+
      • Fix: Path to Developer folder popup failed when more than one path present.
      • Fix: Log options now appear only in FBtoC build settings window similar to version 5.7.8
      • Fix: 'compilerVersion' now available for use again
      • Fix: "Make Xcode without project Stripping" was unresponsive when selected immediately after an "analyze" build of the same code.
      • Fix: SystemDirectoryCopyURL(), which supports the File Directory include, updated to support kPreferencesFolderType, kTemporaryFolderType plus a couple bug fixes.
      • Fix: Editor incorrectly displays code block (if/else/endif, while/wend, local fn/end fn) mismatching error in specific scenario(**). Visual problem only. It does compile.
      • Fix: Find Again ( CMD-G ), after closing Source window, Find window and Project window, opens unexpected "untitled" window and does a find. Should find nothing.
      • Fix: Build Settings window fails to display in OS X 10.6.x
      • Fix: More helpful editor error message when is unable to open project file. Thanks Michele.
      • Workaround: when project with valid developer path is moved to another Mac, build crashes due to invalid path. A warning dialog is now displayed. Thanks Michele.

      Coding and implementation: Bernie and Brian

      :: Notes ::

      [**] A line of code exactly 35 characters long triggers a bug when code looks for "#' as the previous character. Turns out 35 is ASCII for the '#' char and comparison with the length byte of a pascal string causes the problem. Code changes for 'if' and 'else'

      Downloading here: 4toc.com/fb4/
      October 2014 (2)

      FB 5.7.10

      FB 5.7.10 requires OS X 10.6 or higher.

      :: FB5 changes ::

      1. Cleanup from new Build Settings window implementation (old nibs removed, unnecessary code removed/deactivated )
      2. Cosmetic bug fix: log would show "FBtoC: build settings from project" when it was from FBtoC preferences. Right preferences being used but the log message was wrong.
      3. New triple slash comment '///' allows FBer to select which comments to send to C/Objective-C generated code
      4. FBtoC now generates NSBeep() for 64-bit builds ( i.e. -m64 )
      5. Bug fix: Any included resource with a plist file extension is now correctly put in /Contents/Resources and not /Contents [*]
      6. Bug fix: Crash when Xcode and/or appropriate directories aren't available and Build Settings not consulted by user.
      7. Added: Reminder warning "Compile as 'Objective-C'" is superfluous
      :: Comments ::

      [*] the info.plist is correctly placed in /Contents

      Coding and implementation by Bernie, Brian and Robert C.

      Personal note from Brian:
      Some FBtoC code comments reminded me of RP’s witty list posts and retorts and how much I miss them. From a discussion (I believe on the old 'beta' list) about the possibility of generating C code, Robert Purves built a small proof of concept that grew and prevented FB’s pending demise posed by Mac Intel machines. Thank you RP.

      Downloading here: 4toc.com/fb4/
      October 2014

      FB 5.7.9

      FB 5.7.9 requires OS X 10.6 or higher.

      :: FB5 changes ::

      The Build Settings window has been redesigned and re-written in Objective-C/Cocoa with a Cocoa nib with more options and flexibility.

      1. clang is the compiler. Compiler selection is gone.
      2. Formerly deprecated 'Allow dim a%, a&, a#, a$' is now gone. Attempts to use will generate a "Redefined variable".
      3. The Settings window does all SDK confirmation/coordination/existence checking.
        This eliminates build-time checking and also gives the programmer immediate SDK availability feedback.
      4. Objective-C compile always used. No other option.
      5. Intel architecture always used. PowerPC and Universal builds are gone and not supported
      6. First build with PCH does not use anything in "Compiler Options". Subsequent builds use the PCH and any compiler options.
      7. Clang analyze works. A bug reported on the list could not be reproduced but current clang analysis output looks normal.
      8. Bug fix: "Min Deployment" all OS X releases in popup are selectable. Note: The SDK popup is still limited to those SDKs installed on the machine.
      9. "-F/Library/Frameworks" now included automatically in compiler search paths(*)
      10. Table views for 'Path to Developer folder' and 'Compiler options' enable the developer to save and quickly switch to other options without retyping.
      11. New FB projects inherit current FBtoC Build Settings
      12. Many FB Header, Editor and FBtoC source files were updated to squelch clang warnings about "illegal characters..." and other issues. All FB source compiles with no warnings.
      * For some unknown reason, Xcode 5.1's clang sometimes doesn't find the framework when Build Settings specifies a 10.6 SDK. SDK 10.9 works ok. Clang from Xcode 6 works in either scenario. Bernie's testing was successful in all scenarios but mine wasn't.

      :: Comments ::

      This is the first major FBtoC change in years. Bernie and I are excited the new 64-bit Build Settings coexists nicely with the older Carbon code.

      FWIW: Overall code size decreased compared to the prior version.

      Coding and implementation by Brian and Bernie.

      Downloading here: 4toc.com/fb4/
      July 2014

      FB 5.7.8

      FB 5.7.8 requires OS X 10.6 or higher.

      :: FB5 changes ::

      Build Settings:
      (1) For the Min OS deployment and Base SDK popup menus: Enabled menu items correspond to installed SDKs on the machine. Disabled menu items indicate SDKs not installed. For example, if the OS X 10.7 SDK is not installed, the 10.7 menu item will be visible but disabled.

      (2) 'Path to Developer folder' defaults to: /Applications/Xcode.app/Contents/Developer

      N.B. In order to use 10.7, 10.8 and 10.9 in these popups, users must make SDK changes to support QuickDraw headers that don’t exist in the 10.7+ OS X releases. See the FBtoC webpage section titled "Optional QuickDraw headers support in OS X 10.7+" for more information.

      :: New/Updated Headers/Runtime file(s) ::

      NSLog.incl replaces the former FBLog.incl. See Bernie’s list post for more NSLog information

      :: New/Updated examples ::

      FB_5_7_8_Examples/Miscellaneous/NSLog 1.2.8 —Updates and replaces the former FBLog

      Downloading here: 4toc.com/fb4/
      June 2014

      FB 5.7.7 Update

      FBlog’s latest upgrade (version 1.2.3), has been incorporated in the headers within the FB 5.7.7 bundle/package. To get the latest FBLog, just download FB 5.7.7 again (or use the code in the examples below to fiddle)

      Also, the FB_5_7_7_Examples are updated with all the latest FBLog files at: /FB_5_7_7_Examples/Miscellaneous/FBLog

      To help everyone stay current with the latest FBLog, Bernie has incorporated an 'update' option that checks for a new FBlog version when it launches and downloads a zip file to your designated download folder.

      Many thanks to Bernie for his continuing contributions!

      Downloading here: 4toc.com/fb4/
      May 2014

      FB 5.7.7

      FB 5.7.7 requires OS X 10.5 or higher.

      :: FB5 changes ::

      The 'Min OS deployment' and 'Base SDK' popups in Build Settings now support OS X 10.7, 10.8 and 10.9.

      N.B. for the above changes:

      [1] In order to take advantage of 10.7, 10.8 and 10.9 options in these popups, users must make their own SDK changes to support QuickDraw headers that don’t exist in the higher SDK releases. See the FBtoC webpage section titled "Optional QuickDraw headers support in OS X 10.7+" for more information.

      [2] Build Settings 'Min OS deployment' and 'Base SDK' popups show all OS X selections and not necessarily what is installed on the machine.

      [3] A new auxiliary FB tool (FixSDK) augments the FB changes for this release. See the FBtoC website and the tool’s help for details.

      [4] These changes assume the /Developer directory exists inside the Xcode bundle( i.e. Xcode.app/Contents/Developer ). This has been true since Xcode 4.2. Prior to that /Developer was stored at the hard drive top level directory. If you are using Xcode 3 or lower, it’s likely the new functionality is unnecessary because you’re building for OS X 10.6 and lower.

      [5] Strongly recommend taking precautionary backups before embarking on any of the SDK changes.

      [6] Finally, recommend reading ALL the documentation first and using FixSDK instead of the manual changes. Please read the disclaimer when FixSDK launches.

      :: New/Updated Headers/Runtime file(s) ::

      Tlbx Aliases.incl: fn FSResolveAliasFile added
      Tlbx HICocoaView.incl added

      BTW: Bernie, Brian, Robert C, Steve V. made this possible.

      Downloading here: 4toc.com/fb4/
      April 2013

      FutureBASIC and FBtoC become "open source".

      Here is the announcement posted by Brian Stevens in the FB mailing list:
      "Hello fellow FBers,

      As of FutureBasic version 5.7.6, the FBtoC team has decided to make the source code for the FutureBasic and FBtoC executables "open source" under the standard GPL license. This is effective 25-April-2013. The link may be found here but may be found via the "FBtoC Source Code" link on the main page.

      Happily, Staz and the FBtoC team* have given their permission to open source FB, so if FBers are inclined to improve FB for their own use or the community, the current source code ( both editor/project manager and FBtoC ) is available for download on the FBtoC site.

      Please note:( most of the following is aimed at the non-FB community since FBers understand our situation )

      [a] FB/FBtoC source code downloaders are responsible for making their own changes and sharing the changes with the list and/or FB community.

      [b] Complete source code for any changed version** should be made available to those who want it via a download link from their own publicly accessible web site or from an unrestricted public download site.

      [c] Former team members remain individuals on the list but the "FB5" team is dissolved.

      [d] Any product based on any of the FutureBasic and FBtoC source code provided should be made available under the GPL license[http://www.gnu.org/licenses/gpl.html] scheme as an "open source" product.

      [e] Team maintenance of FB is now discontinued but everyone is encouraged to give it a try.

      [f] GPL open source license applies to FutureBasic and FBtoC source code only and not the the corresponding version 5.7.6 executables which have been freeware for several years.

      [g] N.B. Applications/products created with FutureBasic and/or FBtoC ( i.e. a developer’s new creations ) are not covered by GPL or any other license and the developer using FB/FBtoC has complete control and unrestricted use of their own ( i.e. code a developer writes using FutureBasic/FBtoC ) source code and any executables generated from their own source code while using FB/FBtoC. In other words, the addition of a GPL license[http://www.gnu.org/licenses/gpl.html]  for FB/FBtoC source code does not change the policy for apps created with FB/FBtoC.

      * For the editor: 18-Nov-2012 Staz said in a private email "...you...are welcome to do as you wish with the editor"
         For FBtoC: Bernie, Brian, Deep and Michele give their permission as FBtoC developers and on behalf of past developers. Thank you RP - you are missed.

      ** "changed version" means a version of FutureBasic or FBtoC with a developer’s own improvements.

      We sincerely hope the release of source code encourages folks to improve FB. Good luck on future development!
      Bernie, Brian, Deep and Michele."

      November 2012

      FB 5.7.6

      FB 5.7.6 requires OS X 10.5 or higher.

      :: FB5 changes ::

      # Type Description
      718 Error Missing commas between function params not flagged
      197 Error Malformed date/time in editor build log.

      :: New/Updated Headers/Runtime file(s) ::

      FBLog.incl: C printf commands are redirected to FBLog’s window.
      Minor FB Help updates for dialog function

      :: New/Updated examples ::

      (1) FB_5_7_6_Examples/Miscellaneous/FBLog_and NSLog/printf test
      Demonstrates the redirect of printf with FBLog.incl

      Demonstrates Cocoa calls in FB. Both .incl files and FB project version included.

      Demonstrates bookmarks. Bookmarks are the successor to Alias Manager

      (4)FB_5_7_6_Examples/Text/Scrolling text views/YAST folder
      YAST( Yet Another Scrolling Text ) uses Apple core code to build scrolling text fields.

      (a) Note the other scrolling text demos in YAST’s parent directory
      (b) Scrolling text demos in general are, in part,  aimed at shortcomings in FB5’s Scroll Button 
      (c) YAST uses Carbon’s MLTE which is not recommended by Apple.

      A basic Cocoa shell( no FB code but can run from FB )

      Note: Steve Van Voorst has posted( on fbcocoa but some on the main list ) a series of Cocoa/Objective-C demos which are effectively a shell/template. Those exploring Cocoa should check out Steve’s demos too. 

      (6) FB_5_7_6_Examples/Graphics/CoreGraphics (Quartz)/Quartz 1.12

      Downloading here: 4toc.com/fb4/
      September 2012

      FB 5.7.5

      FB 5.7.5 requires OS X 10.5 or higher.

      :: FB5 changes ::

      # Type Description
      716 Error Util_EUTCKeyFilter.incl misidentified as a resource
      717 Error Symbol table overflow. Table size increased by 8k.

      :: New/Updated Headers/Runtime file(s) ::


      This new include updates the runtime code for the special directory calls by replacing the now deprecated FSFindFolder() calls. The special directory ( e.g. FD_SpecialDirectoryGetXXXXX ) parameters have changed slightly. Please see the new example for details. The old include is still available.

      :: New/Updated examples ::

      FB_5_7_5_Examples/Files/File_Directory examples/FileDirectory-SpecDirsUpdated.bas

      Downloading here: 4toc.com/fb4/
      August 2012

      FB 5.7.4

      FB 5.7.4 requires OS X 10.5 or higher.

      Please note: FB 5.7.4 is required for use with OS X 10.8 (see bug #196)
      :: FB5 changes ::

      # Type Description
      196 Crash Clicking on project window icons causes crash in OS X 10.8
      713 Error Appending pascal string in 'end fn =  ' fails
      714 Error Error message for non-terminated '#if' is poor

      Downloading here: 4toc.com/fb4/
      July 2012

      Sad news

      Although I never met Robert Purves in real life, his disappearance last July has deeply affected me. As you may know, Robert was the leader of the FB team. He was a well of knowledge in many areas and, for us, a master in programming. More than that, I often believed he knew FutureBASIC's inner intricacies much better than its creators.

      After the retirement of Andy Gariepy, followed later by Chris Stasny, that is to say the original creators of FB, Robert took the helm of the vacillating boat. Whether they are aware of it or not, all FB users owe him the fact that they can still program with FB.

      Although Robert lived in New-Zealand, I worked from a distance with him many times, especially during the development of the IDE, and I could appreciate the man and the scientist that he was. He was considerate, always responsive and ready to help. I was constantly stunned, not only by his amazing knowledge, but also by his willingness to help others succeed in their endeavors.

      The death of Robert Purves has left me speechless for some time and I'm still considering even right now whether to stop everything related to FB and leave this site to slowly return to dust. In any case, I was only publishing the announcements of new releases of the software with no real personal contributions. While the FB team carry on the job, I guess nobody will miss anything with such poor updates on this site.

      Wherever Robert's mind might be, I wish he has found peace. I thank you sir, for all you have done for us.

      While I send my thoughts to his relatives, I will leave it to Ted Spencer to say the last strong words of truth. Ted from Canada wrote the following in the FB mailing-list:

      "We are in a time when we feel close to people with whom we have spoken no word; whom we'd not recognize on the street, but who, by their presence have filled a basic human need: kinship. However esoteric our connection, many of us feel connected to many others on this list, through their contributions, their forbearance, and their sly hints at humanity.

      Our computers are replete with that modest 'rp' seen in so many files. Eternity, or heaven, in one of its many forms, is to be found there. Bless you on your journey, 'rp', as you have blessed us."

      May 2012

      FB 5.7.3

      FB 5.7 requires OS X 10.5 or higher.

      :: FB5 changes ::

      # Type Description
      704 Error Changes in FBtoC.h not propagated for clang+pch builds
      706 Cleanup When save button clicked, fix common user mistakes for 'Path to Developer folder'
      708 Error Long variable(symbol) names generate translation and compiler errors
      709 Error Make Xcode Project -> Warning: '/*' in block comment
      710 Cleanup Remove '_A' suffix from translated array names
      711 Error Using 'double’ variable type with Input fails in FB 5.7.2+
      712 Error Cursor not changing from arrow to I-Beam and back in some cases.

      :: New/Updated Headers file ::

      New     - FBLog.incl
      Updated - Util_EUTCKeyFilter.incl
      Updated - Util_CE.incl

      :: New/Updated examples ::

      FB_5_7_Examples/Miscellaneous/FBLog_and NSLog/NSLog Demo

      Downloading here: 4toc.com/fb4/
      March 2012

      FB 5.7.2

      FB 5.7 requires OS X 10.5 or higher.

      :: Editor changes::

      # Type Description
      190 Cosmetic Icons drawn out of place in Errors and Project windows
      191 Feature Compiler warnings/errors jump to FB code

      :: FBtoC changes ::

      # Type Description
      670 Nicety C files should have UNIX LF line endings only, not mixed with CR
      690 Feature Provide FB line info with compiler warnings/errors
      691 Feature 'Unused function' warning should jump to definition
      692 Error Window title corrupted
      695 Feature dialog(-1) returns wndNum for all window events [including _preview]
      696 Nicety 'Debug Last App' should attempt to open Xcode 3
      701 Cleanup -DDECARBONATE should require -m64
      702** Feature Support Xcode 4.3
      703 Error Frozen menus from 'window output 0' in DoDialog

      * The new feature affects warnings and errors listed in the Errors window.
      [1] Icons for messages from the compiler are now badged with a tiny gear-wheel.
      [2] Double-clicking a compiler message now jumps directly to the corresponding line of FB source, if one exists, otherwise the translated .c file is opened in Xcode.

      The new behaviour is especially convenient when you're inspecting a long list of compiler messages, for example from clang analysis.

      ** Xcode 4.3 is installed in the Applications folder. To use with FB 5.7.2, Settings > Advanced must indicate the new location. Path to Developer folder: /Applications/Xcode.app/Contents/Developer
      The checkbox 'Use compiler from developer folder' checkbox should be ON.

      :: Updated headers file ::

      Tlbx CFByteOrder.incl

      :: New examples ::

      FB_5_7_Examples/Graphics/CoreGraphics (Quartz)/CGGradient_demo
      FB_5_7_Examples/Graphics/CoreGraphics (Quartz)/RoundRect+CGGradient
      FB_5_7_Examples/Graphics/CoreGraphics (Quartz)/UserPaneGrids

      Downloading here: 4toc.com/fb4/
      January 2012

      FB 5.7.1

      FB 5.7 requires OS X 10.5 or higher.

      :: Editor changes::

      # Type Description
      184 Cosmetic Source code drawn in project window
      185 Error void functions don't show in function pop-ups
      186 Cleanup Bad horiz scrolling of background window by mouse wheel

      :: FBtoC changes ::

      # Type Description
      343 Error gcc error from pointer.offsetConst$ arg to toolbox Str255 param
      505 Error internal error from dim a as ^Point, b&
      558 Error Compiler error from block comment in BeginC...EndC
      566 Error Comment ending in opt-L eats next line of code
      617 Error inc( p ) and p++ are different if p is ^Type
      619 Error Make Xcode Project strips main() from command-line tool
      666 Error 'dim as ..FooType bar' is pointer but should be Handle
      667 Error Can't cast address arguments freely and correctly
      669 Error Repeated 'clear local' gives internal fatal error
      672 Error Build error 'no include path in which to search for Carbon/Carbon.h'
      673 Error Default compiler in OS X 10.7 should be clang
      674 Error 'void clear local fn Foo as long' should be error
      675 Feature Allow spaces in path to Developer folder
      676 Error Can't cast to (float)
      677 Error Record assignment wrongly disallowed
      678 Error Return value from function of type float treated as integer
      679 Error 'not( a binop b )'  wrongly translated
      680 Feature Maximum number of dynamic arrays doubled to 64
      681 Error Allow record field as file specifier in 'open' statement
      682 Feature Add 'Crash' button to all error alerts
      683 Error Buffer overflow when linking huge project
      684 Error Generate Localizable Strings fails when compiled as Objective-C
      686 Error Unsigned function type wrongly disallowed
      687 Error Crash from invalid syntax for 'button', 'appearance button' and 'appearance window'
      688 Error FD_SpecialDirectoryXxxx() should create directory if absent

      Projects and standalone builds that used clang with the precompiled header option will encounter an error when first built with FB 5.7.1
         Error: clang:
         redefinition of 'gFBDynArrayInfo' with a different type [line 115:14 of...]

      The simplest workaround is to trash the build_temp folder. An alternative is to switch temporarily to another compiler.

      :: New examples ::

      FB_5_7_Examples/Graphics/CoreGraphics (Quartz )/SelfCenteringHIImageView

      Downloading here: 4toc.com/fb4/
      November 2011

      FB 5.7

      FB 5.7 requires OS X 10.5 or higher.

      :: Editor changes::

      # Type Description
      140 Error Tab key moves focus to toolbar and prevents subsequent editor window typing
      142 Error 'REM' slider in document window's toolbar misbehaves
      162 Error Wrong indentation from opt-space between end and fn|select|record...
      174 Error Edit menu first item is always Can't Undo
      088 Feature Allow mouse wheel/trackpad scrolling of background window
      177 Feature Headers ('H') button in doc window's toolbar
      179 Feature Adding file to project should make copy if not in project folder
      180 Feature Project menu item: New Project File...
      181 Feature Help menu item: Search Apple Headers.app

      :: FBtoC changes ::

      # Type Description
      656 Error Hang from missing right parenthesis in 's$ = edit$( 1'
      650 Cleanup Deprecate type-identifier suffices (except '$') on function names
      651 Cleanup Deprecate same name for scalar and array variable: 'dim as long a, a(100)'
      652 Cleanup Deprecate vars with same base-name but different type-identifier suffices: 'dim a%, a#, a$...'
      653 Cleanup Deprecate FB 16-bit 'int' type
      657 Cleanup Passing pointer instead of record argument should be warning
      654 Feature New keyword 'float' as synonym for 'single'
      658 Cleanup Allow pass-by-value records in user-defined functions
      665* Feature Allow C's dereferencing syntax for typed pointers
      647** Feature New 'if.../else.../endif' syntax
      671 Nicety Add Bundle identifier to default Info.plist

      :: New Headers file ::

      Tlbx CFURLEnumerator.incl

      :: Updated Headers files ::

      Tlbx CFURL.incl
      Tlbx Controls.incl
      Tlbx MacWindows.incl

      :: New functions in Console runtime ::

      fn ConsolePrintCFType( typeRef as CFTypeRef ) // any CFType
      fn ConsolePrintCFString( string as CFStringRef ) // CFString only; fast

      :: New examples ::

      FB_5_7_Examples/Files/NSOpenPanel & NSSavePanel
      FB_5_7_Examples/Files/Search Apple Headers
      FB_5_7_Examples/Graphics/CoreGraphics (Quartz)/ImageEdit skeleton

      * The new '*' dereference syntax in FB 5.7:
      local fn Foo( flagP as ^Boolean, ioCount as ^long, ioAmount as ^double )
        *flagP = _zTrue
      // flagP.0` = _zTrue
        *ioCount = 41
      // ioCount.0& = 41
        *ioCount = *ioCount + 1
      // ioCount.0& = ioCount.0& + 1
        *ioAmount = *ioAmount * *ioAmount
      // ioAmount.0# = ioAmount.0# * ioAmount.0#
      end fn

      The new '*' dereference also works with pointers to records:
      dim as ^Rect srcRectP, destRectP
      srcRectP = ...
      destRectP = ...
      *destRectP = *srcRectP
      // BlockMoveData( srcRectP, destRectP, sizeof( Rect ) )

      ** The new syntax:
      if ( 1 == 1 )
      end if

      is equivalent to the traditional (and still supported) syntax:
      long if ( 1 == 1 )
      end if

      Downloading here: 4toc.com/fb4/
      September 2011

      FB 5.6.2.

      This release is earlier than expected, owing to the recent discovery of long-standing bugs in dynamic array support.

      :: Major bug-fixes ::

      # Type Description
      641 Error Crash from DynamicNextElement()
      642 Error DynamicRemoveItems() attempts to remove non-existent items

      :: Feature introducing type safety to FB ::

      # Type Description
      621 Feature Allow compiler to warn of some type-mismatched pointer assignments

      :: Cleaning up FB ::

      # Type Description
      636 Cleanup Deprecate shorthands & % | for poke
      637 Cleanup Deprecate enterproc ... exitproc
      638 Cleanup Disallow 'def' and 'usr' function declarations and calls

      :: Improvements in translated C code ::

      # Type Description
      622 Cosmetic Better translation of if ( pointerVar ) ...
      627 Cosmetic Pointers to scalar types should not be void*
      628 Cosmetic Fewer parentheses in expressions with bitwise operators
      634 Cosmetic Translate ++ as such, not += 1
      640 Cosmetic Translate rec = ptrVar as rec = *ptrVar;

      :: Feature allowing improvement in translated C code ::

      # Type Description
      635 Cosmetic Void keyword for functions (void local fn Foo...)

      :: Minor bug-fixes and other changes ::

      # Type Description
      620 Error Function type mistranslated when ^Type or ^^Type
      625 Feature Allow include "BarFolder:foo.c"
      626 Error Arguments to variadic functions should not be cast
      639 Feature Use of fn ToolboxProcedure as rval should be error
      645 Cleanup Warn against fn CFSTR( stringVar )

      :: New examples ::

      FB_5_6_2_Examples/Controls//Custom text browser

      Downloading here: 4toc.com/fb4/
      August 2011

      FB 5.6.1.

      :: FBtoC general changes ::

      New menu item    Tools > Open Headers Folder

      :: FBtoC bug-fixes and features ::

      # Type Description
      599 Feature Optional translation of _constants to symbols, not magic numbers
      600 Feature New directive: compile [as] "Objective-C"
      601 Feature New 'select switch' statement
      603 Feature NULL keyword
      615* Nicety Warn of long var dereferenced as though pointer
      616† Nicety Warn of implied addition of _constants

      * Until now, longs and pointers were treated almost interchangeably.
      local fn bar( @foo& )
        foo.nil& = 0
      end fn

      This abuse is now deprecated.
      ¿¿ Warning: long var 'foo' used as pointer in line 4 of ...

      † he weird syntax '_foobar = _foo_bar' is now deprecated.
      ¿¿ Warning: implied addition of constants; suggested form: '_foo + _bar' in ...

      :: FBtoC fixes and changes relating to Make Xcode Project ::

      # Type Description
      604 Error Resource files copied as empty data-fork by Make Xcode Project
      607 Feature Warn of 'include library' framework not passed to Xcode project
      609 Error Xib files wrongly converted to nib by Make Xcode Project
      611 Feature Warn of library linker commands not passed to Xcode project
      613 Error Nibs give ibtool error in Xcode 4 after Make Xcode Project 

      :: Updated header ::

      Tlbx CarbonEvents.incl   [fixes RegisterEventHotKey()]
      Tlbx CFCharacterSet.incl [fixes CFCharacterSetXxxx constants]
      Others too numerous to list.

      :: New examples ::

      FB_5_6_1_Examples/Menus/CFStatusItem FB_5_6_1_Examples/Miscellaneous/CalCalendar

      :: Updated examples ::

      Too numerous to list.

      :: Deleted example ::

      FB_5_6_x_Examples/Text/SpellCheck  [crashes mysteriously]

      Downloading here: 4toc.com/fb4/
      July 2011

      Note by Robert Purves about FB 5.6 and OS X 10.7 Lion

      OS X 10.7 'Lion' has several differences from 10.6 that affect FutureBasic programmers.
      Although it is possible to use earlier FB versions, FB 5.6 is strongly recommended because it prevents errors resulting from the removal of QuickDraw headers in 10.7.

      :: Scenario 1 ::

      Starting point: OS X 10.6 with Xcode 3.
      Obtain Lion from App Store and install it.
      What happens: Lion installation removes all the system compilers from /usr/bin, but leaves your existing Developer folder intact.
      Probable error building with FB:
      The compiler specified by build settings could not be found:

      Fix: in FB settings (Advanced drawer) turn ON the checkbox 'Use compiler from Developer folder'. All builds should now work normally.

      :: Scenario 2 ::

      Starting point: As scenario 1, plus download Xcode 4 from App Store and install it (via Install Xcode.app, which appears in the Applications folder).
      What happens: Xcode installation renames your existing Developer folder to Developer-old, adds a new Developer folder, and installs system compilers gcc 4.2, llvm-gcc 4.2 and clang in /usr/bin. gcc 4.0 is gone from /usr/bin.

      Possible error building with FB:
      The compiler specified by build settings could not be found:

      Fix 1: in FB settings (Advanced drawer) set the textfield path to /Developer-old, and turn ON the checkbox 'Use compiler from Developer folder'. All builds should now work normally.
      Fix 2: in FB settings change the Compiler pop-up to anything but gcc 4.0.

      Possible error building with FB:
      The SDK corresponding to 'Base SDK' could not be found:

      Fix 1: in FB settings change the Base SDK pop-up to 10.6 (Xcode 4 has no SDKs before 10.6).
      Fix 2: in FB settings (Advanced drawer) check that the path is valid.

      Possible error building with FB:
      gcc-4.2: error trying to exec '/usr/bin/powerpc-apple-darwin11-gcc-4.2.1': execvp: No such file or directory
      lipo: can't figure out the architecture type of: /var/folders/52/jjd30gq/T//ccDkhj.out
      Compilation failed

      Fix: in FB settings change the Architecture pop-up to Current Mac or Intel (Xcode 4 has no PPC support).

      :: Scenario 3 ::

      Starting point: A new Mac with Lion.
      Download Xcode 4 from App Store and install it (via Install Xcode.app, which appears in the Applications folder).

      Possible error building with FB:
      The compiler specified by build settings could not be found:

      Fix: in FB settings change the Compiler pop-up to anything but gcc 4.0.

      Possible error building with FB:
      The SDK corresponding to 'Base SDK' could not be found:

      Fix: in FB settings change the Base SDK pop-up to 10.6 (Xcode 4 has no SDKs before 10.6).

      Possible error building with FB:
      gcc-4.2: error trying to exec '/usr/bin/powerpc-apple-darwin11-gcc-4.2.1': execvp: No such file or directory
      lipo: can't figure out the architecture type of: /var/folders/52/jjd30gq/T//ccDkhj.out
      Compilation failed

      Fix: in FB settings change the Architecture pop-up to Current Mac or Intel (Xcode 4 has no PPC support).

      Problem with nib files: Interface Builder.app has gone, and Carbon nibs cannot be edited in Xcode 4.

      If you are unhappy with these limitations, copy a Developer folder (containing Xcode 3) from another machine to the new one. From here on, see Scenario 2 (except that the path /Developer-old would be /wherever/it/is/Developer). Note that you can't formally install Xcode 3 on Lion, but you can copy the Developer folder over; Xcode 3 and Interface Builder both work.

      FB 5.6

      :: New Editor Feature ::

      New menu item    Tools > Open Headers Folder

      :: FBtoC bug-fixes and features ::

      # Type Description
      591 Nicety Default compiler should be gcc 4.2
      592 Nicety Show compiler path in error message when it cannot be found
      593 Cosmetic Increase ConsoleWindow's height and font size
      594 Feature Complex arithmetic, variables and functions
      595 Error Wrong formatting of signed zero by 'using'
      597 Cosmetic Change 'Max OS features' to 'Base SDK', matching Xcode
      598 Error Crash after multiple 'input' in ConsoleWindow

      :: New Headers files ::

      Tlbx CFCalendar.incl
      Tlbx complex.incl
      Tlbx MDItem.incl

      :: Updated header ::

      Tlbx CoreGraphics.incl now has CGDisplayFade functions
      Util_CFPrefsCFStrings.incl now has CFPrefsGet/SetCGRect()

      :: New examples ::

      FB_5_6_Examples/Calculations/complex arithmetic
      FB_5_6_Examples/Files/Metadata demo
      FB_5_6_Examples/Miscellaneous/CFCalendar demo
      FB_5_6_Examples/Miscellaneous/Fade screen to black
      FB_5_6_Examples/Text/Print Columnar Data

      :: Updated examples ::

      FB_5_6_Examples/CoreFoundation/CFArray of Dicts Proj

      Downloading here: 4toc.com/fb4/
      April 2011

      FB 5.5.1

      :: Editor bug-fix ::

      # Type Description
      167 Error Strange beep on double-clicking symbol preceded by option-space

      :: FBtoC bug-fixes and features ::

      # Type Description
      584 Error Freeze with 'Wrong number of arguments' error
      585 Nicety More compact representation of 'data' strings
      586 Error Crash on multi-line strings > 255 chars
      587 Feature Advanced settings in drawer
      588 Feature 'system long' should allow comma-separated variable list

      :: Updated header ::

      Tlbx CoreGraphics.incl now includes CGImageSource functions

      :: New examples ::

      FB_5_5_1_Examples/Graphics/CoreGraphics (Quartz)/CGPathContainsPoint
      FB_5_5_1_Examples/Graphics/CoreGraphics (Quartz)/Floodfill
      FB_5_5_1_Examples/Graphics/CoreGraphics (Quartz)/ImageResizer
      FB_5_5_1_Examples/Text/CoreText styled text
      FB_5_5_1_Examples/Text/CoreText with CGColor

      :: Updated example ::


      Downloading here: 4toc.com/fb4/
      January 2011

      FB 5.5

      :: Major changes ::

      1. FutureBasic 5.app is now a self-contained IDE; its supporting file objects (FBtoC.app and the folders build_goodies and editor_support) are inside the app bundle.

      2. An Xcode project is created in the project source folder instead of build_temp as previously. This change makes it less liable to inadvertent deletion. The Xcode project is contained in a folder named <project_name>_XcodeProject.

      3. The User Libraries folder has moved to ~/Library/Application Support/FutureBasic/, alongside Scripts and Style Files.

      :: FBtoC bug-fixes and features ::

      # Type Description
      573 Error Hangs when parsing conditional with @nonexistent_var
      574 Feature Make Xcode project in source folder, not build_temp
      575 Error FlushWindowBuffer doesn't
      576 Error apndstr() wrongly byte-swaps the count field
      578 Error val() and val&() return wrong value for 16-digit hex strings
      579 Error 'read' gets wrong value for 16-digit hex numbers in 'data' statement
      581 Error Link error from Xcode project containing Objective-C code
      582 Error NavDialog() releases saveFileName and message wrongly

      :: New examples ::

      FB_5_5_Examples/Graphics/CoreGraphics (Quartz)/HIImageView_swipe
      FB_5_5_Examples/Text/Programmatic HITextView

      :: Updated example ::


      Downloading here: 4toc.com/fb4/
      November 2010

      FB 5.4.8

      :: Editor bug-fix ::

      A long-standing 'dangling handle' bug has been found, that could cause a variety of crashes.

      :: FBtoC bug-fixes ::

      # Type Description
      570 Error Resources not passed to Xcode project
      571 Error Make Xcode Project gives error 'FBtoC_Placeholder_RETURN' undeclared
      572 Cleanup Code inflation by numerous gosub/returns*

      :: New examples ::


      [*] : The new implementation of gosub/return does not support optimized compilation. If your code uses gosub/return and needs optimization, you will have to replace every subroutine by an ordinary local fn.

      Downloading here: 4toc.com/fb4/
      October 2010

      FB 5.4.7 and FB2C 1.4.7

      :: FBtoC bug fixes and new features ::

      # Type Description
      536 Cleanup Redundant files copied to XcodeProject
      556 Cleanup Editor Errors window garbles multiple errors/comments on same line
      557 Error gosub/return broken
      559 Error route _toBuffer does not work with ConsoleWindow
      560 Feature Support llvm-gcc 4.2 compiler
      561 Error _controlkey constant missing
      563 Feature Preference setting to control source-file combining [*]

      :: New Headers file ::


      :: New examples ::


      :: Updated examples ::

      FB_5_4_7_Examples/Games/Spandrel_1_2 (chess)
      FB_5_4_7_Examples/Sound/Play Sound file

      [*] : A pop-up button ('Source-file combining') in the settings window controls the number of .c (and .h) files produced by translation.
      Off: each FB file leads to a .c file.
      Medium: the same as previous versions of FBtoC.
      Maximum: all FB files are combined in one .c file.

      Downloading here: 4toc.com/fb4/
      July 2010

      FB 5.4.6

      :: Editor changes ::

      Two new features mean that you will no longer lose your scripts and style files on updating to new versions of FutureBasic 5.
      1. Scripts now reside in ~/Library/Application Support/FutureBasic/Scripts. When the editor starts it looks for this folder. If the folder does not exist, it is created and the sample scripts are copied from the current editor_support folder.
      2. Style files now reside in ~/Library/Application Support/FutureBasic/Styles. When the editor starts it looks for this folder. If the folder does not exist, it is created and the style files are copied from the current editor_support folder.

      :: FutureBasic 5 Help ::

      This now includes most of the material formerly contained in the FBtoC Help Book. The latter is largely obsolete.

      :: FBtoC bug fixes and new features ::

      # Type Description
      400 Error preprocessor bug for comments with quote char
      463 Feature pass comments on to C source
      519 Error Misleading error for missing project
      522 Feature Strip unused FB runtime and C runtime functions during Make Xcode Project
      527 Nicety Cleaner translation of simple if conditions
      535 Nicety Make Xcode Project should set optimization -O0
      538 Feature Send runtime errors to console.log instead of showing fatal alert
      539 Cleanup Compiler warning from A$ = "(??)"
      540 Cleanup Warnings from Subs Quick Event Loop.Incl
      541 Error write# stringVar gives strange results
      542 Error line input # should terminate on <lf> as well as <cr>
      543 Feature Allow casting e.g. x = (double)y
      544 Error instr() treats chr$(0) and chr$(1) alike
      545 Feature Allow 64-bit integer literals such as 1ULL, -1LL
      548 Error 'Warn of unused functions' sometimes didn't
      549 Error FSCatalogInfo.permission wrongly defined in Headers
      550 Error LP64 types should have size 8 in static expressions
      553 Error inkey$ for command line tool not implemented
      554 Error Use precompiled header breaks with clang 1.5
      555 Feature Allow static string expression (_foo$ + "bar") as 'output' filename

      :: New Headers file ::

      Tlbx CFNumberFormatter.incl

      :: New examples ::

      FB_5_4_6_Examples/Controls/CustomDrawnControl (Quartz)

      :: Updated examples ::

      FB_5_4_6_Examples/Controls/CustomDrawnControl (QuickDraw)
      FB_5_4_6_Examples/Files/Droplet apps/Accept folder drop
      FB_5_4_6_Examples/Files/Droplet apps/FinderInfo
      FB_5_4_6_Examples/Files/Droplet apps/FinderInfo replacement
      FB_5_4_6_Examples/Games/Spandrel 1.1 (chess)

      Downloading here: 4toc.com/fb4/
      April 2010

      FB 5.4.5 & FBtoC 1.4.5

      :: Editor changes ::
      1. 'Find in Next File' item (Command-option-G) in Edit menu.
      2. A crash from typing '#if def _someLongConstant' is fixed.

      :: FBtoC bug fixes ::
      # Type Description
      510 Error edit$( without closing parenthesis crashes FBtoC
      516 Dim syntax error not flagged
      521 Error Function declared as Str63 is unusable
      522 Feature Strip unused FB runtime and C runtime functions during Make Xcode Project
      523 Nicety Insert spaces around '*' in C translation of typed pointer parameters
      524 Nicety Symbolise boolean constants in C translation
      525 Nicety C translation should have NULL instead of (void*)(0)
      526 Cleanup Remove trigraphs and their support
      528 # Feature Option to build command line tool instead of app
      530 # Feature Allow 64-bit compilation of command line tool
      531 Feature Bounds checking should work for record fields that are arrays
      532 Error Hang when parsing call to undefined function
      533 Feature Allow dereference of pointer that is a record field and a pointer to another record
      537 Cleanup Remove thousands of obsolete predefined constants

      # see the 'tool' example below. Also see FB5 Help: Appendix J - Command Line Tools.

      :: Function change ::

      GetFormattedDateTimeAsString() has been replaced by DateFormatCreateStringWithAbsoluteTime().
      Note the difference in parameter order:
      //toolbox fn GetFormattedDateTimeAsString( CFAbsoluteTime at, CFStringRef formatString ) = CFStringRef

      toolbox fn DateFormatCreateStringWithAbsoluteTime( CFStringRef formatString, CFAbsoluteTime at ) = CFStringRef

      :: Revised Headers file ::

      Tlbx HIView.incl [fixes definition of HIViewContentInfo]

      :: New examples ::

      FB_5_4_5_Examples/Command Line Tool/tool
      FB_5_4_5_Examples/CoreFoundation/CFString left, right, mid
      FB_5_4_5_Examples/CoreFoundation/CFArray of Dicts Proj
      FB_5_4_5_Examples/CoreFoundation/CFStrings in FB console
      FB_5_4_5_Examples/Miscellaneous/CFDateFormatter test
      FB_5_4_5_Examples/Dialogs and Windows/ImageView as window backgound

      :: Updated examples ::

      FB_5_4_5_Examples/CFPrefs Demos/CF string version/Prefs w/Nib & CE
      FB_5_4_5_Examples/Games/Spandrel 1.0 (chess) [replaces RChess 3]

      Downloading here: 4toc.com/fb4/
      February 2010

      FB 5.4.4 & FBtoC 1.4.4

      :: Editor changes ::
      1. Document windows are now live-resizing.
      2. The text of items in the Errors window can now be copied with Command-C.
      3. A text selection bug is fixed. It occurred when the mouse was dragged into the left margin. (Thanks to Robert C.)
      4. Navigation arrows in the Help Book now work as expected.

      :: FBtoC bug fixes ::
      # Type Description
      414 Nicety 'Make Xcode Project' leaves stray .proj in build/NewProjectTemplate/
      513 Mouse clicks in compositing window with FB Events and 'on mouse' vector not detected
      514 Error Orphan 'case' statement not identified as error
      515 Error Xcode project template not deleted after Xcode project created
      517 Error mki$ function can return wrong values
      518 Error edit$( ef ) crashes if the field has not been created
      520 Error Linker warning shows as pseudo error

      New date$ and time$ functions:

      These are now implemented via Core Foundation. They can optionally retrieve both the date and time in one call, and format it in almost any conceivably useful way. See FutureBasic 5 Help for details. The runtime code for date$/time$ may be called directly to format any date/time (not just the current one). See DateExample below.

      :: New examples ::

      FB_5_4_4_Examples/Files/Alias demo

      :: Updated examples ::

      FB_5_4_4_Examples/Nib to FB wndNum & btnNum
      FB_5_4_4_Examples/App with icon
      FB_5_4_4_Examples/Games/RChess_3.0 [replacing RChess_3.0a2]

      Downloading here: 4toc.com/fb4/
      December 2009

      FB 5.4.3

      Important Changes for 5.4.3 ( note: minor bug fixes and other internal fixes are not shown ):

      Type Description
      New new xib format support added. This is the newer XML nib used in Xcode.

      New BeginCCode, BeginCFunction, BeginCDeclaration and EndC are improved methods for including C source directly.
      Many examples & documentation updated to use the new BeginCCode/BeginCFuntion/BeginDeclaration keywords.

      New .c, .h, .m files are now selectable in "Add to project" file dialog.

      New _FBConsoleWndNum constant allows Console window customization. The user may modify the default window in useful ways, for instance:

       include "ConsoleWindow"
       window _FBConsoleWndNum, "My tall debug stuff", (5,47)-(500, system( _scrnHeight ) - 5 )

      See new console application demo in Examples/Games.

      Fix open "A" and open "R" now create the file if it does not exist.

      Fix Menu items ending with '!' or '^' or '<' or '/' no longer crash the app.

      Fix Linker errors are now passed to editor.

      :: New examples ::


      Downloading here: 4toc.com/fb4/
      November 2009

      FB 5.4.2 & FBtoC 1.4.2 released

      This release is being made early, because of the severity of bug #506 (introduced in 5.4.1).

      :: Editor


      :: Bug-fixes and minor features in FBtoC 1.4.2 ::

      323    Error       input "prompt"; x does not work in console mode
      422    Error       dim as long a$ should be an error
      467    Error       gCntr = edit$( 1 ) should work for > 255 chars
      471    Error       missing '"' gives bad C code
      484    Error       bad C code from @"\"
      493    Error       str$( "should be translation error" )
      498    Nicety     include "ConsoleWindow" (alternative to include "FBRuntime.incl")
      499    Error       str$( fpNum ) and print fpNum give different results
      500    Error       prevent clang Universal build with <10.5 deployment
      501    Error       in Console Window, print fpNum ignores gFBFloatMaxDigits
      502    Error       can't access 3D array in record
      503    Error       prevent array declaration with >4 dimensions
      506    Error       can't type upper-case letters in edit fields

      :: New examples ::

      FB_5_4_2_Examples/Calculations/fast sin() and cos()
      FB_5_4_2_Examples/Calculations/Expression Evaluator
      FB_5_4_2_Examples/Calculations/Measurement of code performance

      Downloading here: 4toc.com/fb4/
      October 2009

      FB 5.4.1 & FBtoC 1.4.1 released

      Here is the entire announcement made by Robert Purves in the FB mailing list:

      :: Main changes in FB 5.4.1

      1. Warnings for a common mistake: forgetting to assign a return value (end fn = someValue) to a function whose value is used elsewhere in the program.

        local fn bar
          dim as OSStatus err
          err = _paramErr
        end fn
      // oops, should have '= err'

        dim as OSStatus  err
        err = fn bar
        if ( err != _noErr ) then stop "bar() failed"
      // oops, never get here

      ¿¿ Warning: Returned value of bar() is always 0 in line 9 of test.baq
      ¿¿ Warning: Function should have explicit return value: bar()

      2. Choice of compiler. Build settings window has a pop-up menu with four options.
      - gcc 4.0 is the default.
      - gcc 4.2 is available on 10.5 and 10.6. It cannot build apps to run on 10.3 or 10.4.
      - clang is available on 10.6 only. Very fast but somewhat flaky. Best used for development only (change to gcc 4.0 for release build).
      - clang (analysis) performs static analysis of your code, giving interesting warnings; nothing is actually compiled..

      :: Minor changes in Editor 5.4.1 ::

      1. The menu item Project > Remove Item has been deleted.
      2. Bug-fixes in the following areas: text drawing, menus, Find/Replace window.

      :: Bug-fixes and minor features in FBtoC 1.4.1 ::

      476    edit field with filter fn receives Cmd-chars
      486    default MinOS deployment 10.4; remove 10.2 target from UI
      490    >1-dimension array parameter wrongly translated
      492    warn of unused fn prototypes as well as unused fns
      494    allow fn instead of def and usr function calls
      495    deprecate usr and def function calls
      496    terabyte file access; lof(), loc() and rec() return SInt64
      497    implement open "N" to give shared access

      :: New examples ::

      FB_5_4_1_Examples/Graphics/QuickDraw/Image dithering
      FB_5_4_1_Examples/Graphics/QuickDraw/Ray Tracing

      Downloading here: 4toc.com/fb4/
      September 2009

      FB 5.4 released

      Here is the entire announcement made by Robert Purves in the FB mailing list:

      :: Main changes in FB 5.4

      1. Project-based build settings, accessed by 'gear' toolbar item in project window. Project-based settings override FBtoC's preference settings.

      2. Improved support for C and Objective-C code, and (new) support for C++. Source and header files with extensions .c, .m, .cpp, or .h may be included either by adding them to the project window, or with the 'include' statement. Including source files is intended to replace the clumsy embedding with _PASSTHROUGHFUNCTION. See: FB_5_4_Examples/Calling C code.

      :: Editor ::

      1. Antialiased text.
      2. Improved Help book.
      3. Help menu items include Builtin Constants.rtf, Error Codes.app and FB5 Reference Manual.pdf.
      4. Recent Files and Recent Projects menu items have help tag showing path.
      5. A Temp Project file is no longer created for standalone file builds.
      6. The arrow keys now work to navigate through a project window's items.
      7. File 'aliases' are no longer supported. You can use a Finder alias instead.
      8. The menu item Project > Reset Search Paths has been removed.
      9. The menu item New Project has been moved to the File menu.

      :: FBtoC bug-fixes and minor changes since FB 5.3 ::

      465    Error        array bounds error from mismatched #endif
      468    Cleanup    remove runtime support for animated cursors
      469    Error        edit$( btnNum, lineNum ) various bugs
      474    Nicety      translate 'for' loops more elegantly
      475    Error        crash from tekey$ statement
      477    Error        def fn Thing$ = "string stack bug"
      478    Feature     fully implement '#define MyRecordPtr as ^MyRecord'
      479    Nicety       make error caret point to end of code, not end of comment
      485    Error        can't edit print dialog 'From' and 'To' fields

      :: New Headers files ::

      Tlbx HITheme.incl
      Tlbx Pasteboard.incl
      Tlbx UTCoreTypes.incl

      :: New Headers files ::

      CFPrefs.incl renamed to Util_CFPrefs.incl
      Minor changes too numerous to list

      :: New examples ::

      Calling C code
      Graphics/CoreGraphics (Quartz)/Hit Testing CG objects
      Graphics/CoreGraphics (Quartz)/Quartz 1.11
      Graphics/CoreGraphics (Quartz)/How to print CoreGraphics
      Miscellaneous/Mouse Hit in HIView

      Downloading here: 4toc.com/fb4/
      July 2009

      FB 5.3 and FBToC 1.3 released

      At the end of July, the FB team has released FutureBASIC 5.3 that features a new editor application running natively on Intel. Since it is based on the original editor' source code that was streamlined and enhanced in the process, FB old timers will feel comfortable with this fresh new version.

      Here is the announcement by Robert Purves:

      :: Notable changes from FB 5.2

      1. Universal binary editor runs native on Intel.
      2. Editor's Build Log shows progress of translation and subsequent build steps.
      3. Editor doc windows are useable when toolbar hidden.
      4. Editor has Help Book that in part describes FB5, not FB4.
      5. New icons for editor, FBtoC, and FB documents (log out/in to see).
      6. Find/Change window is resizeable.
      7. Source code text is drawn with the casing in which it was typed.
      8. New projects have extension .fbproj.

      Note that FutureBasic 5.3 editor requires FBtoC 1.3 and vice versa; you can't mix and match with earlier versions.

      :: Bug fixes and minor features in FBtoC ::

      421    Error        setting gFBQuit true in DoDialog() doesn't quit
      443    Error        unhelpful error msg from malformed _constant
      444    Error        string[pointer] should be translation error
      445    Error        *.m files not copied during Make Xcode Project
      446    Error        string stack bug from 'input z'
      447    Feature      'Hide on suspend' preference checkbox
      448    Error        Objective-C source files become *.m.m
      450    Error        flag missing commas in argument list
      452    Error        'Bad case statement' error could force recompilation
      453    Feature     allow constants to start with numeral
      455    Error        nested index with 'Check array bounds' gives various bugs
      456    Feature     change 'Use DWARF' radio button to 'Put line # in app'
      457    Error        .c, .m and .h files could open in FB when double-clicked
      458    Error        edit$( btnNum ) returns nothing if text len > 255
      459    Feature      Save Log As...
      460    Nicety        'More warnings' should not include -Wunused-parameter
      462    Feature      @"somestring" --> CFSTR( "some string" )
      464    Error        output window wrong for _btnClick in floating window
      470    Nicety       explicit error for protoype illegally in local fn

      :: New Headers files ::


      :: New examples ::

      FB_5_3_Examples/Carbon in Cocoa
      FB_5_3_Examples/Graphics/CoreGraphics (Quartz)/AceOfHearts, ImageMask and ColorMask
      FB_5_3_Examples/Files/Accept folder drop

      :: Some old kludgy declarations in Toolbox CFDate.incl have changed to match the offical Apple declarations ::


      Downloading here: 4toc.com/fb4/

      April 2009

      FB is still alive and well

      In spite of the extremely scarse updates of this very site, the FB team is still doing a hard job improving both the FB Editor and the FBtoC application. So instead of writing a long note by myself, here are the announcements for each new release (from the most recent to the oldest) that Robert Purves published in the FB mailing list and that I failed to report on this page:

      March 2009, 21: FutureBasic 5.1.5 and FBtoC 1.1.10

      :: Editor changes

      1. An unsaved standalone file can now be built and run (Command-R); see note 1 below.
      2. Compile Info window shows progress of both translation and compilation.

      :: Bug fixes in FBtoC 1.1.10 ::

      426 Closed: inkey$ does not return
      427 Closed: val&( "01" ) and val&( " 1" ) should return 1
      428 Closed: spurious error from 'if...then edit$(1) = "" else stop'
      429 Closed: 'text' statement with no parameters hangs FBtoC
      430 Closed: Tlbx glu.incl could not be included

      :: New example ::


      An HITextView with the FontPanel allows multistyled text with shadow, colour, double-underline and other eye-candy.

      :: Note 1 ::

      This is a normal Run in every way, except that the various files required by FBtoC are in your TemporaryItems folder, which (in OS X 10.5) is somewhere like:

      February 2009, 16: FutureBasic 5.1.4 and FBtoC 1.1.9

      :: Editor 5.1.4 changes

      1. Scripts '#if 1/#endif' and '#if 0/#endif' fixed.

      :: FBtoC 1.1.9 changes

      1. Typed functions without a suffix are allowed, for example
      local fn Name as Str255
      end fn = "Ann"

      2. FB4 kludges removed from toolbox declarations (see below).
      3. The setting 'Use precompiled header' works for universal builds.
      4. The build system determines which pieces of a large program need to be compiled, and compiles only those pieces.

      :: Bug fixes

      415 Closed: Make Xcode Project wrongly quotes/escapes nib names
      417 Closed: dropping file on FBtoC spoils log window position
      420 Closed: Allow files with no OSType to be opened.
      424 Closed: input # bug
      425 Closed: record # should set file mark when extending

      :: FB4 kludges removed ::

      The Carbon C definition of these five functions includes a 64-bit parameter, which in FB4 had to be split into two 32-bit halves:
      HIViewSetID() // rarely used
      // rarely used

      You will have to change your code from, for example:
      fn HIViewFindByID( fn HIViewGetRoot( w ), myHIViewID.signature, myHIViewID.id, @myView ) // old syntax
      to the simpler correct form:
      fn HIViewFindByID( fn HIViewGetRoot( w ), myHIViewID, @myView ) // FB5.1.4 syntax

      January 2009, 9: FutureBasic 5.1.3 and FBtoC 1.1.8

      :: Editor 5.1.3 ::

      Unchanged from 5.1.2.

      :: FBtoC 1.1.8 changes

      'on FinderInfo fn Xxxx' implemented [see FB_5_1_3_Examples/Files/FinderInfo]
      The Headers file Util_CE.incl has been extensively commented for easier use.

      :: New Headers files and examples ::

      Util_EUTCKeyFilter.incl [see FB_5_1_3_Examples/Text/EUTC Key filter]
      Util_Toolbar.incl [see FB_5_1_3_Examples/Carbon Toolbar/The easy way]
      Tlbx HITheme.incl [see FB_5_1_3_Examples/Controls/HITheme_demos]
      Tlbx CoreText.incl [see FB_5_1_3_Examples/Text/CoreText xxxx]

      :: CoreGraphicsheaders changes ::

      The special FB4 syntax for a handful of CG functions (CGRectMake, CGRectOffset, CGContextGetCTM ...) has been discarded. You will need to change the way you call these functions in your source code. For example:
      fn CGRectMake( r, 0.0, 0.0, 10.0, 20.0 ) // old FB4 syntax
      r = fn CGRectMake( 0.0, 0.0, 10.0, 20.0 ) // new FB5 syntax similar to C

      :: Additions to the CG headers ::


      The FB4 'local fn' wrappers have been removed from all CoreGraphics functions. This change makes 'fn' optional when calling CG procedures (functions that do not return a value).
      fn CGContextFillRect( ctx, r ) // 'fn' formerly required; now optional
      CGContextFillRect( ctx, r ) // new simpler syntax

      :: Bug-fixes ::

      370 Closed: button statements uncheck a checked checkbox
      404 Closed: scroll button mishandles Rect param at creation
      406 Closed: key chars with high bit set are negative in _evKeys dialog event
      409 Closed: I-beam cursor persists after click in FBtoC Log window
      410 Closed: gcc error from struct/record field named 'index'
      412 Closed: gcc error from pi if prefs 'Allow dim a#,a$,a%'
      413 Closed: val&() should return 0 if first char is alphabetic

      November 2008, 17: FutureBasic 5.1.2 and FBtoC 1.1.6

      :: Important change in HandleEvents ::

      The default behaviour of HandleEvents is now to block (i.e. not return) unless an event is dispatched.
      It is no longer necessary (but is harmless), to suppress null events with:
      poke long event - 8, 0xFFFFFFFF // no null events

      The original behaviour of returning 30 times a second, if required for old polling code, can be restored by:
      poke long event - 8, 2 // null events every 2 ticks, like FB4
        fn PollForSomething
      until gFBQuit

      :: Editor (FutureBasic 5.1.2) changes ::

      Fixes to text display in the Errors window.
      A bug has been fixed that caused the cursor to change to an arrow over the Scripts Palette even when the latter was hidden.

      :: FBtoC 1.1.6 changes ::

      1. Default behaviour of HandleEvents changed.
      2. The rarely-used 'system' statement is no longer equivalent to 'end'. Please change your code to use 'end'.
      3. The 'menu' statement now allows an optional 5th parameter (commandID).
      4. New/revised Headers files:
         Tlbx CFBase.incl
         Tlbx CFString.incl
         Tlbx CFArray.incl
         Tlbx CFData.incl
         Tlbx CFDate.incl
         Tlbx CFNumber.incl

      These header files are more complete than previously; if you get redefined function errors for your own CFxxxx declarations, just comment out your declarations.
      5. New Headers file:
      Util_Containers.incl [for use see FB_5_1_2_Examples/Containers/Util_Containers example].
      6. New Headers file:
      Util_Toolbar.incl [for use see FB_5_1_2_Examples/Carbon Toolbar/Toolbar Example].
      7. FB_5_1_2_Examples/Sorting [FB3/FB4 CD examples updated for FB5]
      8. build_temp folders created by FBtoC are excluded from Time Machine backups.

      :: Bug fixes ::

      390 Closed: left$$, mid$$, right$$ give _zTrue when comparing chars
      391 Closed: mid$$( c, 1 ) gives "comma expected error"
      392 Closed: scrollbar of console app lacks down-arrow
      393 Closed: garbled error from proc "NoSuchFunction"
      394 Closed: prHndl..prInfo.rPage fields are byte-reversed on Intel
      396 Closed: default edit field is _framedNoCR instead of _framed
      398 Closed: can't access 2-D array inside record
      399 Closed: def apndstr has endian bug (on Intel)
      401 Closed: crash from print after front window closed
      402 Closed: 'Array bounds error' alert shows as 'Quit'

      October 2008, 20: FutureBasic 5.1.1 and FBtoC 1.1.5

      :: Editor (FutureBasic 5.1.1) changes

      1. Script Palette replaces Script submenus.
      2. Project window has Headers button, which opens the Headers folder in the Finder.

      :: FBtoC 1.1.5 changes ::

      1. New File menu item: Make Xcode Project.
      2. New feature and setting: Warn of unused functions.
      3. Domain and folder type constants (_kUserDomain, _kApplicationSupportFolderType...) are now defined.
      4. New Headers file Util_CE.incl provides a simplified method to implement Carbon Events in your code; for demos see FB_5_1_1_Examples/CarbonEvents.

      :: Bug fixes ::

      314 Closed: make strings in *.c runtime localizable
      378 Closed: elided error message from include library "NoSuchFile"
      381 Closed: editor ignores some translation errors
      382 Closed: aliased source file prevents translation of main
      383 Closed: editor's Stop button does not affect build by FBtoC
      384 Closed: I-beam cursor stays after click in Prefs 'More gcc options'
      385 Closed: unusable CreateMouseTrackingRegion() in Tlbx CarbonEvents.incl
      386 Closed: 'picH = picture' gives translation error
      387 Closed: _useWFont fails for some appearance buttons

      September 2008, 24: FutureBasic 5.1 and FBtoC 1.1.4

      :: Important change in FBtoC

      Until now, the build process would automatically copy every nib (*.nib) from the source folder into the built app package. This greedy and surreptitious copy risked the inadvertent inclusion of files like "OldRubbish.nib" and "embarrassingly bad.nib". Now, nibs are ignored unless specified in an 'include resources' statement or in the editor project window (see below).

      This means that every project or standalone file that uses a nib interface needs modification. The most straightforward fix is to add a line of code resembling this:
      include resources "main.nib"
      for each nib used by your project.

      :: Editor (FutureBasic 5.1) changes ::

      1. New menu items give better integration with FBtoC
      Command menu
      2. FBtoC preferences are also accessible from a pane in FB preferences.
      3. Project window allows files of any type to to be dragged and dropped, including nib, sound and image files.
      New Project Manager
      Such files are copied during the build to <AppName>/Contents/Resources or <AppName>/Contents/Resources/en.lproj as appropriate, as though they had been specified in an 'include resources' statement in source code.

      :: FBtoC 1.1.4 changes ::

      1. gFBFloatMaxDigits implemented
      2. New file and directory utilities available in Headers file Util_FileDirectory.incl. See FB_5_1_Examples/Files/File_Directory examples.

      :: Bug fixes ::

      372 Closed: bad factor when input# used with var instead of constant
      375 Closed: 'line input #serialPort, s$' gets no chars
      377 Closed: open "A"... doesn't work with FSRef or CFURLRef
      380 Closed: close #e... etc mistranslated

      September 2008, 12: FutureBasic 5 and FBtoC 1.1.3

      :: Bug fixes in FBtoC 1.1.3 ::

      365 Closed: Can't access App menu's MenuRef before building a menu
      367 Closed: rnd(x) produces same number on repeated runs
      368 Closed: _cursEvent, _cursOverBtn … not implemented
      369 Closed: appearance button statement should support graphics content
      371 Closed: print using gives wrong string for 0.0
      373 Closed: Stackable Nav sheets
      374 Closed: Infinite error loop: if a then text a else text b

      Downloading here: 4toc.com/fb4/

      September 2008

      FutureBASIC 5 is out!

      FutureBASIC 5.0 has been released along with FBtoC 1.1.3 (US version only). But what's that?

      FB5 is merely the FutureBASIC Editor tweaked to work with FBtoC only. It doesn't rely anymore on Andy Gariepy's FB Compiler to produce applications, therefore some options have disappeared from its menus and the Extensions folder has been discarded eliminating in the process the discrepancies between the Headers folder used by the FB Compiler and the Headers folder dedicated to FBtoC.

      At this time, FB5 is still a PPC application. It might become a Universal binaries in the near future. Furthermore, the GCC compiler's preferences must be set up within the FBtoC application, this might also change in the coming months to mimic the FB4 behavior coupled with the old FB Compiler.

      For those who need to maintain old big applications or to support old Apple's computers and systems (68k, PPC, Carbon Classic/OS X, system 9.2) FB4 is still available and up to the task.

      Downloading here: 4toc.com/fb4/

      March 2008

      Little progress

      For the French speaking visitors lost on this page, they should know that FutureBASIC 4 Release 4.4.2 along with FBtoC are available now in French at: 4toc.com/fb4/. This new release has been updated to offer a smoothier transition to FBtoC. The localized package weighing 50Mb is stuffed in a single archive containing the manuals and the example files . FBtoC must be downloaded separately.

      February 2008

      Speaking of which

      As expected, the recent announcement made by Staz Software has induced a surge in activity among the FB programmers, newcomers and oldtimers alike. This is a positive sign. Now we must hope that this excitement will spread and last over time.

      As a consequence, I have started to receive e-mails asking for technical support from around the world and while I appreciate the confidence, I must remind my correspondents that FutureBASIC is now a hobby as far as I'm concerned. I'm no longer officially in charge of the technical support. Said otherwise, I can only reply when time permits. Let me add that English is not my native tongue, therefore it takes much more of my time to come up with a decent reply in this language. So, for a better support you should subscribe without reticence to the official FB mailing list at associate.com. This is clearly the hot place for FB programmers nowadays.

      In a recent contribution, I wrote that MacWise by Carnation Software had been compiled as a Universal application using FBtoC. This was wrong. I must apologize now for the false statement I made. Actually, the updated application was released to run smoothly under Leopard, which is not the same thing at all. However, my statement was just a bit premature because today it's OK.

      Lately, I've been working on the French version of FBtoC in collaboration with the FBtoC team and this was the opportunity for them to implement a new feature that will ease the localization of your own created applications. Stay tuned.

      Note that the French versions of FB and FBtoC although ready for prime time are not yet available for download. I will seek an arrangement with Staz Software in the shortest delays. I have no insight regarding the Italian version, all I know is that Michele Neri is working hard on the FBtoC application itself at this time. At last, if you are interested in localizing FB in your own language (other than English, Italian, Japanese and French, that is), you might get in touch with the FBtoC team via the FB mailing list as it seems there is no contact form on their web site.

      January 2008

      A word of caution

      Some programmers (myself included) have been using the DataBrowser For Dummies library in their applications, but while I am honoured by that fact, I have to say now that this is not a really good news. At first this library was intended for the learning of the DataBrowser control, which is a very rich puppy in Apple's bestiary and therefore a bit hard to fathom on first approach. However, that library is shamelessly reaping advantage from the weak typing of the FB language, furthermore the underlying mechanism to achieve the desired simplicity for the end-user (in that case, you as the programmer) is somewhat intricated, not to say convoluted.

      Now, the problem is that this way of coding is totally unfit for the compilation with GCC through FBtoC, and worst, it cannot even be tweaked to get it up to the task of becoming universal binary. There's only one alternative for those of you who already use the DBFD library: code rewriting to implement the DataBrowser in your applications, if you want them to run natively on Intel Macintosh. Not really cool.

      That being said, the code and functions in DBFD could serve as a template to start the necessary job of adaptation for your specific needs. You might also prefer to start with the DataBrowser example by Bernie Wylde that comes along with the FBtoC package.

      FB freeware: bad news or good news?

      Some of you have raised the question of the significance of FutureBASIC going freeware. Is this a good thing or a bad thing?

      Quite frankly, I have no insight as to where Staz Software is going, and it has been a while since I spoke to Chris Stasny privately, but I don't think it is really a good news for him in spite of the fact that it will relieve him of a heavy burden. Furthermore, I suspect that hurricane Katrina played a significant part in his decision. Following the disaster we have all noticed the slowdown in the frequency of new releases and major upgrades, a slowdown that has come close to an halt, in fact. Sad. Whatever the true reasons may be, we owe Chris a big thank you for his relentless support during the past two decades. Personally, I can't find the words to express my immense gratitude.

      Anyway, according to his last contribution on his Web site, this is not the end for FutureBASIC. On the contrary, it may well be a new start. First, I believe that spreading this recent news about the fresh status of FutureBASIC can bring back some of the old customers who were reluctant to pay their annual fee for an update of their IDE. Secondly, now nothing can stop new users from getting on board. Better late than never. The latest point being the most important, as I see it, guaranteeing a healthy survival of our favourite IDE.

      While the FB community was probably the most friendly around the Web that one could hope for, it was more like joining a little tribe, a survival of the past, isolated from the general programmer community at large. The current paradigm shift might give a nudge in the right direction. FB is on the verge of becoming an open source project. If this is not the key for success per se, at least, this should increase the odds to see FB still well alive in the years to come.

      For the moment, we can count on the small team that has been tackling the heavy job for Staz Software for the last two years. Today, we can benefit from their work with the first official release of FBtoC, but they still have plans for the future: they have yet to convert the FB editor to a Universal Application, and, more importantly, they have to integrate FBtoC with the FB Editor, making FB programming for Intel Macs a seamless experience.

      In short, it is a bit early to decide whether we are dealing with good news or bad news on this matter. At this very moment, only time will tell.

      Santa Claus is alive

      Yesterday I posted an update to wish everybody a Happy New Year. Today I'm at it again to report the latest good news. Yesterday, FutureBASIC became freeware. That means that anyone can now download it and use it for free. So, if you don't own the latest release, it's time for you to visit Staz Software web site.

      Here is Staz' announcement:

      NEWS! FB is Freeware!-- January 1, 2008
      FutureBASIC is now freeware! Starting January 1, 2008, FB will become freeware. Does this mean that work on the product will come to a halt? Absolutely not. For starters, you will be able to download a revised editor that addresses problems with OS X, System10.5. Later, you will be able to download the exciting new translator under construction by the FBtoC team that will allow FB code to be compiled by the GCC compiler.

      Happy New Year!

      As a matter of fact, the FB front has been very quiet the past year: no big announcements, no major releases. This is not saying that nothing has happened during that time, but what the FB community is awaiting eagerly now is the next big step regarding programming with FutureBASIC that could guarantee its survival.

      The good news is that it's coming. Some time ago, a small team, led by Robert Purves, started to work on a new tool designed to produce Universal Binaries and generate applications running natively on Intel Macs. This project is now well advanced, up to the point that we can expect its first release in the very near future.

      Of course, no date has been proposed yet, but a few beta testers have already reported that they have successfully compiled some of their applications, even commercial ones. For instance, MacWise, is now available with Intel compatibility. This is quite encouraging.

      The tool called (for the moment) FBtoC, reads FB native projects and, as its name implies, converts the code into C, to ask the GCC compiler (available on the Developer CD of all Mac OS X System disks) to generate the resulting application. The process is straightforward, at least on paper, and ideally it should be transparent for the programmer.

      Actually the things are not that simple, because the process bypasses entirely the FB compiler. That means that a lot of legacy code had to be cut out. Old Apple "technologies" like the archaic 'working directory reference number' for example, are no longer used, and forbidden in your code if you intent to target Intel Macs. For those of you who are still lagging behind, it is really time to move on.

      So the strength of FB in that it allowed very old BASIC code to continue to run on Macintosh, is over. This is an inconvenient fact, and if you have not followed the advice of FB gurus, be prepared to spend some time rewriting your old applications. For now, the best advice I could give you on my end is to subscribe to the FB mailing list at associate.com. Not only will you find other programmers ready to help, but also the announcements for the latest versions of FBtoC with its documentation that you can download and test.

      February 2007

      QuiXample 1.7.4

      This maintenance release corrects a bug occurring in the Italian and French versions which prevented a few menus from acting properly. The code has been very slightly edited but has been compiled using the most recent FB headers coming from the latest beta version of FB.

      You can download QuiXample here

      DataBrowser For Dummies 3.1

      Mousewheel support, which was inadvertantly disabled, has been restaured in this release.

      You can download DBFD here

      January 2007

      Happy New Year to All

      December 2006

      QuiXample 1.7.3

      Recent changes in the DataBrowser For Dummies library that QuiXample uses, introduced a severe bug that caused the application to crash while the user was toying with checkboxes. This new version, built with the latest release of FB, should fix the problem.

      You can download QuiXample here

      DataBrowser For Dummies 3.0

      In spite of its pompous new version number, there is nothing new in this release, except that a nasty bug related to the handling of CF strings is supposed to be squashed by now.

      You can download DBFD here

      November 2006

      FutureBASIC 4 Release 4 is out

      This maintenance release comes with a special renewal offer for current subscribers. The main feature of FB4 R4 is its new compiler which is not only faster and smaller but now OS X-only. It produces almost exactly the same PPC code that Release 3 did. The Compiler also no longer includes obsolete resources in your applications ['CODE', 'Tara', 'Gigi', 'Andy', 'Staz' 1997] . The Compiler's user interface has been also updated in the process.

      There are very small changes in the Editor application: it uses less CPU time and sees minor cosmetic changes in some panes of its Preferences window. There's a new header file called CFIndex.incl that can seriously boost your Index$ arrays. New commands have been implemented to work with dynamic arrays:
      Def DynamicInsertItems, Def DynamicRemoveItems and Usr DynamicItemSize. (see Reference Manual for details).

      A bit more about this release here.

      April 2006

      A new flame

      Many of you have been following FutureBASIC's adventure since the dawn of Macdom, record longevity for an IDE on this platform bar none. But times are a-changing and while FB is still full of ass-kicking goodness for the aficionados -- from where I'm sitting, at any rate -- I, on a personal level, also have to do other things with my life. In no way I am abandoning ship, but I'll be honest by saying that after the disappearance of Pix & Mix, I simply have to earn a living, and that is why I am also tying my bootstraps to another boat. This will clearly mean that I will be less present on the FB front, even though I still plan to continue the translations for the French-speaking programmers. I am also still officially in charge of the master of the Euro CD, and I'll try to keep this site up to date as much as I can (hey, look at that, I'm even ahead of Staz Software in the publication of the new features in the next release).

      The funny thing is that I'm now involved in the mogWerks project, actually a brand new company for Web development that has been settled by another FB-er whom I met around year 2000 thank to the FutureBASIC mailing list at associate.com and whom you know perhaps for his programming skills with FB or without your knowledge because that's him who designed the euro.futurebasic site eons ago. Jonathan (a.k.a. the gnome) for many years was a great figure in the FB community.

      mogWerks has little things to do with FB, if at all, therefore be aware that I will handle all the tasks related to FutureBASIC in my spare time, so you should not expect an immediate answer to your e-mails and for those who are used to calling me on the phone, I'll ask them to be indulgent if I need to shorten our conversations.

      If you are curious about our new company, come to visit our commercial Web site at: mogwerks.com, but as programmers, you will be probably more interested in the other Web site we have put together which is dedicated to our Open Source projects at: mogwerks.net. Do I need to say your support is welcome?

      Last of all, I would like to finish with special thanks -- but I'm embarrassed, lacking the words, both in English and in French that can sincerely indicate the depth of these thanks -- to Michele Neri (a.k.a. Mich the Great) the Italian localiser of FB for his incredible volunteering work, help and support for all these years. I even believe that we have never met each other IRL, how come? I think I'm really missing a rare human being. And now Michele has just offered to join us in our first Open Source project. At least, it seems the FB spirit is alive and well in this new endeavour, isn't it?


      FutureBASIC 4 Release 3 is out!

      In spite of the battering inflicted by Hurricane Katrina -- the traces of which will still take many years to clear, if they ever do -- we are glad to announce that FutureBASIC 4 Release 3 is ready for shipping. While this release was long overdue, we must congratulate Chris Stasny for having stayed the course and providing us with a new, enhanced version of our favorite IDE. For a detailed list of changes, bug fixes and new features, please follow this link.

      Go to the Staz Software site to place orders for new subscriptions, or renew an existing one. If you want the European CD (at no additional charge), remember to note this in the Comments field of the order form.

      Now that Apple is going Intel, what's the future for FutureBASIC?

      This is what Herbie Gluender is exploring in a short article which he gave us the right to reprint here.

      "We are currently experiencing Apple’s transition from the PowerPC- to the Intel-based hardware accompanied by a corresponding software transition. Hence, users of the FB IDE might also ask what this transition means for their existing, and future, code and applications? Although specific statements about future versions of the FB IDE can’t be made yet, this document will cover general considerations of what needs to be done by the makers of the FB IDE and, by consequence, by FB coders." Read more...

      QuiXample 1.7.2

      Nothing really fancy here, this new version makes use of CF Preferences.

      You can download the package here

      February 2006

      QuiXample 1.7.1

      Following an overwhelming demand, I have implemented a new feature that allows to search the FB documentation with QuiXample. The search is performed in the language keywords only, but you can use a partial term to retrieve the keywords of interest. From there, the FB documentation can be opened in your favorite Web browser.

      You can now also label files to help you sort the results. At last, a couple of serious bugs have been squashed. Please, have a look at the readme file.

      You can download the package here

Last updated:
July 2019

FB4 Release 4
FB4 Release 3
FB4 Release 2
FB4 Release 1
FB3 Release 7
FB3 Release 6
FB3 Release 5
FB3 Release 4
FB3 Release 3
FB3 Release 2
FB3 Release 1

Universal Binaries?
The Carbon Corner
Porting FB Code to Carbon
On the other side of the Atlantic
Mac OSMac OS X  
  © 2000 Pix&Mix
  All Rights Reserved

  FutureBASIC is a registered trademark of Staz Software, Inc and is used with permission.