[EN] [IT]
Le plus rapide des compilateurs BASIC pour Mac
Staz Software, Inc

Nouvelle version FB5
  • IDE gratuit
  • Éditeur (Universal binaries)
  • Traducteur C intégré (FBtoC)
  • Compilateur GCC ou clang au choix
  • Gestionnaire de Projets boosté
  • Nouveaux fichiers headers améliorés
  • Intégration de code et headers C
  • Runtime nettoyé et peaufiné
  • Nouvelle documentation (en cours)
  • Centaines d'exemples
  • Compilation Carbon
Ancienne version FB4
  • IDE gratuit
  • Editeur supportant les plug-ins
  • Compilateur intégré super rapide
  • Gestionnaire de Projets
  • Débogueur
  • Profileur
  • Program Generator (CASE tool pour PPC & 68K)
  • Support des fichiers .nib d'I.B. via programmation
  • Riche documentation
  • Profusion d'exemples
  • Runtimes en Open Source:
    • Console
    • Standard BASIC
    • Appearance
    • Toolbox
    • BASIC-88
  • Applications universelles via FBtoC & compilateur GCC
  • Compilation Carbon
  • Assembleur PPC & 68K en ligne
  • Accès Toolbox et Shared libraries
  • Appli mini: 28 Ko
  • Appli maxi: 2 Go
  • Système mini: Mac OS 7.6 pour FB^3
  • Système mini: OS X 10.2 pour FB4

Édition Européenne :
  • Il n'y a plus d'édition européenne officielle
  • La localisation est ouverte à tous

Site maintenu par
Friendly links:

Let your ideas grow
Téléchargez librement
Nouveau FutureBASIC & FBtoC depuis www.4toc.com/fb/
Ancien FutureBASIC depuis le site de Staz Software

Juillet 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

Juin 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

Avril 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

Mars 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

Janvier 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

Novembre 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

Septembre 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

Août 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

Juillet 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

Juin 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

Mai 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

Mars 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

Février 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

Février 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.

Janvier 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

Décembre 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

Novembre 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

Octobre 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

Octobre 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

Septembre 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

Avril 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

Avril 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

Mars 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.

Décembre 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

Septembre 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

Août 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

Juillet 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

Mai 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.42 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

Février 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

Février 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

Janvier 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

Janvier 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

