SwiftForth Beta Test Page

These are the release notes for the beta test channel for SwiftForth-i386 and SwiftForth-x64 for Windows, Linux, and macOS. See the Installation Notes for the beta versions at the end of this post.

Important: Many of the SwiftForth/lib options have not yet been ported for x64 use. We’re just testing the base system for now.

SwiftForth 4.0.0-RC87 24-Mar-2024

  • Added SwiftForth/lib/options/sqrt.f contributed by Heinrich Hohl (thank you!). Provides single- and double-length optimized integer square root functions.
  • Added LOG2 to both 32- and 64-bit kernels in support of SQRT
  • Added K and K’ (next outer loop from J and J’) as requested by one of our beta testers.

SwiftForth 4.0.0-RC86 17-Feb-2024

  • Fixed EXTERN-INLINE library function calls on Linux and macOS for functions that have no input arguments
  • The full set of GTK4 function calls (includes GLib, Gio, Gobject, GDK, GSK, and GDK) is available in SwiftForth/lib/gtk4/gtk-imports.f. Requires libraries in your path when you load this file. If you install GTK4 on macOS or Linux, they already are. If you install using Msys2 on Windows, include the appropriate path to mingw32/bin or mingw64/bin in your path. (See the two Windows .bat files in lib/gtk4 for examples.)

SwiftForth 4.0.0-RC85 16-Feb-2024

  • Added /RND at load time in random.f to seed the random number generator
  • Updated sample programs to use new random number generator
  • Extended the Windows options scan to check up to 20 lines (instead of only 10) for OPTIONAL

SwiftForth 4.0.0-RC84 12-Feb-2024

  • Replaced the various random number generators in lib/options with random.f, which supplies both 32-bit and 64-bit multiply-with-carry (MWC) pseudo-random number generators.
  • Updated FUNCTION: on all platforms to parse arguments starting with % as single (IEEE 32-bit) floats and %% as double floats. Removed the second stack comment style of floating-point arguments for compatibility with 32-bit systems.
  • Updated lib/options/crc32.f and crc16.f
  • Added optimizer improvements
  • Handle close events in Windows CLI versions
  • Fixed some cell-size mismatches in the cross-compiler

SwiftForth 4.0.0-RC81 24-Nov-2023

  • Updated sio.f option to work on x64 Windows system
  • Added XLIBRARY for cross-platform library support

SwiftForth 4.0.0-RC80 14-Nov-2023

  • Updated the Windows sio.f option to use SWOOP classes for its device structures. Tested on i386 and x64 systems.
  • Removed diagnostic alignment output from SWOOP member and class definitions.

SwiftForth 4.0.0-RC79 13-Nov-2023

  • Added keymap.f for Windows versions consistent with macOS and Linux versions. The names assigned to the function keys follow the naming in the current Forth Standard (K-UP, K-DOWN, etc.)
  • Changed editline.f on the Windows side to use the function key names from keymap.f instead of literal values.
  • The top level of /lib/samples should be working.

SwiftForth 4.0.0-RC78 08-Nov-2023

  • Updated kernel/output.f with some improvements contributed by one of our beta testers, Heinrich Hole. (Thank you!)
  • Second pass at Forth Recognizers. See the app note for more info on this implementation of recognizers.
  • Updated and tested a few of the SwiftForth/lib options. Mass replacement of EXISTS with [DEFINED] (which is a Standard word).

SwiftForth 4.0.0-RC77 18-Oct-2023

  • Extended x64 versions of CATCH and THROW to preserve the loop parameters in R14, R15. (Thanks to François Laagel for the good detective work on this one.)
  • Latest update to sf-cocoa.

SwiftForth 4.0.0-RC76 12-Oct-2023

  • Added an alias for the SwiftForth-specific PARSE-WORD. The Forth Standard has PARSE-NAME, which is identical in behavior. If you’re using PARSE-WORD, you should update to PARSE-NAME.
  • Restored the missing legacy SwiftForth word NUMBER, which got lost in the conversion to Forth Recognizers.

SwiftForth 4.0.0-RC75 11-Oct-2023

  • Added the Special Memory Access operators, based on the Gforth documentation, that is about to find its way into the Forth Standard
  • Added BSWAP to the assembler and disassembler to support the Special Memory Access byte order operations
  • Implemented a first pass at Forth Recognizers. This replaces some hooks and greatly simplifies the INTERPRET loop. Contact us if you need help porting a custom hook handler to the recognizer scheme.

