4tH

Faces of 4tH

4tH isn't the only Forth compiler that runs on several systems. However, 4tH takes portability a whole step further. Some C-based Forth compilers need a special C-compiler in order to compile. 4tH doesn't. It has been compiled using Turbo C, Turbo C++, LCC, DJGPP, GCC, XL C and a bunch of other compilers we probably don't want to know about.

4tH runs on most Operating Systems, including MS-DOS, MS-Windows (both 16 bit and 32 bit), Linux, Coherent, AIX, SunOS, BOS, BOS-X, BSD, Apple OS/X, BeOS, RISC-OS, etc. A full 4tH compiler (including VM, RPN calculator, editor, C-source generators) has a typical footprint between 35K and 65K (depending on compiler, optimizations and OS).
4tH Win16, DOS, Linux
At the left, 4tH running under Windows95 using VMWare. Top right, 4tH running under DOS 5.0 using DOSEmu. Bottom right, 4tH running under native Linux 2.2.14

The obvious advantage is that you don't need CygWin or other emulation layers in order to compile or run 4tH. It is a native application by any standard. Consequently, 4tH has been ported to other environments or compilers we never planned for, usually without any or just minor modifications.

But 4tH takes portability even a step further. It is a bytecode compiler, like Java or Perl. The bytecode can be saved and run without any need for the original source. Bytecode programs are extremely small, e.g. a 'uuencode' implementation only takes a few hundred bytes, a full-featured block editor a few kilobytes. These bytecode programs are saved in a compressed, architecture independant format, so a 4tH program developed under Linux can easily run under Windows XP or DOS.
4tH on Zaurus
4tH on the Zaurus
(Courtesy Wim Slangewal)

Since 4tH cannot be crashed (contrary to many other Forth compilers) it is extremely well suited for vulnerable environments like PDA's. Another plus is that 4tH has a very small footprint. It was just a matter of time until the first 4tH implementation for PDA's emerged.

Unfortunately, Palm has a very special way to deal with files, so porting 4tH to Palm would require a major rewrite. We looked into Windows CE, but since there is no (free) development environment for it on Linux we'll never see one. However, the Zaurus offers excellent support for development under Linux, so the first guy who popped up with a Zaurus was willing to give it a go.
4tH on Raspberry Pi
4tH on the Raspberry Pi

Compiling 4tH was a breeze, no trouble at all. However, since the display on a Zaurus is quite small, we decided to make a few tiny modifications. The block editor has 64 screens of 8 lines of 32 characters and the main menu was compressed. 4tH now looks like it was made for the Zaurus and those changes are incorporated in 4tH. The current port of 4tH for the Ben Nanonote uses the very same code, since it has a tiny screen as well.

Our goal is following Linux wherever it goes, from the tiniest environment to the biggest environment. And even beyond: if there is a full fledged C compiler, you should be able to run 4tH natively there. Our recent ports to Coherent, Android and the Raspberry Pi prove that.

(Read this page in Serbian)