SwiftForth 3.1.4 (27-Mar-2008)
ALL
- Fixed bug in PRUNE that was allowing a MARKER (or REMEMBER) to
roll back before the point protected by GILD.
- Moved block (and block editor) support to SwiftForth/lib/options,
renamed as blocks.f and blockedit.f.
- Updated items in the word list searched by ENVIRONMENT?
- Added initial port of the polyFORTH database support system
(DBSS). 'REQUIRES dbss' to load.
- Added .\" which is like ." but adds the quoted characters feature from S\". Read
the comment block at the top of src/ide/strings.f for details.
- Updated the SwiftForth/unsupported/src2txt utility to use the new blocks support.
Windows
- Updated Block Support appendix in SwiftForth Reference Manual.
- Removed forced upper case in PROGRAM, the turnkey generator.
Executable file will be as you type it, not forced to upper case.
Automatically appended "exe" and "xrf" extensions are in lower
case.
- The SwiftForth kernel has been renamed from kernel.exe to sfk.exe
and has also been given its own icon to distinguish it from the sf.exe
turnkey GUI app. Change any kernel.exe references in your local
batch files or Windows shortcuts to use sfk.exe instead. Use
SwiftForth/bin/turnkey.bat as a model for generating a turnkey with
the sf.ico icon. The installer will generate both sfk.exe and
kernel.exe (which are identical) for the next few releases. The use
of kernel.exe is deprecated (and it will go away in the near future).
- Changed sfk.exe and sf.exe icons. The batch files
that generate
sf.exe replace the kernel's "console" icon with a different one for
the turnkey "GUI" program.
- Added command .OPTIONS to display the entire LOADED-OPTIONS wordlist.
Linux
- Preliminary draft of SwiftForth Reference Manual (Linux Version)
is in SwiftForth/doc/swiftforth-linux.pdf.
- Added $ command to send the rest of the command line to the Linux
shell. LOCATE $ for details. Use >SHELL to send any command string to
the shell.
- The new $ shell command makes our limit LS obsolete, so LS will
now just remind you to use $ instead.
- Added the sendmail example to SwiftForth/lib/samples/linux.
'REQUIRES sendmail' to load.
- Moved all syscalls to the kernel source to keep them in one place.
SwiftForth 3.1.3 (29-Feb-2008)
ALL
- New word INCLUDING returns the address and length of the full
filename currently being included. If you were digging down in the
kernel source and using the undocumented variable 'FNAME, this is now
the official API. 'FNAME is now headless (and subject to change). See
the glossary at the end of Section 3.1 of the SwiftForth reference
manual, or LOCATE INCLUDING, for details.
- Fixed the case of the filenames after REQUIRES in the common
lib/options and lib/samples directories for compatibility with the
Linux case-sensitive file system.
- Changed CD so it no longer does 0 WORD (thus consuming the whole
line), but instead will honor quoted path names (which may contain
spaces), or unquoted (no spaces). This permits comments to follow on
the same line if a CD is done in a source file.
- The cross-reference output now has the system "file number" along
with the line number for each line displayed. This resolves a very old
bug that prevents editing or locating cross-reference lines in any but
the most recent xref output. This should be a great improvement for
those who rely on the cross-reference utility.
- Moved src/ide/win32/verbose.f from the shared src/ide directory so
it can be used by the Win32 and Linux versions.
- Added names for the terminal I/O "personality" vectors (the
stucture pointed to by user variable 'PERSONALITY). For example,
'TYPE now returns the address of the TYPE vector. LOCATE 'TYPE to
find the kernel source file.
- Changed the file viewer output routines (used by LOCATE) to start
with the exact line located. N and B ("next" and "back") are no
longer confusing in their behaviors. Try it.
- Moved envq.f (environment queries) to common src/ide
directory.
- Escaped characters in strings parsed by S\" (C\", etc.) are case
sensitive. This was the original intent for this function and is the
direction the next Forth standard is heading. If you use these
functions, be sure your escaped characters are in lower case. Read
the comment block at the top of src/ide/strings.f for details.
- Moved ANS Forth ENVIRONMENT? query function to common src/ide
directory so it can also be used by the Linux version.
- Suppress duplicate output in single-step utility.
- Moved FILE-EXISTS to common preamble.f so it's available to both
Windows and Linux versions.
Windows
- Updated SwiftForth Reference Manual.
- New installer, splash screen, and About box artwork.
- Changed the interpretation of file/line references in cross-
reference output to handle click/right-click LOCATE and EDIT for new
output format.
- Increased the total dictionary size from 4 MB to 8 MB, consistent
with the Linux version.
- Changed REQUIRES to restrict it to common and Win32 lib
directories. LOCATE REQUIRES to see the list of directories
traversed.
- Fixed sender and recipient address formats in the sendmail.f
sample application.
- Incorporated changes to BITMAP rendering from SFTalk posts
submitted by Mike Ghan, extending the BITMAP class to handle 24-bit
"TrueColor" BMP files.
Linux
Although SwiftForth-Linux is not yet in general release, enough
people are alpha-testing it to make it worthwhile maintaining the
release notes here. If you are interested in being on the alpha test
list and have a current SwiftForth support subscription, please send an email to
support@forth.com
with the subject line "SwiftForth-Linux testing".
- The editline function in the 'sf' turnkey now saves the command-
line history in $HOME/.SwiftForth_history. When the turnkey command-
line environment is loaded, it loads the saved history (used for up-
arrrow and tab completion).
- Added REQUIRES for library support. LOCATE REQUIRES to see the
list (and order) of paths searched when loading library source.
- Added several more syscalls to support the I/O needed by SwiftX
cross compilers.
- Improved the extended key decoding facility, which is now located
in src/ide/linux/keydecode.f. Input line editing, history, tab
completion, etc., all rely on this. We're trying to make the command-
line behavior as common to both Linux and Windows versions. We would
have loved to use the GNU Readline library here, but can't due to its
licensing.
- Floating math support now working in the Linux version. The
configuration tool has not been ported yet, so we're using defaults.
"REQUIRES fpmath" to load it.
- Added time and modified Julian date (MJD) calendar support. Note
that words to set the date and time are not supplied as these are
properly privileged system-level functions.
- Added method to return to the most recent working directory using
"cd -". As with the bash version of cd, one level of OLDPWD is
supplied. Repeated "cd -" commands will toggle the working
directory.
- Added parsing of cross reference file/line number pairs (ending in
'|') to LOCATE. Example: LOCATE 10 32| goes to line 32 of the source
file from a recent WH (cross-reference) listing.
- Ported the sendmail.f sample application from Windows to Linux.
This uses the socket interface to establish a TCP connection with an
SMTP server and send a text file as email.
- Extended BYE so it calls ONENVEXIT and ONSYSEXIT chains before
exit.
- Changed the console terminal's vectored PAGE behavior to scroll
instead of clearing. This preserves "scrollback" in terminal emulator
windows.
- Fixed ANS file access methods such that they are no longer file
creation methods. These codes are still passed to both OPEN-FILE and
CREATE-FILE, but in the case of CREATE-FILE, they do not set the
permission bits.
SwiftForth 3.1.2 (29-Jan-2008)
- Fix initial memory allocation in xref. If you use SwiftForth to
generate turnkey programs that call EVALUATE or use the interpreter
but do not instantiate the debug window and have the cross reference
turned off (FLOOR set to -1), you need this update.
- Corrected check for error return in FILE-SIZE. If you run
SwiftForth on older versions of Windows (95/98/Me), you need this
update.
- Fixed test for control character while parsing from included files
such that it does not convert accented characters (codes in the range
$80..$FF) to spaces. If you use accented characters in your source
code, you need this update.
- Replaced old windowed single-step debug utility with one that
works in the main debug window, thus offering scrollback history of
debug activity. This is now found in the SwiftForth/lib/options
directory. The SSTEST example is in SwiftForth/lib/samples.
- Moved Windows-specific user variables from the kernel to
SwiftForth/src/ide/Win32/preamble.f.
- Removed extra formatting from output message in REQUIRES.
- Ensure 'WF is properly initialized in turnkey startup.
- Add pause before scrolling in words that generate large amounts of
output in the debug window. Implemented in DUMP tools, cross
reference, and disassembler.
- Added filter to prevent cross reference output from displaying
duplicate lines if more than one reference occurs on the same
line.
- Updated SwiftForth Reference Manual.
SwiftForth 3.1.1 (22-Jan-2008)
- Added global kernel-specific <EOL> (line-end sequence) for cross-platform compatibility.
- Changed most <CRLF> references to use <EOL>.
- Turnkey program generator will not save the cross-reference list
if 'FLOOR is -1. 'FLOOR is public so you can set it to -1.
- Changed .CATCH behavior on the command-line to be a bit more user friendly.
- Improved the output display when a THROW occurs while including a
source file. Generally, the error message should only display next to
the formatted display of the source line on which the THROW occurs. The source
traceback shows the nested includes in reverse order, then ends
without any additional error messages.
- Windows console-mode I/O in kernel.exe has been extensively re-written to support re-directed console input.
- The kernel start code has been reorganized to support common start
behavior in Windows and Linux versions.
- Improved the behavior of command-line processing in console and
GUI modes. On failure, an option menu is presented. On success,
falls through to QUIT without displaying a system greeting message.
- This release notes file has been updated to use a less ambiguous date format.
SwiftForth 3.1.0 (17-Jan-2008)
Significant Changes
- Reorganized kernel and IDE source directories. The upcoming
SwiftForth-Linux version (later this year :) will share much of the
common code in the SwiftForth source tree.
- INCLUDE-FILE (the inner working of INCLUDED and INCLUDE) has been
completely re-written to read in an entire source file into virtual
memory and parse it from there. This makes loading source files about
25% faster than the old way (using READ-LINE) and also removes the
arbitrary 250-character limitation on line length.
- Extended the kernel target compiler to generate a cross-reference
list. Cross references are now avaiable all the way back into the
kernel source (nice feature if you use the cross reference tool).
- Added cross-reference tool to evaluation versions.
- Converted kernel into a Windows console app. GUI mode is optional
and is loaded with the system extensions.
- Re-wrote internals of the DLL library and function import routines.
- Added more decriptive error messages for missing DLLs and imported functions.
- Made DLLs and imported functions optional: Precede the definition
with [OPTIONAL]. LOCATE [OPTIONAL] and read its comment block for
details.
- Added a new section to the SwiftForth reference manual:
"Recompiling SwiftForth."
- Moved DUMP from IDE extensions to kernel.
- Changed the kernel definition HI such that it first looks for a
hi.f source file in the current working directory before falling back
to the default location (SwiftForth\src\ide\win32).
- Passwords are no longer needed for downloaded SwiftForth
installers. The install key is now part of the download path.
- Replaced the output PE file generation method in the kernel target
compiler. Requires pehead.img in the kernel source directory, so don't
delete it.
- Added '%' filename expansion to the turnkey save routine. You can
now type PROGRAM %SwiftForth\bin\sf1 and it will work.
- Added -BALANCE and +BALANCE to turn on and off control structure
checking done at the end of each colon definition. Default is +BALANCE
(balance checking enabled).
- Renamed the SwiftForth Reference Manual to swiftforth-win32.pdf (in the swiftforth/doc directory).
- Updated SwiftForth/doc/handbook.pdf to the new 3rd Edition of Forth Programmer's Handbook.
Maintenance
- Added line numbers to LOCATE output.
- Modified WHERE and LOCATE output formatting to make them similar in appearance.
- Cleaned up several source files: added comments, corrected typos, general clean-up. Lots more to be done here in subsequent releases.
- Added PARSE-WORD (as described in the ANS Forth standard supplemental information).
- Added [COMPILE] for legacy application support.
- Moved SPRINTF support to options.
- Fixed some minor issues in aswoop.f.
- Updated SQLite source with changes from original author.
- Removed single-step debug utility.
- Added decode method for (CREATE) words in the disassembler.
- Added check for runaway disassembly. This still needs some improvement, but it's much improved.
SwiftForth 3.0.13 (04-Dec-2007)
- NEW! Added directory SwiftForth/Unsupported/Contrib for contributions and sample code from SwiftForth users. If you have code to contribute, please email it to support@forth.com with "SwiftForth Contribution" in the subject line."
- NEW! Added directory SwiftForth/Unsupported/SQLite with sample SQLite interface.
- Added missing BSF and BSR opcodes to the disassembler.
- Updated the "HelloWin" sample code: changed "Windows 95" to just plain "Windows". Replaced the WAV file, too (voice of Leon Wagner, in case you wonder).
SwiftForth 3.0.12 (18-Sep-2007)
- Changed the definition of NAMED in class ENTITIES, and ANOTHER in class LOCAL-VARIABLES to correct a bug where the use of (LOCAL) was not handled correctly for the "0 0 (LOCAL)" case.
- Added >PROCESS-WAIT which launches a process given the full text string for the Windows command line and waits until the process terminates before returning to SwiftForth. LOCATE >PROCESS-WAIT and read its comment block for details.
- Force DECIMAL during cross-reference output. Preserve oroginal base across call to WH ( WHERE )
SwiftForth 3.0.11 (11-Jul-2007)
- Added CFunction: which works just like Function: but is used instead for C-prototype DLL calls. Use Function: only for Pascal-prototype function calls.
- Corrected TAB-NOTIFY in Samples\Win32\Tabbed.f.
- Updated SwiftForth Reference Manual.
SwiftForth 3.0.10 (04-May-2007)
- Changed reference to ?.STATUS in Lib\Samples\Win32\Terminal.f to SIO.STATUS to call the correct support function in Sio.f.
- Corrected comments in various source files.
SwiftForth 3.0.9 (21-Apr-2007)
- Changed "REQUIRES CommonDlgConstants" to "REQUIRES CommonDialogConstants" in Lib\Options\Win32\Choosepath.f to match the actual filename.
- Changed reference to .STATUS in Lib\Samples\Win32\Serial.f to SIO.STATUS to call the correct support function in Sio.f.
- Added DEFER BAD-DLL and DEFER BAD-PROC hooks to allow the handers in Src\Ide\Win32\Dllaccess.f for bad library and function names to be changed.
- Enhancements to command-line editor in Src\Ide\Win32\Editline.f:
- Allow up/down arrow keys to invoke auto-complete if not at line start.
- Save all lines one or more chars long into history buffer.
- Ctl Shift Del = Delete to End of Line.
- Ctl Home = Show History.
- F3 = Append Last to EOL (like DOS).
- Auto-complete comparison is now case-insensitive.
- Fixed a few zero length bugs (ie DO >> ?DO).
- Corrected reference to release history file in the Help menu.
- Increased NOBJECTS in LOCAL-OBJECTS from 8 to 20.
- Added toggle window function to wordlist browser.
- Updated SwiftForth Reference Manual.
- Fixed IS-SUBDIR test in REQUIRES to descend into subdirectories only based on DIR flag.
SwiftForth 3.0.8 (18-Feb-2007)
- Replaced ANS forth reference DPANS94.pdf with an updated PDF. The original had a problem displaying pages past 25. This has been corrected.
- Added "launch SwiftForth" to the end of the installer.
- Removed clipping of saved debug window origin to (0,0) to better support multi-display environments.
SwiftForth 3.0.7 (05-Jan-2007)
- Added RStruct.f (from Charles Melice) to Lib\Options. See source file for details.
- Added ASwoop.f (from Gene LeFave) to Src\Ide\Win32, included in Hi.f. See source file for details.
- Changed window placement handling at startup to confine the
SwiftForth debug window to the Windows "Work Area" to prevent it from
being hidden under the taskbar.
SwiftForth 3.0.6 (27-Nov-2006)
- Changed the behavior of INCLUDE-FILE-COMMAND (invoked by Include on the File menu) to wrap double quotes around the included file name for compatibility with the new INCLUDE, introduced in SwiftForth 3.0.5. Thanks, Randy.
SwiftForth 3.0.5 (22-Nov-2006)
- Cleaned up single-step debug code, removed unused '?' button, removed DEBUG-HELP and expanded comment block at the start of the source file.
- Modified TTY.DLL and added the function SET-CARET which sets the width (in pixels) of the overstrike caret. A value of 0 sets the default (character width). This new feature is for compatibility with the JAWS screen reader for the visually impaired.
- Changed the FILENAME parsing used by INCLUDE. Instead of repeatedly parsing for a space character and checking for file existence (which causes problems with file/directory name ambiguity), INCLUDE now uses the more standard technique of allowing optional double-quote delimited path names. The quotes are only required when the path name contains a space. In all other cases, this change has no impact.
IMPORTANT: If you have any instances of INCLUDE that look like this:
INCLUDE MY LONG DIRECTORY\MY FILE
Change them to look like this:
INCLUDE "MY LONG DIRECTORY\MY FILE"
SwiftForth 3.0.4 (17-Oct-2006)
- Updated SwiftForth Reference Manual with corrections to single-step debug section.
- Fixed a bug in the mod to Frame.f from the previous release that incorrectly recalls the size of the saved SwiftForth window on exit. This becomes more evident when the window is closed farther away from the upper left corner of the screen. Thanks, Jeff.
- Updated SwiftForth Reference Manual with corrections, new graphics and screen shots, and a new format.
- Fixed a bug in the mod to Frame.f from the previous release that incorrectly recalls the size of the saved SwiftForth window on exit. This becomes more evident when the window is closed farther away from the upper left corner of the screen. Thanks, Jeff.
- Removed the extra 'r' from the word "derived" both in word names and in comments (examples: DERIVEDWINDOW, DERIVED-CLASS-MESSAGE)
- Renamed FCOMPLEMENT as FSUPPLEMENT and made a new definition for FCOMPLEMENT that uses PI/2 instead of PI. Two angles are said to be supplementary if they produce a right angle (PI/2 radians) when combined and complementary if they produce a straight angle (PI radians) when combined. Thanks, Anil.
- Removed obsolete reference to DIRTY in \Samples\Win32\Terminal.f.
- Deleted some old debugging code from \Src\Ide\Win32\Help.f.
- Fixed the initialization of ROOTPATH such that it is set to the "root" of the SwiftForth directory tree. This is the "grandparent" of the directory holding the SwiftForth executable. The version of /ROOTPATH introduced in release 3.0.2 incorrectly started from the root of the drive, which broke SwiftForth installations in any but the path level.
SwiftForth 3.0.3 (27-Sep-2006)
- Added PortIO.f to the Samples directory. This shows how to perform direct port I/O using the installed Giveio.sys driver. Note that the driver is not required for Windows 9x and Me systems, but the same set of operators is used on all Windows systems.
- New fixes to Frame.f which better enable SwiftForth to remember its size and position. Exiting when the window is maximized will restart with the window maximized, and will remember what the restored size was. Exiting when the window is minimzed will restart with the window in the restored size.
- Added a system menu item (right-click on SwiftForth in the taskbar) to force the window to appear in a safe default onscreen placement where it can be resized and moved as needed.
- Added a few more API calls to Dllfunctions.f, which are used to support window sizing.
- Reversed the direction of the mouse wheel scrolling in the debug window. This results in a new TTY.DLL which is located in the SwiftForth\Bin directory.
- Automatically append the default file extension when saving a log or text file.
SwiftForth 3.0.2 (08-Sep-2006)
- Cleaned up SwiftForth Reference Manual, fixed broken links to Forth Programmer's Handbook.
- Reversed the direction of the mouse wheel scrolling in the debug window. This results in a new TTY.DLL which is located in the SwiftForth\Bin directory.
- Corrected the exit condition in SUPERCLASS-DLGMESSAGE.
- Improved inline code for some primitives in Inline.f.
- Added ICODE SWAP-@ to optimizer rules.
- Removed the Forth Source extensions from the TEXT-FILES list (used in Save File dialogs for text files).
- Fixed a long-standing optimizer bug where the following compiled very bad code:
: TRY 10 0 TEST ;
The solution limits which "parent" xts are valid to consider for optimization to the set of defining words like (CREATE)
- Fixed a bug in .' that caused an exception if the name field address was below the origin.
- Fixed COMPARE and SEARCH for 0 length case.
- Changed the library search function in REQUIRES to search for a Lib directory in the current working directory, then in SwiftForth, and in SwiftX (which is itself a SwiftForth application).
- Added a small dictionary alignment that attempts to prevent code from residing in the address space of same cache line as the PFA of the previous CREATE definition (which includes VARIABLEs and other data types built from CREATE. A serious slowdown occurs when a write occurs to the same cache line that a tight loop is also executing in.
- Converted a few of the common math and double-number operators from CODE to ICODE so they will be inlined. This gives a nice performance improvement for compute-intensive applications.
- Added the deferred word WHEN-CAUGHT in the exception handler to make troublesome debugs of exceptions easier.
- Changed /ROOTPATH to back all the way up to the drive letter in the path before the root path determination is made.
- INCLUDE-ERROR now always prints line # in DECIMAL.
SwiftForth 3.0.1 (09-Aug-2006)
- Updated SwiftForth Reference Manual PDF so only top-level bookmarks are displayed in initial view.
- Fixed an omission in the optimizer which resulted in seriously degraded performance in some instances.
- Added a new optimizer rule to improve adding a literal to a CREATE address.
- Changed the method for launching PDF files such to allow a path with spaces.
SwiftForth 3.0.0 (07-Aug-2006)
Significant Changes
- SwiftForth and SwiftForth Pro have been merged in to a single version. All features formerly available only in the Pro version (kernel source, cross-compiler, etc.) are now fully integrated into SwiftForth. The 'Pro' designation has been dropped.
- The previously unreleased source for the SwiftForth console window TTY.DLL is included for reference. This is actually a SwiftX/i386 application and requires SwiftX to compile it. In the unlikely event you need to modify it or wish to generate your own tiny Windows DLL or application, you will need SwiftX/i386.
Maintenance
- The optimizer had several bugs, which have been fixed.
- The GIVEIO.SYS driver has been moved into the Windows system drivers directory for compatibility with SwiftX. Any former instance of the service is removed.
- A bug in COMPARE(NC) (version of COMPARE that is not case-sensitive) has been fixed.
- The edit selection command-line parameter string for UltraEdit32 was incorrect and has been changed.
- Added VIM and GVIM parameter strings to editor selection.
- An advisory has been added to the installer to warn against installing SwiftForth in a path containing a blank (space).
- The word HELP has been removed, as its original function is irrelevant.
- In the Floating Point package, the words MAKE-ROUND-UP and MAKE-TRUNCATE contained incorrect constants (inconsistent with ROUND-UP and TRUNCATE).
- F>D in the floating point library has been made to truncate regardless of rounding mode, as required by ANS Forth.
- Floating point literals are now dumped as hex bytes in the decompiler.
- The behavior of the dialog box that displays WORDS from the toolbar has been improved.
- The character range for special characters processed by WITHIN has been fixed; it previously allowed @ to be considered a valid digit for BASE > 16.
- Many minor bug fixes and improvements based on user feedback.
- Newly revised SwiftForth Reference Manual.
- Fixed DEL in Linked List support (Lib\Options\Win32\Linked.f).
- Improved the SIO serial support (\Lib\Options\Win32\Sio.f).
- Added warning messages to options not available for use in the SwiftForth Evaluation version.
- Corrected the definitions of floating-point assembler mnemonics FDIV and FDIVR (they were swapped).
- Added the DPANS94 copy of the ANS Forth standard to the Doc directory (also available from the SwiftForth Help menu).
- If SwiftForth is launched after having been closed with the debug window minimized, it forces the debug window to be visible. Previously, closing SwiftForth with the debug window minimized was difficult to recover from.
- Fixed default .THROW to handle -1 (ABORT) correctly.
- Changed default error display method to debug window only. (Dialog box still available as a user option, but it is not the default.)
- Cleaned up the import proc lists in Src\Kernel\Win32\Imports.f.
- INCLUDED now resets FENCE to preserve the GILD space. This prevents the compiled source file name from being stomped on.
- Optimized TNEGATE.
SwiftForth 2.2.3 (Legacy)
- Z, and U, now have a max string length of 4096, up from 256.
- The address in the ABOUT box is correct.
- The ATTACH method in the PAINTCANVAS class now requires a window handle.
- A new word \" is in the dialog compiler, allowing the use of strings with extended escape sequences in dialog control texts.
- The GENERICWINDOW class method VISIBLE is now deferred, so an application can replace it with its own method of showing itself.
- The COMMDRIVER extension has been revised again. Changes include additional words to make using it simpler, such as SER-EMIT and SER-KEY. The other principle feature is the addition of a hook for using the CommConfigDialog.
- A new extension ENUMCOMM has been added to allow an application to discover all known serial devices in the system.
- Various new extensions added: BMPANIMATION BMPFICHE XBITMAP STATUSLINE BUFOUT and CRC16. See the source files for details.