SwiftForth 4.0.0-RC74 21-Sep-2023

  • Restored the Linux calls for stat and fstat based on __xstat and __fxstat64, respectively, for Linux system compatibility
  • Replaced H.8 with H.CELL for 32-bit and 64-bit system compatibilty
  • Updated the collection of DUMP variants in tools.f to use H.CELL (Note: this is still a work in progress and needs a bit more refinement)
  • Added “alias” bit the header flags field to better support Forth Standard SYNONYM
  • Updated SYNONYM to use the alias bit so aliased words return the same xt from FIND
  • Reorganized the x64 optimizer patterns1.f file to allow correct optimization of literal pairs

SwiftForth 4.0.0-RC72 29-Aug-2023

  • Corrected some FP math words’ stack comments
  • Fixed return value sign extension in EXTERN-CALL for Linux and macOS

SwiftForth 4.0.0-RC71 30-Mar-2023

  • Replaced D< and DU< with code versions. Many thanks to Heinrich Hohl for this contribution.
  • Corrected decode of SBB in x64 disassembler (instead of “SBC”)

SwiftForth 4.0.0-RC70 21-Mar-2023

  • Made sign-extend words in disassembler consistent between i386 and x64 versions
  • Removed extraneous BYTE and WORD specifiers in a few core definitions (e.g. C@, W@)
  • Fixed Windows stack display pane to show unsigned when BASE is HEX
  • Fixed stack comments for PUSH and POP macros
  • Added ADDR macro in x64 assembler
  • Added MOVSS to x64 assembler and disassembler
  • Fixed Windows REQUIRES path

SwiftForth 4.0.0-RC69 12-Jan-2023

  • Added code to CATCH and THROW that smudges the former return address (into CATCH) to prevent a discarded frame from being used by the system exception handler.

SwiftForth 4.0.0-RC68 08-Jan-2023

  • Added >L< (swaps bits 0-31 with bits 32-63 of top stack item).
  • Corrected comments for >H< and ><

SwiftForth 4.0.0-RC67 30-Nov-2022

  • Changed Windows ALLOCATE, RESIZE, and FREE to use the Heap functions instead of Global memory management.
  • Added a HeapValidate test to RESIZE and FREE to prevent 64-bit Windows crash
  • Moved the Global memory functions to the IDE window clipboard management (which should be the only place they are still needed)
  • Added the Forth 2012 test suite in SwiftForth/unsupported/forth-2012-tests
  • Corrected 32-bit return values in macOS EXTERN-CALL
  • Corrected arguments passed to Linux ftruncate64

SwiftForth 4.0.0-RC66 26-Nov-2022

  • Updated macOS property list to support library search on Big Sur
  • Updated to latest Cocoa library for macOS

SwiftForth 4.0.0-RC65 23-Nov-2022

  • Fixed macOS Rosetta tcgetattr and tcsetattr termios struct address issues
  • Fixed macOS Rosetta POLLFD address issue

SwiftForth 4.0.0-RC64 22-Nov-2022

  • First Cocoa release for macOS is available in /lib/cocoa.
  • Added test for valid address to vectored TYPE functions that would otherwise just silently fail. These will now generate an exception frame for the bad address.
  • Fixed REQUIRES search paths in Windows and macOS versions.
  • Optimized short literals on all platforms

SwiftForth 4.0.0-RC63 12-Nov-2022

  • Added quotes around the fill path sent to DROP-INCLUDE by drag/drop file handler in Windows GUI.
  • Expanded size of Windows KEYBUF and made the size and wrap constants.

SwiftForth 4.0.0-RC62 09-Nov-2022

  • Fixed CALLBACK: and underlying RUNCB code for macOS, Linux, and Windows versions.
  • Removed deprecated CB: alias. Just use CALLBACK: moving forward.
  • Removed KILL-TASKS, which could deadlock and prevent SwiftForth from exiting cleanly.

SwiftForth 4.0.0-RC61 02-Nov-2022

  • Fixed bug in thread ACTIVATE. Threads should now be working on all platforms.
  • Blocks and DBSS options have been ported.