Janvier 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/

      Septembre 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.

      Août 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/
      Juillet 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/
      Juin 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/
      Février 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/
      Novembre 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/
      Octobre 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/
      Octobre 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/
      Juillet 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/
      Juin 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/
      Mai 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/
      Avril 2013

      FutureBASIC et FBtoC deviennent "open source".

      Voici l'annonce publiée par Brian Stevens dans la liste de diffusion de FutureBASIC :

      "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."

      Novembre 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/
      Septembre 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/
      Août 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/
      Juillet 2012

      Triste nouvelle

      Bien que je n'aie jamais rencontré Robert Purves dans la vie réelle, sa disparition en juillet dernier m'a profondément touché. Sans doute savez-vous que Robert était le fer de lance de l'équipe FB. C'était un puits de science dans divers domaines, et pour ce qui nous concerne, un maître en programmation. Plus encore, j'ai souvent pensé qu'il avait une bien meilleure connaissance des entrailles de FutureBASIC que celle de ses propres concepteurs.

      Après le retrait de Andy Gariepy, suivi plus tard par celui de Chris Stasny, c'est-à-dire les pères originels de FB, Robert avait repris la barre de l'esquif vacillant. Qu'ils en soient conscients ou pas, tous les utilisateurs de FB, lui doivent de pouvoir continuer à programmer avec FutureBASIC encore aujourd'hui..

      Même si Robert vivait en Nouvelle-Zélande, j'ai pu travailler à distance avec lui en maintes occasions, plus particulièrement pendant le développement de l'IDE, et j'ai pu en ces circonstances apprécier l'homme aussi bien que le scientifique qu'il était. Il était attentif aux autres, toujours réactif et prêt à apporter son aide. J'étais espoustouflé en permanence non seulement par ses incroyables connaissances mais également par sa volonté d'aider les autres à réussir dans leurs projets.

      La mort de Robert Purves m'a laissé sans voix pendant quelque temps, et j'envisage toujours en ce moment-même d'arrêter toute activité en relation avec FutureBASIC en laissant ce site retourner lentement à la poussière. De toute façon, je n'y faisais plus que publier les annonces des nouvelles versions du logiciel, sans y apporter de contributions personnelles. Tandis que l'équipe FB poursuit le travail, je crois que ce site ne manquera à personne avec de telles pitoyables mises à jour.

      Où que soit l'esprit de Robert à présent, je souhaite qu'il ait rencontré la paix. Je vous remercie Monsieur pour tout ce que vous avez fait pour nous.

      Pendant que mes pensées se tournent vers sa famille, je vais laisser le soin à Ted Spencer de prononcer les derniers mots de vérité de ce billet. Ted du Canada a écrit le message suivant dans la liste de diffusion FutureBASIC :

      "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."

      Mai 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/
      Mars 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/
      Janvier 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/
      Novembre 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/
      Septembre 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/
      Août 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/
      Juillet 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/
      Avril 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/
      Janvier 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/
      Novembre 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/
      Octobre 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/
      Juillet 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/
      Avril 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/
      Février 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/
      Décembre 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 ::


      Téléchargement ici : 4toc.com/fb4/
      Novembre 2009

      FB 5.4.2 & FBtoC 1.4.2

      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

      Téléchargement ici :4toc.com/fb4/
      Octobre 2009

      FB 5.4.1 & FBtoC 1.4.1 released

      Les nouveautés principales de cette version sont les suivantes : Accès aux fichiers volumineux à travers les commandes basiques de FB, implémentation de la commande open "N" pour les accès partagés, obsolescence des préfixes usr et def pour les routines intégrées (remplacés par fn), possibilité de choisir le compilateur clang à la place de GCC.

      Voici l'annonce complète faite par Robert Purves dans la liste de diffusion officielle de FB :

      :: 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

      Téléchargement ici :4toc.com/fb4/
      Septembre 2009

      FB en version 5.4

      Cette mouture de FB apporte deux améliorations attendues de longue date et une ouverture simplifiée sur le monde d'en-face qui devrait donner de nouvelles perspectives aux programmeurs chevronnés.

      Les projets sont enfin sauvegardés avec les réglages du compilateur. Finis donc les incessants va-et-vient dans le panneau des préférences du compilateur lorsqu'on devait gérer simultanément plusieurs projets nécessitant des réglages différents. Le partage des projets en sera facilité également.

      Enfin doit-on dire là aussi, FB accepte désormais le typage des pointeurs. Ce n'est certes pas une révolution essentielle, mais FB nous forçait à utiliser des pointeurs génériques rendant du même coup le code source un peu moins lisible et pas très élégant.

      Même s'il était déja possible d'inclure du code source en C dans un listing FB traité par FBtoC en signalant par la directive _PASSTHROUGHFUNCTION que telle partie de code source devait être interprétée comme du C, le processus était quelque peu disgracieux, sans compter que le code en C perturbait l'affichage dans l'Editeur FB. Avec cette nouvelle version, le Gestionnaire de projets accepte des fichiers externes écrits en C, Objective-C et C++. La déclaration FutureBASIC Toolbox fn sera mise à contribution pour déclarer et pouvoir appeler les fonctions depuis votre code source FB. Nul doute que cette amélioration va ouvrir de nouveaux horizons pour beaucoup de programmeurs, y compris ceux qui n'ont jamais programmé en C. Voir le projet Calling C Code un exemple élémentaire mais très parlant qui est inclus dans l'archive des exemples à télécharger.

      Voici l'annonce complète faite par Robert Purves dans la liste de diffusion officielle de FB :

      :: 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

      Téléchargement ici :4toc.com/fb4/

      Juillet 2009

      FB 5.3 et FBToC 1.3 disponibles

      Fin juillet, l'équipe FB nous a délivré FutureBASIC 5.3 qui dispose d'un nouvel éditeur s'exécutant nativement sur Intel. L'application étant basée sur l'ancien code source de l'éditeur, qui a subi un lifting au passage, les anciens programmeurs FB ne seront pas dépaysés par cette toute récente version.

      Voici l'annonce faite par 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 ::


      Téléchargement ici : 4toc.com/fb4/

      Avril 2009

      FB est toujours en vie et se porte bien

      En dépit des mises à jour extrêmement rares sur ce site, l'équipe FB continue d'arrache pied son travail d'amélioration de l'Éditeur FB et de l'application FBtoC. Aussi, à la place d'une longue note personnelle, je vous propose ici toutes les annonces (de la plus récente à la plus ancienne) publiées par Robert Purves dans la liste de diffusion FB et que, bien sûr, j'aurais dû publier sur cette page à mon tour (anglophobes encore un petit effort) :

      21 mars 2009 : FutureBasic 5.1.5 et 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:

      16 février 2009 : FutureBasic 5.1.4 et 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

      9 janvier 2009 : FutureBasic 5.1.3 et 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

      17 novembre 2008 : FutureBasic 5.1.2 et 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'

      20 octobre 2008 : FutureBasic 5.1.1 et 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

      24 septembre 2008 : FutureBasic 5.1 et 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

      12 septembre 2008 : FutureBasic 5 et 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

      Téléchargement ici : 4toc.com/fb4/

      Septembre 2008

      FutureBASIC 5 est arrivé !

      FutureBASIC 5.0 est sorti accompagné de FBtoC 1.1.3 des mains de l'équipe FBtoC (en version US uniquement). Mais qu'est-ce que c'est au juste ?

      FB5 est simplement l'Editeur FutureBASIC quelque peu modifié pour travailler de concert avec FBtoC uniquement. Il ne s'appuie plus sur le Compilateur FB d'Andy Gariepy pour produire des applications, en conséquence certaines options ont disparu de ses menus et le dossier Extensions n'existe plus, éliminant du même coup les différences qui pouvaient exister entre le dossier Headers utilisé par le Compilateur FB et celui dédié à FBtoC.

      Pour l'heure, FB5 est toujours une application PPC, mais il pourrait devenir une application universelle dans un futur proche. De plus, les préférences du compilateur GCC doivent être réglées depuis l'application FBtoC, cela pourrait également changer dans les mois à venir pour correspondre au comportement de FB4 associé avec l'ancien Compilateur FB.

      Pour ceux qui ont besoin de maintenir d'anciennes applications conséquentes ou qui doivent supporter les anciennes machines d'Apple et leurs divers systèmes (68K, PPC, Carbon Classic/OS X, système 9) FB4 est toujours disponible et opérationnel.

      Le téléchargement c'est par ici : 4toc.com/fb4/

      Mars 2008

      Petit progrès

      Les francophones seront ravis d'apprendre que FutureBASIC 4 Release 4.4.2 ainsi que FBtoC sont disponibles à présent en français à l'URL suivante (à conserver dans leurs signets)  : 4toc.com/fb4/. Cette nouvelle version a été adaptée afin d'autoriser une transition plus fluide vers FBtoC. L'IDE localisé pesant 50Mo se présente sous une unique archive contenant les manuels et les fichiers d'exemples. FBtoC doit être téléchargé séparément. Les plus curieux auront noté que la manuel de référence en français a été mise en ligne.

      Février 2008

      Puisqu'on en parle

      Comme on pouvait le supposer, l'annonce récente de Staz Software a entraîné un regain d'activité parmi les programmeurs FB, autant grâce aux nouveaux arrivants qu'aux vieux briscards. C'est en effet un signe positif. Maintenant, il reste à espérer que cette excitation se répande encore davantage et surtout qu'elle dure dans le temps.

      Une conséquence de ce nouvel engouement est que j'ai commencé à recevoir des courriels d'un peu partout demandant un support technique, et bien que j'apprécie la confiance qui m'est faite, je me dois de rappeler à mes correspondants que je ne suis plus officiellement en charge du support technique et que pour ce qui me concerne FutureBASIC n'est plus qu'un passe-temps à présent. Autrement dit, je ne peux répondre aux courriels que lorsque le temps me le permet. J'en profite pour dire que l'anglais n'étant pas ma langue native, cela m'oblige à consacrer encore plus de temps pour mes réponses. C'est pourquoi, pour un meilleur support technique, je vous invite avec insistance à souscrire sans hésitation à la liste de diffusion officielle de FB (malheureusement pour les francophones, il faut communiquer en anglais). C'est vraiment là que les programmeurs FB doivent se retrouver à présent.

      Dans une récente contribution, j'ai écrit que MacWise de Carnation Software avait été compilé en tant qu'application Universal à l'aide de FBtoC. C'était inexact. Je dois maintenant m'excuser pour cette information qui s'est révélée fausse. En réalité, la version disponible avait été mise à jour pour s'exécuter sans problème sous Leopard, ce qui n'est pas du tout la même chose. Mon affirmation n'était toutefois que prématurée, car à présent c'est chose faite.

      Dernièrement, j'ai travaillé à la localisation en français de FBtoC en collaboration avec l'équipe de développement, et cela leur a donné l'occasion de mettre en œuvre une fonction du programme qui devrait faciliter la localisation des applications que vous-même créez. Tenez-vous informé.

      Notez que les versions françaises les plus récentes de FB et de FBtoC bien que prêtes pour la distribution ne sont toujours pas disponibles pour le téléchargement. Je suis en train de négocier un arrangement avec Staz Software pour régler ce problème dans les plus brefs délais. Par ailleurs, je n'ai pas d'information concernant la version italienne, tout ce que je sais c'est que Michele Neri travaille dur actuellement sur l'application FBtoC elle-même, ce qui ne doit pas lui laisser beaucoup de temps pour des travaux de traduction. Enfin, si vous souhaitez localiser l'environnement FutureBASIC dans votre langue native (autre que l'anglais, l'italien, le japonais et le français, évidemment), vous pouvez entrer en contact avec les membres de l'équipe FBtoC via la liste de diffusion FB, car il ne semble pas y avoir de formulaire de contact sur leur site web.

      Janvier 2008

      Mise en garde

      Un certain nombre de programmeurs (moi-même y compris) ont utilisé la librairie DataBrowser For Dummies dans leurs applications, et bien que j'en sois honoré, je me dois de dire maintenant que ce n'est pas une véritable bonne nouvelle. À l'origine, cette librairie avait pour but l'apprentissage du DataBrowser, un des nombreux contrôles du bestiaire d'Apple particulièrement riche en fonctionnalités et qui par conséquent était assez difficile à mettre en œuvre, surtout en première approche. Cependant, la librairie exploitait éhontément le faible typage intrinsèque au langage FutureBASIC, et de plus, le mécanisme soujacent pour parvenir à la simplicitié vis à vis de l'utilisateur final (c'est à dire vous en tant que programmeur) était quelque peu complexe, pour ne pas dire alambiqué.

      Maintenant, le problème est que cette façon de programmer est totalement inadéquate pour la compilation avec GCC via FBtoC, et pire encore, la librairie ne peut même pas être traficotée pour autoriser la compilation en binaire universel. Il n'y a en réalité qu'une seule alternative si vous avez utilisé la librairie DBFD : la réécriture du code pour implémenter le DataBrowser dans vos applications, si votre objectif est de les faire s'exécuter en mode natif sur les Macintosh Intel. Pas cool !

      Cela étant, une bonne partie du code et des fonctions de la librairie peuvent vous servir de modèle comme point de départ pour le travail nécessaire d'adaptation à vos besoins particuliers. Vous pouvez préférer aussi démarrer à partir de l'exemple de Bernie Wylde relatif au Databrowser qui est livré avec FBtoC.

      FB gratuiciel : bonne ou mauvaise nouvelle ?

      Certains d'entre vous se posent la question : est-ce une bonne ou une mauvaise chose que FutureBASIC soit maintenant distribué en freeware ?

      Très franchement, je n'ai pas d'info sur les objectifs de Staz Software, d'ailleurs cela fait un bon moment que je n'ai correspondu en privé avec Chris Stasny, mais je ne pense pas que ce soit une bonne nouvelle pour lui, hormis le fait qu'il va pouvoir enfin se décharger d'un fardeau. De plus, je suppute que les dégâts causés par l'ouragan Katrina ont joué un rôle non négligeable dans sa décision. Suite à ce désastre, nous avons tous remarqué le ralentissement dans la fréquence des mises à jour du logiciel, au point que le temps semblait s'être presque arrêté à Diamonhead. C'est triste. Quelles qu'en soient les vraies raisons, nous devons rendre un sérieux hommage à Chris pour son support indéfectible tout au long de ces vingt dernières années. Un merci si grand que les mots ne sauraient traduire.

      Toutefois, si l'on en juge par la dernière contribution de Chris sur son site Web, FutureBASIC n'est pas mort. Au contraire, cela pourrait bien être l'aube d'un nouveau départ. D'abord, je crois qu'en répandant cette fraîche nouvelle, les anciens clients qui hésitaient à payer leur abonnement annuel pour les mises à jour vont revenir au bercail. Ensuite, plus rien ne retient ceux qui seraient tentés par un environnement de développement qui a fait ses preuves depuis les débuts du Macintosh. Ce dernier point est sans doute le plus important à mes yeux, car c'est un nouvel élan de cette sorte qui peut garantir une survie décente pour FB.

      Bien que la communauté des programmeurs FB soit l'une des plus chaleureuses que l'on puisse trouver sur le Web, y adhérer relevait plus de l'allégeance à une tribu, une survivance du passé, insensible aux grands mouvements qui parcouraient la communauté des programmeurs au sens large. Ainsi, ce brusque changement de paradigme pourrait donner un coup de pouce dans la bonne direction. FB est sur le point de passer en open source. Si ce n'est pas là la clef du succès per se, au moins, cela devrait en toute logique augmenter les chances de voir FB bien vivant pour les années à venir.

      Pour le moment, nous devons compter sur la petite équipe qui s'est attelée au labeur de fond, en lieu et place de Staz Software. Le travail fourni par ces talentueux programmeurs a débuté voilà presque deux ans, et aujourd'hui nous pouvons profiter de ses fruits avec la première sortie officielle de FBtoC. Pour autant, l'équipe n'en a pas moins planifié de nouveaux objectifs : en ligne de mire, la conversion de l'éditeur pour en faire une application universelle, et plus important encore, l'intégration de FBtoC avec l'éditeur afin de rendre la programmation pour MacIntel avec FB une expérience sans douleur.

      En bref, il est un peu tôt pour se forger une opinion sur le sort de FB. Sommes-nous face à une bonne nouvelle ou une mauvaise en la matière ? À ce moment précis, seul l'avenir détient la réponse.

      Le Père Noël est passé

      Hier, je mettais ce site à jour pour souhaiter à tous mes meilleurs vœux pour l'année qui débute. Aujourd'hui, me revoilà au charbon pour vous apporter la bonne nouvelle. FutureBASIC est devenu un gratuiciel depuis hier. Cela signifie que tout le monde peut le télécharger et l'utiliser gratuitement. Alors, si vous ne possédez pas encore la dernière version du logiciel, il est temps d'aller visiter le site Web de Staz Software.

      Voici l'annonce de Staz Software :

      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.

      Bonne et heureuse année 2008 !

      C'est un fait, l'année qui vient de s'écouler a été très calme sur le front FB : pas d'annonces fracassantes, ni de versions indispensables à se mettre sous la dent. Cela ne signifie pas qu'il ne s'est rien passé durant ce temps-là, mais maintenant la communauté des programmeurs FB attend avec impatience, la prochaine grande étape pour ce qui concerne la programmation avec FutureBASIC, si ce langage veut garantir sa pérennité.

      La bonne nouvelle, c'est que les choses sont en bonne voie. Il y a quelque temps, une petite équipe emmenée par Robert Purves a commencé à travailler sur un outil conçu pour produire du code binaire universel et générer des applications s'exécutant en natif sur MacIntel. Ce projet est aujourd'hui bien avancé, au point que l'on peut légitimement espérer sa première sortie officielle dans un futur très proche.

      Évidemment, aucune date n'a encore été avancée, toutefois des beta testeurs ont déjà affirmé qu'ils ont réussi à compiler quelques-unes de leurs applications, y compris commerciales. Par exemple, MacWise, est présentement vendu en version compatible MacIntel. C'est plus qu'encourageant.

      L'outil appelé (pour le moment) FBtoC, lit les projets FB et, comme son nom l'indique, convertit le code en langage C pour ensuite demander au compilateur GCC (livré avec l'installation du système OS X) de générer l'application résultante. Le processus est direct, du moins sur le papier, et idéalement il devrait être transparent pour le programmeur.

      En réalité, les choses ne sont pas aussi aisées, simplement parce que le processus contourne entièrement le compilateur FB. Cela signifie qu'il faut faire son deuil de certaines méthodes propres à la programmation en FutureBASIC. En effet, FB réalisait des exploits pour émuler certaines méthodes devenues obsolètes depuis bien longtemps dans l'univers Apple. Par exemple le working directory reference number, un fossile maintenu en vie par FB alors que la Toolbox ne le gère plus depuis plus d'une décade. Est-il utile de dire que le compilateur GCC ne se laissera pas berner ? Alors pour ceux encore à la traîne, il est vraiment temps de bouger.

      Ainsi, la force de FB qui autorisait de vieux morceaux de code BASIC à fonctionner encore sur la plate-forme Macintosh est terminée. C'est un fait incontournable, et si vous n'avez pas suivi les conseils avisés des gourous de FB tout au long des années, attendez-vous à devoir consacrer du temps pour mettre vos applications en conformité et au goût du jour. Pour l'instant, le conseil que je donnerai de mon côté est de souscrire, si ce n'est déjà fait, à la liste de diffusion FutureBASIC chez associate.com. Vous y trouverez là non seulement des programmeurs prêts à vous aider, mais aussi les annonces concernant les dernières versions de FBtoC accompagnées de sa documentation et d'un lien de téléchargement qui vous permettra de pouvoir le tester.

      Février 2007

      DataBrowser For Dummies 3.1.1

      Oops ! La plupart des exemples de la version française n'avaient pas été mis à jour et refusaient tout simplement de compiler. Désolé !

      Vous pouvez télécharger DBFD ici

      QuiXample 1.7.4

      Cette release de maintenance corrige un bogue qui survenait dans les versions italienne et française et qui empêchait certains menus de fonctionner correctement. Le code a été très légèrement modifié, mais QuiXample a été compilé avec les fichiers headers les plus récents qui accompagnent la dernière version beta de FB.

      Vous pouvez télécharger QuiXample ici

      DataBrowser For Dummies 3.1

      Le support de la molette de la souris, qui a été désactivé par inadvertance, a été réintroduit dans cette release.

      Vous pouvez télécharger DBFD ici

      Janvier 2007

      Bonne Année à Tous !

      Décembre 2006

      QuiXample 1.7.3

      De récentes modifications dans la librairie DataBrowser For Dummies que QuiXample utilise ont introduit un bug sévère qui provoquait un crash de l'application quand l'utilisateur cliquait sur certaines cases à cocher. Cette nouvelle version, compilée avec la dernière release de FB, devrait corriger ce problème.

      Vous pouvez télécharger QuiXample ici

      DataBrowser For Dummies 3.0

      Malgré son numéro de version prétentieux, cette nouvelle release ne contient rien de nouveau, si ce n'est qu'elle est censée corriger un bug sérieux relatif à la gestion des CF strings.

      Vous pouvez télécharger DBFD ici

      Novembre 2006

      FutureBASIC 4 Release 4 est maintenant disponible

      Cette release de maintenance est proposée avec une offre spéciale de renouvellement pour les souscripteurs actuels. La nouveauté principale de FB4 R4 concerne son compilateur qui est plus rapide et plus petit et qui ne fonctionne que sous OS X. Il produit, presque à l'identique, le code PPC que la Release 3 générait. Il n'inclut plus dans les applications construites un certain nombre de ressources devenues obsolètes ['CODE', 'Tara', 'Gigi', 'Andy', 'Staz' 1997] . Son interface utilisateur a été légèrement remaniée pour autant que cela ait une importance.

      Il y a de très petits changements dans l'Editeur : il utilise maintenant moins de temps CPU et a subi quelques légères modifications cosmétiques dans sa fenêtre de Préférences. Il y a un nouveau fichier header intitulé CFIndex.incl qui peut donner une nouvelle jeunesse à vos tableaux Index$. De nouvelles commandes ont été introduites pour la gestion des tableaux dynamiques : Def DynamicInsertItems, Def DynamicRemoveItems and Usr DynamicItemSize. (Voyez le manuel de Référence pour plus d'informations).

      En savoir un peu plus à propos de cette release, ici.

      Avril 2006

      Un nouveau départ ?

      Certains d'entre vous ont peut-être suivi la saga de FutureBASIC depuis le début de l'ère Macintosh, un record de longévité pour un environnement de développement sans équivalent sur cette plate-forme, à ma connaissance. Mais, nous le savons tous, les temps sont bien connus pour changer, et bien que FB soit toujours aussi adulé par ses aficionados -- parmi lesquels je me compte toujours -- je dois, à un niveau personnel, me libérer de cette addiction. Non, je n'abandonne pas le navire, mais pour être franc, depuis la disparition de Pix & Mix, j'ai simplement besoin de gagner ma vie, et c'est pourquoi je viens d'embarquer sur un autre bateau. Dès lors, il est clair que j'aurais moins de temps à consacrer à FB, ce qui ne m'empêche pas de continuer le travail de traduction pour les francophones, d'ailleurs je reste officiellement en charge du master de l'édition européenne du CD et j'essaierai de garder ce site à jour du mieux que je pourrai (voyez, j'ai même devancé Staz Software dans la publication des nouvelles caractéristiques de la dernière release).

      La chose amusante est que je me suis impliqué dans le projet mogWerks, qui est en fait une toute nouvelle société de développement pour le Web fondée par un autre programmeur FB que j'ai connu dans les années 2000 grâce à la liste de diffusion FutureBASIC à associate.com. Certains d'entre vous le connaissent déjà pour ces dons de programmeur ou alors sans le savoir parce que c'est aussi lui qui a relooké ce site il y a un moment déjà. Jonathan (alias the gnome) pendant de nombreuses années a été une des figures éminentes de la communauté FB.

      mogWerks a très peu de choses à voir avec FB, si tant est qu'il y en ait, en conséquence je vais devoir gérer les tâches relatives à FutureBASIC dans mon temps libre, aussi ne vous attendez pas à recevoir une réponse immédiate quand vous m'enverrez un e-mail, et pour ceux qui ont pris l'habitude de me joindre par téléphone, je leur demanderai d'être indulgents si je dois écourter nos conversations.

      Si vous êtes curieux de savoir ce que propose notre nouvelle société, allez visiter notre site commercial à : mogwerks.com, mais en tant que programmeur, vous serez probablement plus intéressé par l'autre site Web que nous avons monté pour tous nos projets Open Source à : mogwerks.net. Ai-je besoin de vous dire que votre soutien est le bienvenu ?

      Enfin, je ne voudrais pas terminer sans des remerciements très spéciaux, mais je suis embarrassé parce que je ne trouve pas de mots assez forts pour exprimer ma gratitude à l'égard de Michele Neri (alias Mich the Great), le traducteur italien de FB. Tout au long de ces dernières années il m'a apporté un incroyable soutien, une aide précieuse et aussi mais surtout il a fourni un travail phénoménal sans jamais, ne serait-ce qu'une misérable fois, demander quelque chose en contrepartie. Ma dette envers lui est incommensurable. Et dire que nous ne nous sommes jamais rencontrés dans la vie réelle ! J'ai comme le sentiment parfois de passer à côté d'un être humain rare. Mais l'aventure avec lui ne s'arrête pas non plus aujourd'hui, puisque Michele s'est proposé tout récemment de nous rejoindre sur notre premier projet Open Source. Au moins, l'esprit FB restera bien vivant dans cette nouvelle aventure.


      FutureBASIC 4 Release 3 est sorti !

      Malgré les blessures infligées par l'ouragan Katrina, blessures qui sont loin d'être pansées (si elles peuvent jamais l'être), nous sommes heureux d'annoncer la sortie de la Release 3 de FutureBASIC 4. Après une si longue attente, il nous faut tout de même féliciter Chris Stasny pour avoir gardé le cap et nous offrir aujourd'hui une version améliorée de notre environnement préféré. Pour prendre connaissance de la liste détaillée des changements, réparations de bugs et autres nouveautés, vous pouvez suivre ce lien.

      Vous pouvez d'ores et déjà passer votre commande pour une toute nouvelle souscription ou pour le renouvellement de votre licence sur le site de Staz Software. Si vous souhaitez le CD européen (sans frais supplémentaire), rappelez-vous de le spécifier dans le champ Comments du formulaire de commande.

      Qu'en est-il du futur de FutureBASIC ?

      C'est ce que Herbie Gluender explore dans un court article qu'il nous a donné le droit de rediffuser ici.

      "Actuellement, nous vivons une nième transition d'Apple qui abandonne l'architecture PowerPC pour aller vers le matériel équipé Intel. Une transition équivalente doit s'opérer au niveau logiciel. De fait, les utilisateurs de l'IDE FutureBASIC pourraient se demander tout ce que cela signifie pour leurs applications déjà existantes ou bien celles, dans leurs cartons, qui sont encore à venir. Bien qu'aucune spéculation ne puisse être encore faite en ce qui concerne les futures versions de l'IDE FutureBASIC, on peut déjà présenter des considérations générales sur ce qui doit être réalisé par les concepteurs de FB, et à leur suite, par tous les programmeurs FB". Continuer la lecture...

      QuiXample 1.7.2

      Rien de bien extraordinaire dans cette version. QuiXample utilise maintenant les CF Preferences.

      Téléchargement ici

      Février 2006

      QuiXample 1.7.1

      Suite à de nombreuses demandes, j'ai implémenté une nouvelle fonctionnalité qui permet de faire une recherche dans la documentation FutureBASIC avec QuiXample. La recherche est effectuée sur les mots-clés du langage uniquement, mais vous pouvez utiliser une partie de mot comme critère de recherche. Après quoi, vous pouvez ouvrir la documentation FB dans votre navigateur Web.

      Il vous est possible maintenant d'étiqueter des fichiers pour vous aider à trier la liste des résultats de vos recherches. Enfin, deux bugs sérieux ont été corrigés. Ouvrez le fichier lisez-moi pour plus d'informations.

      Vous pouvez télécharger QuiXample ici


Mise à jour :
Juillet 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

Manuel de Référence
Binaires Universels ?
Du Côté de Carbon
Portage vers Carbon

Le Petit Livre

De l'Autre Côté de l'Atlantique
Mac OSMac OS X  
  © 2000 Pix&Mix  
  Tous droits réservés

  FutureBASIC est une marque déposée appartenant à Staz Software, Inc et utilisée avec permission.