SwiftForth 4.0.0-RC60 26-Oct-2022

  • The 32-bit binaries have been removed from the Linux version. Moving forward, we will only support 64-bit Linux versions.
  • Added second (optional) stack picture to FUNCTION: for floating point stack on macOS and Linux versions. Floating-point arguments must be doubles (IEEE-754 64-bit).
  • Updated PARAMETERS() to return four values. #RETURN (macOS and Linux) and ?RETURN (Windows) have been removed.
  • The floating-point .S extension can now non-destructively display up to 7 floating-point values.
  • The obsolescent IMPORT:, CFUNCTION:, and CIMPORT: defining words have finally been removed from the Windows version. Use FUNCTION: for all imported library words.

SwiftForth 4.0.0-RC59 15-Oct-2022

  • Restored ‘FONT (short for FONTS ADDR ) in the Windows font chooser.
  • Ported TCP/IP support on all three platforms in /lib/options.
  • Updated page zero size in macOS loader to 0x1000 for smaller size.

SwiftForth 4.0.0-RC58 10-Oct-2022

  • Fixed [R12] index mode in assembler and disassembler.
  • Began porting /lib/options. SINGLESTEP is ready to try.

SwiftForth 4.0.0-RC57 09-Oct-2022

  • Updated CASE and LOOP control structures to work correctly with 64-bit addresses on all platforms
  • Force cell alignment for PFAs in the SwiftForth kernel
  • Updated macOS installer package to install to /Applications/ForthInc-Beta instead of in the user’s home folder
  • Fixed macOS console input to work under Rosetta on Apple M1 and M2 systems

SwiftForth 4.0.0-RC56 03-Oct-2022

  • The macOS version is now installed as an Apple Package installer with code signing an Apple notarization as a trusted developer to make Gatekeeper happy on macOS Catalina and higher. Be sure to uninstall any macOS beta version before running the package installer.
  • The 32-bit binaries have been removed from the macOS installer as they are no longer usable
  • The Linux version is still a tarball and no longer includes the macOS components
  • The macOS sf-loader has been converted to a text file that is loaded in the sf binary image so the installer passes Apple notarization

SwiftForth 4.0.0-RC55 29-Sep-2022

  • Fixed Windows startup order so ROOTPATH is established before the ONSYSLOAD chain runs
  • Windows uninstaller is now correctly code signed
  • Fixed options loader and dialog boxes*

SwiftForth 4.0.0-RC54 28-Sep-2022

  • Fixed WIN32_FIND_DATA and FILETIME for Windows x64
  • Changed simple DIR to use class structures instead of PAD with offsets
  • Added some diagnostic info to the WINDOWS-CONSTANTS package
  • macOS executables are now code signed

SwiftForth 4.0.0-RC53 27-Sep-2022

  • Fixed WNDCLASSEX for Windows x64. This fixes a few broken dialog boxes (color picker, options -> warnings box)
  • Fixed the font in the Windows installer license and readme files to use a standard Windows font.

Installation Notes

Windows

SwiftForth for Windows is supplied as a Windows installer. It will use a different default installation path from your existing SwiftForth install to keep it separate for testing.

SwiftForth requires Windows 10 20H2 or later.

macOS

SwiftForth for macOS is supplied as an Apple installer package. After you download it, run the .pkg installer. It will install in your Applications folder as /Applications/ForthInc-Beta/SwiftForth. It will also add symlinks in /usr/local/bin so you can run sf and sfk from any Terminal session.

SwiftForth x64 requires macOS 11 (Big Sur) or later. (Apple ended support for macOS 10.15 Catalina in September 2022.)

Linux

SwiftForth for Linux is supplied as a tarball. After you download it, cd to the location in which you want it expanded (should be a different directory from your current SwiftForth) and unpack the tarball:

cd <new SwifForth parent directory>
tar -xzf <path to downloaded tarball>

Then cd to the new SwiftForth directory and run the install.sh script. It will install sf and sfk symlinks from /usr/local/bin back to the SwiftForth/bin/linux. It will also remove any ~/bin/sf* symlinks (so restore those later if needed).

cd SwiftForth
./install.sh

When you run sf from the command line, you should see this:

~$ sf
SwiftForth x64-<os> 4.0.0-RCnn <date>

General

A few notes:

*The SwiftForth/lib options have not yet been ported for x64 use. We’re just testing the base system for now.

Floating point support is now built in and fully tested to be Forth-2012 Standard compliant.

Please report any and all issues to support@forth.com.